工作原理
每次运行分为独立的推理与评测阶段:- 加载并准备任务:AgentCompass 加载
instance_id、repo、base_commit、problem_statement、标准答案补丁和测试元数据。内置 provider Recipe 通常会选择实例镜像,并在/testbed暴露检出目录后的仓库。 - 运行编程 agent:mini-SWE-agent 或 OpenHands 等 Harness 接收问题单、修改仓库,并在标准 Recipe 布局下把统一差异补丁写入
/testbed/patch.txt。 - 启动全新的评测环境:AgentCompass 不会在已经被 agent 修改过的推理工作区中评测,而是新建环境、恢复
base_commit,再应用被测预测补丁。 - 执行 SWE-bench 测试配置:上游
make_test_spec()提供环境准备、仓库安装与评测脚本。使用预构建 Recipe 时会跳过重复的准备/安装,但仍运行生成的评测脚本。 - 解析官方报告:上游
get_eval_report()给出resolved。只有原先失败且应通过的测试全部通过,同时原有通过测试仍保持通过,任务才算解决。
参数
通过--benchmark-params '{...}' 传入 Benchmark 配置,或写入 --config 指定 YAML 的 benchmark.params;同名字段以命令行为准。
参数总览
| 参数 | 类型 | 默认值 | 可选值 / 取值 | 说明 |
|---|---|---|---|---|
prepare_mode | 字符串 | git_clone | git_clone / prebaked | 推理与评测仓库的准备方式;内置远程 provider Recipe 通常会改为 prebaked。 |
workspace_root | 字符串 | /testbed | 环境内绝对路径 | Recipe 覆盖前每个实例的推理与评测工作区根目录。 |
dataset_zip_url | 字符串 | 内置镜像地址 | ZIP URL 或空字符串 | 优先尝试的数据集归档;本地数据不存在时,从 Hugging Face 加载 SWE-bench/SWE-bench_Verified。 |
repo_url_template | 字符串 | https://github.com/{repo}.git | 包含 {repo} 的模板 | git_clone 模式使用的仓库克隆 URL。 |
eval_timeout | 整数 | 1800 | 整数 ≥ 1 | 生成的 SWE-bench 评测命令超时,单位为秒。 |
sample_ids | 列表 / 字符串 / 空值 | null | 有效实例 ID | 可选的精确任务过滤;出现未知 ID 时直接报错。 |
k | 整数 | 1 | 整数 ≥ 1 | 每个任务的独立尝试数。 |
avgk | 布尔值 | true | true / false | k > 1 时是否报告 avg@k。 |
agentcompass run 的第三个位置参数,不属于 --benchmark-params。数据集固定为 test 数据划分,不提供 Benchmark split 参数。
推理、model 与评测控制
eval_timeout 只在补丁产生并创建全新评测环境后开始计时,不能延长 model 请求、任务命令或 Harness 运行。思考/推理也属于 model 请求配置,而不是 Benchmark 参数;具体写法见 mini-SWE-agent 或 OpenHands。
运行示例
推荐 Harness
mini-SWE-agent 是 SWE-bench Verified 的推荐 Harness。它使用 Benchmark 专属的 mini-SWE-agent 配置,并在任务环境中执行仓库命令。- 冒烟测试(单条跑通)
- 自定义参数
- AgentCompass 推荐配置
运行一个任务,验证推理、补丁回收与全新环境评测的完整链路。
其他可选 Harness
也可以使用 OpenHands。下面的单任务命令分别配置 model 请求、终端命令、agent 循环、整题推理和评测限制:输出
聚合指标(summary.md)
聚合结果写入summary.md。主指标 accuracy 是 resolved=true 的已评测任务比例;k > 1 时还会报告框架通用的 pass@k 与可选 avg@k。详见结果。
单任务详情(details/)
单任务详情写入results/swebench_verified/<model>/<run>/details/。尝试记录包含:
status=COMPLETED 表示产生了有效评测结果,并不代表问题单已解决;是否解决应看 correct / extra.eval_raw_data.resolved。RUN_ERROR 表示 Harness 失败,EVAL_ERROR 表示评分失败,两者同时发生时状态为 ERROR。