更新于

SWE-Bench 排行榜深度解读:数字背后的真相


每次有新模型发布,“SWE-Bench 排名第一”几乎成了标配宣传语。但 SWE-Bench 的分数到底在衡量什么?排名靠前的模型在实际开发中一定更好用吗?本文从评测机制出发,梳理几个常见的误读,帮助开发者建立更准确的模型能力判断。

免责声明:本文中涉及的具体分数和排名均来自公开可查的报告和社区讨论,数字仅作量级参考,排行榜变化频繁,请以各模型官方最新发布为准。

一、SWE-Bench 是什么,评测的是什么

SWE-Bench(Software Engineering Benchmark)是普林斯顿大学和 GitHub 联合开发的评测集,核心思路是:从真实开源项目(Django、Flask、scikit-learn 等)中收集已合并的 Pull Request,把其中的 Bug 报告(GitHub Issue)还原为未修复状态,让 AI 根据 Issue 描述和代码库来修复 Bug,最后用原 PR 的测试用例验证修复是否正确。

换言之,SWE-Bench 测的是:在真实代码库中,给定一个自然语言描述的 Bug,模型能否生成可通过原始测试的修复补丁

两个主要版本

版本题目数量特点
SWE-Bench Full2294 题全量数据集,难度参差不齐,含许多”运气题”
SWE-Bench Verified500 题人工筛选后的高质量子集,OpenAI 验证过难度合理性

目前业界主要看 Verified 版本的分数,因为 Full 版本中存在部分题目依赖特殊环境或测试本身有问题,容易产生虚高分数。

二、分数是怎么来的

一个题目算”通过”的条件是:AI 生成的代码 patch 应用到对应版本的代码库后,原始 PR 的测试套件能够全部通过(包括新增的测试和不应被破坏的已有测试)。

整个流程大致如下:

1. 给定:代码库快照 + GitHub Issue 文本
2. 模型输出:修复补丁(diff 格式)
3. 验证:将 patch 应用到代码库,运行测试套件
4. 判定:全部测试通过 → 计分;任一测试失败 → 不计分

分数 = 通过题数 / 总题数,以百分比呈现。

值得注意的是:分数对 scaffold(脚手架)高度敏感。同一个底层模型,使用不同的 Agent 框架(工具调用策略、文件搜索方式、patch 格式处理)能产生显著的分数差异。这意味着排行榜上靠前的”模型”,很多时候是”模型 + 精心调优的 Agent 框架”的组合体。

三、最常见的四种误读

误读一:分数高 = 编程能力强

SWE-Bench 只测试了一种特定的编程任务:修复已知 Bug。它不覆盖:

  • 从零设计和实现一个新功能
  • 代码重构(不改变功能的结构优化)
  • 生产代码的代码评审
  • 多人协作场景下的代码风格一致性

一个在 SWE-Bench 上分数很高的模型,在”帮我实现一个分布式任务队列”这类开放性任务上可能表现平平。

误读二:几个百分点的差距代表实质性差距

从行业普遍水平来看(基于公开报告的量级,非精确数值),顶级模型在 SWE-Bench Verified 上的差距往往在 2–5 个百分点之间,样本数量是 500 题。

统计上,500 题、2% 的差距约等于 10 道题的差距。考虑到:

  • 测试环境的随机性(同一模型多次运行分数会波动约 ±1–2%)
  • 题目难度分布不均
  • 部分题目的边界案例可能对特定模型有利

2–3 个百分点的排名差距在实际使用中几乎感受不到

误读三:开源模型 xx% = 追平了 Claude/GPT

当有人说”某开源模型 SWE-Bench 达到 xx%,追平了闭源”,需要注意:

  • 是在用相同的 scaffold 对比,还是用更复杂的 scaffold 对抗更简单的 scaffold?
  • 推理成本是否可比?(某些高分是用大量计算换来的)
  • 在 SWE-Bench 以外的编程基准(HumanEval、MBPP、LiveCodeBench)上结论是否一致?

单一基准的”追平”通常只说明在特定任务集的特定维度接近,不代表全面追平。

误读四:企业声称的分数就是模型本身的分数

部分公司发布的 SWE-Bench 分数包含了专有的 Agent 改进(更好的工具调用、更智能的代码搜索),这些改进属于他们的工程积累,不是模型本身的通用能力。

如果你直接用这些模型的 API 做代码任务,可能拿不到宣传分数,因为你没有他们的 scaffold。

四、SWE-Bench 之外:补充评测维度

一个更全面的模型选型决策,应该结合多个维度:

评测维度代表基准SWE-Bench 覆盖?
Bug 修复SWE-Bench
代码生成(函数级)HumanEval、MBPP
竞赛编程LiveCodeBench、CodeForces 题
长上下文理解RULER、自定义长文档 QA
中文代码任务国内团队通常需自建评测集
实际工程任务速度主观测试,看完成一个真实任务的时间

对于大多数国内开发者,实际体验测试(让模型完成 5–10 个你真实工作中会遇到的任务)比看排行榜更有参考价值。

关于各模型在中文开发者场景下的对比,可参考 Claude vs GPT vs Gemini 中文开发者评测,以及 GPT-5 vs Claude Opus 4.7 编程能力对比

五、当前排行榜的几个观察(基于公开信息)

以下基于截至 2026 年上半年的公开报道,具体数字仅作参考:

头部格局:闭源模型(Claude Opus、GPT-4o 系列)和强化了推理的开源模型(DeepSeek、Qwen 系列)在 Verified 上分数接近,差距持续缩小。

计算成本的隐性门槛:部分顶级分数是通过多次采样 + 最优选择(Best-of-N)实现的,单次推理成本远高于普通使用场景。在预算有限的情况下,“最高分模型”不一定是最优选择。

推理模型的崛起:o1 系列、Claude 的 extended thinking 等推理增强模型在 SWE-Bench 上有明显提升,特别是对复杂多步 Bug 修复场景。但推理模型延迟更高、成本更贵,适合复杂任务而非高频轻量任务。

中文代码库场景:SWE-Bench 的题目全部基于英文开源项目,中文代码库(含中文注释、中文错误信息)的表现未被覆盖。实际使用中,Claude 和 GPT-4o 在中文注释处理上表现较好,国内开发者可以重点关注这一维度。

六、如何用 SWE-Bench 辅助选型决策

推荐做法

  1. 看趋势,不看单点:一个模型 SWE-Bench 分数持续提升,说明工程能力在进步
  2. 关注 Verified 版本:Full 版本噪声太大,Verified 更有参考价值
  3. 对比同 scaffold 下的分数:确保对比的公平性
  4. 结合你的任务类型:如果主要做 Bug 修复,SWE-Bench 高度相关;如果主要做新功能开发,参考价值有限

一个实用框架

选型步骤:
1. 用 SWE-Bench 做初筛(排除明显弱的模型)
2. 用 LiveCodeBench 看代码生成通用能力
3. 用 5–10 个自己真实工作任务做主观评测
4. 考虑成本/延迟:同等能力下,优先选更便宜更快的模型
5. 考虑 API 可访问性:再强的模型,国内连不上也没用

关于 LLM 评测的通用方法论,可参考 LLM Agent 评估方法LLM 评估国内指南

七、SWE-Bench 的局限性与未来演进

SWE-Bench 本身也在迭代。社区对现有设计的主要批评:

  • 题目老化:很多题目来自几年前的 PR,模型可能在预训练阶段就见过这些代码
  • 只测修复,不测生成:不能全面评估编程智能
  • 英文偏向:无法代表多语言编程场景
  • 单一代码库:真实工程中面对的是更大、更复杂的 mono-repo

替代和补充方案正在涌现,比如 SWE-Lancer(测试 Freelancer 平台上的真实任务)、更动态的代码生成基准等。未来的评测生态会更多元,单一排行榜的权重会逐渐降低。

八、相关阅读

想在国内直接测试各主流模型的真实编程能力,YoTradeApi 提供 Claude、GPT、DeepSeek 等模型的统一 API 中转,一套 key 调通所有模型,方便做横向对比测试。