提出Agent基本公式的Lilian Weng,这次又写了一篇长文,主题是:AI 如何实现递归自我改进(Recursive Self-Improvement, RSI)?
这个概念可以追溯到 I. J. Good(1965),他定义"超智能机器"为能在所有智力活动上超越人类、并能设计出更好机器的系统。Yudkowsky(2008)用"递归自我改进"来描述一个具体的反馈循环:AI 用自己当前的智能去改进产生智能的认知机制。
在现代 AI 语境下,这个反馈循环可以指模型直接改写自己的权重,也可以更广义地指模型改进训练流程和部署系统,进而产生更强的后继模型。Weng 特别强调了"部署系统"——原始模型和真实世界之间的那一层,重要性不亚于模型的原始智能。这一层就是 harness。
Harness 是包裹基础模型的系统,负责编排执行,决定模型如何思考和规划、调用工具和行动、感知和管理上下文、存储产物、评估结果。Claude Code、Codex 等成功的 coding agent 产品,核心都在 harness 上。
相比早期 agent 框架"agent = LLM + memory + tools + planning + action",harness 工程额外包含了工作流设计、评估、权限控制和持久状态管理。它不再只是 prompt 模板,而更接近运行时和软件系统设计。Weng 指出 harness 和操作系统之间有很强的类比——封装复杂逻辑,保持接口简单。
模式一:工作流自动化。 定义模型可以在其中操作、测试、迭代的工作流。Karpathy 的 autoresearch 仓库是一个简洁示例。常见工作流遵循目标导向循环:计划、执行、观察/测试、改进、再执行,直到目标达成。

模式二:文件系统作为持久记忆。 Harness 不应该把整个工作流和所有日志塞进上下文,而应把持久状态保存在文件中。LLM 学习读写文件系统(通常通过 bash 命令)是基础技能,因此以文件形式管理持久记忆自然受益于核心模型能力的提升。
模式三:子 Agent 和后端任务。 Harness 可以生成多个子 agent 并行执行并监控后端任务。关键设计选择是让并行性显式且可检查——子 agent 输出应存储为文件、日志和状态记录,而非仅存在于瞬态的聊天上下文中。
案例:Coding Agent Harness。 主流 coding agent 的核心接口已在 Claude Code、Codex、OpenCode 和 Cursor 等产品中趋于稳定。

工具集涵盖文件系统(glob, grep, read, write, edit, apply_patch)、Shell 执行(bash, PowerShell)、IO(lsp, git 工具)、外部上下文(MCP, Skills)、网页搜索、产物生成、后端进程(CronCreate 等)、Agent 委托(spawn_agent, resume_agent 等)。
Harness 层 vs 核心智能? Weng 的预测分两步:(1)Harness 工程将向"元方法论"方向演进——改善获取答案的机制,而非仅改善答案本身,启发式规则更少,通用机制更多。(2)成熟的 harness 支撑自动研究实现模型自我改进循环,更聪明的模型反过来防止 harness 被过度工程化。
她拿 prompt engineering 做了类比:随着 instruction tuning 和推理能力提升,手动 prompt 技巧变得不那么核心,但指定目标、约束、上下文和评估的需求从未消失。Harness 也一样——许多改进最终会被内化到核心模型行为中,但与外部环境和工具的接口应该保留。
被优化对象的演进大致是:指令 prompt → 结构化上下文 → 工作流 → harness 代码 → 优化器代码。模型越强,优化目标越复杂、越通用。
Agentic Context Engineering(ACE;Zhang et al. 2025)把上下文视为不断进化的 playbook 而非越来越长的 prompt。三个组件:Generator 生成任务轨迹,Reflector 从成功和失败轨迹中提炼洞察,Curator 用增量条目化方式更新结构化上下文。关键设计是 Curator 不重写整个 prompt blob,而是输出结构化要点(标识符,描述),通过确定性逻辑合并到上下文日志中。

ACE 的更新规则和整体工作流仍是手工设计的。Meta Context Engineering(MCE;Ye et al. 2026)将机制(如何管理上下文)与产物内容(上下文中有什么)分离,在元优化层面运行技能进化,在基础层面运行上下文优化。MCE 技能定义上下文函数,包含静态组件(prompts、知识库、代码库)和动态操作符(搜索、选择、过滤、格式化)。元级 agent 对先前技能执行 crossover 来创建新技能,基础级上下文工程师从执行反馈中学习。

Meta-Harness(Lee et al. 2026)又深了一层:被优化的对象是决定什么信息应该被存储、检索和呈现给模型的代码。创建新 harness 的提议者本身就是一个 coding agent,最终输出帕累托前沿上的一组 harness 候选。关键教训:一旦 harness 设计成为可执行的搜索空间,强大的 coding agent 就能利用人类工程师使用的同一个设计空间。

The AI Scientist(Lu et al. 2026,Nature)构建了端到端流水线:提出研究想法、写代码、跑实验、分析结果、写手稿、进行同行评审。ScientistOne(Meng et al. 2026)将可验证性作为中心设计约束,每个声明必须追溯到证据源并由证据链检查审计。Autodata(Kulikov et al. 2026)管理 challenger、weak solver、strong solver 和 verifier/judge,合成"刚好合适"难度的数据。局限在于合成任务只用于微调 weak solver 而非 strong solver,RSI 味道不足。

工作流设计空间巨大,自然可以视为搜索问题。ADAS(Hu et al. 2025)将 agent 设计形式化为优化问题——meta-agent 以代码形式编程新 agent,受存档中现有解决方案启发,评估后将成功的加回存档。AFlow(Zhang et al. 2025)将工作流表示为图,用 MCTS 在图上搜索优化,在 QA、代码和数学任务上相比手动设计和 ADAS 有不错改进。

代码是定义程序和系统的通用语言。如果 LLM 能优化执行 agent 的代码,就能访问比手写 prompt 大得多的设计空间。
Self-Taught Optimizer(STOP;Zelikman et al. 2023)是递归脚手架改进的早期例子。种子改进器接收初始解决方案、效用函数和黑盒语言模型,返回改进后的解决方案。STOP 的目标不是直接改进解决方案,而是改进改进器本身。实验中改进后的改进器发现了遗传算法、分解改进、多臂 prompt bandit、模拟退火、beam/tree search 等多种策略。但一个值得警惕的发现是:STOP 在 GPT-4 上改进了下游性能,在 GPT-3.5 和 Mixtral 等较弱模型上反而退化。递归结构本身不够,基础模型必须足够有能力。

Self-Harness(Zhang et al. 2026)通过"提议-评估-接受"循环让 agent 改进自己的 harness。三个阶段:(1)弱点挖掘——将失败聚类为基于验证器的失败模式,注意表面相同的错误可能有不同的因果机制;(2)Harness 提议——基于失败模式提出有边界的 harness 编辑;(3)提议验证——候选编辑通过 held-in 和 held-out 回归测试,只有无回归的才被接受合并。Weng 也表达了担忧:如果允许程序编辑 OS 系统,抽象边界就被打破了,可编辑表面需要被适当设计,权限控制和安全层需要在这个循环之外。

进化搜索在搜索空间巨大或难以用梯度优化但容易评估解决方案时特别有用。
Promptbreeder(Fernando et al. 2023)通过丰富的变异操作优化任务特定 prompt,变异 prompt 本身也通过进化改进。GEPA(Agrawal et al. 2025)结合反思式 prompting 和进化搜索。AlphaEvolve(Novikov et al. 2025)存储候选程序池,提示冻结的 LLM 生成 diff 改进,代码区域用 # EVOLVE-BLOCK-START 和 # EVOLVE-BLOCK-END 显式标记。ThetaEvolve(Wang et al. 2025)结合进化搜索与 RL 和上下文学习。

ShinkaEvolve(Lange et al. 2025)引入三个组件提高 LLM 采样效率:平衡探索与利用的父代采样、基于代码新颖性的拒绝采样(通过嵌入余弦相似度丢弃过于相似的候选)、在元草稿本中识别成功模式以指导未来变异。
Darwin Gödel Machine(DGM;Zhang et al. 2025)明确针对可编辑 harness 代码仓库的进化。Agent 被允许修改自己的 harness。流程:从池中选父代(概率与性能成正比、与已有子代数成反比),父 agent 检查自己的基准评估日志后改进 harness 代码库,新 agent 被评估,只有性能足够高的加回池中。在 Claude 3.5 Sonnet 上,DGM 发现的 agent 在 SWE-bench Verified 从 20% 提升到 50%,Polyglot 从 14.2% 提升到 30.7%。后续工作 Hyperagents(Zhang et al. 2026)引入 meta-agent 控制如何修改现有任务 agent。
这类方法在候选可自动评估且适应度容易量化的领域效果好(如矩阵乘法、GPU 内核优化、算法竞赛),在评估缓慢、模糊或基于启发式的领域则困难。
SIA(Hebbar et al. 2026)是在同一优化循环中结合 harness 改进和模型参数更新的早期尝试。三个组件:Meta-Agent 提出初始 harness,Task-Specific Agent 执行任务,Feedback-Agent 根据最近轨迹选择更新 harness 还是模型权重。但实验中 task-specific agent 比 Meta-Agent 和 Feedback-Agent 使用的模型弱得多,且基线太弱,Weng 认为方向有趣但证据初步。

AI Scientist 证明了专家设计的 harness 可以协调自动研究循环的很大一部分。但论文生产不等于科学发现——系统可以写出看似合理的手稿,同时夹杂虚构引用、实现漂移或薄弱的实验结果。
Trehan & Chopra(2026)测试了 LLM 能否在最小脚手架下从研究想法到论文,观察到六个反复出现的失败模式:偏向训练数据默认值、执行压力下的实现漂移、记忆和上下文退化、过度乐观(模型在信号仍是噪声时宣布胜利)、领域智能不足、科学品味薄弱。
面向完整的 RSI,七个瓶颈仍然存在:
1. 弱且模糊的评估器。 许多研究声明没有快速精确的验证器。研究品味、新颖性和长期科学价值很难量化。当前自改进循环只在评估指标可测量且客观的领域效果好。
2. 上下文和记忆的生命周期。 随着 agent 变得更自主,记忆会增长。Weng 认为上下文工程将且应该成为智能的核心部分,而非停留在软件系统层。
3. 负面结果。 学术文献偏向成功。LLM 在海量人类数据上训练,可能不擅长判断何时放弃假设、报告负面结果。但学会失败是缩小搜索空间的最佳方式。
4. 多样性崩溃。 进化和 RL 循环倾向于利用已知高奖励模式。种群容易塌缩为同一方案的变体。对开放式研究尤为关键。
5. 奖励黑客。 自改进循环优化它收到的任何信号。如果奖励来自单元测试,agent 可能过拟合测试;如果来自 judge 模型,可能学会针对该 judge 的取巧手段;如果来自 benchmark 分数,可能利用 benchmark artifacts。评估器和权限控制应该位于进化循环之外。
6. 长期成功。 以 coding agent 为例:它能完成手头任务,但如何保护一个由数百工程师共同维护的仓库的长期健康?标准沙盒 RLVR 训练很少捕捉到可维护性、所有权边界、迁移成本、向后兼容性。
7. 人的角色。 人类应该往上移动,而非被移出循环。在合适的时机、合适的抽象层级提供监督。系统设计应考虑何时及如何设置这些接触点。
原文:https://lilianweng.github.io/posts/2026-07-04-harness/