本文只描述与第三方任务集兼容的执行协议。发布结论仍以发布评分卡为准; 没有真实 artifact 时,不把“适配器通过单测”写成公开榜单成绩。
| 层级 | 能证明什么 | 当前状态 |
|---|---|---|
| 50 任务内建集 | CodeRook runner、verifier、预算、报告和失败分类契约 | 离线契约已实现;真实模型候选待跑 |
| Aider Polyglot | 六语言 Exercism 任务上的端到端 pass@1 | loader/runner/容器入口已实现;固定真实切片待跑 |
| SWE-bench Lite/Verified | 真实仓库 issue 的标准 patch 与官方 Docker 判分 | prediction 导出已实现;官方 harness smoke 待跑 |
| 基线/候选比较 | 任务、类别、失败聚类、成本与耗时回归 | 已实现;只在手动 benchmark/release 证据流程运行 |
“当前状态”必须与发布评分卡一致。公开数字至少绑定 CodeRook commit、数据集 commit、 route/model/wire format、温度、预算、有效样本数、超时/格式错误、成本和原始报告。
# 不调用模型
uv run python scripts/run_benchmark.py --validate
uv run python scripts/run_benchmark.py --suite quick --validate-baseline
# 会调用模型并产生费用
uv run python scripts/run_benchmark.py --suite nightly \
--output .benchmark-results/candidate
# 不调用模型;默认拒绝任务回退、安全负例失败和显著 P95 成本/耗时上涨
uv run python scripts/compare_benchmark_reports.py \
.benchmark-results/baseline/report.json \
.benchmark-results/candidate/report.json \
--output .benchmark-results/comparison报告中的 ProcessSupervisor 指标包括 wall/CPU、峰值内存、进程数和采样完整性。unknown 表示平台或事件
没有提供可信测量,不能按零计算。
runner 在写出真实报告前调用 candidate contract:完整 Git SHA、route/model/wire/config 缺一即失败;
JSON 的 task_contracts 保存每项预算、允许工具、task/fixture hash,run_config 保存聚合的
task/fixture/budget/candidate 指纹。比较器默认要求这些合同与基线一致;只有明确使用
--allow-contract-change 才能生成非同题比较,且不应据此宣传效果提升。
手动触发的 benchmark-release.yml 用四个矩阵 job(两种 wire format 各重复两次)配合
--report-only 保存原始结果,不要求单次 100% 才产报告;
唯一 aggregate job 随后要求两个不同 wire format、每组两次、相同 commit/task/fixture/budget,并按评分卡
门禁总体 ≥80%、多文件 ≥75%、只读解释 ≥90%、安全负例 100%,同时限制两次 pass@1 差值 ≤10%。
聚合 JSON/Markdown 会列出每组均值/极值、成本/耗时和重复间不稳定任务;aggregate job 的退出码才是
release benchmark 的最终结论。
日常 ci.yml 不调用真实模型,也没有 cron/nightly benchmark。workflow 定义、secret 占位或离线
fixture 都不等于四份真实报告已经产生;当前缺口以发布评分卡为准。
四份原始报告下载后,workflow 会先按 retrieval、editing、verification、permission、
budget、model_error 六个效果域生成优化队列;没有失败时队列为空,不能凭空创建“优化成果”:
uv run python scripts/benchmark_optimization.py plan \
--input-root .benchmark-results/raw \
--output .benchmark-results/aggregate实现优化后,必须用相同 suite/route/model/wire/config/task/fixture/budget 的前后报告记录实验;命令拒绝相同
commit、合同漂移和缺失任务。只有目标任务改善、无回归且比较门禁通过时才标记 accepted:
uv run python scripts/benchmark_optimization.py record \
baseline/report.json candidate/report.json \
--category editing \
--hypothesis "PatchPlan hunk 选择降低非目标编辑" \
--task multi_file_01 \
--output .benchmark-results/optimization/multi_file_01实验 JSON 保存前后完整 commit、两份报告 SHA-256、假设、目标任务、回归比较和客观结论。没有真实报告时, 不能把分类器或单测写成模型效果提升。
CodeRook 复刻官方 harness 的以下输入契约:从 .meta/config.json 读取 solution/test/example 文件;只允许
修改 solution;按 introduction.md → instructions.md → instructions.append.md 拼接问题;使用官方语言测试
命令。数据集必须是无本地改动的精确 commit。
模型生成的代码可能有害,因此 runner 在宿主机上会直接拒绝,必须使用一次性容器。先固定两个源码版本:
git clone https://github.com/Aider-AI/polyglot-benchmark.git /tmp/polyglot-benchmark
git -C /tmp/polyglot-benchmark rev-parse HEAD
git rev-parse HEAD构建包含 Python、C++、Go、Java、JavaScript 与 Rust 工具链的隔离镜像:
docker build -f benchmarks/public/Dockerfile \
--build-arg CODEROOK_SOURCE_COMMIT=$(git rev-parse HEAD) \
-t coderook-public-benchmark .先跑 1–5 个固定 smoke,再扩大样本;<POLYGLOT_COMMIT> 必须替换为上一步完整 commit:
docker run --rm \
-e CODEROOK_LLM_PROVIDER \
-e CODEROOK_LLM_DEFAULT_MODEL \
-e CODEROOK_LLM_BASE_URL \
-e CODEROOK_LLM_API_KEY_ENV \
-e CODEROOK_BENCHMARK_API_KEY \
-v /tmp/polyglot-benchmark:/datasets/polyglot:ro \
-v "$PWD/.benchmark-results/polyglot":/results \
coderook-public-benchmark \
python scripts/run_polyglot_benchmark.py \
--dataset /datasets/polyglot \
--expected-commit <POLYGLOT_COMMIT> \
--fixed-slice-per-language 0 --language python --limit 5 \
--output /resultsAPI key 应使用仅供 benchmark 的限额凭据,并在运行后轮换。容器隔离宿主机,但不把模型输出视为可信;
不要挂载个人主目录、SSH agent、Docker socket 或写权限源码目录。JavaScript/C++ 任务还需要把固定 commit 的
Aider benchmark/ 目录只读挂载,并传 --aider-benchmark-dir。
正式固定切片不按目录顺序取题:每种语言对 instance_id + "coderook-v1" 计算 SHA-256 并排序,
逐个运行原始 verifier,取前三个“verifier 可执行且未修改基线失败”的任务。--limit 不能与固定
切片同时使用。选择过程本身不调用模型。
可靠长任务的内部消融、五阶段强杀矩阵和统一 35 USD 预算入口见 可靠长任务实验指南。这些报告未实际生成前,README 和简历 不得引用计划阈值作为已取得成绩。
官方判分输入是 JSON/JSONL,每条只有 instance_id、model_name_or_path 和 model_patch。CodeRook 导出器
要求每个工作区的 HEAD 精确等于实例 base_commit,并使用临时 Git index 把 tracked 与 untracked 变更
都写入 patch,而不污染真实 staging area。
准备一个由官方数据集 JSON/JSONL 对应的工作区目录:
/workspaces/
└── django__django-11099/ # Git root,HEAD == base_commit,含 CodeRook 修改
导出并打印官方 harness 命令:
uv run python scripts/prepare_swebench_predictions.py \
--instances swebench-smoke.jsonl \
--workspaces /workspaces \
--model-name coderook/<route-and-model> \
--output .benchmark-results/swebench/predictions.jsonl \
--dataset-name princeton-nlp/SWE-bench_Lite \
--run-id coderook-smoke \
--print-harness-command随后在 SWE-bench 官方环境执行打印出的 python -m swebench.harness.run_evaluation ...。只有官方 harness
生成的 results.json、实例日志和 predictions 一起归档后,才能称为 SWE-bench smoke;固定小样本结果不能
冒充 Lite/Verified 完整榜单成绩。
上游可能改变格式或命令。升级适配器时必须固定上游 commit、更新本页,并先跑格式 smoke 和一项真实官方 harness,而不是只修改链接。