idea_world_labDEV JOURNAL
2026年6月25日星期四

Godot 源码分析评分化架构

编写日期:2026年 6月 25日

目的

利用 Godot 官方文档 RAG 将 GitHub 源码按项目单元进行分类,并整理后续 SFT/DPO 数据生成的流程。

本次整理的核心是将 docs_chunksapi_mappinglabel_prototypes 都作为同一官方文档 Markdown → JSONL 分类的对象。根据文档性质,将说明块放入 docs_chunks,函数名/类名/符号名的变更放入 api_mapping,函数使用方式/参数构成/调用模式的整体变更放入 label_prototypes

当前结论

在初始官方文档收集阶段需要准备的核心表格如下三张。

表格 作用
docs_chunks 官方文档说明正文、教程、class reference 块的存储对象
api_mapping 保存 Godot 3 → Godot 4 中函数名、类名、符号名如何变化的对象
label_prototypes 保存函数使用方式、参数构成、调用模式整体变更时该如何编写的对象
项目 整理
既有混乱 起初把三个表格当作拥有不同工作流的东西来考虑。
新边界 三个表格都是在将官方文档 Markdown 分类为 JSONL 时使用的存储对象。
当前优先级 按原计划保留三张表格,并根据文档性质将其分类存储为一个或多个 JSONL。

最终分析单元

输入为 GitHub 项目或本地项目目录。

分析器遍历文件系统,按 AST 或代码片段单元拆分 Godot 相关文件。

初始对象:

文件 用途
.gd GDScript AST/行/函数单元分析
.tscn, .tres 场景/资源中的 class、script、node type 线索提取
project.godot 项目版本、特性、渲染器、autoload 等项目线索提取
README/文档 项目说明和 Godot 版本提示辅助

按需 LLM 调用流程

LLM 并非始终保持开启,而是根据需要的 AST/代码片段按需调用。

每个 AST 片段会连同以下依据一起传递给 LLM。

AST/代码块
+ 所需官方文档 JSONL 搜索结果
+ 输出 JSONL 模式
+ 项目/文件 标识 信息

LLM 响应模式和 score DB 保存列尚未确定。当前文档仅记录在什么流程中搜索哪些表,以及其结果如何用于文件系统分类。

代码说明生成数据流

代码说明生成数据流

在代码说明生成中,docs_chunks 是核心依据。

流程:

  1. 用户输入“这是什么意思?”以及源代码。

  2. AST 解析器将代码划分为代码片段。

  3. 检索器在 docs_chunks 中搜索相关的官方文档。

  4. Qwen 3.6 验证提示、代码片段和检索依据是否相互关联。

  5. 丢弃不相关的检索结果。

  6. 将相关的依据和代码片段重新传递给 Qwen 3.6,生成说明 JSONL。

  7. 验证器对响应进行验证。

  8. 将验证后的结果保存到 score DB。

  9. 根据 score DB 的结果对文件系统进行分类。

Godot 3 -> Godot 4 函数名转换流程

Godot 3 到 Godot 4 函数名转换流程

在迁移过程中,api_mapping 是核心依据。

流程:

  1. 用户输入 “这需要转换吗?” 和源代码。
  2. AST Parser 提取 Godot API 候选符号。
  3. Retriever 在 api_mapping 中搜索 source API、target API、change type。
  4. Qwen 3.6 验证搜索结果是否实际与该代码片段相关。
  5. 废弃不相关的映射。
  6. 仅使用相关的映射生成 Godot 3 -> 4 迁移 JSONL。
  7. Validator 验证转换响应。
  8. 将验证后的结果存入 score DB。
  9. 根据 score DB 的结果对文件系统进行分类。

Godot 3 -> Godot 4 使用模式转换流程

Godot 3 到 Godot 4 使用模式转换流程

在使用模式转换中,label_prototypes 是核心依据。

流程:

  1. 用户输入 “这需要转换吗?” 和源代码。
  2. AST 解析器提取函数调用、参数构成、调用模式候选项。
  3. 检索器在 label_prototypes 中搜索使用方式/参数/调用模式转换的依据。
  4. Qwen 3.6 验证搜索结果是否实际与该代码片段相关。
  5. 将不相关的原型废弃。
  6. 仅使用相关的原型生成 Godot 3 → 4 使用模式转换的 JSONL。
  7. 验证器对转换响应进行校验。
  8. 将验证后的结果存入 score DB。
  9. 根据 score DB 的结果对文件系统进行分类。

Score DB

AST 片段的 Retriever 搜索结果、LLM 验证结果、Validator 通过结果最终会保存到 score DB 中。

score DB 并不是保存学习数据原本,而是用于文件系统分类的判断结果存储。记录在源码分析过程中产生的 Retriever、LLM、Validator 结果。

  • docs_chunks 搜索结果:在代码说明请求中验证官方文档依据是否与实际代码相关的结果
  • api_mapping 搜索结果:验证 Godot 3 → Godot 4 函数名/符号转换依据是否与实际代码相关的结果
  • label_prototypes 搜索结果:验证函数使用方式、参数构成、调用模式转换依据是否与实际代码相关的结果

score DB 的列、汇总方式、分类标签尚未确定。本文档中仅固定 score DB 为“收集分类前判断结果的存储库”这一角色。

最终文件系统分类:

project source
  -> AST/code chunks
  -> official docs JSONL retrieval
  -> on-demand LLM verification
  -> score DB
  -> classified filesystem

SFT和DPO生成

SFT和DPO的详细设计尚未确定。目前确定的是score DB本身不是学习数据源。首先对文件系统进行分类,之后将基于已分类的文件系统制作用于设计SFT和DPO的来源。

Git 上传安全标准

在本次文档中,网页 UI、本地转换脚本、AST 分析脚本、API 密钥、JSONL 输出物、测试源代码均不上传。

允许上传:

  • 架构文档
  • 流程图图片
  • 可公开的回顾/路线图文本

禁止上传:

  • Streamlit Web 应用代码
  • Markdown -> JSONL 转换实验脚本
  • Retriever/AST 分析实验脚本
  • API key, endpoint, .env
  • 收集的完整 Markdown 原始 zip
  • AST/code chunk 分析结果
  • JSONL 中间产出物
  • 用于测试克隆的外部 Godot 项目源码