idea_world_labDEV JOURNAL
2026年6月28日星期日

Qwen Godot 代码 JSONL 依据匹配测试检查清单

编写日期:2026年 6月 28日

目的

使用 Qwen 生成 50 个 Godot 3 代码块,并以与昨天进行的 JSONL 依据匹配测试相同的方式,检查 / 判定是否正确。

本次测试并不是要判断模型是否了解 Godot 知识。它是一个在同时提供 SOURCE_CODEJSONL 时,判断 JSONL 中是否存在与实际代码块直接对应的字符串/API/模式依据的测试。

也就是说,相关的 JSONL 应该返回 ,不相关的 JSONL 应该被判定为 并被丢弃。

测试方式

对每个代码块至少附加两种 JSONL 进行测试。不过由于 Godot 3 与 Godot 4 之间可能存在语法完全相同的公共语法,所有功能并不都视作仅适用于 Godot 3 的语法。

JSONL 类型 预期响应 含义
正确的 JSONL JSONL 中的 source_apisource_patternmatch_termsrequired_when_seen_in_codebefore_code 中至少有一项与代码块直接匹配
错误的 JSONL JSONL 只共享其他 API、其他节点、其他系统或宽泛词汇的依据
JSONL
Qwen direct-evidence validator prompt
SOURCE_CODE chunk

实际验证请求是将 JSONL + 提示 + chunk 一起提交时,检查 Qwen 是否仅返回

对于公共语法,使用同一个代码 chunk 进行测试。此时正确的 JSONL 是包含该代码/函数说明或模式的 JSONL,错误的 JSONL 是包含完全不同函数或系统说明的 JSONL。期望响应为 的情况和 的情况并不是因为代码不同而区分,而是取决于 JSONL 中是否直接有依据。

重复生成循环

整体目标是对 50 项功能进行全部测试。不过今天仅手动确认 5 项,之后在累计结果中先分析 / 的响应模式,以此简化。

今日目标: 5个  
总目标: 50/50

在填满5个之后,不强行增加新项目数量,先观察公共语法/版本差异/各表的 false positive 和 false negative 情况。

测试在重复以下流程的同时生成数据。

1. 给 Qwen 一个要测试的 Godot 功能。  
2. 首先标明该功能是 Godot 3/4 的通用语法,还是 Godot 3 的特有语法,或是 Godot 4 的特有语法。  
3. 如果是通用语法,则创建一个相同的代码块。  
4. 如果是通用语法,生成一个针对该代码/函数的正确 JSONL,以及一个针对完全不同函数的错误 JSONL。  
5. 如果不是通用语法,则分别为 Godot 4 和 Godot 3 创建专用的 JSONL 进行测试。  
6. 所有 JSONL 都要符合目标表的列要求。  
7. 在验证提示中放入 JSONL + SOURCE_CODE 代码块,并检查 “是”/“否”。  
8. 记录预期响应与实际响应是否一致。

核心不是代码生成质量,而是 JSONL 依据匹配判定是否稳定。因此正确的 JSONL 应该返回 ,错误的 JSONL 应该返回

公共语法注意事项

在 Godot 3 和 Godot 4 中保持相同形式的语法不应视为版本分类测试。例如 _ready()_process(delta)、基本变量赋值、print() 等在两侧都可能使用的代码。

这种情况下应如下处理。

代码性质 测试方式 期待
Godot 3/4 公共语法 用同一代码块同时测试该函数的 JSONL 与完全不同函数的 JSONL 仅凭 JSONL 直接依据应区分 /
Godot 3 特有语法 以 Godot 3 代码块为基准,对比测试 Godot 3 专用 JSONL 与 Godot 4 专用 JSONL 若实际的 Godot 3 字符串/模式出现在 JSONL 中则
Godot 4 特有语法 以 Godot 4 代码块为基准,对比测试 Godot 4 专用 JSONL 与 Godot 3 专用 JSONL 若实际的 Godot 4 字符串/模式出现在 JSONL 中则
与版本差异无关的功能说明 代码无论哪个版本,都必须在 JSONL content/code_blocks 中直接有依据 只要有宽泛的相似性即

因此在记录表中必须标明是否为公共语法。以后查看结果时,可区分是因为迁移依据而强行判定的公共语法,还是将有版本差异的语法误当作公共语法处理。

标准重新定义备忘

在测试第 4 条和第 5 条时发现难以给出确定判定。尤其是依据是基于 Godot 3 还是 Godot 4 生成 JSONL,会导致相同代码块的响应不同,而这种差异本身就成为模式分析的对象。

因此目前不对好/坏作出确定,而是先记录原始响应,如下所示。

区分 JSONL 生成依据 检查代码 当前期待流程
公共语法 基于 Godot 3 公共代码或意义相同的 Godot 3/4 代码 , , , , ,
公共语法 基于 Godot 4 公共代码或意义相同的 Godot 3/4 代码 , , , , ,
版本差异 基于 Godot 3 Godot 3 代码 , , , , ,
版本差异 基于 Godot 3 Godot 4 代码 大多数为 。但若 api_mapping 或 prototype 明确包含 Godot 3 → 4 转换依据,则可能出现部分 ,需单独查看原始响应
版本差异 基于 Godot 4 Godot 3 代码 大多数为 。但若 JSONL 同时包含 source/target 两侧字符串,则可能出现部分 ,需单独查看原始响应
版本差异 基于 Godot 4 Godot 4 代码 , , , , ,

响应顺序基本按照 docs_chunks 相关, docs_chunks 无关, api_mapping 相关, api_mapping 无关, label_prototypes 相关, label_prototypes 无关 来判断。

第 4 条虽然之前像整理好的项目那样记录,但在 Godot 3 检查中出现了 , , , , , 的流程,因此在确定判定时被排除。本文档从现在起作为观察记录,关注“在什么标准下哪些响应会波动”,而不是“有多少是正确的”。

生成请求示例

下面是测试第一个功能 _ready() 函数初始化及视口大小设置时的请求示例。

JSONL 格式及每个 JSONL 的用途已在单独文档中分离。

_ready() 函数初始化以及与视口大小设置相匹配的 godot3 块,一个,godot4 块一个,提供给我。

但请先标明此功能在 godot3 和 godot4 中是否为公共语法。
如果是公共语法,请标明可以使用同一段代码进行测试。

另外,请提供符合 docs_chunks JSONL 格式的正确 JSONL 示例,以及不正确的 JSONL 示例。

此示例基于 docs_chunksapi_mappinglabel_prototypes 也以相同方式生成符合各自 JSONL 格式和用途的正确 JSONL 和错误 JSONL,并使用相同的验证提示检查 /

验证输入如下所示。

JSONL:
<正确或错误的 JSONL 单行>

PROMPT:
<direct-evidence validator prompt>

SOURCE_CODE:
<Godot 3 代码块,Godot 4 代码块,或通用语法代码块>

提示会像下面这样,在 SOURCE_CODEJSONL 之间发送一种判断直接说明依据或转换依据的感觉。

你是 JSONL 依据匹配判定器。

针对下面的 SOURCE_CODE,判断下面的 JSONL 是否直接包含说明依据或转换依据。

判定标准:
- 只有当 JSONL 模式中的某一项与 SOURCE_CODE 中的实际字符串或 API 调用完全匹配时,才算 “是”。
- 仅仅因为出现 Godot、Godot3、Godot4、migration、2D、physics 等宽泛词汇并不构成关联。
- 如果 JSONL 涉及其他 API、其他节点或其他系统,则为 “否”。  
- 不要使用你对 Godot 的任何已知知识,只依据 JSONL 中的字符串依据进行判断。  
- 回答必须仅输出 “是” 或 “否” 其中之一。

判定矩阵

期望响应 实际响应 临时解释 记录内容
与期望一致 直接依据的 JSONL 被认可
与期望一致 错误的 JSONL 被废弃
需要重新审查 有直接依据却遗漏。候选 false negative
需要重新审查 没有直接依据却被认可。候选 false positive
其他答案 需要重新审查 响应格式违规。包括说明、JSON、空响应、模糊答案等

观察检查清单

在每个表格的 50 条样本测试结束后检查以下项目。

检查项 标准 结果
响应格式 所有响应仅输出 中的一个
相关 JSONL 响应 在相关 JSONL 测试中 响应能够足够稳定地出现
无关 JSONL 响应 在无关 JSONL 测试中 响应能够足够稳定地出现
false positive 记录 将所有本应为 但出现 的情况单独记录
false negative 记录 将所有本应为 但出现 的情况单独记录
宽泛词过滤 仅凭 Godot、migration、2D、physics 等宽泛词汇不会得到
直接字符串依据 判定中包含与实际代码字符串/API/模式匹配的 JSONL 字段
公共语法区分 对于 Godot 3/4 的公共语法样本,以相同代码块为基准测试期望的 / JSONL
表格间差异 记录 docs_chunksapi_mappinglabel_prototypes 中不一致的表现差异
可复现性 对相同输入再次测试时判定不会大幅波动
下一步判断 决定是否可以使用此提示和判定方式交付下一个 PoC

测试记录表格

复制下表并填写测试结果。

ID 功能 是否公共语法 表格 JSONL 类型 期望响应 实际响应 判定 直接匹配的字段 备注
G03-001-A _ready() 函数初始化及视口大小设置 正确的 JSONL
G03-001-B _ready() 函数初始化及视口大小设置 错误的 JSONL

表格记录

docs_chunks

检查官方文档说明型依据是否与代码块直接对应。

编号 功能 公共语法是否 相关 JSONL 结果 无关 JSONL 结果 备注
1 _ready() 函数初始化及视口大小设置 公共语法 相关 JSONL 观察 无关 JSONL 观察 Node._readyget_viewport().get_visible_rect().sizeDisplayServer.window_set_size 出现在 docs_chunks 说明依据为 _process(delta) 说明 JSONL 判定为
2 _process(delta) 帧更新循环 公共语法 相关 JSONL 观察 无关 JSONL 观察 包含 _process(delta)position.x +=speed * delta 的 docs_chunks 说明依据为 Vector2.lerp 说明 JSONL 判定为
3 玩家移动输入处理(WASD 或方向键) 公共语法 相关 JSONL 观察 无关 JSONL 观察 包含 Input.is_action_pressedVector2.ZEROdirection.normalized()velocitymove_and_slide() 的 docs_chunks 说明依据为 TileMapLayer.set_cell() 说明 JSONL 判定为
4 玩家移动速度及加速度应用 版本差异 现有双向 记录在最终判定中被排除 在 Godot 3 检查中 docs 侧出现 否/否 的流程,需重新审查 由于原始响应 否、否、是、否、是、否,需要重新定义标准
5 玩家最大速度限制 版本差异 Godot 3 基准首次观察。Godot 4 基准逆向原始响应:Godot 4 代码 是/是,Godot 3 代码 是/是 Godot 4 基准逆向中 docs 候选全部被标记为 CharacterBody2Dmax_speedvelocity = input_vector * max_speedmove_and_slide()Input.is_action_pressed 直接出现字符串重叠,需分析是否需缩小功能范围
6 鼠标点击时生成并发射弹体 版本差异 Godot 3/4 说明依据分别与代码基准匹配,全部 24/24 通过流程 其他代码说明 JSONL 如预期被废弃 PackedScene.instance()instantiate()、鼠标输入处理差异在代码基准上分离,导致 docs 候选分歧明显
7 弹体的移动及寿命(time‑to‑live)管理 版本差异 docs_chunks 说明依据与弹体移动/TTL 代码匹配 与 docs_chunks 无关的说明候选如预期被废弃 在整体 22/24 中不一致出现在 api_mapping/label_prototypes 的 Godot 3 转换依据在 Godot 4 代码中也被标记为 的情况
8 敌人(Enemy)对玩家的追踪(AI)逻辑 版本差异 Godot 4 docs 说明候选在 Godot 3 代码中也被标记为 ,出现误报 其他代码说明候选在 Godot 3/4 代码中也被标记为 ,需重新审查 整体 21/24;docs_chunks 将相同的追踪/移动主题或相似 API 线索宽泛地视为说明依据的案例
9 敌人的移动速度及转向逻辑 版本差异 移动速度和转向处理的 docs 依据与各代码基准匹配 与之无关的 docs 候选如预期被废弃 24/24 通过。移动/转向目的和最终行为相对明确,docs 候选分辨稳定
10 玩家离开屏幕时消失 公共语法 屏幕外离开、global_positionget_viewport_rect().sizehide() 说明依据被标记为 其他代码说明候选标记为 公共语法 6/6 通过。docs 说明依据与迁移系列候选划分明确
11 碰撞检测(Area2D 或 PhysicsBody) 版本差异 碰撞事件、检测目标、碰撞回调/物理体关系的 docs 候选与代码块对照 与伤害计算或血量处理等碰撞后逻辑的说明候选区分 sample-11 中检查碰撞“检测”依据与碰撞后“处理”依据是否混合
12 碰撞时伤害计算及应用 公共语法 碰撞结果导致伤害值计算并作用于目标血量的说明依据与代码块对照 与单纯碰撞检测、得分更新、游戏结束说明候选区分 sample-12 需确认说明依据的核心是伤害公式/应用流程,而非仅碰撞本身
13 玩家血量下降逻辑 公共语法 玩家血量变量递减、受击处理、下限处理说明依据与代码块对照 与敌人血量下降或得分增加候选区分 sample-13 即使出现相同的 health 字符串,也必须判断是针对玩家还是敌人
14 玩家血量为 0 时游戏结束处理 公共语法 health <= 0、游戏结束状态切换、场景切换/暂停流程说明依据与代码块对照 与单纯血量下降或敌人移除候选区分 sample-14 需确认说明依据对应的是 0 触发后的结果状态,而非血量下降本身
15 敌人血量下降逻辑 公共语法 敌人血量变量递减及受击处理说明依据与代码块对照 与玩家血量下降或游戏结束候选区分 sample-15 的核心是判断目标对象是 enemy 还是 player
16 敌人血量为 0 时移除并增加得分 公共语法 敌人移除、queue_free()/停用、得分增加流程说明依据与代码块对照 与单纯血量下降或得分显示候选区分 sample-16 需确认说明的是移除与得分增加同时出现的最终动作
17 分数(Score)变量更新 公共语法 分数变量增减、累计值更新说明依据与代码块对照 与标签显示更新或 UI 渲染说明候选区分 sample-17 将数据值更新与屏幕显示更新分开考察
18 分数文本(Label)更新函数 公共语法 通过 Label.text/字符串格式化将分数反映到屏幕的说明依据与代码块对照 与仅更新分数变量的候选区分 sample-18 检查说明依据是否直接针对 UI 文本而非仅分数值本身
19 背景音乐(BGM)播放及音量调节 公共语法 BGM 播放节点、总线音量、循环/音量调节说明依据与代码块对照 与音效单次播放候选区分 sample-19 将持续播放的 BGM 与短暂 SFX 调用分开验证
20 音效(SFX)播放函数 公共语法 音效播放器创建/调用、单次播放说明依据与代码块对照 与背景音乐循环/音量调节候选区分 sample-20 检查仅凭 Audio 相关通用词汇是否会错误关联到 BGM 说明

| 21 | 屏幕抖动(Screen Shake)效果实现 | 版本差异 | 相机偏移、抖动强度/时间、Tween 或随机偏移说明依据与代码块对照 | 敌人移动、相机追踪、UI 动画候选并区分 | sample-21 是检查即使出现 “相机” 词汇,也要确认是否直接说明屏幕抖动结果 | | 22 | 粒子系统创建及位置匹配 | 版本差异 | 粒子节点创建、位置同步、发射开始说明依据与代码块对照 | 普通节点创建、弹体创建、动画候选并区分 | sample-22 用于确认创建对象是否为 particle,是否包含位置匹配和 emission 流程 | | 23 | 场景切换(Scene Change)函数 | 版本差异 | 场景切换请求、SceneTree 调用、目标场景路径说明的文档候选与代码块对照 | 菜单显示、暂停、资源加载等非场景切换本身的候选并区分 | sample-23 需区分是否真正调用了更换画面/场景,还是仅仅是加载或 UI 显示说明 | | 24 | 主菜单场景加载及显示 | 版本差异 | 加载主菜单场景并在屏幕上显示的说明依据与代码块对照 | 单纯的场景切换、暂停、资源预加载候选并区分 | sample-24 用于判断是否实际显示了菜单场景,还是其他场景处理的说明 | | 25 | 游戏暂停(Pause)功能切换 | 公共语法 | pause 状态切换、get_tree().paused、根据输入的暂停/恢复说明依据与代码块对照 | 打开菜单、场景切换、游戏结束候选并区分 | sample-25 检查是否真正改变了暂停状态,还是仅仅是 UI 显示 | | 26 | 键盘输入状态检查(Input.is_key_pressed) | 版本差异 | Input.is_key_pressed 与键常量/键码说明依据与代码块对照 | action map 输入、鼠标输入、移动处理候选并区分 | sample-26 将键盘状态查询本身与整体移动逻辑分开查看 | | 27 | 鼠标位置(光标)坐标获取 | 公共语法 | viewport/global mouse position 查询说明依据与代码块对照 | 鼠标点击发射、触摸输入、光标显示候选并区分 | sample-27 用于确认代码是读取坐标而非点击事件 | | 28 | 随机数字生成函数 | 版本差异 | RNG 初始化、随机数生成、范围指定说明依据与代码块对照 | 随机位置分布、敌人生成计时器候选并区分 | sample-28 将数字生成函数本身与使用该数字的游戏逻辑分开 | | 29 | 定时生成敌人(Spawn) | 版本差异 | 基于 Timer/timeout/累计时间周期性生成敌人的说明依据与代码块对照 | 随机位置计算或敌人移动 AI 候选并区分 | sample-29 检查时间间隔和 spawn 调用是否直接作为依据 | | 30 | 已生成敌人的位置随机分布 | 公共语法 | 随机坐标范围、spawn 区域、位置分布说明依据与代码块对照 | 定时生成的计时器候选并区分 | sample-30 用于确认说明的是“放在哪里”,而非“何时生成” | | 31 | 玩家动画状态切换(Idle、Run、Jump) | 版本差异 | 根据输入/速度/状态更改动画名称的说明依据与代码块对照 | 动画播放速度或时间控制候选并区分 | sample-31 将状态切换与播放时间控制分开查看 | | 32 | 动画播放时间控制 | 公共语法 | animation speed、seek、advance、playback position 控制说明依据与代码块对照 | Idle/Run/Jump 状态切换候选并区分 | sample-32 检查是否是调节播放时间/速度,而不是选择哪段动画 | | 33 | 碰撞区域大小调整 | 版本差异 | CollisionShape2D/Shape2D 大小属性、RectangleShape2D 的 size/extents 系列说明依据与代码块对照 | 碰撞检测、伤害处理、Area2D signal 候选并区分 | sample-33 用于确认代码是调整碰撞区域的形状/大小,而非检测是否发生碰撞 | | 34 | 物理重力(Gravity)应用 | 版本差异 | 将 gravity 与 delta 累加到 velocity 并通过 move 函数应用的说明依据与代码块对照 | 跳跃力度、着地检测、Area 重力设置候选并区分 | sample-34 将重力累加流程与跳跃/着地判定分开验证 | | 35 | 跳跃(Jump)力度应用及着地检测 | 版本差异 | is_on_floor()、跳跃速度、输入条件、着地状态说明依据与代码块对照 | 仅重力应用或动画状态切换候选并区分 | sample-35 检查跳跃输入和地面判定是否在同一移动流程中说明 | | 36 | 墙体碰撞时滑动(Slide)处理 | | | | | | 37 | 玩家方向切换(Facing Left/Right) | | | | | | 38 | 弹匣(Ammo)计数减少 | | | | | | 39 | 弹匣空时的重新装填(Reload)状态切换 | | | | | | 40 | UI 按钮点击事件绑定 | | | | | | 41 | 设置(Settings)菜单打开/关闭切换 | | | | | | 42 | 语言(Language)更改时文本更新 | | | | | | 43 | 保存数据(Save Game)JSON 序列化 | | | | | | 44 | 加载数据(Load Game)JSON 反序列化 | | | | | | 45 | 文件读写错误处理 | | | | | | 46 | 网络连接状态检查 | | | | | | 47 | 通过远程函数(RPC)调用进行同步 | | | | | | 48 | 场景资源动态加载 | | | | | | 49 | 内存释放及资源卸载 | | | | | | 50 | 调试日志输出(print 或 print_debug) | | | | |

api_mapping

检查关于从 Godot 3 到 Godot 4 名称、类、函数、符号如何变化的依据是否直接与代码块匹配。

编号 功能 是否通用语法 相关 JSONL 结果 无关 JSONL 结果 备注
1 _ready() 函数初始化及视口大小设置 通用语法 相关 JSONL 观察 无关 JSONL 观察 DisplayServer.window_set_sizeVector2i 存在的映射为 AudioServer.get_bus_volume_db 的映射判定为
2 _process(delta) 帧级更新循环 通用语法 相关 JSONL 观察 无关 JSONL 观察 position.xdelta_process 存在的稳定映射为 get_node("Sprite2D") 的映射判定为
3 玩家移动输入处理(WASD 或方向键) 通用语法 相关 JSONL 观察 无关 JSONL 观察 CharacterBody2D.move_and_slidevelocityVector2 存在的映射为 Node.connect/信号连接的映射判定为
4 玩家移动速度及加速度应用 版本差异 相关 JSONL 观察 无关 JSONL 观察 已有双向 记录在最终判定中排除;在 Godot 3 检查中,api_mapping 方面分为 是/否move_and_slideCharacterBody3Dmove_towardvelocity.xvelocity.ztarget_velocity 的映射需根据代码版本重新审查其响应方式
5 玩家的最大速度限制 版本差异 相关 JSONL 观察 无关 JSONL 观察 move_and_slidevelocitylimit_speed、碰撞法线返回差异为依据。需要分析模式,以决定如何在 Godot 4 语法和 Godot 3 语法之间划分期望值
6 鼠标点击时生成并发射弹体 版本差异 相关 JSONL 观察 无关 JSONL 观察 类似 PackedScene.instance()instantiate(),source/target 形式分离,已纳入 24/24 通过流程
7 弹体的移动及寿命(time-to-live)管理 版本差异 相关 JSONL 观察 无关 JSONL 观察 整体 22/24;若已是 Godot 4 代码,则不作为转换应用对象,需要在验证提示中更明确地查看 source‑side 与否
8 敌人(Enemy)对玩家的追踪(AI)逻辑 版本差异 相关 JSONL 观察 无关 JSONL 观察 api_mapping 方面并非第 8 条不一致的直接原因;无关映射候选按预期被废弃的流程;整体不一致发生在 docs_chunks。映射记录为检查追踪 AI 代码的版本 API 变更情况的辅助轴
9 敌人的移动速度及旋转逻辑 版本差异 相关 JSONL 观察 无关 JSONL 观察 24/24 通过。移动速度和旋转 API 差异相对分离良好
10 玩家离开屏幕时消失 通用语法 相关 JSONL 观察 无关 JSONL 观察 6/6 通过。通用语法中确认迁移表不必附加的流程
11 碰撞检测(Area2D 或 PhysicsBody) 版本差异 相关 JSONL 观察 无关 JSONL 观察 确认 Area2D/PhysicsBody 碰撞检测 API 或信号连接变化是否为当前代码所需的映射;与伤害应用或生命值处理的映射区分;sample-11 为将检测 API 本身与后续处理逻辑分离的映射判定项
12 碰撞时伤害计算及应用 通用语法 相关 JSONL 观察 无关 JSONL 观察 与伤害计算相关的映射需判断是否涉及版本 API 变化;sample-12 用于区分纯游戏逻辑与需要迁移的 API
13 玩家生命值减少逻辑 通用语法 相关 JSONL 观察 无关 JSONL 观察 检查玩家生命值减少代码中是否存在 Godot 3→4 的 API 变更依据;sample-13 关注是否因 API 变化而产生不必要的迁移标记
14 玩家生命值为 0 时游戏结束处理 通用语法 相关 JSONL 观察 无关 JSONL 观察 验证场景切换、暂停、tree API 变化是否实际出现在代码中;sample-14 用于确认结果状态切换 API 是否为映射依据
15 敌人生命值减少逻辑 通用语法 相关 JSONL 观察 无关 JSONL 观察 判断敌人生命值减少代码是否涉及实际的 Godot 3→4 API 变更;sample-15 在对象不同的情况下应判定为
16 敌人生命值为 0 时移除并增加分数 通用语法 相关 JSONL 观察 无关 JSONL 观察 区分删除 API、分数更新 API、场景树操作的差异是否在代码中出现;sample-16 细分哪些部分是映射依据
17 分数(Score)变量更新 通用语法 相关 JSONL 观察 无关 JSONL 观察 检查分数变量更新是否涉及 API 变更;sample-17 防止仅因变量运算而产生过度的迁移标记
18 分数文本(Label)更新函数 通用语法 相关 JSONL 观察 无关 JSONL 观察 判断 Label 文本访问或节点引用方式是否有版本差异;sample-18 用于确认 Label.text 系列是否为通用或需迁移
19 背景音乐(BGM)播放及音量调节 通用语法 相关 JSONL 观察 无关 JSONL 观察 验证 AudioServer、AudioStreamPlayer、bus volume 等是否在代码中直接需要迁移依据;sample-19 防止仅凭“音频”关键词就产生映射
20 音效(SFX)播放函数 通用语法 相关 JSONL 观察 无关 JSONL 观察 区分音效播放 API 或节点创建方式的变化是否实际存在;sample-20 将 SFX 与 BGM 的迁移依据分开判断
21 屏幕抖动(Screen Shake)效果实现 版本差异 相关 JSONL 观察 无关 JSONL 观察 检查 Tween、Camera2D、offset/random shake 实现中是否有版本 API 变化;sample-21 用于验证摄像机相关候选是否构成屏幕抖动的迁移依据

| 22 | 粒子系统创建及位置匹配 | 版本差异 | Particles2D/GPUParticles2D、emitting、position/global_position 相关更改依据是否直接出现在代码中 | 与弹体创建或普通节点创建的映射区分 | sample-22 将粒子系统专用 API 变化与普通生成逻辑分开查看 | | 23 | 场景切换(Scene Change)函数 | 版本差异 | change_scenechange_scene_to_filechange_scene_to_packed 系列更改依据是否直接出现在当前代码中 | 与普通 load()/preload() 或主菜单显示的映射区分 | sample-23 检查 Godot 3 的场景切换调用与 Godot 4 的替代调用是否按实际代码版本匹配 | | 24 | 主菜单场景加载及显示 | 版本差异 | 场景加载、实例化、菜单场景显示相关更改依据是否在当前代码中必需 | 与普通场景切换或资源 preload 的映射区分 | sample-24 用于判断主菜单显示目的与场景 API 更改依据是否混合 | | 25 | 游戏暂停(Pause)功能切换 | 通用语法 | pause mode / process mode、树暂停相关更改依据是否真的在当前代码中需要 | 与菜单 UI 或游戏结束的映射区分 | sample-25 检查通用暂停切换代码的迁移映射是否过度附加 | | 26 | 键盘输入状态检查 (Input.is_key_pressed) | 版本差异 | 键常量、scancode/keycode、Input.is_key_pressed 相关更改依据是否直接匹配代码 | 与 action map 移动处理或鼠标输入的映射区分 | sample-26 将键状态查询 API 变化与使用该输入的游戏逻辑分开查看 | | 27 | 获取鼠标位置(光标)坐标 | 通用语法 | mouse position 查询 API 是否需要版本间更改依据 | 与点击生成弹体或触摸输入的映射区分 | sample-27 检查坐标读取代码中是否附加了不必要的转换依据 | | 28 | 随机数字生成函数 | 版本差异 | randomize、RandomNumberGenerator、range 函数更改依据是否直接出现在代码中 | 与随机生成位置或生成计时器的映射区分 | sample-28 将随机数 API 本身的更改与随机数使用目的分离查看 | | 29 | 定时生成敌人(Spawn) | 版本差异 | Timer 信号、timeout 连接、yield/await 系列更改依据是否直接出现在当前代码中 | 与敌人位置随机分布或敌人 AI 移动的映射区分 | sample-29 同时检查周期执行结构与生成目标逻辑 |

| 30 | 生成敌人的位置随机分布 | 公共语法 | random range、viewport size、spawn area 计算是否需要实际 API 更改依据 | 基于 Timer 的周期生成映射与之区分 | sample-30 检查仅有位置计算的代码是否未附加生成周期映射 | | 31 | 玩家动画状态切换(Idle、Run、Jump) | 版本差异 | AnimatedSprite/AnimatedSprite2D、AnimationPlayer 状态切换相关更改依据是否与代码直接匹配 | playback speed/seek/time 控制映射与之区分 | sample-31 将动画节点名称更改与状态切换模式分离查看 | | 32 | 动画播放时间控制 | 公共语法 | playback speed、seek、current position 相关更改依据在当前代码中是否必要 | Idle/Run/Jump 状态选择映射与之区分 | sample-32 区分播放时间调节 API 与状态切换 API | | 33 | 碰撞区域大小调整 | 版本差异 | CollisionShape2D、RectangleShape2D、shape size/extents 更改依据在当前代码中是否直接必要 | collision signal、physics layer、damage 映射与之区分 | sample-33 检查不是碰撞判定 API,而是 shape 大小调整 API 的变化是否与实际代码相符 | | 34 | 物理重力(Gravity)应用 | 版本差异 | CharacterBody2D/KinematicBody2D、velocity、move_and_slide 系列更改依据在当前代码中是否直接必要 | jump impulse、floor check、Area2D gravity 映射与之区分 | sample-34 确认在物理帧中重力是否累计并映射到移动 | | 35 | 跳跃(Jump)力度应用及着陆检测 | 版本差异 | is_on_floor()、jump velocity、Input action、move_and_slide 相关更改依据是否与代码直接匹配 | 仅 gravity 移动、动画状态、墙体碰撞映射与之区分 | sample-35 检查跳跃启动条件与着陆判定是否共同构成所需映射 | | 36 | 墙体碰撞时滑动(Slide)处理 | | | | | | 37 | 玩家方向切换(Facing Left/Right) | | | | | | 38 | 弹药(Ammo)计数减少 | | | | | | 39 | 弹药耗尽时的换弹(Reload)状态切换 | | | | | | 40 | UI 按钮点击事件关联 | | | | | | 41 | 设置(Settings)菜单打开/关闭切换 | | | | | | 42 | 语言(Language)更改时文本更新 | | | | | | 43 | 保存数据(Save Game)JSON 序列化 | | | | | | 44 | 加载数据(Load Game)JSON 反序列化 | | | | | | 45 | 文件读写错误处理 | | | | |

| 46 | 网络连接状态检查 | | | | | | 47 | 通过远程函数(RPC)调用进行同步 | | | | | | 48 | 场景资源动态加载 | | | | | | 49 | 内存释放及资源卸载 | | | | | | 50 | 调试日志输出(print 或 print_debug) | | | | |

label_prototypes

不是仅仅更改名称,而是函数的使用方式、参数构成、调用模式整体改变的示例依据是否与代码块直接匹配,需要确认。

编号 功能 是否为通用语法 相关 JSONL 结果 无关 JSONL 结果 备注
1 _ready() 函数初始化及视口大小设置 通用语法 相关 JSONL 观察 无关 JSONL 观察 DisplayServer.window_set_size(Vector2i(1920, 1080)) 原型为 AudioStreamPlayer3D 原型为 判定
2 _process(delta) 按帧更新循环 通用语法 相关 JSONL 观察 无关 JSONL 观察 func _process(delta)position.x += move_speed * delta 原型为 _input(event)/event.is_action_pressed 原型为 判定
3 玩家移动输入处理(WASD 或方向键) 通用语法 相关 JSONL 观察 无关 JSONL 观察 Input.is_action_pressedvelocity = direction * move_speedmove_and_slide() 原型为 @onready/节点路径访问原型为 判定
4 玩家移动速度及加速度应用 版本差异 之前的双向 记录在最终判定中被排除 在 Godot 3 检查中 label_prototypes 侧为 是/否 分歧 需重新审视按轴 move_toward(velocity.x/velocity.z)move_and_slide()CharacterBody3D 原型是版本专属依据还是通用字符串依据
5 玩家最大速度限制 版本差异 基于 Godot 3 的首次观察。基于 Godot 4 的逆向原始响应:Godot 4 代码 是/否,Godot 3 代码 是/否 Tween 原型在双方均为 ,已废弃 CharacterBody2Dmove_and_slide()velocity 在两套代码中均出现,相关原型均标记为 。需将版本专属依据与通用字符串依据分离
6 鼠标点击时生成并发射弹体 版本差异 弹体生成/发射调用模式原型与代码基准匹配 无关原型候选也已废弃 包含在 24/24 通过流程中。输入处理与弹体生成模式分离良好
7 弹体的移动及寿命(time‑to‑live)管理 版本差异 基于 Godot 3 的转换原型在 Godot 3 代码中标记为 同一原型在 Godot 4 代码中也标记为 ,出现不一致观察 整体 22/24;已转换的 Godot 4 代码不应出现 “需要转换” 原型的情况
8 敌人(Enemy)对玩家的追踪(AI)逻辑 版本差异 label_prototypes 侧并非第 8 条不一致的直接原因 无关原型候选如预期被废弃 整体不一致来源于 docs_chunks。原型记录为追踪 AI 使用方式变化的辅助维度
9 敌人的移动速度及转向逻辑 版本差异 移动/转向调用模式原型与代码基准匹配 无关原型候选如预期被废弃 24/24 通过。移动速度计算与转向应用模式相对清晰分离
10 玩家离开屏幕时消失 通用语法 由于是通用代码,label_prototypes 相关 JSONL 不需转换 无关转换候选为 流程 6/6 通过。通用语法下原型并未强制附加的流程得到确认
11 碰撞检测(Area2D 或 PhysicsBody) 版本差异 检查碰撞检测 signal/callback 的使用方式是否为当前代码修改前的模式 与碰撞后伤害应用原型区分 sample-11 将检测事件模式与后续游戏玩法处理模式分开考察
12 碰撞时伤害计算与应用 通用语法 检查碰撞结果导致伤害调用模式是否直接出现在当前代码中 与单纯碰撞检测或血量归零原型区分 sample-12 核实参数构成、目标对象、伤害应用顺序是否为原型依据
13 玩家血量下降逻辑 通用语法 检查玩家受击/血量下降模式是否直接出现在当前代码中 与敌人血量下降原型区分 sample-13 即使同属 health 系列,也验证 player 与 enemy 目标的差异
14 玩家血量为 0 时游戏结束处理 通用语法 检查血量为 0 后游戏结束调用模式是否直接出现在当前代码中 与单纯血量下降或敌人移除原型区分 sample-14 验证条件语句后状态切换/场景处理是否由原型描述
15 敌人血量下降逻辑 通用语法 检查 enemy damage/health 下降模式是否直接出现在当前代码中 与 player damage 原型区分 sample-15 关注当目标对象和状态变量名称广泛重叠时是否产生误报
16 敌人血量为 0 时移除并增加分数 通用语法 检查 enemy 移除与 score 增加同时出现的调用模式是否直接出现在当前代码中 与单纯 score 更新或单纯移除原型区分 sample-16 验证多个行为绑定的原型是否与 SOURCE_CODE 的实际顺序相符
17 分数(Score)变量更新 通用语法 检查 score 变量更新模式是否直接出现在当前代码中 与 Label 文本映射原型区分 sample-17 将内部数据更新与 UI 显示更新区分为两个项目
18 分数文本(Label)更新函数 通用语法 检查 Label 文本更新模式是否直接出现在当前代码中 与仅修改 score 变量的原型区分 sample-18 判断该原型是针对值变化还是屏幕显示的更新
19 背景音乐(BGM)播放及音量调节 通用语法 检查 BGM 播放/音量调节模式是否直接出现在当前代码中 与单次 SFX 播放原型区分 sample-19 关注持续播放/音量调节目的,而非通用音频词汇
20 音效(SFX)播放函数 通用语法 检查 SFX 调用/播放模式是否直接出现在当前代码中 与 BGM 循环或总线音量原型区分 sample-20 区分短效音效播放与背景音乐管理流程
21 屏幕抖动(Screen Shake)效果实现 版本差异 检查屏幕抖动强度/时间/偏移应用模式是否直接出现在当前代码中 与相机跟随或普通 Tween 原型区分 sample-21 即使存在 Camera2D/Tween,也要确认最终效果为 shake
22 粒子系统创建及位置匹配 版本差异 检查粒子创建、位置匹配、emitting 启动模式是否直接出现在当前代码中 与弹体创建或普通节点创建原型区分 sample-22 验证位置同步与发射启动是否由原型说明

| 23 | 场景切换(Scene Change)函数 | 版本差异 | 检查是否在当前代码中直接存在接受场景路径并通过 SceneTree 切换的调用模式 | 与单纯资源加载、打开菜单、暂停原型区分 | sample-23 用于确认场景切换的输入路径、调用目标以及切换结果是否由原型说明 | | 24 | 主菜单场景加载与显示 | 版本差异 | 检查是否在当前代码中直接存在加载并显示菜单场景的调用模式 | 与单纯资源加载、场景切换、暂停菜单原型区分 | sample-24 用于确认原型是否说明“显示主菜单”这一结果 | | 25 | 游戏暂停(Pause)功能切换 | 公共语法 | 检查是否在当前代码中直接存在翻转 pause 状态并绑定相关 UI/输入处理的模式 | 与打开设置菜单或游戏结束原型区分 | sample-25 用于确认 pause 标志的改变与画面显示是否应视为同一流程 | | 26 | 键盘输入状态检查 (Input.is_key_pressed) | 版本差异 | 检查是否在当前代码中直接存在轮询键盘输入状态的模式 | 与动作强度、移动向量、鼠标输入原型区分 | sample-26 用于将输入查询与基于该输入执行的行为分离记录 | | 27 | 获取鼠标位置(光标)坐标 | 公共语法 | 检查是否在当前代码中直接存在读取光标坐标并用于变量或位置计算的模式 | 与鼠标点击事件或子弹生成原型区分 | sample-27 用于确认仅查询鼠标位置本身是否为核心 | | 28 | 随机数字生成函数 | 版本差异 | 检查是否在当前代码中直接存在随机数生成/范围指定的调用模式 | 与生成位置分布、掉落表、计时器生成原型区分 | sample-28 用于将 random API 调用与 random 结果的使用场景分离观察 | | 29 | 按特定时间间隔生成敌人(Spawn) | 版本差异 | 检查是否在当前代码中直接存在按固定时间调用 spawn 函数的模式 | 与随机位置计算或敌人追踪 AI 原型区分 | sample-29 用于确认时间条件、计时器、spawn 调用顺序是否正确 | | 30 | 已生成敌人的位置随机分布 | 公共语法 | 检查是否在当前代码中直接存在将生成的敌人位置放置在随机范围内的模式 | 与按固定时间生成的 spawn 循环原型区分 | sample-30 用于将分布/坐标计算与生成周期分离 | | 31 | 玩家动画状态切换(Idle、Run、Jump) | 版本差异 | 检查是否在当前代码中直接存在根据状态值或速度更改 animation name 的模式 | 与播放速度、seek、帧/时间控制原型区分 | sample-31 用于确认切换到哪种状态是核心 | | 32 | 动画播放时间控制 | 公共语法 | 检查是否在当前代码中直接存在控制播放速度、seek、当前播放位置的模式 | 与 Idle/Run/Jump 状态切换原型区分 | sample-32 用于确认核心是播放时间控制而非动画选择 | | 33 | 碰撞区域大小调整 | 版本差异 | 检查是否在当前代码中直接存在读取或修改碰撞 shape 大小值的模式 | 与碰撞事件处理或伤害应用原型区分 | sample-33 用于将 shape 大小修改与碰撞结果处理分离记录 | | 34 | 物理重力(Gravity)应用 | 版本差异 | 检查是否在当前代码中直接存在基于 delta 将重力累加到 velocity 并在移动调用中体现的模式 | 与跳跃输入、着陆检测、生成/计时器原型区分 | sample-34 用于确认在物理移动循环中重力累加是核心 | | 35 | 跳跃(Jump)力度应用及着陆检测 | 版本差异 | 检查是否在当前代码中直接存在在地面时施加跳跃力度并随后检测着陆的模式 | 与仅有重力累加的移动原型或动画状态切换原型区分 | sample-35 用于确认跳跃条件、垂直速度改变、地面判定是否被统一为一条流程 | | 36 | 墙体碰撞时滑动(Slide)处理 | | | | | | 37 | 玩家方向切换(Facing Left/Right) | | | | | | 38 | 弹药(Ammo)计数减少 | | | | | | 39 | 弹药耗尽时的换弹(Reload)状态切换 | | | | | | 40 | UI 按钮点击事件绑定 | | | | | | 41 | 设置(Settings)菜单打开/关闭切换 | | | | | | 42 | 语言(Language)更改时文本更新 | | | | | | 43 | 保存数据(Save Game)JSON 序列化 | | | | | | 44 | 加载数据(Load Game)JSON 反序列化 | | | | | | 45 | 文件读写错误处理 | | | | | | 46 | 网络连接状态检查 | | | | | | 47 | 通过远程函数(RPC)调用进行同步 | | | | | | 48 | 场景资源动态加载 | | | | | | 49 | 内存释放及资源卸载 | | | | | | 50 | 调试日志输出(print 或 print_debug) | | | | |

2026年7月6日 追加记录

从第6条到第10条已经在2026年7月3日反映了改进流程并留下了详细观察。因此在本文件中,6~10条不留空白,而是将原有的观察内容分别对应写入 docs_chunksapi_mappinglabel_prototypes 表中。

2026年7月6日,以 http://localhost:8520/#item=sample-22 为基准,追加记录了第11条到第22条。该区间逐条说明每个条目中哪些候选依据对应的 JSONL,哪些候选应当以其他代码/其他转换/其他模式出现。

2026年7月8日 追加记录

2026年7月8日,以 http://localhost:8520/#item=sample-32 为基准,继续记录了第23条之后至第32条。此区间更像是观察表,而不是最终判定表,记录 docs_chunksapi_mappinglabel_prototypes 对同一代码块的不同视角解释或拒绝理由。

2026年7月13日 追加记录

2026年7月13日,以 http://localhost:8520/#item=sample-35 为基准,记录了第33条之后至第35条。该区间涉及冲突区域大小、重力、跳跃/着陆等物理移动与碰撞形态相互影响的条目,需要同时考虑代码的目的和使用位置,而不仅仅是字符串的重叠。

第5条 逆向观察

第5条虽然在今天的目标数量中,但在以 Godot 4 为基准的 JSONL 逆向检查时,结果并未以简洁的 “是/否” 对出现。因此不对其作出最终判定,而在后续阶段将其作为模式分析的对象。

响应顺序为 docs_chunks #1docs_chunks #2api_mapping #1api_mapping #2label_prototypes #1label_prototypes #2

检查代码 响应顺序 观察
Godot 4 代码 , , , , , 由于 limit_speedvelocitymove_and_slide()Input.is_action_pressed 等代码直接匹配的字符串较多,docs/api 候选被宽泛地标记为
Godot 3 代码 , , , , , docs 候选和 CharacterBody2D 原型被标记为 ,但以 Godot 4 为基准的 api_mapping 候选被标记为

该结果不应仅视为模型错误,而是提示需要检查 JSONL 中的 match_termsrequired_when_seen_in_codecontent 是否过于宽泛。尤其是 move_and_slide()Input.is_action_pressed 这类共同出现的字符串虽可作为直接依据,但在最大速度限制或版本差异的依据上可能过于宽泛。

不一致案例记录

False Positive

记录本应为 “否” 但被判为 “是” 的案例。

ID 功能 是否为公共语法 表格 错误的 JSONL 摘要 Qwen 响应 重新审查原因

False Negative

记录本应为 “是” 但被判为 “否” 的案例。

ID 功能 是否为公共语法 表格 正确的 JSONL 摘要 Qwen 响应 重新审查原因

响应格式违规

记录既不是 “是” 也不是 “否”,而是给出说明、JSON、空响应或多句回答的案例。

ID 功能 是否为公共语法 表格 期望响应 实际响应 备注

观察摘要

在测试过程中填写以下数字和原始响应。此处不作最终判定,只观察响应在何种标准下出现波动。

项目 docs_chunks api_mapping label_prototypes 合计
今日观察量 23~32 追加记录 23~32 追加记录 23~32 追加记录 截至 2026-07-08 的 23~32 追加记录
总观察量 32/50 测试记录 32/50 测试记录 32/50 测试记录 32/50 测试记录
测试的代码块数量 32/50 32/50 32/50 32/50
公共语法样本数 累计估算待定 累计估算待定 累计估算待定 记录至第32条后需单独统计
版本差异样本数 累计估算待定 累计估算待定 累计估算待定 记录至第32条后需单独统计
第一次基准期望响应一致数 5 5 5 15
第一次基准期望响应不一致数 0 0 0 0
第5条 Godot 4 基准逆向原始响应 Godot 4 是/是,Godot 3 是/是 Godot 4 是/是,Godot 3 否/否 Godot 4 是/否,Godot 3 是/否 需进行模式分析
响应格式违规 0 0 0 0
需要重新审查 2 2 2 需依据第4/5条重新定义
当前判断 暂缓最终判定 暂缓最终判定 暂缓最终判定 包含至第23~32 追加记录的后续模式分析仍需进行