你有没有遇到过这样的场景:公司新来了个实习生,带教师傅手把手教了一个月,结果这个实习生学到的全是师傅"该怎么做某件具体事",而对公司的规章制度、报销流程、请假系统这些基础设施却一问三不知。更离谱的是,这个实习生用的办公软件、内网权限、工位配置,跟师傅完全一样,师傅明明天天都在用这套系统干活,可实习生学了一个月,却好像压根不知道公司给他配了这些工具。
这个场景几乎就是这篇论文要解决的问题。只不过这里的"师傅"是一个参数量很大的语言模型(比如8B或者30B参数的那种),"实习生"是从师傅那里学习的小模型(比如1.7B或者0.6B参数),而那套"公司系统"就是论文里反复提到的**harness**。
harness:中文直译是"挽具",在这里指的是语言模型智能体周围的软件系统,负责管理模型的上下文信息、可用工具、以及环境反馈。打个比方,如果语言模型是开车的司机,harness就是仪表盘、导航系统和倒车雷达的集合,它会告诉司机"你现在在哪""还剩多少油""刚才那个动作没生效"。
论文的研究者们观察到一个很奇怪的现象。当你把一个用harness武装起来的大模型智能体,蒸馏成一个小模型智能体时,harness这套系统是原封不动保留下来的。也就是说,小模型部署的时候,依然能看到仪表盘上所有的提示信息。可问题是,现有的蒸馏方法根本没有意识到这一点,它们还是按照老套路,把harness提供的信息当成普通输入的一部分,一股脑地喂给小模型去模仿大模型的完整输出。
这就好比给实习生配了跟师傅一模一样的办公系统和权限,但培训的时候只教他"师傅今天做了什么",从来没人告诉他"系统弹出这个提示的时候,你该怎么反应"。结果呢?实习生看着系统弹窗,完全不知道这跟自己该做的决策有什么关系。
蒸馏之后,小模型到底在学什么
先说清楚一个基本概念。
**蒸馏**:一种让小模型学习大模型能力的训练方法,通常做法是让小模型去模仿大模型的输出,从而在参数量小得多的情况下尽量逼近大模型的表现。
这篇论文关注的是一种叫**on-policy distillation(在策略蒸馏,论文中简称OPD)**的蒸馏方式。
OPD:不是让小模型直接抄大模型生成的全部数据,而是先让小模型自己跑一遍任务,走到哪一步,就在那一步去问大模型"如果是你,你会怎么做",然后用大模型给出的答案去纠正小模型。这样做的好处是训练数据和小模型实际会遇到的场景更贴合,不会出现"大模型走的路小模型压根不会走到"的错配问题。
OPD听起来已经很合理了,对吧?师傅跟着实习生实际的工作场景走,发现实习生做错的地方就纠正,这难道不是最好的教学方式吗?
但论文里给出了一组很扎实的实验数据,直接打破了这个预期。研究者在ALFWorld(一个要求智能体在虚拟家庭环境里完成"把苹果放进冰箱"之类任务的测试平台)上做了实验,发现给OPD加上harness以后,小模型对harness信息的利用率(论文里叫harness utilization,衡量模型下一步动作跟harness报告的信息是否一致)只是从65.7%涨到了73.1%,但是最终任务完成率(success rate,简称SR)却几乎没动,只从43.1%涨到了43.5%。换句话说,花了力气加了harness,小模型好像是"看懂了"一点仪表盘,但该做错的事情还是照样做错。
这组数字很反直觉。按照常理,你给学生看更多的参考信息,他应该学得更好才对,为什么harness利用率涨了,任务表现却几乎原地踏步?
研究者的解释是,OPD这种训练方式存在三个结构性漏洞,而这三个漏洞恰好都跟harness有关。
问题出在哪:三个被忽略的细节
**第一个问题,是OPD把harness的作用完全藏了起来。**
想象一下你在教实习生处理客户投诉。大多数时候,客户投诉的内容很常规,老师傅凭经验就能处理好,根本用不上后台系统里那些复杂的查询功能。可是偶尔会出现一种棘手情况,系统会弹出一条警告,提示"这个客户过去三次投诉都没解决",这时候老师傅的处理方式会完全不同,他会立刻升级处理流程。
问题是,如果你只是让实习生全程观摩师傅处理投诉的过程,不会特别标注出"这一次,师傅是因为看到了系统警告才改变做法的",实习生大概率根本意识不到,这条警告信息才是这次决策转折的关键。论文里提到,教师模型的部分表现本来就是来自harness提供的信息(表2的数据显示,有无harness条件下教师的表现差异相当明显),但OPD对每一步都用同样的方式监督,它从来没有专门指出"就是这一步,harness信息改变了老师的决定",也从没让学生看到"如果没有harness,老师本来会怎么选"。
**第二个问题,是OPD分不清harness给了什么、老师自己又加了什么。**
harness本身只负责提供信息和反馈,比如告诉你"这个盘子还没洗干净",但该怎么应对这条信息,是去水槽洗还是直接放进柜子,这个决策能力是老师自己的本事,不是harness能替你做的。论文开头那张图里有个特别形象的例子:学生模型读到harness报告"盘子还没洗干净",结果它的动作却是直接把盘子放进柜子,完全没理会这条关键信息。这说明学生模型压根没学会"看到信息之后该怎么行动"这件事,它可能只是机械地模仿了老师大部分时候的操作路径。
**第三个问题,是OPD会原封不动地接受老师犯的错。**
这一点可能是最容易被忽视的。论文引用了之前的研究发现,教师模型在学生实际走过的那些状态上,可靠性是会打折扣的,换句话说,老师也不是每次都对。更麻烦的是,harness自带的记录信息,其实本来就能揭穿老师的错误,比如一个要求"拿着某个物品才能操作"的目标,可harness已经明确记录了当前手里什么都没拿,这个目标显然是矛盾的。可OPD完全不做这种核对,它会把这种自相矛盾的目标也一并教给学生。
HAD:让小模型专门学"大模型独有的那部分本事"
搞清楚了问题出在哪,研究者提出的解决方案思路其实挺朴素的。
既然小模型部署之后一样能看到harness,那它根本不需要重新学会harness已经告诉它的东西,它需要学的,是老师面对harness信息时做出正确反应的那种能力,也就是harness本身替代不了的部分。
这套方法论文里叫**Harness-Aware Distillation(简称HAD,中文可以理解为"感知harness的蒸馏")**。
HAD的整体结构保留了一个基础部分,叫做response distillation(响应蒸馏),也就是前面说的那种在harness开启状态下的标准OPD训练,这部分不变。在这个基础上,HAD加了两个新东西。
**第一个新组件,是harness感知的动作偏好学习。**
具体做法是,在学生走到的每一个状态上,同时用两种方式去问同一个老师模型:一种是把harness信息完整展示给老师,看它会选哪个动作;另一种是把harness信息藏起来,只给老师看环境的原始信息,再看它会选哪个动作。按照常理,带着harness信息做出的决定应该更靠谱,所以这个带harness的动作会被标记为"偏好的",不带harness的则是"不偏好的"。
关键的设计细节在这里:这两个动作并不是在老师自己的思考过程下打分的,而是放在学生自己生成的思考内容之后去打分。换句话说,公式里比较的不是"老师带着什么样的理由选了这个动作",而是"如果让学生自己先思考,再分别接上这两种不同的动作,学生对哪个动作的接受程度更高"。这样设计的理由很直接:学生部署上线之后,是依靠自己的推理去选动作的,不是套用老师的推理过程,所以训练的时候也应该在学生自己的推理语境下去做这个对比,这样才跟实际使用场景对得上。
这里必须讲一个类比,因为这个设计决策其实暗藏着一个容易被忽略的陷阱。
设想你在教一个新司机如何应对突发路况。你不会只给他看"老司机遇到这种情况时心里是怎么想的"那一长串内心独白,然后让他去模仿这段独白加上最后的动作。因为老司机的内心独白可能很啰嗦,充满只有他自己才懂的经验术语,新司机死记硬背这些话,反而会被带偏,学到一堆和当下路况无关的思维习惯。更合理的做法,是让新司机自己先形成判断,然后告诉他"在你刚才那个判断基础上,正确的做法应该是刹车还是打方向盘"。这样新司机学到的才是和他自己思维方式兼容的决策规则,而不是去模仿一段他用不上的内心戏。
论文里专门用数学推导证明了这一点:如果直接比较老师完整的回答(包括推理过程加动作),因为推理文字通常比动作本身长得多,这个对比的信号很容易被推理内容的差异淹没,导致训练信号被稀释,甚至会改变原本应该学到的动作排序,哪怕两种情况下老师真正选的动作概率并没有变化。实验数据也验证了这一点(附录中的表15),完整响应对比的方案表现确实不如只比较动作的方案。
**第二个新组件,叫做harness感知的动作有效性过滤。**
这个组件要解决的问题就是前面提到的"老师也会犯错"。具体做法是,用一个校验器去检查那个被标记为"偏好"的动作,是不是跟harness已经记录的事实相矛盾。比如这个动作要求你拿着某个物品操作,但harness明确记录你手里什么都没有,这种明显站不住脚的动作,校验器就会把它剔除出偏好学习的训练数据,不让它参与那部分的训练。
这里有个很值得注意的细节:这个过滤只作用于偏好学习这一部分,不会动响应蒸馏那部分的训练。也就是说,即便老师给出的某个动作被判定无效,老师当时完整的回应内容,依然会原样进入响应蒸馏的训练流程。这个设计选择背后的逻辑是,过滤器只是在保护偏好学习这个相对"脆弱"的信号,而不是想替代整个教学过程去做绝对正确性判断,毕竟校验器自己也没办法判断一个动作是不是"有效但不够聪明",它只能挑出明显自相矛盾的那部分错误。
打个比方,这就像公司质检部门抽查产品,质检员的职责是挑出那些明显有缺陷、不符合基本标准的产品,不让它们流入某个特殊的高质量展示渠道。但质检员没有能力判断一个产品"合格但是设计平庸",那种更细腻的判断,不是质检这道关卡该负责的事。如果质检环节试图去做所有判断,反而会让整个流程变得不可靠,所以合理的做法是分工:质检只挑明显的硬伤,剩下的交给其他机制。
为什么这套对比能提供模仿学不到的信息
这里有个挺有意思的理论问题值得多说两句,因为这直接关系到HAD为什么真的有用,而不只是看起来有道理。
论文用了一个数学论证来说明这件事。简单来说,如果你只靠模仿老师带着harness信息时的回答(也就是传统的response distillation),你能学到的东西,理论上完全由"老师带着harness时会怎么回答"这一个概率分布决定,跟"老师不带harness时会怎么回答"完全没关系。
但问题是,仅仅知道"老师倾向于选哪个动作",并不能告诉你"这个倾向是不是因为harness信息造成的"。论文给了一个很直观的反例:假设老师带着harness信息时,在动作A和动作B之间各有50%的概率选择,可老师不带harness信息时,有两种可能性,一种是75%概率选A,另一种反过来是75%概率选B。这两种情况下,"带harness时的回答"是完全一样的,意味着不管是哪种情况,纯模仿学到的东西没有任何差别,可实际上这两种情况所揭示的harness真实作用是完全相反的。只有去问"不带harness时老师会怎么选",才能把这个差别暴露出来。
这个论证有点抽象,换个说法可能更好理解。假设有两个新员工,分别观察同一个老师傅处理两类投诉,两次老师傅在有系统提示时,都是一半概率选择方案A、一半概率选择方案B。单看这个结果,两个新员工学到的东西应该一样。但假如老师傅在没有系统提示的情况下,第一类投诉里他本来就是75%倾向选A(说明系统提示把他的倾向拉向了B),第二类投诉里他本来是75%倾向选B(说明系统提示反而把他的倾向拉向了A),这说明系统提示在这两类投诉里起的作用,其实是完全相反的方向。可如果你只观察"有系统提示时老师傅怎么选",你根本发现不了这个差异。只有对比"没有系统提示时他会怎么选",才能看出系统提示到底在往哪个方向影响他的决策。
这就是为什么HAD要专门设计这个"带harness vs 不带harness"的对比机制,因为它捕捉到的是纯模仿方法在理论上永远捕捉不到的信息。
实验结果:小学生打赢了大老师
光讲道理不够,这篇论文最硬气的地方,是把HAD放到了三个长程智能体任务上去跟多种现有方法真刀真枪地比。
测试环境包括ALFWorld(家庭环境文字游戏)、WebShop(网购模拟环境)、ScienceWorld(科学实验模拟环境)。模型方面,用Qwen3家族,在ALFWorld上拿8B模型当老师、1.7B模型当学生,在另外两个环境里用30B参数(实际激活3B参数的MoE结构)模型当老师、0.6B模型当学生。为了验证这套方法不是只对某一个模型家族管用,还额外用了Gemma家族的模型(12B教师蒸馏到E2B学生)重复了一遍ALFWorld的实验。
对比的基线方法一共四个,分别是标准OPD、SAGE-OPD(根据老师判断每一步需要纠正的强度来加权)、Guided-OPD(让老师逐渐减少接管学生决策的比例)、SOPD(在每个状态都让老师写一整步完整示范)。
结果非常清楚。
在ALFWorld环境里,HAD在未见过的任务(unseen)上拿到63.43%的成功率,在见过的任务(seen)上拿到51.43%,这两个数字都是所有方法里最高的,最强基线(OPD)分别只有47.01%和40.00%。更夸张的是,63.43%这个数字,甚至超过了那个8B参数的教师模型本身在带harness条件下51.49%的表现。一个1.7B的学生模型,最后反而比它的8B老师做得更好。
在WebShop环境里,HAD的分数是47.19,成功率是19.60%,同样是所有方法里表现最好的。在ScienceWorld环境里,HAD的得分是4.17,成功率9.40%,这个环境比较特殊,大部分基线方法甚至是负分(说明没训练好,分数比零还低),只有HAD真正做出了正向的改进。
换到Gemma模型家族上重复实验,HAD依然是表现最好的,未见任务成功率37.31%,见过任务成功率36.43%,都明显超过表现第二好的SOPD(32.09%和34.29%)。这种跨模型家族的一致表现,说明HAD带来的提升确实来自于这套"对比harness有无"的设计思路本身,而不是碰巧跟某个特定模型架构合得来。
把harness拿掉之后,才看出真正的差距
这篇论文有个特别聪明的实验设计,就是故意在评估阶段把harness拿掉,看看模型表现会掉多少。
结果显示,去掉harness之后,HAD的成功率从63.43%掉到了40.30%,这是所有方法里下降幅度最大的。乍一看这好像是个负面结果,但仔细想想反而说明HAD确实学到了它该学的东西:它对harness的依赖程度明显比其他方法更高,这恰恰证明了HAD真的把训练重点放在了"怎么利用harness信息"这件事上。更关键的是,即便摘掉了harness这个拐杖,HAD的40.30%依然超过了绝大多数带着harness的基线方法的表现。
这就好比一个真正掌握了开车技能的司机,和一个只是背熟了某条固定路线的司机。把导航拿掉,真正会开车的司机虽然速度会慢一些,但依然能开到目的地;只会背路线的司机一旦没了导航提示,可能直接迷路。HAD表现出来的,正是前一种特征。
长程任务里最头疼的问题:原地打转
论文还做了一个特别有价值的分析,专门研究智能体在执行长任务时经常陷入的一种困境,就是不断重复做同一个没有效果的动作,俗称"卡死在循环里"。
研究者定义了两个指标,一个叫"预防率",衡量一个智能体整个任务过程中完全不陷入这种循环的比例;另一个叫"恢复率",衡量一旦陷入循环,智能体能成功走出来的比例。
结果显示HAD在两项指标上都明显领先。它的预防率是75.9%,所有其他方法里最高的也只有64.6%(教师模型本身)。恢复率方面,HAD是59.7%,没训练过的学生模型本身的恢复率是46.8%,而几乎所有经过标准蒸馏训练的基线方法,恢复率反而比没训练过的学生还低(比如Guided-OPD只有18.8%),这说明标准蒸馏训练压根没有教会学生如何从卡死状态里脱身,有的方法甚至把学生原本还算可以的这种能力训练弱了。
论文里给了一个特别直观的案例。任务是把一个杯子加热后放进柜子,环境规则是加热操作只对手里正拿着的物品有效。所有学生模型一开始都犯了同样的错误:把杯子放进微波炉,然后试图用空手加热,结果当然什么都没发生。基线方法就这样反反复复试同一个动作,一直试到步数用尽,彻底失败。HAD也掉进了同一个陷阱,但不一样的是,harness在连续五步都没有观察到新状态之后,弹出了一条"进度停滞"的警告,HAD看到这条警告后,把杯子重新拿回手里,harness随即更新记录显示"你正拿着杯子",HAD立刻据此加热杯子,成功完成任务。
这个案例其实特别有说服力,因为它展示的不是HAD从一开始就比别人聪明,而是HAD在犯了一模一样的错误之后,具备了别人没有的"止损"能力。
harness里哪部分被学进了模型权重,哪部分还得靠外部提示
论文最后还探讨了一个很深层的问题,叫**harness internalization(harness内化)**。
harness internalization:指的是模型通过训练,把原本需要依赖harness才能获得的某种行为能力,逐渐"吸收"进自己的参数权重里,以至于即便把harness的某部分功能拿掉,模型依然能凭自己做出正确反应。
研究者把harness拆成了两大类功能来分别测试。一类叫状态追踪(state tracking),包括可用动作列表、当前位置和持有物品、访问历史、剩余步数这些信息;另一类叫行为监控(behavior monitoring),包括失败动作提醒和停滞提醒。
实验把其中一类信息隐藏掉,看HAD的表现会怎么变化。结果很有意思:隐藏状态追踪信息后,HAD在未见任务上的成功率从63.43%直接掉到37.31%,掉了超过26个百分点;而隐藏行为监控信息后,成功率是56.0%,只掉了大概7个百分点。另外一个实验是,直接把harness判定为无效的动作强行屏蔽掉(也就是不让模型选那些动作),结果成功率也降到了55.22%,比完整harness条件下更差。
这组对比透露出一个很细腻的信息:HAD看起来确实把行为监控里那部分"什么时候该改变策略"的反馈,部分吸收进了自己的参数权重里,所以就算拿掉这部分提示,它受到的冲击相对较小。但状态信息,比如你现在手里拿着什么、你去过哪些地方,这类纯粹的事实记录,HAD依然高度依赖外部的harness去提供,它没办法把"我现在到底在哪、拿着什么"这种实时状态凭空记在自己脑子里。而且屏蔽掉harness认为无效的动作,反而会让表现变差,说明HAD更适合把harness当成一种可以参考、可以权衡的信息来源,而不是一种强制性的硬约束,这个发现对以后怎么设计harness也是个提醒。
这其实挺符合常理的,如果你想象一个人在陌生城市里导航,哪些路口该左转这种临场反应技巧,经验丰富之后确实会内化成一种直觉;但这个城市具体有多少条街、你现在走到了哪个路口,这种纯粹的事实信息,无论你多有经验,都没办法脱离地图凭空知道。
拆开来看每个零件到底值多少
论文还做了细致的消融实验,把HAD的每个组件单独拿掉,看成绩怎么变化。
去掉有效性过滤这一步(也就是不再剔除自相矛盾的偏好动作),成功率从57.4%掉到50.8%,说明这个过滤机制确实在保护任务表现,防止学生学到老师犯的错。去掉负样本对比(也就是只让学生模仿harness条件下的正确动作,不再跟不带harness的动作做对比),成功率掉到52.4%,而且harness利用率从81.0%跌到74.4%,几乎回到了只做基础响应蒸馏时73.1%的水平。这说明这个正负对比机制,是harness利用率提升的主要来源。如果整个偏好学习部分都去掉,只剩下最基础的响应蒸馏,成功率直接掉到43.5%,跌幅最大。
这组数据讲得很清楚:三个组件各自负责不同的事情,缺了任何一个,整体表现都会打折扣,它们是互补关系,不是可以互相替代的冗余设计。
论文还顺带排除了一种可能的质疑,就是HAD会不会只是因为多查询了一次老师模型(带harness和不带harness各问一次)才表现更好,而跟设计本身没关系。为了验证,研究者让基线方法也用两倍的教师查询预算去训练,结果OPD的平均成功率只从43.5%涨到46.7%,SOPD从43.5%涨到46.8%,远远达不到HAD的57.4%。这说明HAD的优势不是靠"多问了一次老师"这种投机取巧,而是真的来自于这个对比结构本身捕捉到的信息。
写在后面
读完这篇论文,最触动我的其实不是HAD这个方法本身有多精巧,而是它提出的那个基本视角:当你在蒸馏一个带着外部工具或者辅助系统的智能体时,真正该问的问题不是"学生能不能模仿老师的全部行为",而是"学生到底缺的是哪一部分,是工具提供不了的那部分吗"。
这个视角其实可以推广到很多场景。比如现在很多AI系统都会配备检索增强(RAG)或者各种外部工具调用能力,如果你想把一个用了这些工具的大模型蒸馏成小模型,按照这篇论文的逻辑,你真正该教给小模型的,不是"怎么使用这个工具"(因为工具接口是固定的,小模型部署时照样能调用),而是"面对工具返回的信息,该如何做出正确判断"。这其实是一个挺容易被忽视的区分,大部分蒸馏工作可能默认把"系统能力"和"模型能力"混在一起训练了,而没有想清楚哪部分其实是外部基础设施已经提供好的。
还有一个细节让我印象很深,就是论文里那个关于"为什么不能直接比较完整响应"的数学论证。它用一个很简洁的反例证明了,哪怕两种情况下老师给出的最终行为概率完全一样,背后隐藏的因果关系可能完全相反,而纯模仿方法永远无法把这种差异暴露出来。这提醒我,很多看似"足够好"的模仿学习方法,其实天然就有一个信息盲区,不是方法做得不够细致,而是这种学习范式本身在结构上就学不到某类信息,除非你主动设计一种对比机制去把它挖出来。
论文自己也提到了一些还没解决的问题,比如这套方法目前只在参数量不算特别大的模型上验证过(学生最大2B,老师最大30B),还没测试过在工具调用更复杂的软件智能体场景里是否依然有效。另外harness本身是研究者手工设计的,如果未来harness是通过学习自动生成或者优化出来的,这套方法会不会需要跟着调整,论文也没给出答案。
一个值得继续追问的问题是:如果harness本身也在不断进化,变得越来越聪明,那"学生该学什么、harness该提供什么"这条边界,是不是也会随之移动?到那个时候,我们是不是需要一套新的办法,去重新划分这条边界?
Q&A
Q1:Harness-Aware Distillation是什么?
A:Harness-Aware Distillation(简称HAD)是一种专门针对带有harness(辅助软件系统)的语言模型智能体设计的蒸馏方法,它让小模型重点学习大模型在harness信息下做出正确决策的能力,而不是把harness信息当成普通输入去整体模仿。
Q2:HAD和标准的在策略蒸馏(OPD)有什么区别?
A:标准OPD只是让学生模仿老师在harness开启状态下的完整回答,而HAD额外增加了两个机制:对比老师在有无harness信息时选择的动作差异,以及用harness记录过滤掉老师给出的自相矛盾动作,从而更精准地教会学生利用harness信息。
Q3:HAD在实验中的表现如何?
A:在ALFWorld环境中,HAD训练出的1.7B学生模型未见任务成功率达到63.43%,超过了它的8B教师模型本身51.49%的表现,并且在WebShop、ScienceWorld等多个环境及Gemma模型家族上都取得了优于其他蒸馏方法的结果。







