AI 交付里最危险的一句话是:“已经完成。”
因为这句话本身没有证据。AI 可以写得很自信,summary 可以很完整,PR 描述也可以很漂亮,但这些都不等于真实完成。
项目专用 AI 交付流水线必须把“完成”改写成一个证据问题:每条验收标准,分别有什么可复核证据?
这就是 evidence contract。
测试很重要,但不是全部
测试是最重要的证据之一,但不是所有证据。
一个后端函数修复,单元测试和集成测试可能足够。一个前端交互变化,测试之外还需要截图或录屏。一个数据链路修复,可能需要 API 输出、日志、只读 SQL 或队列观察。一个 SketchUp 建模工具,可能需要 design_model diff、bridge trace、top-view screenshot 和 live bridge smoke。
所以问题不应该是“有没有跑测试”,而是“这次交付需要哪些证据”。
证据必须映射到验收标准
很多项目的 evidence gate 只按文件类型检查。例如改了前端就要截图,改了服务就要 data proof。
这已经比没有证据强很多。但更进一步,证据应该映射到 acceptance criteria。
如果验收标准有三条,证据也应该能回答:
- 第一条由哪个测试或截图证明;
- 第二条由哪个 API 输出或日志证明;
- 第三条有没有未覆盖,如果未覆盖,原因是什么。
这样 reviewer 才能判断 AI 是否解决了用户问题,而不只是跑了一些命令。
evidence manifest 应该文件化
证据不应该只留在聊天里。
一个 evidence manifest 可以包含:
- 任务 ID 或 PR;
- 变更摘要;
- 验收标准列表;
- 每条验收对应的证据;
- 测试命令和结果;
- 截图或数据证明路径;
- 未运行检查及原因;
- 残余风险;
- 生成时间;
- worker 或工具版本。
manifest 不保证正确性,但它保证 reviewer 有东西可查。
不同项目需要不同证据
证据合同必须项目专用。
在 TidalFi 这类系统里,涉及 API、服务、数据库、队列、Redis 或事件流的修改,不能只靠单元测试。它需要 data proof。涉及前端流程的修改,需要截图。涉及发布的修改,需要 release boundary 和 production verification。
在 SketchUp Agent Harness 里,“看起来有模型”不够。需要知道模型从哪里来、结构化 design model 是否一致、bridge trace 是否可解释、SketchUp scene 是否由干净 replay 生成、视觉审阅是否支持 source evidence。
在知识库发布里,“文章生成了”不够。需要 source trace、双语 sibling、series metadata、language switch、site build 和 publication ownership。
没有证据,就不能叫 done
这条规则会改变 AI 的行为。
如果没有证据门禁,AI 会倾向于用自然语言总结完成。如果有 evidence contract,AI 必须在执行过程中主动收集测试结果、截图、日志、trace 和风险说明。
它会更像工程 worker,而不是聊天助手。
结论
AI 交付的完成标准不应该是“AI 认为完成”。
完成应该意味着:任务合同里的验收条件,有对应的证据;没有证据的地方,有明确的未覆盖说明;高风险边界没有被偷偷跨过。
这就是 evidence contract 的价值。

