智猩猩AI整理
编辑:林夕
Agent越来越强,但真正决定一个Agent能不能把任务做好,已经不只有底层模型。
最近,北京大学团队联合香港科技大学研究者提出了一种新的Agent训练方法 Harness-Zero,试图把原本存在于Agent Harness里的能力,直接蒸馏进模型参数。

在知识工作、工具使用和科学任务三个领域中,Harness-Zero将基础模型的宏平均任务成功率从23.3%提升到44.3%,提升21个百分点,相对提升约90.1%。
模型部署时已经不再使用原本的专用优化Harness,只保留最小Harness,但44.3%的成绩依然超过了基础模型继续挂载优化Harness时的41.7%。
同时,研究人员还发现,模型成功恢复了大量原本只存在于Harness中的行为,在28种Harness特有行为上的平均恢复率达到82.3%。
这项工作的核心问题非常直接:
如果Harness可以让Agent变强,能不能把Harness的能力直接训练进模型?
现在的Agent系统,通常会在模型外面再搭一整套复杂的Harness,包括工具、Memory、Skill、Middleware、上下文管理和各种工作流。
同一个底层模型,换一套Harness,实际执行能力可能就会发生明显变化。
这也带来了一个问题。
如果不同领域、不同任务甚至不同模型,都需要各自定制一套Harness,那么Agent系统只会越来越复杂。
Harness-Zero给出的思路,是反过来。
训练阶段让优化Harness指导模型,部署阶段再把这个Harness拿掉。
也就是说,与其不断给模型外挂新的能力,不如先利用Harness把模型训练出来,再把Harness诱导出来的行为写回模型参数。
这也是论文所谓的 Harness Distillation。

01
Harness-Zero到底在蒸馏什么?
Harness-Zero最核心的变化,并不是简单地把一套Harness复制到模型里。
它真正想蒸馏的,是Harness在执行过程中对模型行为产生的影响。
传统Agent系统里,模型遇到一个任务后,并不一定直接给出最终答案,而是会经历一系列动作。
比如读取文件、调用工具、检索Memory、检查结果、修改文件,再继续执行下一步。
这些行为背后,其实都有Harness在控制。
如果把Harness去掉,模型可能就不会主动做这些事情。
所以论文真正要解决的问题是:怎样把这些原本由Harness诱导出来的行为,变成模型自己的行为?
这也是Harness Distillation和普通SFT、轨迹蒸馏之间的区别。
普通轨迹蒸馏更关注“最后做对了什么”。
Harness-Zero则进一步关注:“为什么这个时候应该采取这个动作?”
它不是单纯复制一条成功轨迹,而是尝试把Harness对于Agent行为的干预本身变成训练信号。
02
Agent-as-Harness:
让另一个Agent教模型怎么做
Harness-Zero最关键的技术设计,是论文提出的 Agent-as-Harness。
整个过程可以简单理解成:Student → Harnessing Agent → 修正动作 → Environment
Student就是需要被训练的模型。
它首先按照自己的判断执行任务。
这时候,Harnessing Agent会观察Student准备采取的动作,并根据目标Harness判断这个动作是否合理。
如果没有问题,就直接执行。
如果发现Student遗漏了Harness要求的行为,Harnessing Agent就进行干预。
举一个论文中的典型行为。
Student准备直接修改一个文件。
但优化Harness希望Agent在修改之前,先检查文件内容。
那么Harnessing Agent就会把Student原本的动作调整为:先检查,再编辑。
这个经过修正的动作随后进入训练轨迹。
模型不断看到类似的行为之后,就有可能逐渐学会:以后遇到类似任务,我自己先检查。
原本属于Harness的规则,就开始转化成模型自身的执行习惯。
这里最关键的一点是,Harnessing Agent并不是简单地把自己的能力“借给”Student。
它必须在Student能够使用的Action Space范围内进行纠正。
也就是说,不能因为Teacher拥有更多工具,就直接要求Student执行一个Student本身无法完成的动作。
这样训练出来的行为,才真正有可能在部署时脱离原来的Harness。
这个机制首先要回答一个问题:让另一个Agent充当Harness,效果到底怎么样?
论文先在不更新模型参数的情况下做了对比。
结果显示,在6组 benchmark-model 设置上,Agent-as-Harness + evolved Harness 平均达到81.1%,高于传统 Code-as-Harness 的 78.1%;如果没有 evolved Harness 提供指导,Agent-as-Harness平均只有69.2%。

为什么不能直接拿强模型轨迹训练?
如果目标只是让Student变强,一个很自然的想法就是:找一个更强的模型,让它把任务完成,然后直接拿这些成功轨迹训练Student。
但Harness-Zero的实验说明,这样做并不够。
在USPTO逆合成任务上,直接使用GPT-5.6 Sol生成的轨迹训练,最终测试pass@1只有12.0%。
即使加入Oracle Answer,让数据收集成功率达到98.6%,最终测试效果也只有15.0%。
而Harness-Zero通过Harness对Student当前行为进行针对性纠正后,最终达到30.0%。

这里的区别很关键。
一条成功轨迹只能告诉模型:“高手最后是这么做的。”
但Harness-Zero试图告诉模型的是:“在当前这个状态下,为什么应该这么行动。”
因此,它蒸馏的对象并不是简单的答案,而是Harness背后的行为策略。
03
23.3%到44.3%,
拆掉Harness之后反而更高
最终实验是这篇论文最值得关注的结果。
研究人员在SpreadsheetBench、AppWorld和USPTO三个任务上进行了测试。
基础模型使用最小Harness时,宏平均任务成功率只有:23.3%。
直接挂载优化后的Harness之后:41.7%。
而经过Harness-Zero训练之后,部署时重新只使用最小Harness:44.3%。
也就是:23.3% → 44.3%。
而且这个44.3%还超过了继续挂载优化Harness时的41.7%。
三个任务的具体结果如下:

不过需要注意,Harness-Zero并不是三个任务都超过优化Harness。
在USPTO上,Harness-Zero的30.0%低于优化Harness的38.0%。
它最终领先,主要来自三个任务的整体宏平均成绩。
论文还做了一个很有意思的实验。
研究人员找出了28种只有优化Harness才会诱导出来的行为,包括Memory、Skill、Tool和Middleware等不同类型。
然后观察经过Harness-Zero训练之后,模型在没有这些专用Harness的情况下,还能不能自己表现出这些行为。
结果显示:28种行为的平均恢复率达到82.3%。

其中,“Inspect before editing”达到32/32,也就是100%恢复。
“Validate with RDKit”同样达到60/60,100%恢复。
但也存在迁移效果较弱的行为,比如“Retrieve complete pages”只有21/53,也就是40%。
这说明Harness-Zero并不是简单地复制整个Harness,而是在把其中一部分稳定的行为模式真正写进模型。
04
Agent的下一步,
可能是把Harness“吃掉”
这也是Harness-Zero最值得关注的地方。
过去Agent能力升级,很大一部分思路是不断给模型外挂东西。
Memory不够,就加Memory;工具不够,就增加Tool;上下文管理不好,就增加Middleware;任务流程不稳定,就继续修改Workflow;最终的结果,就是Harness越来越复杂。
Harness-Zero提供了另一种方向:先让复杂Harness教模型,再让模型把Harness学进去。
训练阶段:复杂Harness → 行为指导
训练之后:行为指导 → 模型参数
部署阶段:模型参数 → 尽可能简单的Harness
如果这条路线继续发展,未来Agent的优化方式可能会发生变化。
大家不只是研究如何设计更强的Harness,还会研究如何让模型最终学会这个Harness。
从这个角度看,Harness-Zero做的并不只是一次Agent训练实验。
它实际上提出了一个更大的问题:
当Agent越来越依赖Harness时,Harness究竟应该永远作为模型外部的外挂存在,还是最终成为模型本身的一部分?
Harness-Zero给出的答案,是后者至少在目前这组三类任务实验中已经显示出可行性。







