Two desk lamps facing each other over a sheet of paper marked in red pencil
Back to blog
EngineeringAI Automation

2,481 次交叉审查:Claude Code 和 Codex 互相检查

两个月里,我们让 Claude Code 和 Codex 在发布前互相审查对方的工作。2,481 次审查之后,数据说明了什么?我们又不得不加上哪一条规则?

S
Sno AI Team
September 22, 2026
|
6 min read
|
139 views
Share:

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。

S

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

2,481 次交叉评审:Claude Code 与 Codex 互相检查对方干的活,到底查出了什么,漏掉了什么