Skip to main content
SWE-bench Pro Verified 是 SWE-bench Pro 的验证版本,针对轨迹分析中发现的两类评测可靠性问题进行修正:一是由黄金补丁或隐藏评测信息泄漏引发的奖励机制利用(reward hacking),二是误导性问题描述、测试范围不当等任务质量问题(task quality issues)(论文、数据集、评测脚本)。 Benchmark 共包含 731 个任务。仓库重建、测试工件隐藏、元数据过滤与匿名化、网络阻断四项防作弊控制(anti-hacking)应用于全部任务;在此基础上,任务修正(task refinement)进一步处理了 102 个已确认存在质量问题的任务,包括 22 个误导性描述、75 个过窄测试、3 个过宽测试,以及 2 个其他问题。

工作原理

每个任务分为独立的推理和评测阶段:
  1. 加载并准备任务:AgentCompass 从数据集中读取 instance_id、仓库、基础提交、问题陈述、要求以及新引入的接口。provider Recipe 通常会选择任务预构建镜像,并在 /app 暴露仓库。
  2. 应用修复后的数据:AgentCompass 从 opencompass/SWEBench-Pro-Verified 的 swebench_pro_verified.jsonl 文件加载完整任务数据。
  3. 应用防作弊控制:AgentCompass 删除评测测试文件、将仓库重建为清除 Git 历史的全新提交,并通过黑名单阻断代码托管域名,并对 instance_id 等任务元数据进行过滤与匿名化。
  4. 运行编程 agent:mini-SWE-agent 或 OpenHands 等 Harness 接收问题描述,在检出目录后的仓库中修改代码。使用标准 Recipe 时,最终统一差异补丁必须写入 /app/patch.txt。
  5. 启动全新的评测环境:推理工作区的改动不会直接用于评测。AgentCompass 从任务镜像启动新环境,把 /app 重置到 base_commit,再应用被测补丁。
  6. 运行官方实例脚本:Benchmark 从本地 run_scripts/<instance_id>/ 加载该任务的 run_script.sh 与 parser.py;缺失时从 SWE-bench_Pro-os 下载。解析器把测试日志转换为结构化结果。
  7. 判定是否解决:只有所有要求的 FAIL_TO_PASS 与 PASS_TO_PASS 测试都出现在已通过测试集合中,任务才是 resolved=true。

环境

目前暂不支持在 Daytona 或 Modal 上运行本 Benchmark:这两个 provider 均不支持黑名单机制,只支持白名单或完全阻断出网(Daytona 网络限制文档、Modal 沙箱网络文档)。Docker 是目前唯一能够强制执行黑名单机制的公开 provider,详见网络配置。 每个任务环境至少需要 4 个 CPU 核心和 8 GiB 内存。任意 Environment provider 都会默认应用这两个值。可以手动配置覆盖这些值,但不建议分配低于该要求的资源;详见Environment 资源限制。

参数

通过 --benchmark-params '{...}' 传入 Benchmark 配置,或写入 --config 指定 YAML 的 benchmark.params;同名字段以命令行为准。

参数总览

参数类型默认值可选值 / 取值说明
prepare_mode字符串git_clonegit_clone / prebaked推理仓库的准备方式;内置 provider Recipe 通常会改为 prebaked。
workspace_root字符串/app环境内绝对路径Recipe 覆盖前用于创建任务工作区的根目录。
repo_url_template字符串https://github.com/&#123;repo&#125;.git包含 {repo} 的模板git_clone 模式使用的仓库克隆 URL。
scripts_dir字符串""本地目录控制器侧包含 <instance_id>/run_script.sh 与 parser.py 的目录;为空时解析为数据目录下的 run_scripts/。
dockerfiles_dir字符串""本地目录控制器侧官方 Dockerfile 根目录,用于恢复任务环境变量;为空时从数据目录解析。
evaluation_repo_dir字符串/app环境内绝对路径评测镜像内的仓库路径;内置 Recipe 保持为 /app。
evaluation_workspace_dir字符串/app环境内绝对路径评测时写入补丁、脚本、日志与解析器输出的目录。
sample_ids列表 / 字符串 / 空值null有效实例 ID可选的精确任务过滤;出现未知 ID 时直接报错。
model ID 是 agentcompass run 的第三个位置参数,不属于 --benchmark-params。本 Benchmark 固定加载公开 test 数据划分,不提供 split 参数。

推理、model 与评测控制

evaluation_timeout_seconds 只控制补丁回收后在全新环境中执行的 run_script.sh 与解析器评测,不能延长推理阶段。思考/推理应写入 --model-params;具体协议/provider 格式见 mini-SWE-agent 或 OpenHands。

运行示例

agentcompass run 的三个位置参数依次为 Benchmark、Harness 和 Model。以下命令使用 swebench_pro_verified,Harness 的选择见下文。 运行前请确认本地 Docker 可用,并设置 MODEL_NAME、MODEL_BASE_URL 和 MODEL_API_KEY,分别指定被测 Model、API 地址和密钥。

推荐 Harness

mini-SWE-agent 是 SWE-bench Pro 的推荐 Harness。它使用 Benchmark 专属的 mini-SWE-agent 配置,并在任务环境中执行仓库命令。
运行一个任务,验证推理、补丁回收与官方评测的完整链路。

其他可选 Harness

也可以使用 OpenHands。下面的命令评测完整数据集,并分别配置 model 请求、终端命令、agent 循环、整题推理和评测限制:

评测结果

通用结果说明见运行目录、汇总成绩和单题文件与公共字段。

评分指标

SWE-bench Pro Verified 的主指标是二元 correct,与评测器的 resolved 判定一致;是否解决由前文工作原理中的测试规则决定,不提供部分分。 默认配置下,每题尝试一次,总体成绩为有效计分任务的问题解决率,取值为 0–1,越高越好。 多次尝试、分类聚合和计分异常的处理见指标与聚合。

单题结果与评分依据

final_answer 保存提交给评测器的统一差异补丁。meta.benchmark 下的 eval_raw_data 保存判分依据,可用字段如下: