arXiv 2603.25723
PAPER 03 · AGENT HARNESS
Natural-Language Agent Harnesses
把 harness 策略写成可执行的自然语言文档(NLAH + IHR)
Linyue Pan, Hai-Tao Zheng 等 · 清华大学深研院 & 哈工大(深圳)· arXiv 2603.25723
arXiv 2603.25723 · 投稿 2026-03 · 中文版收录 2026-09-03
CITE
把策略从代码里解放出来,写成人话。
— 本站导读
agent 的
harness 对性能影响巨大,但策略逻辑通常埋在紧耦合的控制器代码里,难检查、难比较、难迁移、难消融。论文把 harness 的
策略层提炼成可编辑的自然语言文档(NLAH),交给共享运行时(IHR)解释执行——自然语言管策略,代码只保留必须精确的机制。三套
基准上任务表现与代码 harness 相当,策略文档从几万 token 缩到几千 token,且可逐模块做科学消融。
解决什么问题
现代 LLM agent 已是多步执行系统:用工具、维护状态、从失败恢复、验证中间结果、委派子任务——这些行为由外部 harness 组织,而 harness 的选择可在同一基准上造成巨大性能差异。问题在于 harness 不是一个干净的研究对象:一份代码 harness 往往把提示词、工具适配器、解析规则、验证脚本、重试逻辑、上下文策略和基准特定假设混在一个控制器里。
于是「小小改一处 harness」可能同时改变调用边界、工具中介、状态载体、验证门和停止语义——harness 难以审查、移植、对比和消融,尽管 harness 模式本身才是系统中可复用的部分。
创新点
01NLAH:自然语言 Harness 文档
把 run 级 harness 策略写成可编辑文档,规定阶段(检查→计划→编辑→验证→恢复→收尾)、角色契约、状态规则、验证规则与停止条件。写作原则:先写任务契约;阶段与机制分离;状态与证据显式化;模块边界可消融;用可执行语言(「委派前先写状态文件」而非「小心谨慎」)。它超越 AGENTS.md / SKILL.md 这类工具级说明——描述的是整个任务运行的生命周期。
02IHR:智能 Harness 运行时CORE
跨 harness 共享的运行时,把 NLAH 解释成可审计的 agent 调用、父子交接、状态更新、验证门与工件契约。四层架构:base agent(只有 LLM 循环 + 终端)→ 运行时策略 → NLAH(可替换策略文档)→ 脚本/适配器(跑测试、解析、沙箱等精确代码)。IHR 刻意很薄——不是某个基准的专用控制器,而是给自然语言策略一个共同执行基底。
03自然语言 / 代码边界
自然语言承载策略:任务分解、角色契约、证据纪律、重试逻辑、状态交接、验证策略;代码承载精确机制:工具执行、解析、沙箱、日志、确定性验证器。作者明确不主张「自然语言取代全部控制器代码」,而是把 harness 中最可审查的一层从不透明实现逻辑中解放出来。
关键结果
同一 harness 思想的三种实现对比:原生代码 harness、同一 NLAH 文本当普通提示词用(Prompt)、NLAH 交由 IHR 执行。统一使用 Codex CLI(gpt-5.4-mini):
- 表示层收益:可读策略从 60.1K token 的代码材料缩到 2.9K 的 NLAH(Live-SWE),从 10.5K 缩到 0.8K(MHTBA)——策略层从实现细节中剥离,可直接审查。
- 跨模型移植诊断(重要发现):为 Claude Opus 4.6 精调的代码工件移植到 GPT 后,89 个样本中 66 个超时,其中 21 个任务其实已完成——精确的两步完成门协议与 GPT 行为不兼容(模型回答 DONE 而不再调用完成工具,循环空转至超时)。为某模型挖出的代码 harness 会编码对该模型行为的隐含假设,比它所实现的自然语言策略更脆弱。
- 机制落地:工件契约遵守率 1.00/0.96、工具调用成功率 0.93、失败后继续运行 0.99;主要短板是父子交接(信息交接召回率从 1.00 降到 0.32/0.55)。
- 模块消融:最有效的是收紧状态与验收纪律的模块——文件后备状态(OSWorld +13.9)、自我进化(SWE +5.8)、证据支撑回答(两边 +2.8);多候选搜索让 agent 调用从 1.1 涨到 5.7,SWE 上反而 −1.6——更多搜索不自动等于更好的 harness 设计。
意义与局限
- 意义:harness 从「模型周围的偶然性胶水」变成科学表示对象——可检索、组合、变异、优化的文本对象。即使基座模型变强,仍需要任务结构、状态纪律和验收标准,run 级策略层的价值不会消失。
- 局限:自然语言解释有不确定性与模型依赖;生产系统应把安全、权限、评估和关键解析逻辑留在代码里;原型运行时的交接损失是明确的改进方向。
DISCUSSION选中正文任意文字 → 点「✎ 批注」即可带原文引用发言 · 需 GitHub 登录