乐于分享
好东西不私藏

AI编程进入证据审查阶段:没有测试证据的 PR 别急着合并

AI编程进入证据审查阶段:没有测试证据的 PR 别急着合并

AI 写代码越快,PR 越不能只看代码本身。

接下来真正要审的,是它有没有证明自己改对了。

没有测试证据、失败记录和影响范围说明的 PR,即使 diff 看起来很干净,也别急着合并。


代码审查正在变成证据审查

过去审 PR,重点是人写了什么:代码风格、边界条件、命名、架构是否合理。

AI 参与以后,问题变了。

智能体可以很快生成一大段看起来合理的修改,也可以顺手补测试、改文档、修 lint。表面上 PR 更完整了,但审查者的压力并没有下降。

因为你不知道它是真的理解了问题,还是只是把错误藏到了更深的地方。

尤其是 AI 编程工具开始自动读仓库、自动改多个文件、自动跑命令以后,单靠肉眼看 diff,会越来越吃力。

团队需要把审查对象从“这段代码写得像不像人”改成“这次修改有没有证据支持”。


只看语法错已经不够了

很多自动代码审查还停在第一层:有没有明显 bug,有没有安全风险,有没有风格问题。

这些当然有用,但不够。

AI 生成的 PR 最容易出问题的地方,往往不是语法。

它可能改对了一个测试,却破坏了另一个入口;可能补了异常处理,却吞掉了错误;可能把边界条件写得很漂亮,但和业务口径不一致。

所以审查者真正需要看的,不只是“哪里可能错”,还包括:

证据问题
为什么重要
改动前失败是什么
防止 AI 解决了一个不存在的问题
改动后跑了哪些测试
防止只跑最容易通过的测试
没跑哪些测试
防止遗漏被包装成成功
影响了哪些路径
防止局部改动扩散到核心流程
哪些判断来自模型猜测
防止把推测当事实合并

这就是证据审查。

它不是再加一层流程,而是把原来藏在评论里的追问,变成 PR 必填项。


一张测试证据链表

可以先让每个 AI 参与的 PR 补一张表。

不需要复杂,越具体越好。

字段
PR 里要写清楚什么
问题陈述
这次到底修什么,不要只贴 issue 链接
改动范围
改了哪些模块,为什么需要改这些文件
失败证据
修改前哪个测试、日志或现象能证明问题存在
修复证据
修改后哪个测试或操作证明问题解决
未覆盖范围
哪些测试没跑,哪些场景没验证
风险路径
可能受影响的核心功能、权限、账单、数据写入
人工确认
谁确认了业务口径或产品行为

这张表最有价值的一栏,是“未覆盖范围”。

因为 AI 很擅长给出一个完整感很强的答案,却不擅长主动告诉你:哪些地方它没验证。

审查者看到未覆盖范围,才知道自己该把注意力放在哪里。


不要让 AI 自己给自己打满分

证据审查还有一个坑:让生成代码的同一个智能体,自己声明“我已经验证通过”。

这只能作为初筛,不能作为最终证据。

更稳的做法是把角色拆开:

角色
负责什么
代码生成 Agent
完成修改,列出假设
测试执行环境
跑固定测试,不听模型解释
审查 Agent
检查证据是否缺失
人类 reviewer
判断业务风险和合并责任

不要把“模型说通过了”当成通过。

真正可用的证据,应该来自可复现命令、测试截图、日志片段、失败前后对比,或者明确的人类确认。


先改合并标准

团队不一定要立刻换工具。

可以先把合并标准改成三条:

合并前必须回答
不合格表现
这次修复解决了哪个明确问题
只说“优化代码”
哪个证据证明它解决了
只说“已测试”
哪些风险还没覆盖
完全没有未覆盖说明

如果这三条答不上来,就不要因为 PR 是 AI 写的、看起来很快,就放宽审查。

AI 编程进入团队以后,真正稀缺的不是代码生成速度,而是可信的合并判断。

下一步的代码审查,不是让 reviewer 更快地点通过。

而是让每个 AI 生成的 PR 都带着证据上桌。