AI互撕后code review表现会更好?Claude、Gemini、Codex、Qwen、MiniMax 最新模型测评
春节期间,各家模型扎堆发布,相信大家已经学累了。
但热闹归热闹,这些模型实际用起来到底怎么样?尤其是做代码审核的时候,又该怎么正确用才靠谱?
前阵子,我拿 AI 审一份 PR,发现了一个很有意思的事情:先是 Claude 说里面有 data race,Gemini 却笃定没问题。然后,我把 Opus 4.6、Gemini 3 Pro、GPT-5.2-Codex、Qwen-3.5-Plus、MiniMax-M2.5 几个最新旗舰模型全拉进来让它们自己辩论之后,发现了一个更反直觉的结论:
单个模型找已知 bug 的命中率最高也就 53%。但让它们辩论之后,命中率会直线提升到 80%。最难的 L3 级别 bug(需要系统级理解的那种),在辩论模式下全部命中。
那么,各家旗舰模型到底哪一个更强?此外,模型辩论搭配机制的最优解是什么?
本文为实验过程记录与设计思路还原。
01 五个最新旗舰模型测评,效果如何?
经常用 AI 辅助 coding 的话,很容易发现不同模型的 code review 风格与能力差异显著:
比如,Claude 擅长追踪完整调用链,顺着代码逐层排查,连错误处理路径也不会遗漏;Gemini 则先对代码定性,常以 “this is a disaster” 开篇,从架构层面展开分析,但难以确定其是否完整浏览代码;Codex 发言较少,但偶尔的反馈能直接命中问题要害。
那么,到底哪个更有优势?干脆在生产环境做个测评。
模型上,我选了 Opus 4.6、Gemini 3 Pro、GPT-5.2-Codex、Qwen-3.5-Plus、MiniMax-M2.5 五个最新旗舰模型。(备注:本来想加 GLM5,但懂的都懂——总是限购抢不到,只能遗憾缺席😂。)
测评工具上,采用了我此前自研的 Magpie(已开源:https://github.com/liliu-z/magpie);测评考题均来自 Milvus(开源向量数据库,本人日常参与维护的项目),共筛选 15 个 PR。
为更好的检验模型实力,所选 PR 均有一个共同特征:合入后出现问题,需进行 revert 操作或后续 hotfix。同时,我将选择的 bug 按难度分为了 3 级:
L1:仅查看 diff 即可发现,如 use-after-free、off-by-one 等类型;(L1 难度过低,所有模型均能轻松检出,无区分度,故不列入最终测评)
L2(10 个):需理解周边代码才能发现,如接口语义变更、并发竞争等,贴合日常高频 bug 场景;
L3(5 个):需具备系统级理解能力才能发现,如跨模块状态一致性、升级兼容等,是最能检验模型深度的难点 bug。
测试过程,分为裸测(无任何辅助)和 Magpie 加持(给足上下文)两种模式,贴合日常不同的 code review 场景。
最终测试结果如下:
| 模式 | Claude | Gemini | Codex | MiniMax | Qwen |
|---|---|---|---|---|---|
| Raw(裸测) | 53%(第一) | 13%(垫底) | 33% | 27% | 33% |
| R1(Magpie加持) | 47%(略降) | 33%(翻倍) | 27% | 33% | 40%(进步明显) |
从单个模型的测评表现中,我们能提炼出 4 个核心结论:
Claude 裸测封神:53% 的检出率全场最高,尤其是 L3 级最难 bug,裸测 5/5 全中——不用额外给上下文,就能搞定系统级问题。
Gemini 输在上下文能力:裸测只有 13%,全场最低,但加上 Magpie 的上下文后,直接涨到 33%(翻了一倍多)。说明模型不擅长自己找上下文,适合我们提前整理好代码上下文,再让它辅助审 PR 的场景。
R1 模式下 Qwen 表现不错(40%):R1 模式下 40% 的检出率,尤其是 L2 级别 bug,拿了 5/10,是这个难度下的最高分,实用性拉满,适合日常常规 PR review,不用费心调试。
上下文不是万能的:更多的上下文提示帮了 Gemini(13% → 33%)和 MiniMax(27% → 33%),但坑了 Claude(53% → 47%)。推测原因:Claude 本身就擅长自己梳理上下文,额外注入的信息,反而成了噪音,干扰了它的判断。
测试结果跟我日常体感基本吻合,但 Gemini 的分比实际体感低一些。可能因为我平时用 Gemini 更多是多轮对话,但这个评测是固定流水线,一轮出结果,刚好卡在 Gemini 不擅长的形式上。后续换成多轮对抗后,Gemini 的表现明显改善。
02 五个模型辩论,效果直线提升
单个模型测评结果显示,各模型均有优劣,基于此,我尝试引入互相辩论模式,探究能否进一步提升 bug 检出效果。
辩论测试基于第一阶段的实验规则,仅增加 1 个核心要求:5 个模型同时参与,开展 5 轮对抗式辩论,所有观点必须以代码为证据,互相挑错、反驳,禁止无依据妥协。
最终辩论模式与最强个体(裸测版本的 Claude)的效果对比如下:
| 模式 | L2 (10个) | L3 (5个) | 总计检出率 |
|---|---|---|---|
| 最强个体 (Raw Claude) | 3/10 | 5/5 | 53% |
| Debate (辩论模式) | 7/10 (翻倍) | 5/5 (全中) | 80% |
可见,辩论模式的效果全面碾压单个模型,核心提升体现在两点:
命中率大幅提升:从单个模型最高的 53% 检出率飙升至 80%,尤其是 L2 级常规 bug,检出率直接翻倍,彻底弥补了单个模型的检测盲区。
难 bug 零遗漏:L3 级最难的系统级 bug,辩论模式下实现 100% 命中,而单个模型中,仅 Claude 能做到这一点,充分体现了模型协作的核心价值。
能力互补:系统级 bug 对最强个体而言难度不大,辩论模式的核心价值的是补齐了 Claude 在 L2 级常规 bug 的检测短板。
这里补充一个具体辩论细节还原:PR #44474 https://github.com/milvus-io/milvus/pull/44474
1 |
|
03 模型怎么搭配,找到 bug 最多?
53% 到 80% 的检出率提升背后,在于不同模型互补了彼此的能力盲区。那么,新的问题来了,哪些模型互相搭配,效果更好?
此前,在 R1(有上下文加持) 模式下每个模型找到的 bug 数量如下:Claude 7/15(47%),Qwen 6/15(40%),Gemini 和 MiniMax 各 5/15(33%),Codex 4/15(27%)。
此外,五个模型联合覆盖 11/15 的 bug——还有 4 个 bug 全军覆没。
这里面有一个有意思的细节是,Claude 找到的最多,但也只覆盖了不到一半。它漏掉的 8 个里,Gemini 能补 3 个——一个并发竞态、一个云存储 API 兼容性、一个权限校验遗漏。反过来,Gemini 漏掉的数据结构和深层逻辑 bug,Claude 几乎全找到了。
而将不同模型两两组合后,整体的 bug 检出率如下:
| 两模型组合 | 联合覆盖 |
|---|---|
| Claude + Gemini | 10/15 |
| Claude + Qwen | 9/15 |
| Claude + Codex | 8/15 |
| Claude + MiniMax | 8/15 |
也是因此,针对我们的测评集,Claude + Gemini 是最优两模型组合,两个就能覆盖五个联合上限的 91%。
此外,在把 bug 的类型与数量进一步增加做对比之后,我们还发现,Claude + Gemini 并非所有场景下的最优解,bug 类型决定了模型的适配性:
按 bug 类型看各模型的强项:
| Bug 类型 | 总数 | Claude | Gemini | Codex | MiniMax | Qwen |
|---|---|---|---|---|---|---|
| 校验遗漏 | 4 | 3 | 2 | 1 | 1 | 3 |
| 数据结构/生命周期 | 4 | 3 | 1 | 1 | 3 | 1 |
| 并发竞态 | 2 | 0 | 1 | 0 | 0 | 0 |
| 兼容性 | 2 | 0 | 1 | 1 | 0 | 1 |
| 深层逻辑 | 3 | 1 | 0 | 1 | 1 | 1 |
| 合计 | 15 | 7 | 5 | 4 | 5 | 6 |
可以看出,数据结构生命周期找 Claude 和 MiniMax,并列 3/4。校验遗漏找 Claude 和 Qwen,并列 3/4。并发和兼容性 Claude 反而是 0——刚好是 Gemini 补位的地方。没有全能选手——但 Claude 覆盖最广,是最接近全能的那个。
至于那 4 个全军覆没的 bug——一个是 ANTLR 语法规则优先级、一个是跨函数的读写锁语义差异、一个需要理解不同 compaction 类型的业务含义、一个是变量单位 MB vs bytes 不一致的静默比较错误。
共同特点:代码语法完全正确,bug 藏在开发者脑子里的假设中,不在 diff 里,甚至不在周边代码里。
当前 AI 做 code review 的天花板,大概就在这里。
04 找完 bug 改 bug,谁最可靠?
日常 code review 中,仅找到 bug 远远不够,模型给出的修改建议好用,同样是核心评价标准。
因此,本次实验在辩论结束后,我们还新增了模型 review 质量互评环节,进一步筛选实用型模型。
互评规则:每个模型开启新会话作为裁判,采用匿名打分(将 5 个模型随机映射为 Reviewer A/B/C/D/E),打分维度包括 4 项,每项 1-10 分:准确性、可操作性、深度、清晰度。(裁判无法知晓所评内容对应的模型,确保评分客观性。)
这一轮的最终评分如下:
| 模型 | 准确性 | 可操作性 | 深度 | 清晰度 | 综合 |
|---|---|---|---|---|---|
| Qwen | 8.6 | 8.6 | 8.5 | 8.7 | 8.6 |
| Claude | 8.4 | 8.2 | 8.8 | 8.8 | 8.6 |
| Codex | 7.7 | 7.6 | 7.1 | 7.8 | 7.5 |
| Gemini | 7.4 | 7.2 | 6.7 | 7.6 | 7.2 |
| MiniMax | 7.1 | 6.7 | 6.9 | 7.4 | 7.0 |
互评结果显示,Qwen 和 Claude 的 review 质量并列第一,其建议的准确性、可操作性,以及分析的深度、表述的清晰度,均远超其他 3 个模型;Codex、Gemini、MiniMax 表现相对普通,无明显优势。
05 小结
五轮辩论看下来,每个模型的个性非常鲜明:
Claude:严谨细致,擅长追踪完整调用链和深层逻辑,能自主梳理上下文,L3 级 bug 检出能力独一档;偶尔会在数学层面过度自信,但认错态度坦诚,会主动解释错误原因,适合核心代码、深层 bug 的审核。
Gemini:风格激进,擅长从架构层面定性问题,对代码风格和工程规范高度敏感;但常聚焦表面问题,review 深度不足,互评排名靠后;其质疑能推动其他模型严谨验证,适合搭配 Claude 使用,补充架构层面的视角。
Codex:沉默寡言,发言频次低,但 bug 检出命中率高,偶尔能精准命中核心问题;在辩论中常能提供关键线索,适合作为辅助模型,补充检测盲区。
Qwen:综合表现优秀,review 质量与 Claude 并列第一,擅长综合各方观点、梳理重点,修改建议可操作性强;L2 级常规 bug 检出能力突出,适合日常常规 PR review;偶尔会因上下文窗口限制,在多轮辩论后丢失上下文,出现反馈异常。
MiniMax:单个模型的 bug 检出能力偏弱,适合作为辅助模型补充使用。
最后,坦诚说一下这个实验的局限,避免大家过度解读,也保证实验的客观性:
样本量不大:只有 15 个 PR,且都来自同一个 Go/C++ 项目,不代表所有编程语言、所有业务场景的结果,仅供参考。
模型有随机性:同样的 Prompt 跑两次,结果可能不一样,文中数据是一次快照,不是稳定期望值。不能根据这个实验明确得出所谓的模型能力排行,但是得出辩论比个体强,某些模型擅长某些方向,这些趋势是没有问题的。
顺序影响表现:辩论中发言顺序固定,可能影响后面模型的判断。
另外,本次实验所有相关工具全部开源:更多 milvus issue 集合 https://github.com/milvus-io/milvus/issues
Magpie:多 AI 协作 code review 工具。https://github.com/liliu-z/magpie
AI-CodeReview-Arena:评测流水线 + 配置 + 脚本。https://github.com/liliu-z/ai-code-review-arena