首页/新闻资讯/正文详情

mini-swe-agent 实战指南:在 SWE-bench 基准上批量运行与单实例调试

发布时间:2026/9/27 21:57:51 来源:云帆数科 栏目:资讯中心
mini-swe-agent 实战指南:在 SWE-bench 基准上批量运行与单实例调试
人工智能大模型AI Agent代码智能体【免费下载链接】mini-swe-agentThe 100 line AI agent that solves GitHub issues or helps you in your command line. Radically simple, no huge configs, no giant monorepo—but scores 74% on SWE-bench verified!项目地址https://gitcode.com/gh_mirrors/mi/mini-swe-agent点击查看免费下载导读本指南以 mini-swe-agent 仓库提供的两个官方脚本swebench批量模式与swebench-single单实例调试模式为核心完整讲解如何加载 SWE-bench 数据集、选择子集与切片、并行运行 Agent、收集preds.json预测结果并通过云端 sb-cli 或本地 SWE-bench harness 完成评估。读完本文你将掌握一套可复制、可扩展的 SWE-bench 评测流水线并理解其底层实现原理镜像选择、实例筛选、断点续跑、进度报告与异常处理。背景两个脚本的分工mini-swe-agent 针对 SWE-bench 基准提供了两个入口脚本二者互补mini-extra swebench批量模式自动遍历所有任务实例task instance以多线程并行方式运行 Agent产出可供评估的preds.json文件适合正式跑分与批量实验。mini-extra swebench-single单实例模式在单个任务实例上以交互方式运行便于调试提示词、观察 Agent 行为由于带有交互性它不会生成preds.json文件。两个脚本都位于 src/minisweagent/run/benchmarks/ 目录下其中swebench_single.py通过复用swebench.py中的DATASET_MAPPING与get_sb_environment等公共函数来保持行为一致。如果你要构建自己的批量处理流水线直接阅读这两个脚本的源码是最佳起点。快速开始批量模式swebench查看帮助与最小示例mini-extra swebench --help # 等价于直接调用 Python 模块 python src/minisweagent/run/benchmarks/swebench.py --help一个典型的最小批量运行命令如下以verified子集、test分片为例mini-extra swebench \ --model anthropic/claude-sonnet-4-5-20250929 \ --subset verified \ --split test \ --workers 4⚠️架构注意SWE-bench 的 Docker 容器面向 x86 Linux 架构构建在其他 CPU 架构上可能无法运行。运行前请确认你的宿主机满足该前提。批量模式参数全解分组参数说明默认值基础-o,--output输出目录存放preds.json、轨迹与日志空当前目录基础-m,--model使用的模型名称由配置决定基础-c,--config配置文件路径一旦指定默认配置文件不再生效需显式带上swebench.yamlconfig目录下的swebench.yaml基础-w,--workers并行工作线程数1数据选择--subsetSWE-bench 子集名或自定义数据集路径lite数据选择--split数据集分片dev数据选择--slice切片规格如0:5表示只取前 5 个实例空不切片数据选择--filter按正则表达式过滤实例 ID空不过滤数据选择--shuffle是否打乱实例顺序False数据选择--redo-existing是否重新运行已有结果的实例False高级--environment-class环境类型推荐docker或singularitydocker高级--model-class模型类如anthropic或完整导入路径由配置决定-c的合并语义-c接受一个列表多个配置会被递归合并对应源码 swebench.py 中的recursive_merge。但注意一旦你使用了-c内置默认配置就不会被加载因此常用写法是先显式指定基准配置文件再叠加自己的覆盖项mini-extra swebench \ -c swebench.yaml \ -c model.model_kwargs.temperature0.5 \ -c agent.step_limit100命令行传入的-m/--model、--environment-class等选项最终也会作为一份配置参与合并因此优先级语义一致。内置子集与数据集映射源码 swebench.py 中的DATASET_MAPPING定义了可直接使用的子集名子集名对应 Hugging Face 数据集fullprinceton-nlp/SWE-Benchverifiedprinceton-nlp/SWE-Bench_Verifiedliteprinceton-nlp/SWE-Bench_Litemultimodalprinceton-nlp/SWE-Bench_Multimodalmultilingualswe-bench/SWE-Bench_MultilingualsmithSWE-bench/SWE-smith_testklieret/swe-bench-dummy-test-dataset用于测试rebenchnebius/SWE-rebench凡不在映射表中的值都会被直接当作数据集路径或名称传给datasets.load_dataset(dataset_path, splitsplit)见 swebench.py这正好对应 FAQ 中如何运行自定义数据集的机制。实例筛选、切片与打乱批量脚本在加载数据集后会调用 filter_instances 完成三步预处理顺序为打乱 → 正则过滤 → 切片打乱使用固定随机种子42保证可复现源码为random.seed(42)--filter用re.match匹配instance_id例如--filter django__.*只保留 Django 相关实例--slice支持完整的 Python 切片语法0:5、3:、:2作用于过滤后的列表。测试用例 tests/run/test_swebench.py 覆盖了 filter 与 slice 的各种组合包括先过滤后切片的执行顺序以及打乱的确定性。断点续跑与重跑脚本具备天然的断点续跑能力默认--redo-existing False下若输出目录中已存在preds.json脚本会读取其中已记录的实例 ID 并跳过见 swebench.py若你想强制重跑加--redo-existing即可。对应测试见 tests/run/test_swebench.pytest_redo_existing_false_skips_existing与test_redo_existing_true_overwrites_existing。单实例模式面向调试swebench-singlemini-extra swebench-single --help # 等价于 python src/minisweagent/run/benchmarks/swebench_single.py --help按实例 ID 运行单个任务mini-extra swebench-single \ --subset verified \ --split test \ --model anthropic/claude-sonnet-4-5-20250929 \ -i sympy__sympy-15599也可以按索引运行例如第 0 个实例mini-extra swebench-single \ --subset verified \ --split test \ -m anthropic/claude-sonnet-4-5-20250929 \ -i 0 # instance index提示若希望脚本在 Agent 完成任务后不弹出确认提示直接退出加上--exit-immediately标志或命令行等价项-y/--yolo。单实例模式参数分组参数说明默认值基础-m,--model使用的模型由配置决定基础-c,--config配置文件路径语义同批量模式config目录下的swebench.yaml基础-o,--output输出轨迹文件路径全局配置目录下的last_swebench_single_run.traj.json数据选择--subset子集名或数据集路径lite数据选择--split数据集分片dev数据选择-i,--instanceSWE-bench 实例 ID 或实例索引0高级--environment-class环境类如dockerdocker高级--exit-immediatelyAgent 想结束时立即退出而非询问False高级--model-class/--agent-class自定义模型类 / Agent 类支持完整导入路径由配置决定高级-l,--cost-limit成本上限设为0禁用由配置决定从源码 swebench_single.py 可以看到-i参数会先判断是否为纯数字若是则把数据集按实例 ID 排序后取对应索引否则直接按实例 ID 查找。随后脚本使用默认的interactiveAgent 类型default_typeinteractive运行该实例的problem_statement因此整个调试过程是交互式的。评估云端 sb-cli 与本地 harness跑完 SWE-bench 后需要评估preds.json官方提供两种途径方案一云端评估免费、快速使用 SWE-bench 官方的 sb-cli安装并获取 token 后sb-cli submit swe-bench_verified test --predictions_path preds.json --run_id some-id-for-your-run通常约 20 分钟内出结果。需要注意耗时不受实例数量影响而取决于 SWE-bench 中评估最慢的那个实例。方案二本地评估安装 SWE-bench 包后使用其 harness 在本地跑python -m swebench.harness.run_evaluation \ --dataset_name princeton-nlp/SWE-bench_Verified \ --predictions_path preds.jsonl \ --max_workers num_workers \ --run_id run_id本地评估适合需要完全掌控运行环境、或不便上传数据的场景注意其--predictions_path接受的是preds.jsonl而批量脚本默认输出preds.json两者格式需自行对齐。输出产物与进度管理输出目录结构批量模式运行后输出目录中包含preds.json评估所需的核心产物。每个实例对应一条记录格式为{instance_id: {model_name_or_path: ..., instance_id: ..., model_patch: ...}}由 update_preds_file 以线程安全threading.Lock方式增量写入instance_id/instance_id.traj.json每个实例的完整轨迹文件包含exit_status、submission、异常信息如有以及全部对话消息exit_statuses_timestamp.yaml各实例退出状态的汇总报告由RunBatchProgressManager维护minisweagent.log运行日志通过add_file_handler写入。实时进度面板批量模式使用 rich 的Live渲染双进度条见 batch_progress.py主进度条显示整体完成数、已花费成本累计GLOBAL_MODEL_STATS.cost与 ETA每个实例对应一个子任务状态文本由 ProgressTrackingAgent 在每个 step 更新为Step N ($cost)。因此你在终端能同时看到总进度 每个实例当前走到第几步 退出状态统计表。默认配置剖析批量与单实例模式的默认配置均指向 src/minisweagent/config/benchmarks/swebench.yaml它定义了 Agent 行为、环境与模型三大部分agent提示词与限制system_template/instance_templateJinja2 模板把每个 SWE-bench 实例的problem_statement渲染进pr_description并给出完整任务指令工作目录/testbed、禁止修改测试文件、最终必须通过echo COMPLETE_TASK_AND_SUBMIT_FINAL_OUTPUT cat patch.txt提交补丁等step_limit: 250单实例最大推理步数cost_limit: 3.单实例成本上限美元。environment运行沙箱cwd: /testbedSWE-bench 标准工作目录timeout: 60单条命令超时秒interpreter: [bash, -c]命令执行解释器env设置PAGER/MANPAGERcat、LESS-R、关闭进度条噪音并通过BASH_ENV/root/.bashrc确保conda activate testbed生效environment_class: docker默认容器后端。model观测与回退模板observation_template把命令输出包装成returncode/output当输出超过 10000 字符时自动截断仅保留前 5000 与后 5000 字符并提示 elided 数量format_error_template针对输出 token 耗尽finish_reason length与工具调用错误给出纠正提示model_name: anthropic/claude-sonnet-4-5-20250929并开启drop_params与parallel_tool_calls。底层原理从实例到容器镜像名推导每个 SWE-bench 实例都运行在独立容器中。若数据集未提供image_name或docker_image字段get_swebench_docker_image_name 会按规则构造镜像名因为 Docker 不允许镜像名中出现双下划线源码把实例 ID 中的__替换为魔法 token_1776_生成形如docker.io/swebench/sweb.eval.x86_64.repo_1776_repo_1776_version:latest的镜像名。相关单测见 tests/run/test_swebench.py。环境装配与启动命令get_sb_environment 负责把配置与实例结合出真实环境复制配置中的environment段不修改共享配置避免多线程竞争有专门测试验证按环境类设置镜像docker/swerex_modal直接用裸镜像名singularity/contree则加上docker://前缀若配置了run.env_startup_command会先用 Jinja2StrictUndefined模式以实例字段为模板变量渲染再在容器内执行失败则抛出RuntimeError。并发、异常与中断批量模式通过concurrent.futures.ThreadPoolExecutor(max_workersworkers)并行调度实例swebench.py。每个实例的执行被包在try/except中任何异常都会以异常类名作为exit_status记录进轨迹与preds.jsonmodel_patch为空字符串。测试 tests/run/test_swebench.py 验证了RuntimeError/ValueError/ConnectionError等异常都会被正确记录并通知进度管理器。若你按下CtrlCKeyboardInterrupt脚本会先取消尚未启动的任务等待已运行任务收尾再次CtrlC才强制退出。FAQ 与常见问题排查能否设置全局成本上限可以。通过环境变量/全局配置中的MSWEA_GLOBAL_CALL_LIMIT全局模型调用次数上限0 表示不限与MSWEA_GLOBAL_COST_LIMIT全局成本上限美元0 表示不限实现详见 docs/advanced/global_configuration.md。用 CtrlC 中断后未完成的任务怎么办轨迹只在任务完成时才保存因此多数情况下直接重新运行脚本即可续跑未完成任务preds.json中已完成的实例会被自动跳过。但个别已保存的任务可能以KeyboardInterrupt作为exit_status重跑前建议检查preds.json。删除了轨迹文件某些任务仍然卡住不跑已完成的判定依据是preds.json而非轨迹文件。请把对应实例从preds.json中删除。如何运行自定义数据集只要数据遵循 SWE-bench 格式且能被datasets.load_dataset(path, splitsplit)加载就可以通过--subset /path/to/your/dataset直接指定。--split同样生效。部分任务长时间卡在 initializing task 甚至超时这通常是因为正在拉取 Docker 镜像第二次运行会立即开始。若是docker pull超时可调大环境配置中的environment.pull_timeout默认120秒。遇到 Docker 问题怎么排查脚本会在控制台打印将要执行的 Docker 命令可以手动复制执行观察报错用docker ps确认容器在跑再用docker exec -it container-id ls验证容器可交互。HPC 集群上没有 Docker改用 Singularity/Apptainer 后端在 Agent 配置文件中设置environment.environment_class: singularity参见 docs/advanced/yaml_configuration.md或直接命令行加--environment-class singularity。能否在环境里先执行启动命令可以配置run.env_startup_command命令会以 Jinja2 模板渲染实例字段后执行。例如run: env_startup_command: apt-get update apt-get install -y python3-pip利用实例变量做初始化尤其适合轻量环境例如run: env_startup_command: git clone {{ repo_url }} . --force该能力在配合 docs/reference/environments/bubblewrap.md 这类无预置代码的沙箱时非常实用。SWE-bench 可以使用哪些环境后端docker默认经docker exec执行、singularityHPC 友好、swerex_docker/swerex_modal经 SWE-ReX 的本地/云端执行、bubblewrapLinux 无特权沙箱实验性、contreeConTree 安全执行沙箱等。各后端的取舍与配置详见 docs/advanced/environments.md。延伸阅读批量脚本源码src/minisweagent/run/benchmarks/swebench.py单实例脚本源码src/minisweagent/run/benchmarks/swebench_single.py默认基准配置src/minisweagent/config/benchmarks/swebench.yaml进度管理实现src/minisweagent/run/benchmarks/utils/batch_progress.py批量模式端到端测试tests/run/test_swebench.py单实例模式测试tests/run/test_swebench_single.py脚本 API 参考docs/reference/run/swebench.md、docs/reference/run/swebench_single.md赞分享人工智能大模型AI Agent代码智能体【免费下载链接】mini-swe-agentThe 100 line AI agent that solves GitHub issues or helps you in your command line. Radically simple, no huge configs, no giant monorepo—but scores 74% on SWE-bench verified!项目地址https://gitcode.com/gh_mirrors/mi/mini-swe-agent点击查看免费下载相关推荐mini-swe-agent 单实例 SWE-bench 运行脚本 swebench-single 完全指南mini swe agent 单实例 SWE bench 运行脚本 swebench single 完全指南 导读 swebench single 是 mini人工智能大模型AI Agent代码智能体LifeOS 中的 Remotion 技能用 React 代码驱动可复现的程序化视频创作LifeOS 中的 Remotion 技能用 React 代码驱动可复现的程序化视频创作 本指南以 LifeOS 开源仓库中的 Remotion 技能定义 h人工智能大模型AI Agent代码智能体MediaCrawler-new5分钟掌握多平台社交媒体数据采集终极指南MediaCrawler new5分钟掌握多平台社交媒体数据采集终极指南 还在为获取小红书、抖音、快手、B站、微博五大平台数据而烦恼吗MediaCrawle人工智能大模型AI Agent代码智能体上一篇Spree 6.1 Merchant-Composed Order Stages在订单状态之外构建可编排的阶段轴下一篇gpui-kit 语义化表格原语实战用 gpui-base 的 Table 构建无障碍表格组件创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

一物一码系统能不能自动判断质保状态和维修历史?
一物一码系统能不能自动判断质保状态和维修历史?

一物一码系统能不能自动判断质保状态和维修历史? 太长不看版 一物一码系统可以支持质保状态判断和维修历史查询,但不是“贴上二维码就自动完成”。它需要同时具备四类数据:单品身份码、质保规则、销售或激活时间、售后工单记录。 如果这些数据… · 2026/9/27 21:57:45

MySQL 存储过程实战:用 TaoToken 统一 Key 打通 Cline 配置与调试链路
MySQL 存储过程实战:用 TaoToken 统一 Key 打通 Cline 配置与调试链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 21:57:39

Wireshark笔记:用TaoToken统一Key后对MCP连接做抓包分析
Wireshark笔记:用TaoToken统一Key后对MCP连接做抓包分析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 21:57:33

吃透Claude Code动态工作流:从settings.json配置到多智能体实战,告别AI任务失效
吃透Claude Code动态工作流:从settings.json配置到多智能体实战,告别AI任务失效

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:36:51

成本陷阱(下):TaoToken 统一 Key 通道下的 Token 工厂三本账
成本陷阱(下):TaoToken 统一 Key 通道下的 Token 工厂三本账

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:36:51

6 款 AI 工具配 TaoToken:统一 Key 与配置文件骨架,写出更优质代码
6 款 AI 工具配 TaoToken:统一 Key 与配置文件骨架,写出更优质代码

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:36:51

避开安全软件拦截!OpenClaw 小龙虾 Windows 全流程落地实操手册:TaoToken 统一 Key 配置与验证
避开安全软件拦截!OpenClaw 小龙虾 Windows 全流程落地实操手册:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:36:51

ABB电气 ATS 与数据中心供电切换:TaoToken 统一 Key 通道下的系统协同能力验证
ABB电气 ATS 与数据中心供电切换:TaoToken 统一 Key 通道下的系统协同能力验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:36:51

Spring AI 整合 MCP Client:用 TaoToken 统一 Key 调用高德地图 MCP 服务
Spring AI 整合 MCP Client:用 TaoToken 统一 Key 调用高德地图 MCP 服务

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:36:45

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码