Task-CoEvolve: Efficient Harness Optimization via Adaptive Validation Task Selection
Atsuyuki Miyai, Kiyoharu Aizawa, Toshihiko Yamasaki
cs.CL, cs.AI, cs.LG
2026-08-20
Task-CoEvolve按历史对错的Bernoulli方差抽验证任务,并用纳入概率估计全集分。文本分类20%预算平均准确率49.3%,反超全量搜索48.6%;Terminal-Bench评测量砍80%,分数只低1.1点。
自动优化 LLM agent 的 harness,就是模型周围那层「存什么、取什么、给模型看什么」的代码,已经能在固定权重下把同一基准的成绩拉开到 6 倍。做法是元代理改代码、在验证集上打分、留更好的那一版。现有框架以 Meta-Harness 为代表,每一轮都把整份验证集跑一遍。
Terminal-Bench 这类长程终端任务,单题能占沙箱十几分钟,评测本身就会吞掉整个搜索循环的预算。harness 变强之后,人人都会的题和人人都不会的题还在每轮占额度,对排出哪个候选更好几乎没贡献。
问题变成:每轮只评一小撮任务,怎么选才有区分度,分数又怎么能跨轮比较。
Task-CoEvolve 让验证任务和 harness 一起走。选任务、打分数只看历史对错,不读题面,也不读 harness 源码。
先有 Phase 0。搜索开始前,两个起步 harness 本来就要在全集上跑一遍,给元代理写第一版当底。这两次结果当成初始历史,每道题已经有成功率 p̄t。
每轮按方差加权抽样。一道题的权重是 Bernoulli 方差 p̄t(1-p̄t),在 0.5 附近最大,全对或全错时掉到 0。从未解开过的题加地板 ℓ=0.125,避免永远被丢掉;观察次数少的题再加 λ/√nt(λ=0.025),避免早期几次碰巧就把题踢出去。抽样率 ρ 设成 7% 或 20%,每轮抽 m=⌈ρN⌉ 道。
抽完不能直接拿子集均值当分数。固定子集容易过拟合;每轮重抽则难度漂,跨轮不可比。于是按 Horvitz-Thompson 把纳入概率 πt 折进去,估全集分 Ŝ(h)。文本分类三个数据集的成功率贴着 0 或 1,用 Hájek 估计,按 1/πt 加权再归一。Terminal-Bench 89 题平均成功率靠近 0.5,偶尔抽到一道「几乎人人会做、πt 又极小」的题会把 Hájek 炸穿,附录里出现过 raw 33.3%、Ŝ=85.9% 的事故,改用相对历史锚点 p̄t 的残差估计。
搜完选 Ŝ 最高的那一版。平局取最早一轮,不过 Ŝ 是连续量,实验里没有撞上平局。
在线文本分类沿用 Meta-Harness 设定:GPT-OSS-120B 当分类器,Claude Opus 4.6 当元代理,20 轮、每轮 3 个候选。验证集约 130 条,测 LawBench、Symptom2Disease、USPTO-50k。
| 方法 | 预算 ρ | 评测次数 | 平均准确率 |
| Few-shot | - | - | 41.6% |
| Meta-Harness 全量 | 100% | 7800 | 48.6±0.8% |
| Naive 固定子集 | 7% | 480 | 45.2±3.2% |
| Random-Resample | 7% | 480 | 47.0±2.2% |
| Task-CoEvolve | 7% | 480 | 47.6±0.9% |
| Task-CoEvolve | 20% | 1,560 | 49.3±0.8% |
7% 预算已经从 few-shot 的 41.6% 拉到 47.6%,评测量是全量的 1/16。20% 预算 49.3%,比全量搜索高约 0.7 点。论文把这个反超归到全量搜索对验证集过拟合。消融里最大的单步增益来自每轮换子集(47.2→48.2),估计器再加 0.6,方差加权再加 0.5。
Terminal-Bench 2.1 共 89 题,搜索和终评用同一批,题少且贵,拆集会把信号抽空。GPT-5.6-Luna 和 Qwen3.6-35B-A3B,10 轮、每轮 1 个候选,每题 1 次 rollout。
| 方法 | ρ | GPT-5.6-Luna | Qwen3.6 | 平均 |
| Terminus 2 起步 | - | 52.8 | 34.8 | 43.8 |
| 全量搜索 | 100% | 62.9 | 42.7 | 52.8 |
| Naive | 20% | 55.1 | 39.3 | 47.2 |
| Rotation | 20% | 59.6 | 37.1 | 48.4 |
| Task-CoEvolve | 20% | 61.8 | 41.6 | 51.7 |
平均只低全量 1.1 点,相当于 89 题里差 1 题。全量每轮见过全部题,终评又用同一批,占便宜。即便如此,20% 预算已经贴上去。
成本侧更清楚。GPT-5.6-Luna 全量 2888M input token、117 美元、22.2 小时;Task-CoEvolve 579M、30 美元、11.5 小时,input token 砍 80%。Qwen3.6 本地部署,时间从 38.0 小时降到 20.5 小时,token 砍 67%。同是 20% 题数,Random-Resample 的 token 砍得更狠(96%),因为它会抽到很快结束的简单题;方差加权专门盯候选意见分歧的长任务,单次 3.2M token,和全量持平。时间只砍约一半,因为 10 路并行被最慢的题卡住,元代理提案还要固定花 2.4 到 3.3 小时。
任务池本身就偏。两端(从没人做对,或几乎人人做对)长期占池子 70% 以上,真正能拉开候选的中间带在文本分类只占 10%、Terminal-Bench 占 24%。harness 变强后,文本分类「几乎人人会」从 34 条涨到 58 条,Terminal-Bench「没人会」从 32 题降到 21 题。验证集的区分度在跟着漂移。
Ŝ 并不是完美排名器。把一轮搜索的 60 个候选拿全集重评:ρ=20% 时 Spearman 相关 0.62,Ŝ 冠军实际排第 12/60(51.3% 对真第一 54.7%);ρ=7% 时相关掉到 0.13,选出的仍排第 10/60。能挡住很差的,找不到最好的。
Harness 搜索的贵,大头经常不在改代码,在每轮把验证集跑穿。现有加速工作如 ShinkaEvolve、TurboEvolve、HarnessCompass,主要少生成、少试候选。这篇切的是正交的一刀:每个候选少评几道题。
20% 预算在文本分类上反超全量,说明「每轮换一批更有区分度的题」可能比「每轮把题做完」更抗过拟合。对 Terminal-Bench 这种单题十几分钟的环境,评测量砍到五分之一、token 砍到五分之一到三分之一,搜索从一天压到半天,已经能直接拿来跑。
代价也清楚:方差加权会把预算堆到最贵的长任务上,token 节省小于题数节省。想省钱到 Random-Resample 那个量级,分数会再掉 3.3 点。
更强的模型头寸更窄。附录里 DeepSeek-V4-Flash 用全量搜十轮,Terminus 2 已经 70.8%,最好候选还是 70.8%。脚手架空间不够时,换评测协议也造不出增益。
论文自己写了:每轮评几道题是事先钉死的,不能对明显更差的候选早停,也不能在两强难分时加测。自适应分配额度留作后续。
估计器按基准手选。文本分类用 Hájek,Terminal-Bench 用残差;对调会掉约 3 个点,或出现 33.3% 被估成 85.9%。Phase 0 看池子形态再选,等于多了一个要调的旋钮,换新基准没有自动规则。
Terminal-Bench 搜索和终评共用 89 题。全量搜索每轮见过终评全集,对比不对称。文本分类有 held-out,那个 20% 反超更可信。
Ŝ 在 7% 预算下几乎没有排序能力,Spearman 只有 0.13。「接近全量」说的是最终选中的 harness 测下来差不多,搜索过程中的排序并不可靠。
方差权重的 ℓ、λ 两套实验共用同一组(0.125 / 0.025),没有敏感性扫描。