SWE-bench 软件修复基准
用真实 GitHub 问题评测模型生成的软件修复补丁。
- Star 数
- ★ 6.2k
- 最近更新
- 1 个月前
- License
- MIT
- 主语言
- Python
- FA 评分
- 45/100 · 缺口较多
30 秒速览
- 运行形态
- 可在哪里用
- 兼容但需适配
- 费用
- 软件免费,模型调用费用自付
- 上手难度
- 高 · 需要较重的基础设施
- 开始前需要
- 典型场景
- 评测研究人员要比较不同模型在真实 GitHub issue 修复任务上的补丁成功率时,可对同一预测文件运行 harness。
- 不适合
- 存储不足120GB或内存低于16GB的机器
- 使用ARM架构且要求稳定支持的开发者
这个 Agent 能做什么,适合哪些场景?
SWE-bench 是面向真实 GitHub 软件问题的大语言模型评测基准:模型接收代码库和 issue,并生成解决该问题的补丁。仓库提供代码、数据及 Docker 化评测 harness,支持 SWE-bench、Lite、Verified 和 Multimodal 数据集。评测通过 swebench.harness.run_evaluation 执行,生成镜像构建日志、评测日志和最终结果目录。它也提供本地模型与 API 模型的推理入口,以及在自有仓库上收集新任务的流程。采用前应预留较高的本地资源;文档建议 x86_64 环境至少具备 120GB 可用存储、16GB 内存和 8 核 CPU。
使用者先以 datasets.load_dataset('princeton-nlp/SWE-bench', split='test') 读取数据集,或在评测命令中指定数据集名称。随后,python -m swebench.harness.run_evaluation 读取预测补丁或 gold 金标准补丁,在 Docker 环境中运行评测;可通过 --dataset_name、--predictions_path、--max_workers、--instance_ids 与 --run_id 控制执行。运行会在当前目录写入 logs/build_images 的镜像构建日志、logs/run_evaluation 的评测日志,并将最终结果保存到 evaluation_results。仓库还文档化了对现有本地模型和 API 模型执行 inference 的路径,即向模型提供仓库与 issue 来生成修复。
- 评测研究人员要比较不同模型在真实 GitHub issue 修复任务上的补丁成功率时,可对同一预测文件运行 harness。
- 模型团队在提交评测前想验证标准答案执行链路时,可用
--predictions_path gold和单个实例运行验证。 - 资源有限的工程团队需要较小评测集进行快速回归时,可指定
princeton-nlp/SWE-bench_Lite。 - 希望从现有本地或 API 模型获得修复候选的研究者,可使用仓库文档化的 inference 流程,向模型输入代码库和 issue。
- 希望从内部仓库构建类似软件修复任务的研究者,可使用仓库的数据收集流程;文档同时说明该类实例创建咨询目前暂停支持。
- 需要在云端而非本机运行评测的团队,可使用文档提到的 Modal 选项,或使用 sb-cli 进行基于 AWS 的自动评测。
如何安装或部署这个 Agent?
先安装 Docker;源码安装命令为:
git clone [email protected]:princeton-nlp/SWE-bench.git
cd SWE-bench
pip install -e .README 标明 Python 3.8+。未文档化任何应用层凭据;拉取 Docker 镜像和下载数据需要网络访问。可用以下命令验证安装:
python -m swebench.harness.run_evaluation --predictions_path gold --max_workers 1 --instance_ids sympy__sympy-20590 --run_id validate-gold在 Mac M 系列或其他 ARM 系统上,README 要求添加 --namespace '',以在本地构建评测镜像。
如何使用这个 Agent?
评测 SWE-bench Lite 的预测补丁:
python -m swebench.harness.run_evaluation --dataset_name princeton-nlp/SWE-bench_Lite --predictions_path <path_to_predictions> --max_workers <num_workers> --run_id <run_id>将 <path_to_predictions> 替换为预测文件路径;使用 gold 可验证金标准补丁。可加 --modal true 在 Modal 上运行。完整参数列表可通过 python -m swebench.harness.run_evaluation --help 查看。
这个 Agent 有哪些优点和局限?
- 以真实 GitHub issue 和对应代码库为单位评测补丁,而非仅评估文本回答。
- Docker 化评测 harness 提供可复现的执行边界,并明确产出构建日志、评测日志和结果目录。
- 同一仓库覆盖标准版、Lite、Verified 与 Multimodal 数据集;Verified 被描述为 500 个经真实软件工程师确认可解决的问题。
- 支持评测已有预测,也文档化了本地模型和 API 模型的 inference 路径。
- 本地评测资源开销高:文档建议至少 120GB 可用存储、16GB 内存和 8 核 CPU。
- Docker 是运行评测的前提;默认镜像为 Linux 构建,ARM 支持仍属实验性。
- Multimodal 测试集评测保持私有,需通过 sb-cli 提交到排行榜,不能按 README 所述方式本地运行该测试评测。
- 数据收集功能虽存在,但仓库说明目前暂时暂停支持有关创建 SWE-bench 实例的咨询。
这个 Agent 与同类方案有什么区别?
对于非本地评测,仓库列出两条替代执行路径:sb-cli 用于基于 AWS 的自动评测,Modal 用于云端运行评测;未提供两者的功能或成本对比。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| SWE-bench 软件修复基准 当前 | 45 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 6.2k | 1 个月前 | Python | — |
| SWE-Bench Pro | 55 · 缺口较多 | 命令行工具免费 | ★ 557 | 1 个月前 | Python | — |
| Multi-SWE-bench | 46 · 缺口较多 | 命令行工具免费 | ★ 364 | 10 个月前 | Python | — |
| mini-swe-agent | 54 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 9.2k | 4 天前 | Python | — |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
该仓库是一个基准测试工具,不涉及代理权限管理、用户确认、数据流透明性或敏感数据处理。没有证据表明存在恶意行为,但也没有任何安全机制。因此所有信任标准得分为0。
自一致性:README和pyproject.toml中的安装说明一致,测试文件与文档中的示例一致。依赖可用性:依赖列表明确,但未锁定版本,可能影响可复现性。失败消息:测试仅检查返回码,未验证错误消息质量。
目标受众明确为研究人员和开发者,使用场景清晰。能力边界在README中说明(如资源需求、arm64支持)。触发精度:命令行参数明确。环境适配:支持Docker和Modal,但arm64为实验性。
信息架构清晰,有README、文档链接和目录结构。安装说明详细。命名稳定,包名为swebench。示例和FAQ:README提供了示例命令,但无FAQ。已知限制:在README中提及资源需求和arm64支持。许可证:MIT。版本变更日志:未提供。维护责任:有联系人和贡献指南。
输出可用性:评估结果以JSON格式存储,便于使用。边际价值:作为基准测试工具,提供了标准化的评估方法。成本效益:资源需求高,但提供了云选项。
声明可追溯:README引用了论文和数据集。跨来源佐证:有多个相关项目链接。事实与推断分离:README区分了事实和推荐。
- 源码中未见:最小权限约束只授予完成任务所需的权限:用专用账号或只读令牌,并限定可访问的目录和仓库。
- 源码中未见:执行前用户确认开启或自行加上执行前确认;先在沙箱或测试环境跑通,确认行为后再接入真实数据。
- 源码中未见:数据流向说明运行时观察它连接了哪些外部服务(代理或防火墙日志);弄清数据去向之前不要输入敏感数据。
- 源码中未见:敏感信息处理使用专用、低权限、可随时吊销的 API 密钥,不要复用生产凭据,也不要让密钥出现在日志里。
- 源码中未见:依赖安全审查安装前固定版本并做一次依赖扫描(如 npm audit、pip-audit);优先放在容器里运行。
- 源码中未见:外部影响披露先弄清它会写入、发送或修改哪些外部系统,用测试账号或测试仓库验证后再接入正式环境。
- 源码中未见:回滚或恢复路径运行前先备份,或在 git 分支、快照上操作,确保改动可以撤销。
- 源码中未见:来源归属可核验从官方仓库或包源安装,核对发布者和仓库地址,避免同名仿冒包。
- 该仓库是基准测试工具,不是代理产品,因此信任相关标准不适用。
- 依赖未锁定版本,可能影响可复现性。
- 未提供版本变更日志。
常见问题
运行本地评测需要什么机器条件?
--max_workers 建议低于 min(0.75 * os.cpu_count(), 24)。Apple Silicon 或其他 ARM 机器可以运行吗?
--namespace '',从而在本机构建评测镜像。是否可以评测 SWE-bench Multimodal 的测试集?
需要哪些账号或密钥?
结果和排错信息保存在哪里?
logs/build_images,评测日志写入 logs/run_evaluation,最终结果写入 evaluation_results。