双 Agent 审查如何建立独立验证
文章指出,共享可写工作区、依赖作者摘要以及测试与合并提交不一致,会削弱双Agent审查的可信度。作者提出固定提交的只读检出、原始差异检查和测试执行证据等隔离思路。
AI 深度解读
两个 AI Agent 审同一个 PR,不一定就构成独立审查。如果它们能改同一个工作区,审查者主要依赖实现者写的摘要,测试对应的提交又和最终合并的提交对不上,那么第二句「LGTM」究竟增加了多少可信度?
作者关注的是审查双方的权限和证据边界。原文没有公布实验结果,而是提出一个值得团队自查的问题:你相信 AI 审查,是因为多了一个模型,还是因为多了实现者无法随意改写的证据?
两个 Agent 为什么仍然可能只给出同一种意见
原文设想的流程很常见:Agent A 写补丁并创建拉取请求(PR),Agent B 审查后回复「LGTM」。
问题出在流程背后的三个细节。
首先,两个 Agent 都能修改同一个工作区。审查对象因此可能变化,审查者看到的内容未必能稳定保存下来,也就难以复核。
其次,Agent B 依赖 Agent A 生成的摘要。摘要可以帮助理解改动,但它也是实现者对自己工作的解释。遗漏了什么、哪些假设没有交代,审查者仍然需要回到实际差异里确认。
最后,执行测试的提交可能不是最终合并的提交。即使测试确实通过,也只能证明当时受测的那份代码通过了检查,不能直接替另一份代码作保证。
多一个同意的 Agent,不等于多一份独立证据。
这不是说第二个 Agent 没用,而是「有帮助的复查」和「独立验证」需要分开评价。
怎样让审查证据对应到真正要合并的代码
作者给出了一组可能的做法:让审查者使用锁定到确切提交的只读检出,检查原始差异,并核实哪些测试实际执行过。
其中,锁定提交解决「到底审了哪一版」;只读权限限制审查者改写受审代码;检查原始差异减少对实现者摘要的依赖;核实测试执行情况,则把「声称测过」变成可以检查的记录。
验证需要建立在实现者不能轻易重写的证据上。
不过,原文没有提供具体配置,也没有说明测试记录应如何保存、防止修改,或者怎样自动核对受测提交与合并提交。因此,这是一套讨论方向,还不是拿来就能部署的完整方案。
作者还提出了几项没有定论的问题:低风险改动是否只需第二个模型和独立提示词?是否需要分开的工作区、凭据和不可变产物?哪些地方仍应要求人工批准?
这里的「不可变产物」,可以理解为生成后不能被随手覆盖、能够供后续核对的结果。它是否必要、需要做到什么程度,作者没有给出统一答案。
我的判断
我赞同作者把重点放在证据边界上。独立提示词可以要求第二个 Agent 换个角度检查,但它无法自行解决共享写权限、只看摘要或测试提交错位的问题。换模型和限制权限,解决的是不同问题。
不过,原文没有对照实验,也没有展示失败案例,不能据此宣称独立工作区一定能降低多少缺陷率,更不能推导出所有 PR 都必须配备独立凭据和不可变产物。这是一篇问题导向的讨论,连经验结论都比较克制。
对于低风险改动,第二个 Agent 的复查是否已经够用,需要结合团队的风险容忍度判断;对于需要追责和复核的改动,能确认审查对象与测试对象,则更有实际价值。人工审批也不能自动补齐证据缺口,人同样需要知道自己批准的是哪份代码。
作者披露自己维护开源检查器 Agent Role Contracts(ARC),用于检查声明的 Agent 职责与任务边界。他也明确说明:运行时强制执行和独立审查,还需要额外控制。不能把「声明了职责」当成「权限已经受到约束」。
能拿来做什么
- 在日常 AI 编程中,把实现者摘要作为阅读入口,同时要求审查 Agent 检查原始差异,避免审查只围绕摘要里的解释展开。
- 在 PR 审查结果中记录确切提交,并核对测试对应的提交与待合并提交;后续代码变化后,重新判断原有结论是否仍然适用。
- 做一个小型可复现测试:让实现 Agent 的摘要故意漏掉一处改动,观察审查 Agent 是否会检查原始差异并发现遗漏。用实际结果判断当前流程是否过度依赖摘要。