跳到主要内容

生产环境中的 Agentic Coding:SWE-bench 分数没有告诉你的真相

· 阅读需 14 分钟
Tian Pan
Software Engineer

当最尖端的模型在 SWE-bench Verified 上获得 80% 的评分时,这听起来像是问题已经解决了。五分之四的真实 GitHub issue 都能被自动处理。直接交付给你的团队吧。但事实是:同一个模型在 SWE-bench Pro(一个专门设计用于防止数据污染、包含来自私有代码库的长程任务的基准测试)上的得分仅为 23%。此外,一项针对经验丰富开发者的严谨对照研究发现,使用 AI 编程工具反而让他们慢了 19%,而不是变快了。

这些数字并不矛盾。它们反映了基准测试衡量的内容与生产环境软件工程实际需求之间的差距。如果你正在构建或打算采用智能体编程(agentic coding)工具,那么这个差距就是最值得关注的事情。

为什么 SWE-bench 不再具有参考价值

SWE-bench Verified 已成为评估 AI 编程智能体的事实标准。从理论上看,这是一个合理的基准测试:从开源 Python 仓库中提取真实的 GitHub issue,为智能体提供 issue 文本和代码库,并测量其修复方案是否能通过现有的测试套件。

问题在于过去 18 个月里评分的变化。2024 年 8 月,最高分在 20% 左右。到 2026 年初,多个系统已经超过了 80%。这并不是因为 AI 编程能力提升了四倍,而是因为基准测试被“刷分”了。

OpenAI 已经停止将 SWE-bench Verified 作为其尖端模型的评估标准,并明确指出“评分的提升不再反映模型在现实世界软件开发能力上的实质性进步,而是越来越多地反映了模型在训练期间接触该基准测试的程度。”这个基准测试的问题是公开的,解决方案就存在于 GitHub 上,任何在 2024 年年中之后使用 GitHub 数据训练的模型很可能已经见过其中大部分内容。至少 59% 经过审计的问题存在测试用例缺陷,会导致功能正确的提交被拒绝。尖端模型甚至可以逐字复刻人类最初编写的补丁。

同一个模型在独立运行(standalone)时可能得分 69%,但在配合能够重试失败并迭代探索文件的复杂智能体框架(agent harness)时,得分可以达到 81%。你无法将模型能力与系统工程脱离开来。

Scale AI 的 SWE-bench Pro 试图通过 1,865 个需要跨私有和预留代码库进行多步推理的任务来解决这一问题。顶级模型在该测试中的得分为 23%。这才是真实的数据。80% 和 23% 之间的差距就是基准测试饱和后的现状。

Epoch AI 的另一项分析发现,87% 的 SWE-bench 问题属于 bug 修复,超过 80% 的问题来自五个 Python 仓库,一半的 issue 早于 2020 年,且任务难度中位数是经验丰富的工程师在不到一小时内就能完成的工作。多文件修改、架构决策和模糊的需求——这些现实工程工作中的主体部分——在其中基本缺失。

受控研究发现了什么

迄今为止最严谨的现实世界评估来自 AI 安全研究组织 METR。他们招募了 16 名经验丰富的开发者,这些开发者目前正在积极维护大型开源项目(平均代码量 100 万行,GitHub Star 数 2.2 万)。开发者们完成了 246 个任务,每个任务平均耗时两小时,使用的是配有 Claude 3.5/3.7 Sonnet 的 Cursor Pro。

结果:使用 AI 让任务完成时间增加了 19%。

认知差距使得这组数据尤为珍贵。在研究开始前,开发者预测 AI 能为他们节省 24% 的时间。在通过客观的时间测量完成所有 246 个任务后,他们依然认为 AI 节省了 20% 的时间。使用 AI 工具的主观体验——那种移动速度更快、建议瞬间生成的快感——创造了一种持久的效率错觉,即使客观数据指向了相反的方向。

开发者采纳的 AI 生成代码建议比例不足 44%。他们的大量时间被耗费在理解智能体的意图、验证其正确性,以及清理不符合现有代码库规范的输出上。

这个结论基于特定的前提:经验丰富的开发者,在成熟且复杂的代码库中,处理需要深度熟悉现有代码的任务。作者明确表示,这并不适用于所有场景。但这种情况最接近于高风险的生产环境工程。

Faros AI 分析了真实组织的生产数据,并发现了一个平行的悖论。在 AI 采用率高的团队中,开发者合并的拉取请求(PR)增加了 98%。但 PR 审查时间增加了 91%,PR 的平均体积增长了 154%,每个开发者的 bug 数量增加了 9%。最终结果是:公司层面的绩效没有可衡量的提升。个人速度虽然提高了,但系统吞吐量却陷入停滞,因为代码审查和测试流水线无法匹配 AI 加速后的生成速度。

智能体在哪些领域真正发挥作用

这并不意味着编程智能体没有用,而是意味着它们在不同类型的任务中表现并不均衡。在任何对结果保持诚实的数据源中,这种模式都是一致的。

具有明确规范的安全漏洞修复是一个真正的突破。 Devin 报告称,修复漏洞仅需 1.5 分钟,而人类工程师需要 30 分钟——效率提升了 20 倍。关键的前提条件是:漏洞类型已知,且修复模式定义明确。当智能体确切知道要修复什么以及如何修复时,它可以以机器速度应用“在此处添加输入校验,在彼处使用参数化查询”等模式。

数据库迁移和现代化升级也表现出类似的增益。 将 Java 应用程序迁移到新版本或在数据框架之间迁移的团队报告称,速度提升了 10 到 14 倍。这种任务结构是成功的关键:起始状态明确,结束状态明确,具有机械化的转换模式,且输出可验证。智能体不需要做出主观判断。

样板代码(Boilerplate)和脚手架工程表现出色也是出于同样的原因。 CRUD 层、API 路由处理器、序列化类、测试用例(fixtures)——这些都遵循既定的模式,智能体可以可靠地应用。这类代码风险低且易于验证。

具有可复现测试用例的 bug 修复是可以可靠解决的。 当存在失败的测试且对原因有明确假设时,智能体可以高效地迭代修复方案。Devin 的 PR 合并率在 18 个月内从 34% 提升到了 67%——虽然仍有三分之一被拒绝,但这确实是实质性的进步。Cognition 自己的内部应用中,大约三分之一的提交来自智能体。

共同点在于:范围狭窄、成功标准明确、输出可验证、机械化转换。只有在这些条件下,基准测试评估与现实世界的表现才会真正趋于一致。

智能体系统性失败的领域

失败模式与成功模式一样具有一致性。

跨代码库更改随着文件数量增加而崩溃。 智能体在任何时刻只能“看到”代码库的一小部分,受限于上下文窗口大小。在只有几个文件的绿地(Greenfield)原型项目中,这种限制并不明显。但在拥有数千个文件的生产代码库中,智能体开始遗忘之前的决策,混淆组件接口,并实现代码库中其他地方已经存在的功能。哥伦比亚大学 DAPLab 的研究将其确定为主要的失败模式:智能体“随着代码库中文件数量的增加,失败次数也越来越多”。

状态管理失败非常普遍。 智能体重构了一个组件的状态处理,但没有更新所有依赖它的代码。比如,一个拖拽重排序功能更新了部分状态数组,但没有更新完整列表;或者缓存失效只覆盖了四个调用点中的三个。这些 Bug 在代码审查中很难被发现,因为它们在语法上看起来是正确的。

业务逻辑不匹配是最难检测的失败。 智能体生成的代码可以运行,通过了它能看到的测试,并且看起来实现了该功能——但相对于实际业务需求,它的实现是错误的。例如,折扣应用在了单个商品上而不是购物车总价上;权限检查通过了错误的权限组。这些失败需要了解业务领域的人员才能发现,而且它们往往出现在生产环境中,而不是自动化测试中。

安全性受到的威胁尤为严重。 Veracode 对 AI 生成代码的分析发现,其漏洞数量是人工编写代码的 2.74 倍。AI 生成的代码引入不当密码处理的可能性是人工的 1.88 倍,产生不安全对象引用的可能性是 1.91 倍,添加 XSS 漏洞的可能性是 2.74 倍。CodeRabbit 对 470 个 GitHub 仓库的分析发现,AI 生成的 PR 包含的逻辑错误比人工编写的多 75%。佐治亚理工学院的 Vibe Security Radar 在公开公告中追踪到了 74 个直接归因于 AI 编程工具的已确认 CVE。

模糊的需求会放大所有其他失败。 当任务规范含糊不清时,智能体不会要求澄清——它们会做出假设并继续进行。假设的范围很大,错误会在多步任务中累积。

有效的集成模式

那些从编程智能体中获得可靠价值的团队都有一些共同的实践,这些实践与工具选择无关,而与工作流设计有关。

将智能体视为异步协作者,而非同步结对程序员。 有效的工作流是:编写结构化的任务规范,交给智能体,让它独立运行,然后审查 PR 输出。失败的工作流是:在观察智能体工作并实时纠偏的同时,要求它执行模糊的任务。同步模式放大了“生产力错觉”问题;异步模式则使输出变得可审查。

任务规范需要明确的范围约束。 成功任务与失控任务之间的区别通常仅在于编写方式。“为用户列表添加分页”会引导智能体做出几十个隐含决策。“为 /api/users 添加基于游标的分页。页面大小:25。参考 /api/orders 的模式。不要修改身份验证中间件或数据库架构”则为智能体提供了一个有界问题和明确的解决方案空间。

验证驱动开发是杠杆率最高的实践。 给智能体一种验证自身工作的方法——一个需要通过的失败测试、一个必须满足的 Linter 配置,或是一个可以运行的集成测试套件。多个团队独立认定这是最能提高智能体输出质量的单一实践。当智能体能够评估自己的输出时,它们就会进行自我修正。

代码库上下文文件会产生复合收益。 记录风格规范、架构决策、常用模式和明确的反模式的特定仓库指令文件(CLAUDE.md 或类似文件)可以显著提高输出质量。每个在大规模使用智能体编程工具的成功团队都独立开发了这种实践的某个版本。保持这些文件精简(2,500 个 token 以下),并在代码库更改时及时更新。

在分配任务前进行分类。 可以放心授权的任务类型:具有明确前后状态的有范围迁移、具有可重现测试用例的 Bug 修复、样板代码生成、文档编写、具有明确规范的安全修复。需要人类负责的任务类型:安全关键流程(身份验证、支付、访问控制)、架构决策、合规性功能、任何具有主观成功标准的任务,以及需要判断力的视觉设计。

衡量问题

基准测试与生产环境之间存在差距的一个原因是大多数团队衡量错了指标。PR 数量和生成的代码行数很容易衡量,但也容易被操纵。对系统级生产力真正重要的是更难归因的指标:部署频率、变更失败率、平均恢复时间(MTTR)和审查周期。

Faros AI 的发现——高 AI 使用率团队合并的 PR 增加了 98%,但审查时间增加了 91%,且交付绩效没有改善——说明了优化可见指标的风险。合并更多 PR 看起来像是一场胜利,直到你意识到每一个 PR 都需要多出 91% 的人工审查时间,并且会引入更多 Bug。

评估编程智能体 ROI 的有用信号:智能体生成的 PR 无需修改直接合并与需要重大重做的频率对比?智能体生成的代码中,通过安全审查且未发现问题的比例是多少?智能体生成的代码与人工编写的代码相比,变更失败率如何?这些数据虽然更难收集,但能反映实际交付的价值。

实践中的意义

2026 年智能体编码的真实图景既不是“AI 取代工程师”,也不是“AI 工具是毫无用处的炒作”。它比这两者都更具体。

AI 编码智能体能够可靠地加速工程工作中的一部分——即那些机械性的、规范明确且可验证的部分。对于这部分工作,效率提升是真实存在的,有时甚至非常显著:在迁移方面提升 10 倍,在具有清晰规范的漏洞修复方面提升 20 倍。当你设计工作流以最大化这部分比例时,收益会产生复利效应。

AI 编码智能体在另一部分工作中总是表现不佳——即那些需要系统级理解、业务领域判断、安全敏感性或跨领域架构意识的工作。对于这部分工作,智能体不仅无法提供帮助,还可能由于产生隐蔽的 bug、安全漏洞以及看起来正确但实际错误的代码,从而主动制造额外的工作量。

从这些工具中获得最大价值的团队正在做两件事:他们制定了严格的任务分类以合理分配工作,并且建立了配套基础设施——结构化任务规范、代码库上下文文件、自动化验证——使智能体的能力与任务需求相匹配。

获得价值最少的团队则是在所有任务类型中无差别地应用智能体,并以吞吐量而非质量来衡量成功。这条道路会导致 Faros 悖论:产出增加,但交付性能没有改善,代码审查的瓶颈吞噬了生成代码所节省的所有时间。

SWE-bench 达到 80% 告诉你,AI 系统可以解决公开 Python 仓库中定义明确的 bug。SWE-bench Pro 的 23% 则告诉你当问题变得更难时会发生什么。你生产代码库中的实际数值介于两者之间,而找到这个数值需要的是测量,而不是对基准测试分数的盲目信任。

References:Let's stay in touch and Follow me for more thoughts and updates