AI写了296个PR,一半被程序员当场拒收

50%的代码,在通过所有自动化测试后,被人类维护者扔进了垃圾桶。

这不是某个初创公司的翻车现场,而是METR(Machine Evaluation and Trust Research)刚刚发布的一项硬核研究结果。他们拿来了Claude 3.5到GPT-5等顶流模型,在SWE-bench Verified(目前最权威的AI编程基准测试)上刷出高分后,把这些AI生成的代码交给了真正的开源项目维护者审查。

AI配图

结果?维护者的合并率比自动化评分低了整整24个百分点。 换句话说,那些在Benchmark上风光无限的AI,有一半的"正确答案"在真实世界里根本上不了生产线。

通过率对比图

当Benchmark遇上真人:一场大型"照妖镜"实验

先说说SWE-bench Verified是什么。这是目前AI圈最卷的考场之一,专门测试AI能不能独立解决GitHub上的真实Issue。Claude 4.5 Sonnet、GPT-5这些模型在这里能拿到60%甚至更高的通过率,厂商们据此宣称"AI已具备专业级软件工程能力"。

但METR团队嗅到了一丝不对劲。Benchmark是干净的、可验证的;真实世界是混乱的、主观的。

于是他们做了件狠事:找到scikit-learn、Sphinx和pytest这三个顶级开源项目的4位活跃维护者,把296个AI生成的Pull Request(PR)摆到他们面前。这些PR都已经通过了SWE-bench的自动化评分,理论上"功能正确"。维护者们被蒙在鼓里,不知道哪些是人类写的,哪些是AI写的,就像平时做Code Review一样逐行审查。

然后他们发现,自己只想合并大约一半。

作为对照,即使是人类开发者写的"黄金补丁"(真实被合并进主分支的PR),维护者也只愿意合并68%——这说明Code Review本身就带有主观性和高标准。但AI的表现更糟:相对于这个68%的基准,AI的通过率还要再砍半。

代码能跑,但人不想看

为什么被拒?不是功能错误——这些代码都通过了单元测试。

失败原因分布

看图3的 breakdown,拒绝原因像一份"职场新人常见错误清单":

代码质量太差。 不符合项目规范、变量命名随意、冗余代码堆积。GPT-5在这方面尤其弱,被维护者吐槽"写得像实习生赶工"。

破坏其他代码。 AI为了修Bug A,不小心把功能B搞崩了。这种副作用在自动化测试里可能没被发现,但在老练的维护者眼里一目了然。

根本没解决问题。 有些PR虽然通过了测试,但维护者一看就知道"这没抓到痛点",只是巧妙地糊弄过了测试用例。

有意思的是,从Claude 3.5到Claude 4.5的进化路径清晰可见:早期版本经常连核心功能都搞错;到了Claude 4 Opus,主要问题变成了"代码能跑但风格不对";最新的Claude 4.5 Sonnet则主要在代码质量上被挑刺。AI确实在进步,但进步的方向是"从不及格到及格",而不是"从及格到优秀"。

审查示例1

审查示例2

不是AI变弱了,是尺子量错了地方

这里有个关键的反转。METR明确说:这不是AI的能力天花板。

问题出在Benchmark的设计上。SWE-bench是"一次性考试":AI生成代码,跑测试,通过就完事。但真实的软件开发是"迭代式对话":人类开发者提交PR,维护者提意见,开发者修改,来回几轮直到双方都满意。

AI没有机会迭代。 它们不能像人类那样在收到"请改一下命名规范"后迅速调整。如果给AI这种反馈循环,结果可能会完全不同。

所以这不是"AI行不行"的问题,而是"我们该怎么测"的问题。当你看到某个模型在SWE-bench上拿了60%的分数,天真的理解是"它能解决60%的真实Issue",但残酷的现实是"它写的代码只有约30%能被维护者接受"(考虑到68%的人类基准)。

更扎心的是进步速度。自动化评分的进步速度是每年XX个百分点,但维护者眼中的进步速度每年慢了9.6个百分点。虽然这个数据置信度不高,但它暗示了一个可能:AI在刷题技巧上的进步,快于它在工程素养上的进步。

那个被忽略的"最后一公里"

这项研究戳破了一个泡沫:代码能通过测试 ≠ 代码能被合并。

AI配图

在AI估值狂飙的2025年,很多报告声称"AI可以自主完成40-52%的软件工程任务"。但METR早在年初就发现,使用AI辅助的开发者反而变慢了。当时没人理解为什么,现在答案浮出水面——AI生成的代码需要人类花大量时间清理和返工。

那些宣称"程序员即将失业"的标题党,大概没看过开源维护者的GitHub界面。那里堆满了AI生成的、功能正确但风格诡异的PR,每一个都需要人类花时间审查、拒绝、或者重写。

软件工程不只是让代码跑起来。它是关于代码的可维护性、团队的一致性、长期的技术债管理。这些维度很难被自动化测试量化,但恰恰是区分"能用的代码"和"好代码"的关键。

AI配图

当Benchmark的分数与生产环境的接受度之间出现24个百分点的鸿沟,我们或许该重新思考:那些光鲜亮丽的AI能力评分,到底有多少能转化为真实的生产力?

毕竟,在开源世界里,最终的裁判不是测试脚本,而是那个在深夜审阅你代码的维护者。

【kimi-k2.5锐评】:Benchmark刷分是AI的应试教育,而人类维护者的Reject按钮才是真实世界的就业市场。

参考链接:
https://metr.org/notes/2026-03-10-many-swe-bench-passing-prs-would-not-be-merged-into-main/