SWE-bench 是一个用于评估大语言模型在真实软件工程任务上能力的基准测试,其全称为“SWE-bench: Can Language Models Resolve Real-world GitHub Issues?”。该项目从 GitHub 收集真实世界软件问题,任务设定为:给定一个代码库和一条 issue,语言模型需要生成一个能够解决所述问题的补丁。相关论文已被 ICLR 2024 收录为 oral 报告,另有 SWE-bench Multimodal 论文被 ICLR 2025 收录。
主要能力与数据集: 项目提供代码与数据,支持在真实 GitHub 问题上评测语言模型。当前提供的数据集别名包括 full、verified、multimodal、multilingual,也支持 HuggingFace id 或本地路径。SWE-bench Verified 是 2024 年 8 月 13 日发布的一个子集,包含 500 个由真实软件工程师确认可解决的问题。SWE-bench Multimodal 于 2025 年 1 月 13 日集成进本仓库,其 v2 版本于 2026 年 9 月 1 日完全开源,提供 480 个任务用于本地评测。
使用方式: SWE-bench 使用 Docker 进行可复现评测,需先按照 Docker setup guide 安装 Docker。在 M 系列 Mac 或其他 ARM 系统上,需使用 --task-repo 参数,使镜像通过 Docker Buildx 在本地构建。评测命令为:python -m swebench.harness.run_evaluation。DATASET 参数接受别名(full、verified、multimodal、multilingual)、HuggingFace id 或本地路径。旧版命令形式 python -m swebench.harness.run_evaluation ... 仍可使用,参数与之前相同。该命令会在当前目录生成 Docker 构建日志(logs/build_images)和评测日志(logs/evaluation),运行摘要写入 logs/evaluation/<run_id>/results.json。注意结果缓存仅按 run_id 和 instance_id 缓存,若要用不同预测补丁重新评测同一实例,必须更换 run_id。查看评测框架完整参数列表可运行相应命令。此外,可通过 sb-cli 在 AWS 上自动运行评测,或使用 Modal 在云端运行评测。
资源要求与限制: SWE-bench 评测可能非常消耗资源,推荐在 x86_64 机器上运行,至少 120GB 可用存储、16GB 内存和 8 个 CPU 核心。--max_workers 建议不超过 min(0.75 * os.cpu_count(), 24)。使用 Docker Desktop 时需将虚拟磁盘空间增加到约 120GB 可用。对 arm64 机器的支持为实验性质。
其他相关功能: 可在项目提供的预处理数据集上训练自己的模型;可在现有模型(本地和 API 模型)上运行推理,推理步骤即向模型提供仓库与 issue 并让其生成修复;也可使用 SWE-bench 的数据收集流程在自己的仓库上创建新的 SWE-bench 任务,但项目已暂时暂停对创建 SWE-bench 实例相关查询的支持。项目还提供 SWE-smith,一个用于创建 SWE 训练数据的专用工具包。项目采用 MIT 许可证,欢迎 NLP、机器学习和软件工程研究社区贡献。