PASS、NEEDS_WORK、ERROR:读懂 AI 编程 Agent 的结论
一个有边界的编程 Loop 有多种结束方式,其中只有一种是"已验证通过"。了解 PASS、NEEDS_WORK、ERROR、PAUSED 和 STOPPED_BY_USER 各自对你的仓库主张了什么。
> 为什么结论是一个值,而不是一句话
当编程 Agent 用一段散文收尾时,你得仔细读才能判断到底有没有东西被真正验证过。自信的总结和未经验证的改动,看起来是一样的。
Wukong Code 用一个很小的固定结论集合结束 Loop。每一个结论都是对仓库的不同主张,也对应不同的合理下一步。
> PASS 是唯一"已验证"的结论
PASS 意味着冻结的 Gate Plan 真的跑过,且支撑它的证据完整、新鲜。不完整、过期、互相冲突、被中断或损坏的证据都不能变成 PASS——运行会报告问题,而不是向上取整成绿色。
在带有"已确认 no-executable-checks 决定"的 workspace 里产生的 PASS,是一个比"有测试套件通过"更窄的主张。记录会保留这个区别,让你自己权衡。
> NEEDS_WORK 是结论,不是"没能给出答案"
NEEDS_WORK 意味着 Loop 得出了结论,而结论是仓库还没准备好。它带着阻塞证据:哪个检查失败了、哪条审查发现是决定性的、Agent 改了什么、下一步该做什么。
审查方如果无法给出确定判断,会返回 inconclusive,而 inconclusive 会被当作 NEEDS_WORK 而不是通过。触到迭代上限同样以 NEEDS_WORK 结束——是预算让它停下的,所以任何一方都不能声称它已被验证。
- [+]是带证据的阻塞项,不是含糊的"没能完成"。
- [+]inconclusive 的审查永远不会变成通过。
- [+]触到 --max-iterations 会结束运行,且不产生"已验证"的主张。
> ERROR 说的是过程坏了,不是代码坏了
ERROR 关乎运行本身:provider 不再响应、某个检查无法执行、状态写不下去。它对你的改动是否正确不做任何判断,因为 Loop 根本没走到能判断的那一步。
有用的应对通常是修环境——provider 配置、坏掉的检查命令、磁盘或权限问题——然后继续,而不是回头重读 diff。
> PAUSED 和 STOPPED_BY_USER 会保留你的工作
PAUSED 是等待继续的运行,STOPPED_BY_USER 是你主动结束的运行。两者都不是对代码的判决,也都不会丢掉 Loop 已经做过的事:目标、冻结的合同、已收集的证据,以及磁盘上的改动都还在。
从任一状态继续,都会创建幂等的 continuation,而不是开一次忘掉你已确认的验收合同的全新运行。
wukong
/loop status
/loop resume> 每种结论之后该做什么
把结论当作路由,而不是成绩。PASS 意味着去审阅 diff 和被引用的证据,然后决定是否保留。NEEDS_WORK 意味着先读阻塞项——它通常比你自己重读改动得到的信息更具体。
ERROR 意味着修环境然后继续。PAUSED 和 STOPPED_BY_USER 意味着先判断目标是否还是那个目标,不是就修订它,然后恢复。
> 相关指南
在你的仓库里试一次
Wukong Code 在 macOS、Linux 和 Windows 上均为免费 BYOK。
[下载_WUKONG]