Project report / GitHub evidence

SWE-bench: 真实世界软件工程任务基准测试

这是可索引项目报告证据页:它保留 SWE-bench: 真实世界软件工程任务基准测试 的源材料入口、机制线索和限制提醒;正文仍需 reader/editor 与 academic public-copy review 后才能当作最终结论引用。

SWE-bench: 真实世界软件工程任务基准测试

基本信息

字段内容
GitHubhttps://github.com/swe-bench/SWE-bench
Star2,800+
技术栈Python, Docker (容器化评估), HuggingFace Datasets (数据集分发)
许可证MIT
开发者Princeton NLP (Carlos Jimenez, John Yang 等)
论文SWE-bench: Can Language Models Resolve Real-World GitHub Issues? (ICLR 2024 Oral)

项目简介

SWE-bench 是一个用于评估大语言模型在真实世界 GitHub Issue 上解决软件工程问题能力的基准测试框架。给定一个代码库和一个 Issue 描述,语言模型需要生成能够解决所描述问题的代码补丁(Patch)。它是 AI 编程 Agent 能力评估中常被引用的基准之一,被 ICLR 2024 接收为口头报告论文。

SWE-bench 的核心创新在于其数据集来源:任务从真实的 GitHub 仓库中收集,涵盖了 Django、Flask、SymPy、Matplotlib、Scikit-learn 等 12 个流行 Python 项目的 Issue 和对应合并 PR。这种基于真实软件工程场景的评估方式,使 SWE-bench 成为观察 AI 系统能否处理软件工程问题的重要证据入口;具体结论仍要看任务子集、执行环境和 leaderboard 版本。

项目已发展出多个变体:SWE-bench Verified(500 个人工验证的可解决问题)、SWE-bench Lite(精简子集)、SWE-bench Multimodal(多模态版本,ICLR 2025)和 SWE-bench Multilingual。配套的 SWE-agent、SWE-smith 等工具链形成了完整的软件工程 Agent 评估生态。

目录结构

SWE-bench/
├── swebench/                ★ 核心评测框架
│   ├── harness/             ★ Docker 评估引擎
│   │   ├── constants.py     常量定义
│   │   ├── docker_build.py  Docker 镜像构建
│   │   ├── run_evaluation.py ★ 评估运行入口
│   │   └── test_spec.py     测试规格定义
│   ├── collect/             数据收集流程
│   ├── inference/           模型推理与数据集构建
│   ├── metrics/             ★ 评估指标计算
│   ├── mapping/             提交映射
│   └── model_validation/    模型验证
├── tests/                   测试套件
├── docs/                    文档与指南
│   ├── guides/              使用教程
│   └── assets/              资源文件
├── pyproject.toml           Python 项目配置
├── mkdocs.yml               文档站点配置
└── codecov.yml              代码覆盖率配置

核心模块分析

1. Docker 评估引擎 (swebench/harness/)

SWE-bench 的评估核心是容器化的执行评估引擎。每个任务在一个独立的 Docker 容器中执行,容器预装了对应版本的代码库和依赖。评估引擎执行模型生成的 Patch,运行项目的测试套件来验证 Patch 是否真正解决了 Issue 中描述的问题。支持本地执行和云端执行(Modal 平台、AWS via sb-cli),推荐 x86_64 机器至少 120GB 存储、16GB 内存、8 CPU 核心。

2. 数据收集流程 (swebench/collect/)

从 GitHub 仓库自动收集 Issue-PR 对的训练数据。流程包括:识别有测试的 PR、提取 Issue 描述、生成 Oracle 检索片段等。SWE-smith 是配套的专用数据生成工具,可以大规模创建 SWE-bench 格式的训练数据。

3. 评估指标体系 (swebench/metrics/)

核心指标是”解决率”(Resolution Rate),即模型生成的 Patch 能否通过与原始 PR 关联的测试用例。支持细粒度的按仓库、按难度分层的评估结果分析。提供 gold patch 验证基线,确保评估环境的正确性。支持精确匹配和模糊匹配两种验证模式。

4. 模型推理接口 (swebench/inference/)

支持在 SWE-bench 上运行模型推理,包括 SWE-Llama 系列模型和通过 API 调用的商业模型。提供从数据预处理、推理执行到结果收集的完整流程。支持 BM25 检索增强的上下文构建,提供 13K/27K/40K/50K 多种检索粒度的预构建数据集。

5. 数据集生态

提供多种粒度的数据集变体:完整版(2294 个任务)、Lite 版(300 个任务)、Verified 版(500 个人工验证任务,与 OpenAI Preparedness 合作)、Multimodal 版(含视觉信息的任务,ICLR 2025)。所有数据集通过 HuggingFace 分发,配套 Oracle 和 BM25 检索数据集。

技术亮点

  1. 真实世界数据:所有任务来源于真实 GitHub Issue 和 PR,而非人工构造,确保评估的外部效度
  2. 容器化评估:完全基于 Docker 的隔离评估环境,确保可重复性和跨平台公平性
  3. 测试套件验证:使用项目原生测试套件验证 Patch 正确性,避免了启发式评估的偏差
  4. 多维度数据集:Full/Lite/Verified/Multimodal/Multilingual 五种变体,覆盖不同评估场景
  5. 配套工具链生态:SWE-agent(Agent 框架)、SWE-smith(数据生成)、sb-cli(云评估)、SWE-ReX(远程执行)形成配套生态

与 Self-Evolve 关联

关联维度分析
评估框架SWE-bench 是 Self-Evolve 评估层的重要参考基准之一:其”Issue -> Patch -> Test Verification”的评估范式可用于对照代码进化验证流程
进化循环SWE-bench 的”问题描述 -> 代码生成 -> 测试验证 -> 反馈”流程与 Self-Evolve 的进化循环高度一致
Agent 编排SWE-agent 展示了如何编排一个完整的软件工程 Agent:代码库导航、文件定位、代码编辑、测试运行
自主性度量SWE-bench 的解决率可作为 Self-Evolve 自主性层级的关键度量指标
安全性Docker 容器化的评估机制为 Self-Evolve 的安全执行提供了参考实现

参考资料

GitNexus 深度架构分析