近期,Lilian Weng 发布了一篇深入的技术长文,聚焦于对人工智能发展至关重要的概念:递归自我改进(Recursive Self-Improvement, RSI)。这一理念最早可追溯至 1965 年,由 I. J. Good 提出,他将其称之为“超智能机器”——一种能够在所有智力活动上超越人类,并且能够自主设计出更强大的后继系统的机器。随后,Yudkowsky(2008)更具体地描绘了这一反馈循环机制:AI 利用当前自身的智能去改进其产生智能的认知机制。
在现代语境下,这一循环已演变为两个层面:一方面是模型直接修改自身的权重参数;另一方面是更广泛的层面,即模型去改进训练流程和部署系统,从而催生性能更强的后继模型。Weng 特别强调了其中一个常被忽略的关键——部署系统,也就是原始模型与真实世界之间的那层“中间件”。其重要性丝毫不亚于模型本身的原始智能。这一层,正是所谓的 Harness。
简单来说,Harness 是包裹基础模型的系统,负责编排与执行,决定了模型如何思考、规划、调用工具、感知和管理上下文、存储产物以及评估结果。观察目前市场上成功的 coding agent 产品,如 Claude Code、Codex,其核心竞争力的关键,往往都隐藏在 Harness 的设计之中。
Harness 设计模式
相较于早期 agent 框架那种“agent = LLM + 记忆 + 工具 + 规划 + 行动”的简单组合,Harness 工程已显著进化。它额外包含了工作流设计、评估、权限控制以及持久状态管理。它不再是一套简单的 prompt 模板,而更像是一个运行时环境或完整的软件系统。Weng 甚至认为,Harness 与操作系统之间有很强的类比关系——它们都负责封装复杂逻辑,对外提供简洁的接口。
模式一:工作流自动化。 核心思想是定义一个清晰的工作流,让模型在其中操作、测试和迭代。Karpathy 的 autoresearch 仓库便是一个绝佳的简洁示例。常见的工作流遵循一个目标导向的循环:计划、执行、观察/测试、改进、再执行,直至目标达成。
Codex agent loop
模式二:文件系统作为持久记忆。 一个优秀的 Harness 不应将整个工作流和所有日志都塞入上下文窗口。相反,它应将持久状态保存在文件之中。LLM 学习读写文件系统(通常通过 bash 命令)是基础技能,因此,利用文件来管理持久记忆,能自然地受益于核心模型能力的提升。
模式三:子 Agent 和后端任务。 Harness 可以生成多个子 agent 并行执行,并监控后台任务。此处的关键设计选择是让并行性变得显式且可检查——子 agent 的输出应存储为文件、日志和状态记录,而非仅仅存在于转瞬即逝的聊天上下文中。
案例:Coding Agent Harness。 目前主流 coding agent 的核心接口,在 Claude Code、Codex、OpenCode 和 Cursor 等产品中已趋于稳定。
coding harness loop
它的工具集已经相当丰富,涵盖文件系统(glob, grep, read, write, edit, apply_patch)、Shell 执行(bash, PowerShell)、IO(lsp, git 工具)、外部上下文(MCP, Skills)、网页搜索、产物生成、后端进程(CronCreate 等),以及 Agent 委托(spawn_agent, resume_agent 等)。
Harness 层 vs 核心智能? Weng 的预测分两步:首先,Harness 工程将朝着“元方法论”的方向演进——它改善的是获取答案的机制,而不仅仅是答案本身,启发式规则会越来越少,通用机制会越来越多。其次,一个成熟的 Harness 将支撑自动研究,实现模型自我改进的循环,而一个更聪明的模型,反过来也能防止 Harness 被过度工程化。
这一思路与 prompt engineering 的演进颇为相似:随着 instruction tuning 和推理能力的提升,手动调整 prompt 的技巧变得不再那么核心,但指定目标、约束、上下文和评估的需求从未消失。Harness 亦如此——许多改进最终会被内化到核心模型的行为中,但与外部环境和工具的接口应当保留下来。
Harness 优化
被优化的对象,其演进路径大致如下:从指令 prompt,到结构化上下文,再到工作流,然后是 Harness 代码,最后是优化器代码。模型越强大,优化目标就越复杂,也越通用。
上下文工程
Agentic Context Engineering(ACE;Zhang et al. 2025)提供了一个新视角:将上下文看作一个不断进化的“行动手册”(playbook),而非一条越来越长的 prompt。它由三个组件构成:Generator 生成任务轨迹,Reflector 从成功和失败的轨迹中提炼洞察,Curator 则通过增量条目化的方式更新这个结构化上下文。此处的关键设计在于,Curator 并不会重写整个 prompt blob,而是输出结构化的要点(包含标识符和描述),再通过确定性的逻辑合并到上下文中。
ACE framework
不过,ACE 的更新规则和整体工作流仍然是手工设计的。接下来,Meta Context Engineering(MCE;Ye et al. 2026)更进一步,它将“机制”(如何管理上下文)与“产物内容”(上下文中有什么)分离开来。它在元优化层面处理技能进化,在基础层面处理上下文优化。MCE 中的技能被定义为上下文函数,包含静态组件(prompts、知识库、代码库)和动态操作符(搜索、选择、过滤、格式化)。元级 agent 通过对先前技能执行“交叉”操作来创建新技能,而基础级的上下文工程师则从执行反馈中学习。
MCE framework
Meta-Harness(Lee et al. 2026)又深入了一层。这里被优化的对象变成了“决定什么信息应当被存储、检索和呈现给模型”的代码。提出新 Harness 的“提议者”本身就是一个 coding agent,最终输出的是帕累托前沿上的一组 Harness 候选方案。关键教训在于:一旦 Harness 设计成为一个可执行的搜索空间,强大的 coding agent 就能利用人类工程师所使用的同一个设计空间来寻找更优方案。
Meta-Harness outer loop
工作流设计
这方面最引人注目的成果是 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 的味道还不够浓厚。
AI Scientist pipeline
工作流的设计空间巨大,自然可被视为一个搜索问题。ADAS(Hu et al. 2025)将 agent 设计形式化为一个优化问题——meta-agent 以代码形式编程新的 agent,它会从存档中的现有解决方案获得启发,评估成功后再将新方案加回存档。AFlow(Zhang et al. 2025)则将工作流表示为图,用蒙特卡洛树搜索(MCTS)在图上进行优化搜索,在处理 QA、代码和数学任务时,比手动设计和 ADAS 都有不错的改进。
ADAS illustration
自我改进的 Harness
代码是定义程序和系统的通用语言。如果 LLM 能优化执行 agent 的代码,它就能访问到一个比手写 prompt 大得多的设计空间。
Self-Taught Optimizer(STOP;Zelikman et al. 2023)是递归脚手架改进的早期例子。种子改进器接收初始解决方案、效用函数和一个黑盒语言模型,然后返回一个改进后的解决方案。STOP 的目标并非直接改进解决方案,而是改进“改进器”本身。在实验中,改进后的改进器自己“发现”了遗传算法、分解改进、多臂 prompt bandit、模拟退火、beam/tree search 等多种策略。但一个值得警惕的发现是:STOP 在 GPT-4 上能改进下游性能,但在 GPT-3.5 和 Mixtral 等较弱模型上反而出现了退步。这说明,递归结构本身还不够,基础模型必须足够强大才能驾驭这种自我改进。
STOP algorithm
Self-Harness(Zhang et al. 2026)则通过一个“提议-评估-接受”的循环,让 agent 改进自己的 Harness。这个过程分三个阶段:(1)弱点挖掘——将失败案例聚类成基于验证器的失败模式,注意表面相同的错误背后可能有完全不同的因果机制;(2)Harness 提议——基于发现的失败模式,提出具有明确边界的 Harness 编辑方案;(3)提议验证——候选编辑需要同时通过 held-in 和 held-out 的回归测试,只有不引入任何回退的修改才会被接受合并。Weng 也对此表达了担忧:如果允许程序编辑操作系统,抽象边界就被打破了。可被编辑的表面需要被合理设计,权限控制和安全层必须独立于这个循环之外。
Self-Harness
进化搜索
当搜索空间巨大,或者难以使用梯度优化但容易评估解决方案时,进化搜索就显得格外有用。
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)则将进化搜索与强化学习和上下文学习结合起来。
AlphaEvolve
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 认为这个方向很有趣,但现有的证据还比较初步。
SIA
未来的挑战
尽管 AI Scientist 已经证明,专家精心设计的 Harness 可以协调自动化研究循环的很大一部分。但一个问题随之而来:生产论文不等于科学发现。系统可以写出看似合理、逻辑通顺的手稿,但里面可能夹杂着虚构的引用、实现上的偏差,或者其实验结果非常薄弱。
Trehan & Chopra(2026)测试了在最小脚手架支持下,LLM 能否完成从研究想法到论文的全过程。他们观察到了六个反复出现的失败模式:倾向于采用训练数据的默认值、在执行压力下发生实现漂移、记忆和上下文退化、过度乐观(模型在信号还很嘈杂时就宣布胜利)、领域智能不足、以及科学品味的欠缺。
要走向完整的 RSI,还有七个顽固的瓶颈需要突破:
1. 评估器太弱或太模糊。 许多研究声明并没有一个快速且精确的验证器。研究品味、新颖性和长期科学价值这类东西,很难被量化。目前,自我改进的循环仅在评估指标可测量且足够客观的领域里才效果好。
2. 上下文和记忆的生命周期管理。 当 agent 变得越来越自主,其记忆会不断增长。Weng 认为,上下文工程应该(并且将会)成为智能的核心组成部分,而非停留在软件系统层面。
3. 如何处理负面结果。 学术文献天然偏向于发表成功的结果。LLM 在海量的人类数据上训练,它们很可能不擅长判断何时该放弃一个假设,或者如何恰当地报告负面结果。但学会失败,其实是缩小搜索空间、避免在死胡同里打转的最佳方式。
4. 多样性崩溃。 进化和强化学习循环天然倾向于利用已知的高奖励模式。这就导致种群很容易坍缩成同一种解决方案的微小变体。对于追求开放式研究的目标来说,这个问题尤为致命。
5. 奖励黑客。 自我改进的循环会优化它接收到的任何信号。如果奖励来自单元测试,agent 可能会过拟合测试;如果奖励来自 judge 模型,它可能会学会取巧对付那个 judge;如果奖励来自 benchmark 分数,它就会利用 benchmark 本身的漏洞。这就是为什么评估器和权限控制必须位于进化循环之外。
6. 如何定义长期成功。 以 coding agent 为例:它能完成手头的任务,但它能保护一个由数百名工程师共同维护的代码仓库的长期健康吗?标准的沙盒式 RLVR 训练很少能捕捉到代码的可维护性、所有权边界、迁移成本和向后兼容性这类问题。
7. 人的角色。 人类应该向上移动,而不是被移出循环。我们需要在合适的时机、合适的抽象层级提供监督。系统的设计应该考虑清楚,何时以及如何设置这些人机交互的接触点。
附录:一些有用的基准
PaperBench:要求从头复现 20 篇 ICML 2024 的 Spotlight 和 Oral 论文,包含 8,316 个评分标准。当时最好的模型(Claude 3.5 Sonnet,得分约 21%)仍未能超越 ML 博士生的水平。CORE-Bench:评估已发表研究的计算可复现性,包含 270 个基于 90 篇论文的任务,覆盖计算机科学、社会科学和医学。ScienceAgentBench:从 44 篇同行评审出版物中提取了 102 个任务,涵盖数学、化学、生物、地理。RE-Bench:提供了 7 个开放的 ML 研究工程环境,用于对比前沿 AI agent 和人类专家。最佳 AI agent 在两小时预算下效率比人类高 4 倍,但人类在八小时和三十二小时的设置中重新超过了 agent。MLE-bench:包含 75 个 Kaggle ML 工程竞赛,o1-preview 配合 AIDE 脚手架在 16.9% 的竞赛中达到了至少铜牌水平。KernelBench:包含 250 个 PyTorch 任务,用于评估 LLM 能否写出快速且正确的 GPU 内核。
