Evo-Harness: Context-to-Harness Skill Compilation for Self-Evolving Agents
Tianxin Wei, Zhan Shi, Minhua Lin, Bing He, Zewen Liu, Yisi Sang, Yuanchen Bei, Xuying Ning, Jiaru Zou, Ting-Wei Li, Xiao Lin, Yanjun Zhao, Chi Wang, Benoit Dumoulin, Dakuo Wang, Jingrui He, Hanqing Lu
cs.AI, cs.CL
2026-08-15
冻结求解器不改权重,把每次失败编译成通用技能和主题技能。五个真实基准都全面超过XSkill,TerminalBench-2从62.9%升到73.0%。
Agent失败一次,多数系统只把轨迹丢进记忆库,下次再检索。真实环境里任务是连续流来的,每条轨迹只有一次机会被消化,而且里面夹着大量任务特有的噪音:半截报错、偶然的工具输出、一次性的路径。检索过去的案例,经常把噪音一并灌进上下文。
更麻烦的是,已有的反思、记忆、技能方法很少在真实复杂任务上把「到底什么在涨分」拆开看。很多工作离线攒一池轨迹再挖模式,跟线上「做完立刻学」不是同一件事。
设定叫online harness learning:求解器权重冻结,只更新一份外部harness。harness是结构化的可复用指导条目,不是原始轨迹仓库。
流程按批走。对每个任务,先按预算选出最多b条harness条目注入提示,冻结求解器跑完,得到轨迹、结果和环境反馈。只有失败或负反馈才会触发反思,产出一条候选记忆:lesson、trigger、evidence、scopehint。成功轨迹不更新,避免把碰巧对了的细节写进技能。
一批结束后,evolver拿当前harness和这批候选记忆,做Add、Merge、Revise或Skip。更新分两层:跨任务的general技能抓共用操作模式,topic技能保住某一类任务的局部流程。两者不是事先贴的标签,是evolver在比较记忆时长出来的。
模块刻意拆开:求解器、evolver、反馈源、初始harness可以换,方便单独看哪一项在涨分。默认求解器和evolver都是Claude Opus 4.6。
五个基准上Evo-Harness全面最高。对照最强基线XSkill,以及不更新的No Evolve:
| 方法 | CL-Bench | TerminalBench-2 | SWE-bench Lite | τ-bench | WebArena-Infinity |
| No Evolve | 29.54 | 62.92 | 63.67 | 72.73 | 72.50 |
| XSkill | 31.44 | 66.29 | 64.67 | 73.94 | 73.75 |
| Evo-Harness | 34.02 | 73.03 | 67.00 | 76.97 | 76.25 |
涨幅最大的是TerminalBench-2,这类任务要看文件、跑命令、读报错、再恢复,恰好有可复用的操作结构。若干基线在部分基准上低于No Evolve,说明乱塞经验会拖后腿。
CL-Bench按类别拆开,程序化任务执行(PTE)最稳:Opus 4.6和4.5都是+9.8。探索型的经验发现与仿真(EDS)不稳定,Opus 4.6还掉了2.5分。强模型吃技能更明显:Opus系列+3.7到+4.5,Kimi-K2.5只有+1.1,GPT-OSS只有+0.8。
消融也按任务分化。CL-Bench上Topic Only 33.70,接近完整的34.02,General Only掉到30.28。SWE-bench Lite反过来,General Only 66.67,接近完整的67.00。异构推理靠局部流程,仓库级调试靠通用的检查和验证。
反馈必须接地。让模型自己判断成败,CL-Bench从29.54掉到27.96,SWE-bench Lite从63.67掉到61.67。环境只给通过/失败时,SWE到67.33;带诊断信息的标准反馈让CL-Bench到34.02,SWE仍是67.00。诊断对推理有用,过细的报错有时会把技能写死在具体失败上。
训练划分上学到的技能能迁移:SWE上No Evolve 68.8,Sonnet在训练集进化、Opus 4.7测试到73.4,在线更新到75.0。但Sonnet自己当求解器时,进化后55.3和55.7,都低于不进化的58.0。技能帮得了强模型,帮不了跟不住指导的弱模型。
对要部署Agent的人,这是一条不改权重的在线自学路径:失败一次,编译进harness,下次同类任务直接用。能落地的前提很具体:任务有可复用流程、环境能给真反馈、求解器足够强能把技能读进去。
它也把「自进化」从总分对比,推进到可以拆开看的对象:evolver设计、反馈粒度、跨模型迁移,哪一项在涨、哪一项在伤,能单独量。
作者承认只做了单Agent、文本工具/网页/命令行/软件工程,没有具身和多智能体;harness是自然语言指导,没有可执行代码技能。实验主求解器是Opus 4.6,开源模型增益很小,工程上不能默认「加一层技能库就涨」。CL-Bench上EDS掉分说明,探索型任务可能被写得太死的技能带偏。在线更新用的是测试流本身,跟严格的训练-测试隔离不是一回事。