mini-swe-agent 运行 SWE-bench-verified 操作指南
1. 安装
# 进入项目目录cd/{path}/mini-swe-agent# 安装(开发模式)pipinstall-e.安装后会得到两个 CLI 命令:mini(交互式)和mini-extra(批量评测等工具)。
2. 核心命令
跑 SWE-bench-verified 的核心命令是mini-extra swebench:
mini-extra swebench\--subsetverified\--splitdev\--slice"0:5"\-manthropic/claude-opus-4-6-20260205\-cswebench.yaml\-o./results_verified参数说明
| 参数 | 说明 |
|---|---|
--subset verified | 指定 SWE-bench-verified 数据集(对应 HuggingFace 上的princeton-nlp/SWE-Bench_Verified) |
--split dev | 数据集 split,默认dev |
--slice "0:5" | 只跑前 5 条 instance(用于快速测试);去掉则跑全部 |
-m/--model | 模型名称,支持 litellm 的所有后端(Anthropic、OpenAI、OpenRouter 等) |
-c/--config | 配置文件,默认swebench.yaml |
-o/--output | 输出目录,存放preds.json、轨迹文件和日志 |
-w/--workers | 并行 worker 数量(默认单线程) |
--filter | 正则过滤 instance ID |
--redo-existing | 覆盖已有结果重新跑 |
3. 单条 Instance 调试
如果只想跑某一条 instance 调试:
mini-extra swebench-single<instance-id>\-manthropic/claude-opus-4-6-20260205\-cswebench.yaml单条模式参数说明
| 参数 | 说明 |
|---|---|
-i/--instance | instance ID 或索引数字 |
-y/--yolo | 无需确认,自动执行 |
--exit-immediately | agent 想结束时直接退出,不弹确认提示 |
-l/--cost-limit | 成本限制(美元),设为 0 表示不限制 |
-o/--output | 轨迹输出文件路径 |
4. 批量运行 SWE-bench-verified
小批量测试(推荐先跑几条验证流程)
mini-extra swebench\--subsetverified\--splitdev\--slice"0:3"\-manthropic/claude-sonnet-4-5-20250929\-cswebench.yaml\-o./results_verified_test\-w1全量运行
mini-extra swebench\--subsetverified\--splitdev\-manthropic/claude-sonnet-4-5-20250929\-cswebench.yaml\-o./results_verified_full\-w4只跑特定项目(如 django)
mini-extra swebench\--subsetverified\--filter"^django__"\-manthropic/claude-sonnet-4-5-20250929\-cswebench.yaml\-o./results_verified_django\-w45. 输出结果结构
运行结束后,输出目录结构如下:
results_verified/ ├── preds.json # SWE-bench 标准格式的预测结果 │ # 可直接用于官方评测脚本 ├── exit_statuses_1234567890.yaml # 各 instance 的退出状态 ├── minisweagent.log # 完整运行日志 └── django__django-11011/ # 每个 instance 一个目录 └── django__django-11011.traj.json # 完整交互轨迹preds.json 格式
{"django__django-11011":{"model_name_or_path":"anthropic/claude-sonnet-4-5-20250929","instance_id":"django__django-11011","model_patch":"diff --git a/django/... ..."},...}6. 使用官方 SWE-bench 评测
得到preds.json后,用 SWE-bench 官方工具评测:
# 安装 swe-bench 评测工具pipinstallswebench# 运行评测python-mswebench.harness.run_evaluation\--dataset_nameprinceton-nlp/SWE-Bench_Verified\--predictions_path./results_verified/preds.json\--max_workers4\--run_idverified_eval7. 完整实操流程总结
# Step 1: 进入项目目录并安装cd/{path}/3rd/mini-swe-agent pipinstall-e.# Step 2: 设置 API KeyexportANTHROPIC_API_KEY="sk-..."# Step 3: 单条调试(验证流程是否正常)mini-extra swebench-single\--subsetverified\--instance0\-manthropic/claude-sonnet-4-5-20250929\-cswebench.yaml\-y\--exit-immediately# Step 4: 小批量测试(跑5条看看效果)mini-extra swebench\--subsetverified\--slice"0:5"\-manthropic/claude-sonnet-4-5-20250929\-cswebench.yaml\-o./results_verified_5\-w1# Step 5: 全量运行mini-extra swebench\--subsetverified\-manthropic/claude-sonnet-4-5-20250929\-cswebench.yaml\-o./results_verified_full\-w4# Step 6: 官方评测python-mswebench.harness.run_evaluation\--dataset_nameprinceton-nlp/SWE-Bench_Verified\--predictions_path./results_verified_full/preds.json\--max_workers48. 常见问题
| 问题 | 解决 |
|---|---|
| Docker 镜像拉取失败 | 确保已安装 Docker,或改用--environment-class singularity |
| API 调用超时/失败 | 检查 API Key,或调整model_kwargs中的参数 |
| 想换模型 | 修改-m参数,支持 litellm 的所有模型格式(如openai/gpt-4o) |
| 想修改 system prompt | 复制swebench.yaml,修改system_template,用-c指定新配置 |
9. 离线使用方法
9.1 为什么需要联网
完整流程中以下步骤需要网络连接:
Agent 运行阶段(mini-extra swebench):
- 从 HuggingFace 下载 SWE-bench 数据集
- 拉取 SWE-bench Docker 镜像
- 调用大模型 API
评测阶段(swebench.harness.run_evaluation):
- 拉取 Docker 评测镜像
- 容器内安装依赖(部分需要从 PyPI 下载)
9.2 离线替代方案
如果你处于离线环境,可以预先拉取镜像:
# 1. 先在有网环境列出所有需要的镜像python-c" from datasets import load_dataset ds = load_dataset('princeton-nlp/SWE-Bench_Verified', split='dev') for inst in ds: iid = inst['instance_id'].replace('__', '_1776_') print(f'docker.io/swebench/sweb.eval.x86_64.{iid}:latest'.lower()) ">images.txt# 2. 批量拉取catimages.txt|xargs-I{}dockerpull{}# 3. 保存镜像(可选,用于迁移到离线机器)dockersave$(catimages.txt|tr'\n'' ')-oswebench_images.tar然后在离线机器上:
# 加载镜像dockerload-iswebench_images.tar9.3 简化验证(不跑完整测试)
如果只是想验证 agent 生成的 patch 格式正确,不跑完整 SWE-bench 评测:
# 本地验证 preds.json 格式是否正确python-c" import json with open('./results_verified_full/preds.json') as f: preds = json.load(f) print(f'共生成 {len(preds)} 个 patch') for k, v in list(preds.items())[:3]: print(f'{k}: patch长度={len(v[\"model_patch\"])}') "注意:这不能替代官方评测,官方评测是唯一准确判断 patch 是否正确修复了 issue 的方式。
10. 数据集映射
mini-extra swebench支持的数据集 subset 名称:
| Subset name | Dataset |
|---|---|
full | princeton-nlp/SWE-Bench |
verified | princeton-nlp/SWE-Bench_Verified |
lite | princeton-nlp/SWE-Bench_Lite |
multimodal | princeton-nlp/SWE-Bench_Multimodal |
multilingual | swe-bench/SWE-Bench_Multilingual |
smith | SWE-bench/SWE-smith |
rebench | nebius/SWE-rebench |