
Coding Agent 说完成之后,我还会再跑一次
我现在看 Coding Agent,最不信的一句话就是:测试都过了。
这次实测的产品是 Ling-3.0-flash,我让 Agent 做了一个截图日志校验 CLI:扫描目录里的 PNG,找出缺号、重号和非法文件名。它创建了项目文件,自己运行测试,5/5 全绿。
但我在 Windows 里真正执行 node index.js,退出码是 0,终端却一行 JSON 都没有。
原因并不复杂:现有测试只调用了内部函数,没有从子进程启动真正的 CLI。函数能跑,不代表用户入口能跑。

最初的 5 项函数测试全部通过,但没有覆盖真实 CLI 入口
这种失败比红色报错更容易漏掉。红了,你知道要修;全绿,你很容易把半成品带进下一步。
所以我现在只认一个标准:
Agent 说完成不算完成,走完「失败基线 → 受限执行 → 独立验收」才算。
我把它叫作「可复验闭环」。
具体来说,我会把“完成”拆成三层:
• Agent 完成:它停止运行并给出总结。
• 测试完成:它运行的测试全部通过。
• 用户完成:真实入口、异常路径和文件改动都经过会话外复查。
前两层可以同时成立,第三层仍然失败。这次就是这样。
命令行工具要检查真实入口和退出码,网页要走一遍用户路径,批量处理要主动放进坏数据。验收对象必须和最终使用方式一致。
这套判断不依赖具体模型。只要任务有可观察的输出,就能先定义失败,再限制修改范围,最后用外部命令复查。模型可以换,验收口径不用跟着换。
我拿 Ling 跑了这个闭环
我通过 OpenCode 和 OpenRouter 的免费入口,拿它完成了这个 CLI 的创建、两轮 Bug 修复和三组独立边界任务。
发现 Windows CLI 没有输出后,我把实际输出、预期行为、复现步骤和验收要求一起交给它。
Ling 修复了 Windows 下的入口判断,把测试从 5 项补到 9 项。新增测试会通过子进程真正执行 CLI,我在会话外复跑后,JSON 输出恢复。

修复后新增了真实 CLI 端到端测试
但这还没结束。
我继续用不存在的目录验收,又发现路径明明写错了,程序仍返回空结果和退出码 0。
第二轮结构化报修后,测试增加到 10 项;不存在目录会返回带 error 字段的 JSON,并以退出码 1 结束。

第二轮补上不存在目录的端到端测试
第一版没有一次写对,第一次修复也没有覆盖所有边界。这反而更接近我实际使用 Agent 的方式:用外部验收抓住错误,再把失败变成下一轮输入。
可以直接复制的验收 SOP
1. 先固定失败基线
在 Agent 介入前,先保存:
• 执行命令• stdout / stderr• 退出码• 测试数量• 运行环境
如果验收本来就通过,它不能用来证明 Agent 修复了问题。
2. 锁住修改范围
把答题文件和验收文件分开:
只允许修改:
- index.js- test/test.js
禁止修改:
- acceptance.test.js- 项目外文件- 系统配置
否则你看到的通过,可能只是 Agent 顺手改了题。
3. 用这份模板报修
请先复现问题,再修改代码。
当前情况:[实际输出、退出码、失败测试]
预期情况:[正确行为]
精确报错:[粘贴原始日志,不自行概括]
复现步骤:[从哪个目录运行哪条命令]
允许修改:[文件白名单]
禁止修改:[验收文件、项目外文件、系统配置]
通过标准:
1. 失败基线由失败变成通过
2. 新增覆盖真实入口的端到端测试
3. 完整测试退出码为 0
4. 报告 tests、pass、fail 和改动文件
4. 在会话外重新验收
[ ] 原失败基线已经通过
[ ] Agent 正常退出,没有超时
[ ] 真实用户入口可以运行
[ ] 只修改了白名单文件
[ ] 没有删除测试或放宽断言
任何一项不满足,都不要写“任务完成”。
5. 把结果和边界放在一张表里
我后续补测的结果如下:

这张表的作用不是堆成绩,而是防止我只展示成功的部分。
冷水
• 样本只有三个相近的小型 Node.js 修复任务。大型仓库、长期连续任务和更多语言没有验证。
• 免费入口出现过每日额度限制,长上下文请求出现过 429。需要持续可用性的流程,仍要准备预算、重试和备用路由。
• 浏览器 MCP 的干净复验通过了,但首次运行发生过重复失败和工具越界。最终答案正确,不代表执行过程合格。
• Gemini 对照没有进入模型工作阶段;Office MCP、登录态浏览器、多页交互和下载也没有测试。这篇文章不提供模型排行榜。
如果你的任务没有测试、Schema、编译器或明确验收命令,我不建议把 Agent 的完成总结直接当成交付。
同样不适合的,是希望一句 Prompt 完成大型工程,中间不检查的人。
想自己跑
不用复制我的项目。
找一个真实存在的小 Bug,先写一条必定失败的验收,再把上面的模板交给 Agent。跑完后不要问它“完成了吗”,直接在会话外重新执行验收命令。
如果这套流程能抓住一次“测试全绿但真实入口不可用”,它就已经完成了自己的工作。
官方体验地址:https://openrouter.ai/activity
官方账号:@AntLingAGI