面向自我改进的 Harness 工程

查看原文 HN 讨论

文章摘要

这是 Lilian Weng(Lil’Log)的一篇长综述,主题是 harness 工程与递归自我改进(RSI)的关系。她先回到概念源头:I. J. Good 在 1965 年提出「超智能机器」,Yudkowsky 在 2008 年用「递归自我改进」描述一个具体反馈回路——AI 用当前的智能去改进产生其智能的认知机器。放到今天的 AI 上,这个回路既可能是模型直接改写自己的权重,也可能更宽泛地表现为模型改进训练管线和部署系统,从而让下一代模型在经济价值任务上表现更好。

她特意强调「部署系统」,因为原始模型与真实世界之间的那一层,其重要性看起来不亚于模型的原始智能。harness 指的就是围绕基础模型、负责编排执行的那套系统:决定模型如何思考与规划、如何调用工具与行动、如何感知与管理上下文、如何存储产物、如何评估结果。Claude Code、Codex 这类成功的编码智能体产品就是证明。

Harness 的三种设计模式。相比早期「agent = LLM + 记忆 + 工具 + 规划 + 行动」的框架,harness 工程还额外包含工作流设计(如循环工程)、评估、权限控制和持久状态管理,已经更接近运行时和软件系统设计而非提示词模板。她用操作系统作类比:harness 应该把复杂逻辑封装起来、保持接口简单。三个模式分别是:(1)工作流自动化——定义一个模型可以操作、测试、迭代的工作流,典型是 plan / execute / observe / improve 的目标导向循环,Karpathy 的 autoresearch 仓库是个干净的例子;(2)文件系统作为持久记忆——harness 不该把整个工作流和所有日志都塞进上下文,而应把耐久状态放在文件里,因为长周期任务里实验日志、代码 diff、错误轨迹的体量远超上下文窗口,而读写文件是 LLM 的基础技能,天然受益于核心能力的提升;(3)子智能体与后台作业——主智能体需要一个小型进程管理器来启动作业、检查日志、取消失败运行、把结果合并回主线程,关键设计是让并行显式且可观测,子智能体输出必须落到文件与日志而非短暂的对话上下文里。

Harness 优化的层次递进。作者给出一条清晰的进化线:被优化的对象从指令提示词 → 结构化上下文 → 工作流 → harness 代码 → 优化器代码。在上下文工程一侧,ACE(Agentic Context Engineering)把上下文当成不断演化的「战术手册」而非越来越长的提示词,由 Generator / Reflector / Curator 三部分维护一份条目化的要点清单,关键设计是 curator 不重写整段提示词,而是输出结构化条目并用确定性逻辑合并,以避免上下文坍缩和「越写越简短」的偏差。MCE(Meta Context Engineering)更进一步,把「如何管理上下文」的机制与「上下文里放什么」的内容分开,做双层优化:内层找最优上下文,外层用「智能体式交叉」演化出更好的技能。Meta-Harness 再深一层——被优化的对象是决定「什么信息该存储、检索、呈现」的代码本身,提出新 harness 的 proposer 自己就是一个编码智能体,最终输出是一组位于帕累托前沿的 harness 候选。

工作流设计与演化搜索。作者列举了 AI Scientist(提出想法、写代码、跑实验、分析结果、写论文、同行评审的全流水线)、ScientistOne(把可验证性作为中心约束,每条主张都要能追溯到证据源)、Autodata(主智能体管理 challenger、弱 solver、强 solver 和 verifier,合成难度「刚刚好」的数据)等手工设计的框架,然后指出工作流的设计空间巨大,本质上可以当作搜索问题:ADAS 把智能体设计本身形式化为优化问题,让 meta-agent 用代码提出新的智能体工作流;AFlow 把工作流表示为图并用 MCTS 优化。再往上是演化搜索一脉:Promptbreeder、GEPA、AlphaEvolve(用 # EVOLVE-BLOCK 标记可演化代码区域,元提示词与解一起协同演化)、ShinkaEvolve(更高效的父代采样、基于嵌入相似度的代码新颖性拒绝采样、元草稿本),以及 Darwin Gödel Machine——它明确让编码智能体修改自己的 harness 代码库,在 Claude 3.5 Sonnet 上把 SWE-bench Verified 从 20% 推到 50%、Polyglot 从 14.2% 推到 30.7%。

几个值得注意的实证结论。早期的 STOP(Self-Taught Optimizer)有一个警示性发现:改进「改进器」这件事在 GPT-4 上能提升下游表现,但在 GPT-3.5、Mixtral 这类更弱的模型上反而退化——递归结构本身不够,基础模型必须足够强才能改进机制。Lin et al. (2026) 把能力拆成两个轴:产生有用 harness 编辑的能力利用更新后 harness 的能力,结果很有意思——从 Qwen3.5-9B 到 Claude Opus 4.6,各种规模模型的 harness 更新能力大致持平,9B 的提议者能写出与 Opus 在流程上同构的技能;而「受益能力」则是非单调的,中档模型受益最大。Self-Harness 用弱点挖掘 / 有界提案 / 验证合并三阶段循环改进 harness,只有在留出集和保留集上都无回归的候选才会被接受。AHE(Agentic Harness Engineering)把瓶颈定位在可观测性,建立组件可观测(7 个可编辑组件各有文件系统表示)、经验可观测(分层聚合轨迹分析)、决策可观测(每次编辑配一条下一轮可证伪的预测)三根支柱,并且严格限定只有 harness 工作区可写,runs 目录、tracer、verifier 和 LLM 配置只读——这一条直接封死了「关掉 verifier、换模型、加推理预算」这类奖励作弊路径。

未解的挑战。作者列了七条:(1)评估器又弱又模糊,研究品味、新颖性、长期科学价值都难以度量;(2)上下文与记忆的生命周期管理,她认为上下文工程应当成为智能的核心组成部分而非停留在软件层;(3)负面结果的缺失——文献偏向成功,LLM 可能不擅长判断何时该放弃假设、报告负面结果;(4)多样性坍缩;(5)奖励作弊——评估器和权限控制应当位于演化 harness 的回路之外,配合保留测试、轨迹审计和关键决策点的人工复核;(6)长期成功——编码智能体能完成手头任务,但对一个几百上千工程师共同维护的仓库的长期健康、可维护性、迁移成本、向后兼容、未来调试负担缺乏优化目标;(7)人的角色——人应该往上移,而不是被移出回路。她还引用了一项实验中观察到的六种反复出现的失败模式:偏向训练数据默认值(用旧库、旧命令)、执行压力下的实现漂移(技术上变复杂时退回更简单的常规解法)、记忆与上下文退化、过度乐观(在实验噪声或失败时宣布成功,即所谓「p-hacking 和 eureka 化」)、领域智能不足、科学品味薄弱。

HN 评论精华

这条帖子 330 分、79 条评论,讨论水准较高,主要集中在三块:harness 是不是护城河、实践者的踩坑经验,以及若干技术冷幽默。

Harness 是不是模型公司的护城河

实践者的踩坑与技巧

吐槽与冷幽默