Godot 4.7 无头验证
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_cc65e9bc/godot47-headless-verify。
技能介绍
为什么 CLI 回归会失败
Godot 4.7 的 Windows 版是原生 exe,不接受 /c/... 这类 POSIX 路径。更麻烦的是三个构建层面的坑:--check-only 会永久挂起不退出;--script 模式不会把 autoload 的全局名注入编译器作用域,导致 Player.gd、RunManager.gd 里出现 Identifier not found 误报;此外这个构建里 var x := some_method() 对多个引擎方法无法推断类型,整个 autoload 脚本编译失败,游戏启动即崩,报错却是「script does not inherit from 'Node'」。
技能如何工作
- 先备份
main.gd,把_can_play临时强制为false,让入口走_headless_combat_sim()分支后get_tree().quit()干净退出,而不是卡在可玩循环里挂起 - 用位置参数加载真实场景(
--headless main.tscn),保证所有 autoload(含 VFX)以及Player.gd/Enemy.gd都被完整加载和解析 - 在
_headless_combat_sim()里插入确定性断言:在player组放 stub 节点、调用RunManager.on_kill、校验stub.healed等 - 用
stdbuf -o0把输出重定向到out.txt,确认EXIT 0和预期打印后再恢复备份,并清理tools/下的临时脚本
适用边界与注意点
- 新素材(
.wav/.png/.ogg)必须先跑一次--headless --import生成.importsidecar 和缓存,否则load()返回 null,SFX 银行大小为 0 can_instantiate()在无头模式下可能返回 true,不能信任自动检测,必须强制_can_play = false- 编辑器会解析全项目,单场景回归可能漏掉场景加载路径之外的 parse 错误,需要
tools/parse_all.gd做全量扫描并 grepFAIL/Parse Error print()输出只在干净退出后才写入重定向文件,别指望实时管道;draw_string()第 4 个参数是HorizontalAlignment而非颜色,签名错误会直接编译失败
使用场景
- 改完 autoload 后,无头跑通入口并确认 EXIT 0
- 回放战斗击杀逻辑,stub 校验 healed 等断言
- 新增音频后确认 load 能拿到资源且音效不为空
- 单场景没报错,但编辑器面板报全项目解析错误
适合人员
- Godot 4.7 开发者:改完 autoload/入口后想在 CI 前无头验证
- 写战斗/系统回归的 SDT 工程师:需要确定性断言与干净退出
- 排查启动即崩的技术负责人:定位类型推断或签名错误
- 维护含大量素材的项目:统一素材导入与全项目解析扫描