我们的大部分代码都由 AI 智能体编写和审查,所以"哪个模型坐哪把椅子"对我们来说不是冷知识,而是人事安排。
七月,我们把一款刚发布、在各大公开排行榜上名列第一的 Claude Opus 提拔上岗。一周后又把它撤了下来。它在最不该出错的代码里自信地犯错:也就是我们应用中负责屏蔽你的应用、而且不该被说服放行的那一部分。
教训:排行榜考的是别人的试卷。于是我们自己出了一份。
考题
七个我们已经发现并修复的 bug,每个都有一份写明正确答案的事后复盘。其中两个是"这是一次事故,请解释原因"。另外五个是"这是审查者发现 bug 之前那一刻的拉取请求:发布还是不发布?"这五个里每一个都藏着一个真正的阻断问题,所以正确答案永远是不发布。模型们并不知道这一点。有些是真的完全不知道。
每个模型拿到的是修复之前那一刻的仓库冻结副本,只读工具,没有记忆,还有 600 字(英文单词)的上限。我们记录了每一条命令,任何偷看副本之外内容的运行一律作废。五位选手,各跑 16 次:Claude Opus 4.8、Claude Opus 5.5、Claude Fable 5.1、GPT-5.6 Sol 和 GPT-6 Astra。
然后由两位评分者(每个家族各一位:Astra 和 Opus 5.5)盲评所有答案,去掉模型名称,打乱顺序。
记分牌
| 模型 | 找到的 bug(共 16) | 得分,GPT / Claude 评分者 | 判断正确(共 10) | 每次用时 |
|---|---|---|---|---|
| GPT-5.6 Sol | 14 | 86 / 87 | 10 | 308 秒 |
| GPT-6 Astra | 12 | 82 / 81 | 9 | 106 秒 |
| Claude Opus 5.5 | 13 | 63 / 76 | 2 | 87 秒 |
| Claude Fable 5.1 | 11 | 62 / 70 | 2 | 191 秒 |
| Claude Opus 4.8 | 10 | 45 / 50 | 0 | 242 秒 |
找到的 bug 和判断正确的数量采用 GPT 评分者的结果;Claude 评分者的结果相同或略严一些。
两位评分者给出的排名完全一致。没错,Claude 评分者把两个 GPT 模型排在了自家亲戚前面,包括它自己,这份诚实值得尊敬。稍欠诚实的是:它给 Opus 5.5 的分数比 GPT 评分者高出约 13 分,而给 GPT 答案的分数与 GPT 评分者相差不到一分半。评委也有亲戚。
找到了,不等于说出来了
最让我们意外的是"判断正确"这一栏。Claude 模型经常找到了 bug,在第四段里认真描述了它,然后照样投票发布。想象一个烟雾报警器,给你发来一篇关于燃烧原理的精彩短文。GPT 模型则几乎对每一个真正的阻断问题都投了不发布。
差距集中在难题上。在我们 iOS 后台扩展里的两个并发竞态问题上,Claude 模型合计 12 次运行只找到 2 次。GPT 模型每次都找到了其中一个。
那个竞态正是今年夏天一次真实审查的重演:一位 Claude 审查者走读代码后判定安全,而 Codex 审查者发现了它。在基准测试里,历史重演了。Astra 在两次运行中都描述出了完全相同的执行顺序。
最新的模型话最多
每个模型的上限都是 600 字。四个模型每次都没超,GPT 模型通常只用了大约三分之一。Opus 5.5 在 16 个答案中有 8 个超限,最长写到了 800 字。
它是这次测试中最快的模型(每次 87 秒),也是 Claude 家族里找 bug 最厉害的一个,却把字数上限当作友情提示。放在审查者身上,这几乎有点可爱。放在按需求写代码的模型身上,把指令当建议,正是它的前任在七月被撤下的原因。我们会盯着它。
再看自信的错误,也就是那些说得斩钉截铁却是错的结论:Astra 在两位评分者那里都是零。Opus 4.8 在 GPT 评分者那里有 20 个。
我们改了什么
- 我们的 Claude 智能体从 Opus 4.8 换成了 Opus 5.5。 找到的 bug 更多(13 对 10),成本不到一半(16 次运行 13.84 美元对 32.62 美元),速度快了近三倍。我们记下了字数问题,还是换了。
- GPT-6 Astra 成为我们的常规第二审查者,取代 Sol。Sol 找到的略多一些;Astra 没有任何自信的错误,速度快三倍,估算成本大致相同。
- 每个拉取请求仍然由来自不同家族的两位审查者审查。 这是我们对这条规则最有力的论据:在最难的 bug 上,两个家族漏掉的东西不一样。
- 以后任何模型更换,都要先参加这场考试。
附注
七个案例是一场小考试:15 分左右以内的差距都是噪声,不过两位评分者给出的排名一致。这些是我们自己的 bug(强制执行和并发),并不能说明哪个模型在一般意义上最好。而且我们衡量的是审查,不是编写。能看出竞态的模型,照样可能写出竞态。让每个模型亲手写修复的一轮已经设计好了,但成本高得多,所以先排队。
拿去用吧
挑你已经完全理解的 bug。在每次修复之前冻结仓库。确保修复真的够不着。给每个模型相同的提示。盲评,并且评分者来自不止一个家族。这是我们唯一信任的模型排行榜,主要因为答案是我们自己写的。