idea_world_labDEV JOURNAL
2026年7月28日星期二

2026-07-28 Source Flow Debugger 实际源码搜索报告

目的

在已有记录中,仅写到实际的 Godot 项目被划分为 134 个块进行搜索,且相关文档出现在上位结果中。仅凭这一描述,无法得知每个块返回了什么,返回的 JSONL 是否真的存在于 SQLite 中,或者更直接的文档是否因为排名被压制而未被检出。

本报告将以下三个问题分开记录。

  1. Source Flow Debugger 在每个块中返回了哪些 JSONL 候选?
  2. 返回的候选是否与已提交到 SQLite 的经过验证的原始 JSONL 完全相同?
  3. 在 SQLite 中确认的直接依据是否已经排在上位,还是需要提升排名?

由于 Qwen 接口已中止,本次仅执行了搜索与 SQLite 对照。未记录 Qwen 的 Godot 版本分类及候选批准·拒绝结果,也不把出现搜索候选视为最终验证成功。

固定输入

  • 仓库: godotengine/godot-demo-projects
  • 许可证:MIT
  • 提交:cae8dc567a56d3e7936f171bcb85f0ccb9634ad0
  • 项目:2d/hexagonal_map
  • 输入文件:project.godot, map.tscn, tileset.tres, tileset_edit.tscn, troll.gd, troll.tscn
  • 输入文件数:6
  • 生成块数:134
  • AST 块:3
  • 直接块:131

使用的 SQLite 为 outputs/godot-rag-sqlite/godot-rag.sqlite3,运行时包含 docs_chunks 2,265 条、api_mapping 1,133 条、 label_prototypes 2 条以及 embedding 3,399 条。

运行状态

步骤 状态 本次运行的意义
SQLite FTS5 + Okapi BM25 执行 搜索了全部 134 个块
embedding 未执行 未设置查询 embedding API 密钥
reranker 未执行 未设置 provider API 密钥
Qwen validator 未执行 Qwen 接口已中止

因此下面的排名并非整体 F 策略的最终排名,而是 lexical/BM25 阶段的结果。

整体对照结果

项目 结果
134
每块返回的 BM25 候选 80
与 SQLite 对照的返回候选 10,720
去重后的候选 844
在 SQLite 中找不到的候选 0
provenance 不是 verified 的候选 0
返回的 raw_json 与 SQLite 原文不同的候选 0
docs_chunks 返回 10,713
api_mapping 返回 7
label_prototypes 返回 0

返回数据的一致性是正确的。Source Flow Debugger 显示的表格和 ID 在 SQLite 中再次查询时,10,720 条记录全部存在,且 provenance 为 verified,返回的记录与存储的 raw_json 也相同。

但这并不意味着搜索质量全部达标。由于 134 个块全部填满了候选上限 80 条,lexical 候选未能充分收敛。此外,因文件名 anchor 保护,BM25 分数更低的文档在 9 个块中被提升至第 1 位。

代表块结果

检索良好的案例

输入摘要 返回结果 SQLite 对照
1 project.godot 文件格式说明 Manually editing project.godot 1 位 同 ID 与原文确认
13 TileMapLayer, tile_map_data, TileSet TileMapLayer 属性 1 位,方法 2 位,TileData 3 位 全部为已验证的 docs_chunks
42 TileSetAtlasSource, texture region TileSetAtlasSource 1 位,TileSetSource 2 位 直接类依据确认
125 _physics_process, Input.get_axis, move_and_slide Physics process 1 位,2D movement 文档 5~7 位,CharacterBody2D 8 位 移动·物理相关文档共存
130 CharacterBody2D 节点 CharacterBody2D 类 1 位 直接类依据确认

块 1 的第 1 位文档并非仅凭 BM25 分数获得,而是因为 project.godot lexical anchor 保护而保留的。此情况下文件格式说明与实际完全匹配,保护是有效的。

需要改进排名的案例

块 123: extends CharacterBody2D

  • 实际第 1 位: Collision exceptions
  • CharacterBody2D 类文档: 第 17 位
  • KinematicBody2D -> CharacterBody2D 映射: 第 6 位

SQLite 中虽然有准确的 CharacterBody2D 类文档,但被排在更宽泛的碰撞·移动 文档之后。这不是数据缺失,而是排名问题。对于简短的声明块,需要将完全匹配的类名和结构字段比普通上下文标记更强地处理。

块 124: tan(deg_to_rad(30))

  • 实际第 1 位: Setting up the spring arm and camera
  • Evaluating expressions: 第 2 位和第 3 位

第 1 位文档中也有 deg_to_rad 的使用示例,虽然并非完全无关,但解释调用本身的文档被 3D 教程抢先。需要重新排序,以区分直接的 API 说明和简单的使用示例。

需要 Qwen 再次验证的结构候选

块 13: 包含 PackedByteArraymap.tscn

PackedByteArray -> byte[] 映射排在第 48 位。保存的 JSONL 说明了 C# 集合迁移,但输入是 GDScript 场景资源。标记匹配但语言和使用上下文不同,搜索阶段不应直接批准。

块 130: 已经使用 CharacterBody2D 的节点

KinematicBody2D -> CharacterBody2D 映射排在第 3 位。该映射与版本判别有关,但当前块中没有旧 API KinematicBody2D。不应作为迁移警告批准的候选,Qwen 应同时查看 JSONL 与原始块,将其归类为 Godot 4 依据或无需应用。

这两个案例的 SQLite JSONL 原文已原样保存在机器可读报告的 reviewCases 中。

label_prototypes 为 0 项的原因

SQLite 的原型只有以下两项。

  • enum PlaneSemanticLabel
  • class OpenXRSpatialComponentPlaneSemanticLabelList

hexagonal_map 块中没有这两种输入模式。因此本次运行中 label_prototypes 为 0 项并非遗漏,而是直接结构依据过滤器生效的结果。

当前结论

  • 返回候选与 SQLite 原文之间的数据一致性已确认。
  • 代表性的项目设置、TileSet、TileMapLayer、移动函数搜索已将直接相关文档放入上位。
  • 并非所有块都达到候选上限 80 项,候选缩减不足。
  • 在简短类声明和单函数调用中,更直接的文档被排到后面的情况已被发现。
  • 结构映射仅凭相关标记即可进入候选,Qwen 在关闭状态下无法对批准与否作出结论。

下一次重新运行的基准

当 Qwen 接口再次可用时,使用相同提交和相同 134 个块,添加以下内容。

  1. 对每个结构候选进行 Godot 3Godot 4无关依据不足 分类
  2. PackedByteArray -> byte[] 等语言上下文不匹配的候选进行拒绝判断
  3. 在已经使用目标 API 的块中是否拒绝迁移应用候选
  4. 对无关的 negative control JSONL 的拒绝判断
  5. 在 embedding 与 reranker 前后的直接文档排名变化

2026-08-01 F 策略与 Qwen 再次验证

将相同的外部仓库提交和 2d/hexagonal_map 原始 6 个文件重新放入 Source Flow Debugger GUI。基于最新块划分,生成了共 146 个块。按照 BM25、embedding、union、reranker 的顺序执行的整体搜索审计中,146 个块全部完成,SQLite 中未出现缺失的返回记录、未验证的 provenance、与原文不同的 JSONL。

实际文件 确认范围
project.godot 20 全部混合搜索、全部 Qwen 验证、失败块单独重新验证
map.tscn 6 全部混合搜索与 Qwen 验证
tileset.tres 54 全部搜索审计、atlas source 与最终资源代表验证
tileset_edit.tscn 54 全部搜索审计、根节点与 sprite 节点代表验证
troll.gd 3 全部混合搜索与 Qwen 验证
troll.tscn 9 全部混合搜索与 Qwen 验证

将搜索与验证分开的结果

  • CharacterBody2D 声明和节点返回了类文档以及 KinematicBody2D -> CharacterBody2D 映射。Qwen 只采纳目标 API 与实际块匹配的映射作为版本依据,判定为 Godot 4
  • PackedSceneNode2DSprite2DTileSetAtlasSource 等正常返回了相关类文档,但这些文档未能证明代码的主版本排他性,因而标记为 依据不足
  • run/main_scene 设置与 Setting the main scene 文档以及 SQLite 原文完全匹配。因自然语言说明未直接重复设置标记,首次验证被拒绝;后续补充规则,使结构化键值与作用被文档直接解释时视为相关依据,验证规则得到完善。
  • doc_versiongodot_version_tags 仅是文档收集的版本信息,并未自动证明代码的版本排他性。仅当 JSONL 正文直接说明主版本差异时,才确认版本,验证规则已相应完善。

通过 SQLite 全面对照确认的数据空白

以下表达在 GUI 上位候选不准确,导致重新检索 SQLite 的 docs_chunksapi_mappinglabel_prototypes 全部 raw_json。所有包含准确表达的记录均为 0 项。

  • scene resource header
  • script external resource declaration
  • project format version setting
  • untyped declaration warning setting
  • window stretch aspect setting
  • default clear color setting

这些案例说明 SQLite 中已有正确的 JSONL,只是搜索未命中,而不是缺少依据。因此验证器未将 无关 随意改为 Godot 3Godot 4

验证规则的修改分布在提交 d504f502222634 中,并已通过 33 项 Source Flow Debugger 测试。规则中未将特定代码语法、API 名称、设置键列入白名单。

成果