大家好 👋 当你使用 AI 生成大量的 GDScript 时,你很快就会遇到一个问题:写的代码看起来很好,但你不知道它是否被测试覆盖。覆盖率是如何关闭这个循环的,GDScript 在 Godot 4 中没有真正的覆盖工具。因此,我建造了 gd-tools:一个 CLI,用于测试、lint、格式化和 GDScript 代码覆盖率,从一个配置文件中管理所有这些。并且,针对这个群体,gd-tools 还包含了一个代理技能,使你的 AI 编码助手可以驱动这个工作流程。

代理技能(为什么它在这里很重要)

gd-tools 包括了一个 SKILL.md 代理技能文件。将其放入任何加载技能文件的代理中(如 opencode、Claude Code 和类似工具),你的 AI 就可以正确使用 gd-tools,避免猜测命令或标志: * 它学习了每个命令、标志和退出代码约定(0 = 成功、1 = 工具失败、2 = 配置/环境错误),因此可以根据结果进行编程分支,而不是解析自由文本输出。 * 它知道常见的工作流程:引导(初始化)、预提交(lint 然后格式化 --check)和 CI(测试 --覆盖 --最小 80、JUnit XML、JSON lint 输出)。 * 不使用技能加载代理?该文件也可以作为任何 LLM 上下文的完整、可复制的命令参考。 这关闭了 AI 生成然后 AI 验证的循环:你的代理写 GDScript,运行 gd-tools test --coverage --min 80,读取是否覆盖率达到阈值,然后迭代缺口。没有人类监控每个命令。 pip install gd-tools-cli gd-tools init # 引导 GUT + 覆盖添加件 + 配置文件在 <1 分钟内 gd-tools test --coverage --min 80 npx skills add mansyar/gd-tools/skills/gd-tools # gd-tools 实际上做了什么 * gd-tools test --coverage --min 80:运行 GUT 测试,查看代码中哪些行/分支被触发,若覆盖率低于阈值,则失败 CI。 * gd-tools lint / format --check:在 CI 中保持生成的代码一致性,而不改变文件。 * LCOV / Cobertura / JUnit XML / JSON 报告:覆盖率差异和测试结果直接输入你的审查/CI 流程。 覆盖引擎是自定义的混合类型:Python 生成的指令计划,GDScript 运行时添加件跟踪击中,Python 报告(HTML/LCOV/Cobertura)。没有现有的工具为 Godot 4 做到了这一点。

元数据

我本身使用了一个 AI 驱动的 Conductor 工作流程来建造 gd-tools:规范然后计划然后实现然后审查,整个过程中都有 TDD(工具本身有自己的测试套件和 80%+ 覆盖率目标)。因此,这是一个非常“AI 建造工具化 AI 协助游戏开发”的项目,然后又将代理技能发射出去,使其他 AI 代理可以使用它。有点自我参照。

实际世界的证据

我在一个实际的游戏项目上测试了它:632 个测试,所有测试通过,97%+ 行和 98% 分支覆盖率,lint 清洁,70 个文件格式化。正是这样的信号,你期望 AI 生成大部分代码时。

致谢

gd-tools 包含了两个优秀的社区工具,并且无法存在而不依赖它们: * GUT (Godot Unit Test) by bitwes:gd-tools test 驱动的测试框架。 * gdtoolkit by Scony:提供 gdlint 和 gdformat,gd-tools lint 和 format 包含这些工具。 gd-tools 将这些工具包装起来,并添加了覆盖层。

设计哲学

  • 包装,不重复造:GUT、gdlint、gdformat 可以单独使用。gd-tools 将它们包装起来。
  • 一份配置文件(gd-tools.toml)管理所有内容; init 也会产生每个工具的配置文件,以便没有东西被锁定。
  • CI 天然适应:退出代码、--check 模式、机器可读输出、无交互式提示。
  • Godot 4.5+、GDScript 只、Python 3.10+、MIT。

诚实

早期阶段(v0.4.0),在一个完整的游戏项目上进行了测试。稳定在那里,但现在发布以获得更广泛的实际反馈,而不是单独进行过多的打磨。 * GitHub:https://github.com/mansyar/gd-tools (代理技能位于 skills/gd-tools/SKILL.md)
* PyPI:https://pypi.org/project/gd-tools-cli/
* 全部文档(用户指南、架构、贡献)在仓库中。
* 其他人如何将 AI 代理连接到 GDScript 的真实验证循环很有趣。 你让你的代理自己运行测试,还是那仍然是你触发的? `gd-tools doctor` 命令