Harness-Engineering-for-Self-Improvement翁荔博客阅读

改进模型之外:把智能体 Harness 做成可验证的自演化系统

同一个基础模型,接入不同的工具、上下文管理、记忆机制和验证流程后,可能表现得像完全不同的智能体。差异并不只来自提示词,而来自模型外部那套负责如何观察、如何行动、如何保存状态、如何判断完成的运行系统——也就是 Harness(智能体运行编排层)。Lilian Weng 将其视为近期自我改进研究的重要落点:如何通过优化大模型外部的 Harness,让 AI Agent 具备持续自我改进的能力,并逐步走向递归式自我改进(Recursive Self-Improvement, RSI)。

这里最值得工程师关注的,不是智能体能否修改自己的代码这个表面能力,而是一个更严格的问题:能否把 Harness 的修改变成可观测、可归因、受边界约束、经过独立回归验证的工程闭环。 如果缺少这些条件,所谓自我改进往往只是自动试错;具备这些条件后,它才接近可持续的软件演化。

目录

  • Harness 是运行时,而不是提示词外壳
  • 从任务循环到 Harness 演化循环
  • 自我改进闭环的四个工程条件
  • 现有研究究竟证明了什么
  • 一套可落地的实现蓝图
  • 边界:优化分数不等于变得更好

Harness 是运行时,而不是提示词外壳

传统的智能体描述常被简化为:模型 + 记忆 + 工具 + 规划。Harness 工程进一步把工作流控制、持久状态、评测、权限和并发任务都纳入设计。它更像一个面向模型的运行时:模型负责提出下一步动作,Harness 决定可见上下文、可调用能力、动作如何执行、结果如何回流,以及何时停止。

一个编码智能体的内层循环通常是:观察仓库,制定计划,搜索和读取文件,提交修改,运行测试,检查错误,再决定结束或重试。这个循环看似朴素,却包含了多个会显著影响结果的设计选择:错误日志是否完整、测试是否自动触发、失败后回到计划还是直接重写、长期状态放在上下文还是文件中、哪些命令需要额外授权。

编码智能体从观察仓库到修改、测试和检查错误的迭代执行循环

图 1:Harness 把模型调用组织成可重复的 观察—计划—修改—验证 循环;失败会回流到读取和规划阶段,而不是被一次性回答掩盖。来源:Lilian Weng,《Harness Engineering for Self-Improvement》

因此,Harness 不应被看成一段不断膨胀的系统提示词,而应被看成一组可版本化的软件构件,例如系统策略、工具定义与实现、中间件、技能、子智能体配置、长期记忆和验证器。只有当这些构件拥有清晰接口,后续的自动修改才有明确对象,也才可能定位回归来自哪里。

从任务循环到 Harness 演化循环

任务循环优化的是这一次怎样完成任务;Harness 演化循环优化的是以后用什么机制完成一类任务。两者形成内外两层:内层运行当前 Harness 并产生轨迹,外层读取多次运行的证据,修改 Harness,再把新版本送回内层评测。

综合 Self-Harness 与 Agentic Harness Engineering(AHE)的流程,一个可信的外层循环可以抽象为五步:

  1. 采集轨迹:保存模型输出、工具调用、环境状态、验证结果和关键中间产物。
  2. 挖掘弱点:把重复失败归纳为机制级问题,而不是只记录超时或测试失败这类表象。
  3. 提出小改动:将每个候选修改绑定到具体证据、目标组件和预期影响。
  4. 独立验证:同时检查目标问题是否改善,以及原有能力是否退化。
  5. 晋升或拒绝:只发布满足门槛的修改;拒绝项也要保留,避免反复尝试同一条死路。

Self-Harness 通过弱点挖掘、候选修改和回归测试更新 Harness 的外层循环

图 2:Self-Harness 将外层优化拆成弱点挖掘、Harness 提案和提案验证;候选修改必须经过回归门槛,才能进入下一版本。来源:Zhang 等,《Self-Harness: Harnesses That Improve Themselves》

这一区分很重要。让智能体反复执行任务,只会产生更多尝试;让它根据失败修改自己的运行机制,才构成 Harness 层面的学习。但能够修改仍不等于能够可靠改进,后者取决于闭环的工程质量。

自我改进闭环的四个工程条件

1. 可观测:失败必须能归因到组件

失败轨迹往往很长,而最终验证结果只有一个分数。若系统只知道没通过,修改就容易退化为猜测。Agentic Harness Engineering(AHE)把可观测性拆成三层:组件可观测性让每个可编辑构件有文件级表示;经验可观测性把大量原始轨迹压缩成可追溯的失败证据;决策可观测性要求每次修改都写明原因和可检验的结果预测。

这相当于把一次自动编辑变成一个工程假设:因为证据 E 将失败 F 初步归因于组件 C,所以提出修改 M,并预测它会改善任务或指标 P,同时可能使能力集合 R 回归。 下一轮评测检查这些任务级预测是否出现,但不能据此证明 C 是唯一原因、M 是唯一有效改动。

2. 有界:编辑面越清楚,结果越可解释

开放式地允许智能体修改整个系统,会把搜索空间和安全风险同时放大。更稳妥的做法是显式列出可编辑面,并让一次提案尽量窄:例如调整验证前置条件、增加循环中断中间件、修复工具策略,而不是顺手更换模型、提高推理预算或改写评测器。

小改动不是为了保守,而是为了归因。多个机制同时变化,即使分数上升,也很难知道真正有效的因素,更难在其他环境中复用。可逆的文件级补丁、单一目标和明确风险,是自动演化能够进入生产工程的前提。

3. 验证与权限必须位于改进循环之外

Self-Harness 在 Terminal-Bench-2.0 去除网络依赖和多模态任务后的固定 64 题子集上实验:held-in 的轨迹与失败证据对提案器可见;held-out 任务本身不向提案器展示,但每个候选都会在其上评测,结果直接进入晋升门。因此,它更接近对提案器盲化的验证/回归切分,而不是从未参与候选选择的最终测试集。晋升规则可以概括为:两个切分上的变化都不能为负,并且至少一个必须为正。论文报告,三个固定模型的 held-out 通过率分别从 40.5% 提升到 61.9%、23.8% 提升到 38.1%、42.9% 提升到 57.1%。

这些数字说明有边界的 Harness 修改可以带来可测收益,但更重要的是验证结构本身:生成修改的系统不应同时控制判卷规则。论文共同支持的底线是让评测器、追踪器和关键权限保持只读或由外部系统掌管;更保守的工程扩展还应冻结模型配置与资源预算,避免把更强模型或更多计算伪装成 Harness 改进。

4. 持久化:不仅保存成功,也保存失败

长任务的轨迹、代码差异、评测结果和被拒提案不适合全部塞回上下文窗口。文件系统既是工作区,也是演化记忆:每个 Harness 版本、对应分数、运行轨迹、失败分析和决策记录都应可检索。

这类档案有两个作用。一是支持中断恢复和跨轮比较,避免模型只依赖短期对话;二是保存负结果,让搜索过程知道哪些路径已经失败。Darwin Gödel Machine(DGM)维护由能够编译且仍具代码库编辑能力的历史智能体组成的档案,而不是只保留单一当前版本;性能分数用于加权后续父代抽样,并不决定后代是否进入档案。论文的轨迹与消融表明,从多个祖先继续分叉有助于绕过某些次优路径,但并未直接测量或普遍证明减少过早收敛。

现有研究究竟证明了什么

几条研究路线展示了从优化答案向优化产生答案的程序迁移的过程,但它们的证据边界并不相同。下表数字均为各论文报告结果,本文没有复现实验,也不把不同基准上的分数作直接横向比较。为便于理解:Terminal-Bench 2 测试智能体在容器化终端环境中完成多步任务;SWE-bench Verified 是经过人工核验的真实代码仓库问题修复集;Polyglot 覆盖多种编程语言的仓库级修复任务;pass@1 表示单次尝试成功解决任务的比例。

工作被优化对象主要证据不应推出的结论
Self-Taught Optimizer(STOP)在单次实验内由固定语言模型 checkpoint 驱动的 improver 源码GPT-4 实验中,部分递归改写的 improver 在 LPN 与额外算法任务上高于种子程序;GPT-3.5 与 Mixtral 的平均表现并未同样提升模型权重获得了通用自我改进能力
DGM冻结预训练模型权重下的编码智能体代码(提示、工具和工作流);档案维护与父代选择属于固定外层机制80 轮搜索后,最佳发现智能体在 SWE-bench Verified 固定 200 题子集上从 20.0% 到 50.0%;Polyglot 全基准 pass@1 从 14.2% 到 30.7%,但搜索阶段使用随机 50 题子集任意开放领域或固定计算预算下都能持续提升
Self-Harness固定模型外部的有界 Harness 配置在固定 64 题子集上,三个模型在提案器不可见、但参与每轮晋升的 held-out 切分均报告提升已解决开放式演化、安全或长期泛化
AHE工具、中间件、技能、记忆等多组件 Harness在用于演化的完整 89 题 Terminal-Bench 2 上,GPT-5.4-high Code Agent 的 NexAU₀ 种子为 69.7%,一次十轮 campaign 选出的最佳 Harness 为 77.0%(每题两次 rollout);论文另做同任务集上的替代模型设置评测,以及保持 GPT-5.4 不变时的跨基准评测单一优化基准的最高分能代表独立泛化、可维护性和真实生产价值

STOP 的关键贡献是把改进器本身变成优化对象:底层语言模型 checkpoint 不变,递归发生在调用模型、生成候选并按效用选择结果的脚手架程序上。DGM 则把单链升级改为版本档案:任何仍可运行并具自编辑能力的后代都可入档,实测表现只影响后续从哪些父代继续分叉。Self-Harness 使用窄提案和 held-in/held-out 显式晋升门;AHE 则在受控文件工作区中进行可回滚、但可能跨组件的修改,并依据同一优化基准下一轮的任务级变化做归因和回滚。

因此,当前更准确的表述不是模型已经能够递归提升自身智能,而是:固定或近似固定的模型,已经能在可自动评测的任务上改进部分非参数运行机制。 这是一种受约束的脚手架自我改进,也是更宏大的递归自我改进(RSI)设想中的一个组件,而不是完整实现。

一套可落地的实现蓝图

如果要在工程团队中试验 Harness 演化,可以先把系统拆成两个相互隔离的工作区:一个存放可修改 Harness,另一个存放只读评测基础设施和演化记录。下面的目录仅用于说明职责边界:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
harness/
policy/ # 系统策略与权限声明
tools/ # 工具定义和实现
middleware/ # 重试、超时、循环中断、验证钩子
skills/ # 可复用任务流程
memory/ # 长期状态的读写规则

evolution/
runs/ # 原始轨迹与产物
failure-patterns/# 证据化的失败聚类
proposals/ # 候选补丁、假设与风险
decisions/ # 评测结果、晋升或拒绝理由

evaluator/ # 对演化智能体只读

一次迭代可以遵循以下协议:先冻结模型、预算、数据切分和评测器;运行基线并保留完整轨迹;只选择重复出现且可归因的失败模式;为每个模式生成少量互异的窄补丁;在目标集、隐藏集和关键能力回归集上评测;最后以版本化方式晋升,并保留一键回滚能力。

生产环境还应增加三类门槛:资源门槛限制成本和延迟,安全门槛阻止越权、数据泄露和评测篡改,维护性门槛检查复杂度、接口兼容性和后续调试负担。只看任务通过率,会鼓励系统用更多分支、更多重试和更多特殊规则换取短期分数,最终形成难以维护的 Harness。

边界:优化分数不等于变得更好

Harness 演化最适合自动验证强、反馈周期短、失败可复现的领域,例如编码测试、算法性能和结构化任务。进入研究创意、产品决策或长期软件维护后,评测器往往只能测量目标的一部分。新颖性、科学品味、架构寿命和组织成本都很难压缩成即时奖励;优化器则会忠实放大测量偏差。

还要警惕三类失真。第一,基准过拟合:修改只修复特定任务分布的表面模式。第二,奖励投机:智能体找到绕过测试、操纵判分或消耗额外资源的捷径。第三,多样性坍缩:版本档案逐渐只剩同一种高分策略,错过短期分数较低但长期更有价值的路径。原文因此主张把评测和权限控制置于演化循环之外,并在关键决策点保留人工监督。

真正可用的自我改进不是让系统拥有无限编辑权,而是让改进过程本身具备软件工程属性:对象可枚举,证据可追溯,改动可回滚,收益可复验,边界不可自改。模型能力决定它能提出多好的候选;Harness 工程决定这些候选能否安全、稳定地累积成系统能力。

参考资料