提案者读取单个候选的执行反馈或摘要;原始记录不会作为全部候选的历史供它自由检索。
让 Claude Code 看完整历史,再改模型外的执行程序
保存历次候选的代码、分数和原始执行记录;提案模型自己查错和改代码,基础模型权重始终不更新。
博客作者兴趣度 9.6 / 10:完整 harness 自动工程化。Harness 指包在基础模型外的提示构造、记忆、检索和调用程序。
| Opus 4.6 · Meta-Harness | 76.4% |
|---|---|
| Opus 4.6 · Terminus-KIRA | 74.7% |
| Haiku 4.5 · Meta-Harness | 37.6% |
| Haiku 4.5 · Goose | 35.5% |
原论文 Figure 1,CC BY 4.0。查看完整原图;终端搜索与终测用的是同一批任务。
原论文 Figure 1(CC BY 4.0)。终端实验不是独立保留题上的泛化成绩。
Harness 包含系统提示,也包含围绕模型运行的程序
存什么
记忆、历史样例、环境状态与中间结果。
取什么
检索规则、路由、去重、排序和输入长度限制。
何时交给模型
构造提示、执行工具、检查完成状态和重试。
提案模型写候选代码;外层程序控制验证、计分和版本选择
原论文 Figure 2 可左右滑动查看完整流程
一次评测可产生约 1,000 万 tokens 的记录,提案模型只读取其中相关部分
先替提案模型筛选历史
只看分数会丢掉执行细节;摘要压缩多次失败;近期窗口舍弃早期候选。
如果真正的错误来自十轮前的提示变化,相关记录可能在提案模型读到前就被删掉。
把历史变成外部工作区
Claude Code 自己用 grep、cat 和脚本选择要读的代码、分数与原始记录。
TerminalBench 搜索中,每轮读取文件数的中位数是 82;源码占 41%,执行记录占 40%。
提案模型能检索历次代码与原始记录,不必只读摘要
| 路线 | 改什么 | 提案模型看什么 | 与 Meta-Harness 的边界 |
|---|---|---|---|
| GEPA | 提示或其他文本产物 | 一个候选的执行反馈或摘要 | 反馈较丰富,但不保留所有候选的原始记录。 |
| AlphaEvolve / OpenEvolve | 指定函数或程序 | 历史程序与汇总分数 | 搜索代码;可读到的原始排错记录较少。 |
| TTT-Discover | 推理时产生的程序等产物 | 近期窗口;PUCT 优先复用高分且少访问的候选 | 搜索规则不同;提案输入受预设结构限制。 |
| ACE / MCE | 记忆与自然语言技能描述 | 在线样例与反思 | 用作待优化执行程序的基线,不是通用代码优化器。 |
| HarnessForge / Co-Harness | 执行程序与模型权重 | 失败归因与成功轨迹 | 共同优化模型与程序的配合;本文只改程序。 |
可看历史程序与汇总分数;原始排错记录较少。
读取近期窗口,用 PUCT 复用高分且少访问的候选;输入受预设结构限制。
利用在线样例与反思;本文将其作为分类任务中的执行程序基线。
利用失败归因与成功轨迹;Meta-Harness 只改模型外程序,基础模型权重保持冻结。
去掉原始执行记录后,最优候选也低于完整历史组的中位数
候选准确率的中位数 / 最高值;可看代码和分数,不能看执行记录。
加入模型生成的摘要,仍低于完整记录组。
代码、分数与原始执行记录。
四次评测追平其他优化器的最终水平,40 次后拉开十余点
平均准确率 48.6%,比 ACE 高 7.7 个百分点;输入约四分之一
搜索得到的是不同检索与提示构造程序


候选按搜索集分数选,最终测试在选择后才运行

meta_harness.py 将验证集演化与显式 --test 最终测试分开。症状分类比较的是标准疾病标签,不是模型自述“诊断合理”
发布测试集第一行
I have a burning sensation in my stomach that comes and goes. It's worse when I eat and when I lie down. I also have heartburn and indigestion.
当前输入是症状文本;标准标签 peptic ulcer disease 用于计分。
提取答案 → 归一化 → 精确匹配
JSON final_answer 或 [DIAGNOSIS] 内容转小写、整理空白、去掉末尾标点。
说明输出 A:Peptic ulcer disease. → 相同 → 1。
说明输出 B:gastritis → 不同 → 0。
数据集准确率 = 答对数 / 样例数;Table 2 等权平均三个数据集。
同一个 BM25 检索器,搜索得到四种按题型选择证据的策略

38.8% 平均准确率,比无检索高 4.7 个百分点;五列都上涨
| 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 |
| Dense Retrieval (5) | 31.1 | 28.3 | 37.1 | 47.2 | 46.7 | 38.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 |
| 测试模型 | 无检索 | Meta |
|---|---|---|
| GPT-5.4 nano | 23.0 | 31.7 |
| GPT-5.4 mini | 28.8 | 30.4 |
| Gemini 3.1 FL | 28.6 | 34.9 |
| Gemini 3 Flash | 42.6 | 46.3 |
| GPT-OSS-20B | 47.6 | 50.6 |
| 五列平均 | 34.1 | 38.8 |
最强固定策略 Dense Retrieval 的平均分是 38.1;在 Gemini 3.1 FL 和 Gemini 3 Flash 两列,它的 37.1、47.2 都高于 Meta-Harness 的 34.9、46.3。完整四组数字见原论文 Table 6。
TerminalBench-2 在同一批公开题上搜索与计分,不是独立题目泛化实验
89 道公开任务
候选用同一整套任务获得反馈;起点为 Terminus 2 与 Terminus-KIRA。
人工与正则检查
检查代码是否写入特定题目的字符串;没有另留独立任务集。
89 题 × 5 次尝试
官方 artifact 的 76.4% 是 445 次尝试的汇总。
前六轮未超过起点;第七轮不再改控制循环,转而增加环境信息
_gather_env_snapshot() 在 Agent 开始前一次性查询隔离环境
# _gather_env_snapshot 内:省略前面的命令构造与后面的输出解析 try: result = await asyncio.wait_for( env.exec(command=bootstrap_cmd, timeout_sec=15), timeout=20, ) except Exception: return "" # 以下另摘自 _run_agent_loop;并非与上面连续的代码 try: snapshot = await self._gather_env_snapshot() if snapshot: initial_prompt = f"{initial_prompt}\n\n{snapshot}" except Exception: pass
首次调用前提供环境信息;节省 2 到 4 轮是作者解释,未单独受控验证

同一套 Meta-Harness,在三类任务上回答的是三种不同问题
| 任务 | 搜索反馈 | 未参与搜索的部分 | 可以说什么 | 不能说什么 |
|---|---|---|---|---|
| 文本分类 | 3 个数据集的搜索划分 | 原数据集测试题与 9 个其他数据集 | 程序策略能换数据集使用 | 输入长度有 token / 字符单位冲突 |
| 数学 | 250 题与 GPT-OSS-20B | 200 题与另 4 个模型 | 检索策略能换题目与模型使用 | GPT-OSS-20B 已参与搜索 |
| TerminalBench-2 | 全部 89 道公开题 | 没有独立题目划分 | 同题搜索可超过强手写程序 | 未证明新分布任务的泛化 |
搜索反馈来自 3 个数据集的搜索划分;原数据集测试题及另外 9 个数据集未参与候选选择。
程序策略可迁移到其他分类数据;输入长度的 token / 字符单位冲突仍未解释。
在 250 题与 GPT-OSS-20B 上搜索;最终用 200 道未见题和另 4 个模型测试。
GPT-OSS-20B 本身参与了搜索,因此五模型均值不能说成五个未见模型。
候选用全部 89 道公开题获得反馈,最终也在这 89 题上做五次尝试。
可说同题搜索超过强手写程序,不能据此声称对新任务分布的泛化。
可检索的完整历史能改善程序搜索;跨任务基准的泛化仍需验证
原始记录有用
提案模型读原始记录、写代码;外层程序检查导入、跑评测、记录候选,并在选定后做最终测试。
搜索产物可检查,也能换基础模型测试。
泛化与归因仍不完整
只研究 Claude Code + Opus 4.6 提案模型;TerminalBench 没有独立题目;开源仓库是整理后的版本,仅确认能运行。
还需比较不同提案模型、独立测试任务、搜索成本与代码复杂度。