Appearance
如何证明 Coding Agent 真做完了:Tests、Artifacts 与 Manifest
前置:长命令和代码变更怎么管:PTY、Git 与 Verification
核心问题:模型说“修好了”为什么不算完成,Tests、Artifacts 与 Manifest 怎样形成可以独立验证的完成证据?
只跑 targeted tests 后应明确“未跑 full suite”,不能把部分验证描述成全部通过。构建得到 200MB bundle 时,ToolResult 返回 artifact id、hash 和摘要,用户下载从 artifact store 获取。
Test Execution
测试工具需限制命令、超时和输出,先 targeted 再 broader suite;失败输出提炼关键 stack trace 并保留完整 artifact。
测试执行应记录命令、环境、exit code、失败用例、耗时和完整日志 ref。Agent 最终声称“测试通过”必须能追溯到真实 execution record。
Artifact Production
报告、补丁、构建产物应有明确 path/type/version/producer/checksum/retention;最终输出应引用 artifact 而非只说“已生成”。
大型产物不应塞进 context。
Workspace Manifest
Manifest 定义 fresh sandbox 期望文件/目录/repo/mount/env,是 workspace contract;live session 的真实状态可能来自 resume/snapshot。
“任务完成”要落成证据链
Coding Agent 最危险的完成条件是:模型说“已经改好”。真正可验证的完成链应该来自 Workspace 事实:
text
patch applied
→ diff matches intended files
→ targeted tests exit 0
→ broader checks pass / explicitly skipped
→ artifact produced
→ manifest records commit/workspace/test evidence例如模型声称“测试通过”,但 shell record 显示 pytest 因 timeout 被 kill,这个 Run 就不能标成成功。
因此最终回答只是证据的摘要;真正的 completion fact 应能回到 patch、command execution、exit code、artifact id 和 workspace version。
Workspace Manifest 解决“到底验证的是哪一份东西”
至少记录:
text
base revision
current commit / dirty diff hash
important artifact refs
commands/tests executed + exit status
environment/toolchain version
unfinished work / known failures如果测试运行在 patch v3,但模型随后又修改到 v4,旧测试不能证明 v4 正确。Manifest 把 artifact identity 与 verification evidence 绑定,后续 Handoff/Resume 才不会把“测试通过”变成脱离版本的句子。
自测
- 只看到模型回复“所有测试通过”,为什么不能据此结束 Run?至少需要哪些 test/artifact evidence?
- RunManifest 中记录的命令、版本、artifact refs 如何帮助另一个进程验证“这次真的做完了”?