方差加权抽验证任务,20%预算反超全量搜索、评测砍八成

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%780048.6±0.8%
Naive 固定子集7%48045.2±3.2%
Random-Resample7%48047.0±2.2%
Task-CoEvolve7%48047.6±0.9%
Task-CoEvolve20%1,56049.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-LunaQwen3.6平均
Terminus 2 起步-52.834.843.8
全量搜索100%62.942.752.8
Naive20%55.139.347.2
Rotation20%59.637.148.4
Task-CoEvolve20%61.841.651.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),没有敏感性扫描。

术语

原文与代码

社区讨论

相关论文

全部论文解读