Harness-Zero: Harness Distillation via Agent-as-Harness
Haoran Ye, Yuxing Lu, Haonan Dong, Zhaochen Su, Guojie Song
cs.AI, cs.CL, cs.NE
2026-09-22
北大把领域进化出的 agent harness 改编成阅卷老师:在学生交动作前改写成目标脚手架能执行的回复,再 SFT 进权重。Qwen3.5-9B 部署时只留迷你 Bash 脚手架,宏平均从 23.3% 升到 44.3%,超过仍挂着进化 harness 的 41.7%。
Agent 成绩很大一块来自外部 harness:工具、中间件、技能、记忆。Meta-Harness 一类方法能自动把这份脚手架进化得更好,但增益绑在部署时那套代码上。领域不同、题目不同、模型不同,最优 harness 也不同。通用 agent 要么共用一套次优脚手架,要么维护一堆专用脚手架再做路由。两条路都没有把发现写回模型权重。
更麻烦的是,进化 harness 和上线用的迷你 harness 动作空间不一样。直接模仿源 harness 轨迹,学生会在目标环境里调用不存在的工具。
三步。先在训练集上进化学生侧 harness h(工具、中间件、技能、记忆),再把它改编成阅卷用的私有参考 𝒦:原先会拦动作的中间件,变成阅卷时的警告;工具变成「如何用学生那一个 Bash 工具写出等价行为」的说明书。
采集时学生始终跑在固定的 mini-SWE-agent 上,只有一个 Bash 工具。每一步先出回复,阅卷 agent 用 𝒦 决定放行或做最小连贯改写。改写必须是目标动作空间里的完整回复。阅卷过程对学生不可见,阅卷员也不能看隐藏答案或沙箱内部。接受的回复经目标 harness 执行,观察写进学生轨迹。
最后对接受回复做 LoRA SFT,并掩掉偶发的阅卷人口吻。部署时 h、𝒦、阅卷员全部撤掉,只留蒸馏后的模型和迷你 harness。
三个域:SpreadsheetBench Verified、AppWorld、USPTO 逆合成。无训练对照里,同一前沿模型既当学生又当阅卷员:带进化 𝒦 的 agent-as-harness 六组平均 81.1%,把进化 harness 直接挂上的 code-as-harness 78.1%,迷你 harness 单独 68.6%。空 𝒦 只有 69.2%,说明增益来自进化规则,不是多了一个旁观者。
蒸馏学生是 Qwen3.5-9B,阅卷员是 GPT-5.6 Sol。
| 设置 | 表格 | AppWorld | USPTO | 宏平均 |
| 基座 + 迷你 harness | 31.0 | 26.8 | 12.0 | 23.3 |
| 基座 + 进化 harness | 39.0 | 48.2 | 38.0 | 41.7 |
| Harness-Zero(只留迷你) | 44.0 | 58.9 | 30.0 | 44.3 |
表格和 AppWorld 上,蒸馏后单独跑已经超过仍挂着 h 的基座。USPTO 从 12.0 升到 30.0,仍低于挂着 h 的 38.0。消融里,直接拿教师轨迹、学生在 h 下的轨迹、空 𝒦 阅卷、甚至把标准答案给阅卷员,测试 pass@1 只有 3%–15%;Harness-Zero 到 30%。28 条「只在 h 下才出现」的行为,蒸馏后平均找回 82.3%。
harness 工程正在变成 agent 的主杠杆。这篇给出一条把杠杆结果写回权重的路径:训练时用专用脚手架当阅卷老师,上线仍用统一迷你接口。对要养很多领域 agent 的团队,这意味着不必永远路由一堆脚手架。程序化习惯(先检查再改、保存后再扫一遍)好蒸;反应先验、可执行验证器这类「深领域知识」蒸不干净,USPTO 就是证据。
无训练时 agent-as-harness 也能略优于把代码 harness 直接套上,前提是阅卷模型和规则都够强。
阅卷模型弱时,多这一层会帮倒忙。采集期每步多一次模型调用,USPTO 平均延迟约 2.4 倍,蒸馏之后才消失。上下文管理一类机制不好表达成学生回复,所以迷你 harness 去不掉。SFT 丢掉了「同一状态下被拒和被改」这对偏好信号。三域都在 Harbor 容器里,真实电脑环境是否同规律,没有测。论文也没比较 RL 蒸馏。