跳到主要内容
Code Agents

第5章 SWE-bench 全家桶与代码评测

SWE-bench/Verified/Lite/Multimodal/Live、Multi-SWE-bench、LiveCodeBench、HumanEval、Aider polyglot 全家桶对比、SOTA 数据、Contamination 防御、自建 benchmark 思路

benchmark swe-bench livecodebench humaneval aider-polyglot contamination

第5章 📏 SWE-bench 全家桶与代码评测

一句话:SWE-bench Verified 是 2024-2026 LLM Code Agent 真实能力的黄金标尺 ——任何 Code Agent 不报这个数字都不可信。但要警惕单一 benchmark 的陷阱:contamination、过拟合、单一语言、Python 偏置——多 benchmark 交叉验证才是负责任的做法。

📑 目录


一、为什么需要专门的 Code Agent benchmark

模块八 Agent Eval 讲了通用 agent benchmark(GAIA / WebArena / OSWorld 等),但代码场景非常特殊:

维度通用 agent benchmarkCode Agent benchmark
Pass 标准LLM-as-Judge / 人工测试通过 = pass(0/1)
任务来源设计的 task真实 GitHub issue
代码语言多模态主要文本(代码)
验证方式多轮单次提交补丁
难度梯度主观真实 issue 难度分布

Code Agent 评测的最大优势:客观可验证 ——测试通过 = 对,失败 = 错,0 主观空间


二、SWE-bench 家族全景

            SWE-bench(原版,2294 issues)

                     │ Princeton 2023-10

        ┌─────────────────────────────────┐
        │                                 │
   SWE-bench Verified              SWE-bench Lite
   (500 issues,OpenAI 验证)        (300 issues,简化)
        │                                 │
        │ 2024-08                         │ 2024-08
        ▼                                 ▼
  Multimodal(517 含视觉)         Live(动态防污染)
        │                                 │
        │ 2024-10                         │ 2024+
        ▼                                 ▼
  Multi-SWE-bench(Java/Go/Rust)   SWE-Gym(训练版)
        │                                 │
        │ ByteDance 2025-04               │ PKU 2024-12
        └─────────────────────────────────┘

三、SWE-bench(原版)

论文:Jimenez et al., “SWE-bench: Can Language Models Resolve Real-World GitHub Issues?”, ICLR 2024 (arXiv 2310.06770)。

3.1 构造方式

从 12 个流行 Python 库(Django, scikit-learn, sphinx, sympy, requests, pytest, …)中提取真实 PR:

  1. 找历史 PR,关联 issue
  2. PR 包含修复补丁 + 新增测试
  3. 检查点:修复前测试 fail,修复后测试 pass
  4. 任务给 agent:“这个 issue + repo 状态 → 给一个补丁”
  5. 评分:agent 补丁应用后,新测试 pass + 老测试不 break = pass

3.2 规模

  • 2294 个 issue
  • 12 个 Python repo
  • 平均 issue 描述 195 词
  • 平均补丁 32 行

3.3 难点

每个 issue 平均涉及:

  • 阅读 ~10 个相关文件
  • 理解 ~50-100 行代码
  • 写 ~30 行补丁
  • 改动可能跨多个 module

历史意义:首次把”agent 能力”量化到一个客观数字 ——是 Code Agent 时代的 ImageNet。


四、SWE-bench Verified ⭐

发布:2024-08,OpenAI 团队人工 review 后的高质量子集。地址:https://openai.com/index/introducing-swe-bench-verified/

4.1 为什么需要 Verified?

原版 SWE-bench 的 2294 个 issue 有质量问题:

  • 测试不充分:有些 PR 的测试不够 distinctive,agent 给的补丁可能 game test
  • 任务模糊:有些 issue 描述不清,人都不一定能理解
  • 环境问题:某些 repo 装依赖会失败

OpenAI 招募 93 名专业开发者,人工 review 1700+ 个,挑出 500 个高质量任务:

  • 测试明确
  • 描述清晰
  • 环境可复现

4.2 SWE-bench Verified 已成事实标准

2025 之后,几乎所有 Code Agent 评测都报 Verified 数字(而不再报原版):

系统模型Verified Pass
Devin(Anthropic + Cognition scaffolding)~74%*
OpenAI Codex CLIGPT-5~73%
Claude CodeClaude Sonnet 4.5~71%
Cursor ComposerClaude Sonnet 4.5~68%
OpenHandsClaude Sonnet 4.5~66%
AiderClaude Sonnet 4.5~64%
Junie (JetBrains)(混合)~62%
GitHub Copilot Coding Agent(混合)~65%

*Devin 数字来自 Cognition 自家发布。

4.3 数字怎么读

70%+ = 优秀 Code Agent 50-70% = 中端 30-50% = 入门级 / 早期模型 < 30% = 不实用

注意:Verified 比原版简单一些,数字会比原版高 ~10-15%。


五、SWE-bench Lite / Multimodal / Live

5.1 SWE-bench Lite

规模:300 个,从原版选简单子集(单文件、小补丁)。

用途:快速迭代 / 学术原型。Pass 率比 Verified 高 ~10%。

5.2 SWE-bench Multimodal

论文:arXiv 2410.03859,2024-10 发布。

特色:517 个含视觉的 issue ——包含 screenshot / diagram / UI mock。

为什么重要:很多真实 bug 是 “UI 不对”,描述要求看截图。

系统Pass Rate
Claude Sonnet 4.5~45%
GPT-5~42%
Claude 3.5 Sonnet~25%

可见:视觉 + 代码双任务比纯代码难得多 ——对应模型的多模态能力还有空间。

5.3 SWE-bench Live

核心:持续从最新 PR 提取新题,防 contamination(LLM 训练时已看过)。

节奏:每月新增 ~50 个 issue,旧题逐渐淘汰。

业界趋势:静态 benchmark 必然被 LLM 在训练数据中”记忆”——动态 benchmark 是未来。


六、Multi-SWE-bench(多语言)

论文:ByteDance 2025-04 发布,arXiv 2504.02605。

核心贡献:把 SWE-bench 从 Python 拓展到 Java / Go / Rust / C++ / TypeScript / JavaScript / PHP 7 种语言。

6.1 规模

  • 总计 ~2000 个 issue
  • 每种语言 200-400 个

6.2 关键发现

SOTA 模型在不同语言上差异极大:

模型PythonJavaGoRustC++TS
Claude Sonnet 4.571%52%48%38%35%60%
GPT-573%50%45%35%32%58%

Python 高分 = 训练数据中 Python 占比最大 + 测试覆盖好。 Rust / C++ 低 = 编译错误难调、Lifetime / 模板等概念复杂。

6.3 业界意义

模型号称 SWE-bench Verified 70% 听起来很强,但实际做 Java / Go 的工程师能感受到的能力可能只有 50%多语言评测才是真实工程能力的衡量 ——Multi-SWE-bench 是关键补充。


七、HumanEval / LiveCodeBench

7.1 HumanEval(2021)

论文:Chen et al., “Evaluating Large Language Models Trained on Code” (Codex 论文),arXiv 2107.03374。

规模:164 个 Python 函数级编程题。

任务:给函数签名 + docstring → 写函数体 → 测试 pass。

SOTA 现状:

  • GPT-3.5 ~70%
  • GPT-4 ~88%
  • Claude 3.5 Sonnet ~92%
  • 2026 SOTA ~95%+

HumanEval 已饱和 ——头部模型都在 95%+,鉴别度很弱。但仍作为基础能力指标。

7.2 HumanEval-V

HumanEval 的多模态版(看代码截图、UML 图等),2024 发布。鉴别度比原版高。

7.3 LiveCodeBench

地址:https://livecodebench.github.io/

核心特色:

  • 持续从 LeetCode / AtCoder / Codeforces 抓题
  • 按时间窗口分组,可严格 测 contamination
  • 难度分级:Easy / Medium / Hard

SOTA(2026-Q2):

  • o3 / GPT-5: ~62%
  • Claude Sonnet 4.5: ~58%
  • DeepSeek-V4-pro: ~56%

价值:动态 + 严格防 contamination,比 HumanEval 鉴别度高得多。


八、Aider polyglot leaderboard

地址:https://aider.chat/docs/leaderboards/

特色:Aider 作者 Paul Gauthier 维护的多语言 LeetCode 风格 benchmark,包含 6 种语言:

  • C++
  • Go
  • Java
  • JavaScript
  • Python
  • Rust

任务:225 个 LeetCode-style 题,要求 agent 在多种语言里实现同一道题

Pass 标准:全部测试 case 通过。

8.1 SOTA(2026-Q1)

模型Pass Rate
Claude Sonnet 4.5 + Aider~84%
GPT-5 + Aider~82%
DeepSeek-V4-pro + Aider~78%

价值:比 HumanEval 难、比 SWE-bench 简单,鉴别度恰到好处。多语言保证不偏 Python。


九、其他 Code benchmark

Benchmark焦点规模
CodeForces竞赛级算法各种
APPS(2021)编程题分级(intro/competition)10000+
MBPP(Mostly Basic Python)入门级1000
DS-1000数据科学(NumPy/Pandas/Sklearn)1000
R-benchrepo 级数百
CommitChroniclecommit message 生成万+
SciCode科学计算数百
RepoBenchrepo 内代码补全数千

十、SOTA 排行榜全景

(2026-Q2,综合 7 大 benchmark)

模型SWE VerifiedSWE MultimodalLiveCodeAider polyglotHumanEvalMulti-SWE JavaMulti-SWE Rust
Claude Sonnet 4.571%45%58%84%92%52%38%
GPT-573%42%62%82%93%50%35%
Claude Opus 4.570%43%60%83%92%51%36%
Anthropic Sonnet 468%40%56%80%90%48%33%
Gemini 2.5 Pro65%38%53%76%89%44%30%
DeepSeek-V4-pro60%35%56%78%91%45%32%
GPT-4o50%28%45%65%88%35%22%

解读:

  • 2026 头部模型 SWE-bench Verified 都在 70%+,差距在 5-10%
  • 多语言(Java / Rust)各家都明显下滑
  • Multimodal 仍是主要 differentiator(视觉+代码双能力)
  • HumanEval 已饱和,失去鉴别度

十一、Contamination 防御

Contamination(污染) = LLM 训练数据已包含 benchmark 题目 → 数字虚高、不可信。

11.1 检测方法

  1. 完整 string match:把 benchmark 题原文搜训练数据,看命中率
  2. Causal inference:训练截止时间前 vs 后的题目 pass 率,有显著差异 = 污染
  3. Perplexity 分析:LLM 看到题目时 PPL 极低 = 见过

11.2 LLM 厂商怎么防?

  • OpenAI:Verified 集合之后模型才训练,所以理论上没污染(但需信任声明)
  • Anthropic:类似声明
  • DeepSeek:声明从训练数据中显式排除 SWE-bench

11.3 业界共识

单一静态 benchmark 必然被污染 ——所以:

  1. 优先动态 benchmark(SWE-bench Live / LiveCodeBench)
  2. 多 benchmark 交叉验证
  3. 关注模型发布前后版本差异(版本前 vs 版本后,数字爆涨 = 信号)

十二、怎么自建 Code benchmark

如果你的领域(法律 / 金融 / 医疗 / 内部 SDK)需要专属评测,本节讲思路。

12.1 数据来源

  1. 内部 GitHub repo PR(最理想)——天然 issue + 补丁 + 测试
  2. 内部 issue tracker + commit(JIRA + git log)
  3. 手工合成(让资深工程师写 mock issue + 补丁,用于早期)

12.2 关键挑战

挑战解法
测试覆盖差加 LLM-as-judge 兜底(详见模块八第4章)
repo 太大子集采样,固定到几个 module
私有依赖用 mock / fixture,或 Docker 锁版本
Issue 描述太短让 LLM expand → 人审
评分语义敏感多 metrics(test pass / lint / 性能 / style)

12.3 推荐流程

1. 收集 100 个最近 PR(过去 6 个月)
2. 每个 PR 提取:issue 描述 / 修改文件 / 关键测试
3. 验证:回滚到 PR 前,跑测试应失败;应用 PR 后应通过
4. 清洗:踢掉测试不全 / 描述模糊的 PR
5. 划分:80% Train(给 agent 看)/ 20% Test(eval)
6. 跑 baseline:GPT-5 / Claude Sonnet 4.5 各跑一遍,记录 SOTA 起点

12.4 工具支持

  • OpenHands SWE-bench evaluator:可改造成跑自家 repo
  • swebench package:pip install swebench,提供 docker 沙箱 + 评估器
  • Inspect AI / DeepEval:作为 eval orchestrator(详见模块八)

✅ 自我检验清单

  • 能说出 SWE-bench / Verified / Lite / Multimodal / Live 各自定位
  • 能背出 2026 SWE-bench Verified 头部 3 家数字
  • 能解释为什么 Multi-SWE-bench(多语言)很重要
  • 能区分 HumanEval / LiveCodeBench / Aider polyglot 的鉴别度
  • 能解释 contamination 是什么、怎么检测
  • 能给出自建 code benchmark 的 6 步流程

📚 参考资料

核心论文

leaderboards

工具

Contamination 相关

  • “Investigating Data Contamination in LLM Evaluation” (arXiv 2311.09783)
  • LiveCodeBench 设计哲学(防 contamination 时间窗口)

下一章:第6章 IDE 集成与 LSP —— Language Server Protocol、Tree-sitter、VS Code Extension API、Cursor 内核、Continue.dev 架构,以及”自己写一个 Code Agent IDE 插件”实战指南。