Meta-Harness 让 Claude Code 像工程师一样检索全部历史、提出代码改动,再由外部 evaluator 独立验收。外层搜索规则反而很简单。
Harness 包含 system prompt,也包含围绕模型运行的程序
存什么
Memory、历史样例、环境状态与中间结果。
取什么
检索规则、路由、去重、排序与 context budget。
何时交给模型
Prompt construction、tool loop、completion check 与 retry。
Proposer 不直接改线上系统;外层程序控制验证与计分
一次 harness 评测最多产生约 1,000 万 tokens,摘要会丢掉因果线索
先替 proposer 决定“什么重要”
Score-only 只留下结果;summary 把多条失败压成短解释;window 只看近期候选。
如果真正的错误来自十轮前的 prompt 变化,信息在进入 proposer 前就消失了。
把历史变成外部工作区
Claude Code 自己用 grep、cat 和脚本选择要读的 code、score 与 raw trace。
TerminalBench search 每轮中位读取 82 个文件,其中 source 41%、trace 40%。
它把“反馈带宽”和“可执行代码空间”同时放大
| 路线 | 改什么 | Proposer 看什么 | 与 Meta-Harness 的边界 |
|---|---|---|---|
| GEPA | prompt / text artifact | 单 candidate 的 rollout feedback / summary | 反馈丰富,但不保留全 population 的 raw traces。 |
| AlphaEvolve / OpenEvolve | 指定函数或程序 | program archive + scalar scores | 有 code search;历史诊断信号更薄。 |
| TTT-Discover | test-time artifact | window + PUCT reuse | 搜索规则更强;proposer 输入更受结构约束。 |
| ACE / MCE | memory / natural-language skills | 在线样例与反思 | 是被优化的 harness baseline,不是通用 code optimizer。 |
| HarnessForge / Co-Harness | harness + model weights | 失败归因与成功轨迹 | 共同优化 matched pair;本文只改 harness、冻结模型。 |
Raw traces 不是装饰:去掉后,最优候选也追不上 full-history 的中位数
median / best accuracy;能看 code 与 score,不能看 trace。
加入 LLM summary 仍未恢复诊断信息。
code + score + raw execution traces。
四次评测追平其他优化器的最终水平,40 次后拉开十余点
48.6% 平均准确率,比 ACE 高 7.7 pp;context 只有约四分之一
搜索得到的是不同的 retrieval 与 prompt-construction 程序


候选只看 search-set 分数;test results 在 finalization 前冻结

meta_harness.py 分离 validation evolution 与显式 --test finalization。搜索把同一个 BM25 变成四条题型专用 retrieval policy

38.8% 平均准确率,比 no-retrieval 高 4.7 pp;五列都上涨
| Harness | GPT-5.4 nano | GPT-5.4 mini | Gemini 3.1 FL | Gemini 3 Flash | GPT-OSS-20B | Avg |
|---|---|---|---|---|---|---|
| No Retriever | 23.0 | 28.8 | 28.6 | 42.6 | 47.6 | 34.1 |
| BM25 | 30.2 | 29.2 | 32.8 | 46.6 | 48.9 | 37.5 |
| Meta-Harness | 31.7 | 30.4 | 34.9 | 46.3 | 50.6 | 38.8 |
TerminalBench-2 结果不是 held-out 泛化实验,而是同一 public benchmark 上的 discovery
89 public tasks
候选用同一整套任务获得反馈;起点为 Terminus 2 与 Terminus-KIRA。
Manual + regex
作者检查 task-specific string leakage,但没有独立 task split。
89 × 5 trials
官方 artifact 的 76.4% 是 445 次 trial 汇总。
六次回归后,proposer 换到一条更安全的改动路径
_gather_env_snapshot() 在 Agent 开始前一次性探测 sandbox
# 官方实现的关键路径;为版面删去 parse/format 细节 bootstrap_cmd = ( "pwd; ls -la /app/; " "python3 --version; gcc --version; g++ --version; " "node --version; java -version; rustc --version; go version; " "pip3 --version; pip --version; apt-get --version; free -h" ) result = await asyncio.wait_for( env.exec(command=bootstrap_cmd, timeout_sec=15), timeout=20 ) snapshot = "[Environment Snapshot]\n" + format_sections(result.stdout) initial_prompt = initial_prompt + "\n\n" + snapshot # 任何异常都返回空串 / 被 silent fallback 吞掉,不阻断原 agent。
最终改动很小:把原本要花 2–4 turns 探索的信息提前交给 Agent

同一套 Meta-Harness,在三个 domain 上回答的是三种不同问题
| Domain | Search signal | 真正 held-out 的东西 | 可以说什么 | 不能说什么 |
|---|---|---|---|---|
| Classification | 3 datasets 的 search split | 原 dataset test + 9 个 OOD datasets | harness strategy 可跨 dataset 转移 | context 单位有 tokens / chars 冲突 |
| Math | 250 problems + GPT-OSS-20B | 200 problems + 4 unseen models | retrieval policy 跨题与跨模型有效 | 不能把 GPT-OSS-20B 也叫 unseen |
| TerminalBench-2 | 全部 89 public tasks | 没有独立 task split | 同 benchmark discovery 可超过强手写 harness | 不能据此证明 OOD task 泛化 |
最值得复用的是“完整可检索历史 + 外部验收”,不是某个神奇 mutation operator
工程闭环很强
Proposer 读 raw traces、写可执行代码;outer loop 做 import validation、benchmark、frontier 与 final test freezing。
搜索产物可读、可审计,也能直接迁移到不同 base model。
泛化与归因仍不完整
只研究 Claude Code + Opus 4.6 proposer;TerminalBench 没有 held-out tasks;开源 repo 自称 cleaned release,仅确认“能运行”。
未来应比较 proposer、独立 benchmark split、搜索成本与代码复杂度。