
2,481 次交叉审查:Claude Code 和 Codex 互相检查
两个月里,我们让 Claude Code 和 Codex 在发布前互相审查对方的工作。2,481 次审查之后,数据说明了什么?我们又不得不加上哪一条规则?
Claude Code 做完工作,Codex 在发布前检查。Codex 写的东西,则由 Claude 检查。
银行也是这么运作的。没人批准自己的贷款。一个人写材料,另一个人签字,没人觉得这是冒犯。我们把自己的做法叫作 Dual Brain 双脑:两个 AI 智能体结对完成一项工作,一个执行,另一个审查。它内置于 Sno Station;从 七月中旬起,我们就一直这样工作。
每次审查都会在构建机器的日志文件里留下一行。前阵子我起了好奇心,把它们数了一遍。
数量
从 七月 19 日到 九月 21 日,这两个 AI 智能体互相审查了 2,481 次。这段时间里有 63 天在工作,平均每天约 39 次。他们检查了 9,452 个文件中的 3.2 百万行内容。
一次审查大约需要两分钟。中位数是 141 秒,十次里有九次不到六分钟就完成。这个数字比看上去更重要。人工审查要花一天,大部分时间是在等人。审查只需两分钟时,你就不会再问某件事值不值得审查。每件事都审查。
我原以为大部分工作会通过。
在给出结论的审查中,431 次说通过,1,953 次说需要处理。也就是说,五次里有四次,第二个 AI 智能体把工作退了回去。
五次里有四次。这些并不是疲惫实习生交来的潦草初稿。模型已经跑过测试,也说工作完成了。
代码和计划
接着,我把代码审查和计划审查分开统计。
代码的通过率是 27%。1,475 次审查中有 398 次通过。不算好,但还能接受。
计划的通过率是 3.6%。907 次里只有 33 次。
我又看了一遍才敢相信。计划是一份文档,说明我们要做什么、为什么做。你可能觉得文档比代码更容易写对,毕竟它不用编译。事实恰好相反。每次运行代码,现实都会纠正它。计划却可以写着数据库有某个实际不存在的列;在有人照着它动手之前,这句话看起来完全合理。
因此,现在我们会把事实和计划一起交给审查者。审查计划前,写计划的 AI 智能体先运行命令、统计行数、导出数据库结构,并附上原始输出。审查者这才有东西能用来核对计划里的说法。否则,这就像闭卷考试:审查者能找到文档内部的矛盾,却看不出文档与现实不符。
最严重的发现,大多正来自这个缺口。同一时期,审查者在 1,395 次审查中标出了 4,277 个严重问题。我没有逐一核实,也不是每个问题都真实存在。但真实的问题往往属于同一类:有人信心十足地写下一件事,却从来没人亲眼核对过。
出问题的地方
如果文章写到这里,就是个好故事了。我也愿意相信,所有这些审查都让工作变得更好。
事情没这么简单。问题在于,审查者总能找到点什么。
看看后续轮次。写作者修好指出的问题,再次提交后,工作有 21% 的概率通过。第一轮的通过率是 17%。把每个问题都修掉,几乎没改变通过的机会。有一项工作审查了十五轮。
这不是写作者失败了十五次。只是审查者在做审查者会做的事。你让一个能力很强的模型找问题,它就会找到问题。如果正常使用路径没问题,它就去角落里找。两次请求在同一毫秒到达。写入进行到一半时取消。这些情况也许会发生,就像被陨石砸中也可能发生一样。
而写作者很配合,每发现一个问题就加点东西来修。
这个月早些时候,我们碰到一个小问题。修复经过了六轮审查。每一轮,审查者都提出一个新顾虑;每一轮,写作者都加一道防线。给 token 数量设上限。为每个会话加锁。另建一张表,记录已经提供了什么。再加一个别名映射。最后,补丁成了一座小堡垒。
这些机制从未在生产环境中运行过。可在它们下面,修复本身仍有一行身份识别代码写错了,没人发现,因为它埋在层层防线下。这就像为了听清一件很轻的乐器而调高增益,结果听到的主要是嘶嘶声。
我们加的规则
于是我们写下一条规则。这是整个实验里最有用的收获。
发现一个问题,不等于必须加代码。
现在,审查结果分成两类。第一类是普通用户在日常使用中会遇到的问题,而且最小的修复不需要新增东西。这类问题要修。第二类是其他所有问题:罕见情况,以及需要新锁、新重试逻辑或新表才能处理的事。这些问题会被记录并报告。除非有人决定要做,否则它们不会变成代码。
我们还要求审查者先找多余的东西,再找缺少的东西。没人需要的锁。只有一个调用处的开关。只是把代码复述一遍的测试。现在,删掉东西也算一项审查发现。
审查次数也有上限:代码三轮,测试一轮。超过之后,就交给人来判断;说不定一开始就该如此。
值不值得
我没法给你一个准确的价值数字。我倒是想。但我没有对照组,没有另一家公司在不审查的情况下交付同样的工作。
我有的事实是:五次里有四次,一个模型宣称完成的工作,另一个模型认为有东西需要改。其中有些是噪声。但一个 AI 智能体审查自己的工作时,几乎从不把它退回去,因为它已经相信自己写的东西。第二种意见必须来自别处:一个由另一群人训练的模型,而且它没在场见证第一个模型断定一切都没问题的那一刻。
两个脑袋比一个好。看来,即使两个脑袋都不是人,这句话也成立。
Sno Station 是开源的,交叉审查也是其中的一部分。项目在 sno.ai。
Written by Sno AI Team
Contributing writer at Sno.ai, sharing insights about AI, productivity, and knowledge management.
Related Articles
Comments
Comments coming soon. Configure Giscus at giscus.app


