在一个没有测试的仓库里跑 AI 编程 Agent
以验证为核心的编程 Agent,需要有东西可验证。看看当 workspace 里没有任何可运行的 test、lint、typecheck 或 build 命令时,Wukong Code 会怎么做,以及它为什么要求你先确认这件事。
> 没有测试的仓库带来的真实问题
一个承诺"可验证"的编程 Agent 必须回答一个尴尬的问题:拿什么来验证?现实中大量仓库——原型、脚本集合、接手的老服务——根本没有测试命令。
有诱惑力的做法是让模型给自己打分,然后把它当作通过。Wukong Code 不这么做。当 workspace 没有可执行检查时,缺失的证据会被如实记录为这次运行的事实,而不是被糊过去。
> 检查项来自 workspace 的真实声明
Loop 启动前,Preflight 会寻找项目真正声明的检查命令:根脚本,以及在 monorepo 里 pnpm、npm、yarn 或 bun workspace 实际声明的成员。每个被提议的检查都保留它的来源定位和定义,你能看清它为什么被建议。
你可以接受发现的集合、用显式命令替换它,或者完全排除自动发现。你的选择会被冻结进整轮运行的 Gate Plan,所以 Agent 无法悄悄丢掉一个总是失败的检查。
wukong loop "fix the CSV importer" --check "npm test" --only-explicit-checks --dry-run
# Preflight prints the frozen Gate Plan and the exact flags a headless start needs.> "没有可执行检查"变成一个需要你确认的决定
如果自动发现什么都没找到、你也没有补充显式命令,Loop 不会静默继续。它会产生一个版本化的 no-executable-checks 决定,初始状态是"需要确认",只有你确认之后才变成"已确认"——在 TUI 里确认,或在 headless 模式下传入 dry run 打印出的精确 digest。
这个决定自带 policy 版本和 digest,所以记录里能看出当时生效的是哪条规则、你到底同意了什么。确认它既不会让 Gate 更严也不会更松,它只是把"证据缺失"这件事写明白。
- [+]它是版本化、digest 锁定的决定,不是一个布尔开关。
- [+]headless 运行必须传入 --dry-run 给出的 digest,所以这个确认不会被顺手自动化掉。
- [+]运行记录会显示 workspace 没有可执行检查,而不是暗示它通过了某些检查。
> 没有测试时,Gate 还能告诉你什么
全新上下文的只读 reviewer 依然会读改动并报告阻塞项,内置风险规则也照常运行。消失的是确定性证明:什么都没执行,所以不能引用任何"已执行"的结论。
这正是要把决定显式化的原因。没有可执行检查得出的结论,比有测试套件支撑的结论要弱,记录应当说明这一点,而不是把两者压成同一个绿色的词。
> 更好的做法:先加一个真实检查
如果仓库没有检查只是因为还没人写,那么价值最高的第一个 Loop,往往就是加上一个有意义的检查——冒烟测试、typecheck、build——让之后每一次 Loop 都有东西可验证。
一旦存在一条命令,自动发现就能找到它,Gate Plan 就能要求它,后续运行也不再依赖那个确认。
wukong loop "add a typecheck script and make it pass" --check "npm run typecheck" --max-iterations 6 --dry-run
# Review the plan, then rerun the same command with the exact flags it printed.> 相关指南
在你的仓库里试一次
Wukong Code 在 macOS、Linux 和 Windows 上均为免费 BYOK。
[下载_WUKONG]