Harness工程:AI递归自我改进的关键设计
本文深入探讨了AI系统中“harness”(即模型外围的编排系统)的工程设计与自我改进。
递归自我改进(RSI) 的概念可以追溯到 I. J. Good (1965),他定义“超智能机器”为一种能在所有智力活动中超越人类、并设计出更好机器来自我改进的系统。Yudkowsky (2008) 使用了“递归自我改进”这个短语来描述一个特定的反馈循环:AI 利用其当前的智能来改进产生其智能的认知机制。
现代 AI 中的这种反馈循环可能表现为模型直接重写自身的权重,或者更广泛地,模型改进训练流程和部署系统,进而产生一个性能更好的后继模型,在经济上有价值的任务上表现出改进。前沿实验室(Anthropic;OpenAI)的研究开发速度已经显示出急剧加速。
我明确提到**“部署系统”**,是因为原始模型与现实世界上下文之间的那一层,似乎与模型的原始智能(即预训练后的评估)同样重要。Harness 是 AI 部署的重要组成部分,正如 Claude Code 和 Codex 等成功的编码 Agent 产品所展示的那样。一个 harness 是围绕基础模型的系统,它协调执行,并决定模型如何思考和规划、调用工具和行动、感知和管理上下文、存储工件以及评估结果。
本文主要关注围绕 harness 工程的研究及其如何促进 RSI。许多近期关于自动研究、自我改进 Agent 和进化程序搜索的工作都可以围绕这个问题来组织。其他关于模型自我对弈、合成数据、测试时训练以及更广泛的持续学习主题的研究也与 RSI 愿景相符(例如 Yuan et al. 2024,Chen et al. 2024,Zhao et al. 2025,Choi et al. 2026),但它们不是本文的重点。
Harness 设计模式
与早期的 Agent 框架(“Agent = LLM + 记忆 + 工具 + 规划 + 行动”)相比,harness 工程额外包括工作流设计(例如循环工程)、评估、权限控制和持久状态管理。它不再仅仅是提示模板,而是更接近于运行时和软件系统设计:模型如何观察、行动、记忆、自我检查和改进。
设计应当刻意保持简单和通用以实现泛化,很可能需要借鉴现有的软件工程实践,以利用预训练知识。操作系统和 harness 之间也存在很强的类比关系。类似于操作系统,harness 应当封装复杂的逻辑,同时保持接口简单。与此同时,配置、工具接口和其他协议可能会逐渐在整个行业中标准化。
模式 1:工作流自动化
定义一个模型可以在其中操作、测试和迭代的工作流是实现自动化的关键设计。Karpathy 的 autoresearch 仓库(https://github.com/karpathy/autoresearch)是一个简洁的示例,展示了如何构建这样的工作流。一个常见的工作流遵循一个目标导向的循环:计划、执行、观察/测试、改进、再次执行,直到目标达成。该过程可能会主动向用户请求澄清任务规范或执行偏好。
(图片来源:OpenAI codex agent post)
工作流图也强调了模型分析自己的轨迹和失败案例,然后通过“Agent 运行时”迭代其进度,而不是使用静态的提示模板。
模式 2:文件系统作为持久记忆
长周期 Agent 系统中的一个常见模式是对丰富状态和工件的简单控制。Harness 不应将整个工作流和所有日志都放在上下文中,而应将持久状态保存在文件中。在长周期 Agent 展开中,诸如实验日志、代码差异、论文摘要、错误追踪和过去展开轨迹等工件,其长度通常会远远超过模型训练时所使用的上下文窗口。
学习如何读取、写入和编辑文件系统(通常通过 bash 命令)是 LLM 的基础技能,因此以简单的文件形式管理持久记忆自然受益于核心模型能力的提升。
模式 3:子 Agent 和后端作业
一个 harness 可以生成多个子 Agent 并行执行并监控后端作业。当主 Agent 需要搜索多个假设、并发运行实验或委派隔离的子任务而不污染主上下文时,这非常有用。父 Agent 需要一个小型进程管理器:启动任务、检查日志、取消失败的运行,并将结果合并回主 Agent 线程。
关键的设计选择是让并行性变得显式且可检查。如果子 Agent 的输出仅存在于临时的聊天上下文中,它们会很快变得过时和隐藏。如果它们作为文件、日志和状态记录存储,Agent 可以在中断后恢复,并对其自身的执行历史进行推理。
案例研究:编码 Agent Harness
主流编码 Agent 的核心接口在 Claude Code、Codex、OpenCode 和 Cursor 风格的 Agent 中已经趋于稳定。它们通常使用类似于以下的循环:

通过访问一组工具,编码 Agent 能够开发和调试给定仓库中的问题,类似于人类开发者使用 IDE 的方式。
(并非完整列表,仅作演示。如有兴趣请阅读此链接。)
| 分组 | 工具定义 |
|---|---|
| 文件系统 | - 文件发现:glob、grep、ls<br>- 文件读取:read、read_many<br>- 文件修改:write(整个新文件);edit(字符串精确匹配替换);multi_edit;apply_patch(应用结构化补丁/差异) |
| Shell 执行 | 运行命令:bash、PowerShell |
| IO | lsp,git 工具如 git_status、git_diff、git_commit |
| 外部上下文 | MCP 工具、Skills |
| 网页搜索 | web_search、web_fetch、浏览器工具 |
| 工件 | 读取文档、图片;生成 HTML、图片 |
| 后端进程 | 例如:CronCreate、CronDelete、CronList |
| Agent 委派 | 例如:spawn_agent、resume_agent、wait_agent、list_agents、close_agent、interrupt_agent 等 |
Harness 层 vs 核心智能?
很难预测未来 RSI 在多大程度上依赖 harness 工程,但 RSI 的近期路径不太可能以模型直接重写自身权重开始。我对近期实际路径的预测是:
- Harness 工程将朝着元方法论的方向发展(即改进获得更好答案的机制,而不仅仅是改进答案本身)。Harness 系统本身成为一个优化目标,启发式规则更少,通用机制更多。
- 反过来,成熟的 harness 能够实现模型自我改进循环的自动研究,而更智能的模型可以防止 harness 过度工程化,保持系统的可持续性。
最终,许多 harness 改进可能会被内化为核心模型行为,但与外部上下文和工具的接口应该保留。我们已经看到过这种模式的较软版本,即提示工程:随着指令微调和模型推理能力的提升,手动提示技巧变得不那么核心,但指定目标、约束、上下文和评估的需求并未消失。
Harness 优化
Harness 系统中被优化的对象大致经历了以下演进:指令 提示 → 结构化上下文 → 工作流 → harness 代码 → 优化器代码。随着模型变得越来越智能和强大,我们转向更复杂的目标和更通用的方法。
上下文工程
仅仅将所有工具响应和模型生成结果追加到上下文中,会随着 Agent 任务周期的显著延长而迅速失控。上下文管理是一个层,用于为 LLM 构建更结构化和更简洁的上下文,并管理持久状态。毫无疑问,长上下文研究会持续取得进展,但目前长上下文智能和上下文工程有时会相互交织。
Agent 上下文工程(ACE;Zhang et al. 2025)将上下文视为一本不断演变的剧本,而不是一个越来越长的提示。它包含三个组件,用于维护一个由项目符号点组成的上下文剧本,每个符号点都有一个标识符和描述。
- 生成器:生成任务轨迹,并引用符号点。
- 反思器:从成功和失败的轨迹中提炼洞察。
- 策展人:通过增量、逐项条目更新结构化上下文。
(图片来源:Zhang et al. 2025)
为了防止在迭代重写过程中出现上下文崩溃和简洁性偏差,ACE 中的一个关键设计选择是,策展人不重写完整提示块,而是输出一组结构化的、逐项的项目符号列表,形式为(标识符,描述),这些符号点通过确定性逻辑合并到一个结构化的上下文日志簿中。上下文项会定期精炼和去重。
ACE 从展开中学习洞察这一事实有助于我们走向自我管理的记忆,但更新规则和整体工作流仍然是手工制作的。为了迈向更具自我改进性的循环,元上下文工程(MCE;Ye et al. 2026)将机制(如何管理上下文)与工件内容(上下文中包含什么)分离开来,在元优化层面运行技能进化,在基础层面运行上下文优化。
一个 MCE 技能 s∈S 定义了一个上下文函数 cs=(ρs,Fs),并将输入 x 映射到上下文 c=Fs(x;ρs),其中:
- ρs={ρ1,…,ρm} 是静态组件(提示、知识库、代码库)。
- Fs={F1,…,Fk} 是动态操作符(搜索、选择、过滤、格式化)。
双层优化是在训练数据上找到给定技能 s 的最佳上下文 cs∗,而外层循环找到在验证集上提供最佳性能的最优技能:
内层:cs∗=arg maxcs Jtrain(cs;s) 外层:s∗=arg maxs∈S Jval(cs∗)
技能数据库跟踪先前技能、上下文函数和评估指标的历史记录 Hk−1={(si,ci,Jitrain,Jival)}i=1k−1。一个元级 Agent 对先前技能执行 Agent 式交叉,以针对给定任务 τ 创建新技能:sk=crossover(τ,Hk−1)。
然后,一个基础级上下文工程师执行技能 sk,并根据当前技能从展开反馈 Rk 中学习上下文函数:ck=engineer(τ,sk;ck−1∗,Rk)。
(图片来源:Ye et al. 2026)
MCE 不像 ACE 那样强制执行用于结构化上下文的启发式规则,它使用自由形式的技能来存储任务最重要的知识,并同时迭代进化技能和技能条件上下文。在实现上,上下文函数 c 被实例化为专用目录中的文件集合,包括静态(skill.md)和动态(上下文和数据展开)组件。元级和基础级优化都在具有标准工具集的 Agent 编码环境中执行:
T={Read,Write,Edit,Bash,Glob,Grep,TodoWrite}
元 Harness(Lee et al. 2026)更进一步:被优化的对象是代码,它决定和优化应该存储、检索并呈现给模型的信息。“元-” 在其名称中意味着它是用于优化 harness 的 harness。
(图片来源:Lee et al. 2026)
用于创建新 harness 的提议者本身就是一个编码 Agent,最终输出是 Pareto 前沿上的一组 harness 候选。
- 整个执行历史记录可通过文件系统访问,因此编码 Agent 使用
grep或cat等命令来读取,而不是将所有内容塞入单个提示上下文。 - 提议的 harness 是文件系统中的一个字典,包含其自己的源代码、分数、展开轨迹和状态更新。
- 元 harness 循环迭代创建新的 harness,只保留合格的。
(图片来源:Lee et al. 2026)
尽管如此,重要的教训是明确的:一旦 harness 设计成为一个可执行的搜索空间,一个强大的编码 Agent 就可以利用人类工程师所使用的相同设计空间。
工作流设计
Harness 工程中的工作流设计可以由领域专家手工制作。以自动研究为例,已经提出并测试了各种框架。AI Scientist 系统(Lu et al. 2026)构建了一个流程,用于提出研究想法、编写代码、运行实验、分析结果、撰写手稿以及进行同行评审。Meng et al. (2026) 将可验证性作为 ScientistOne 的核心设计约束,其中每个声明(引用、数值、方法论、结论)都必须追溯到证据来源,并通过证据链检查进行审计。
(图片来源:Lu et al. 2026)
Autodata Agent(Kulikov et al. 2026)被设计为数据科学家,负责生成训练和评估数据。主 Agent 管理一个挑战者(提出问题的 Agent)、一个弱求解器、一个强求解器和一个验证者/裁判,旨在以“恰到好处”的难度级别合成数据,即强求解器成功而弱求解器失败。
在 Autodata 中,挑战者提示根据求解器和验证者的反馈进行迭代更新。其局限性在于,合成任务用于微调弱求解器而不是强求解器;如果循环无法迭代改进强模型,这更像是通过生成的提示分布进行间接蒸馏,RSI 特征较弱。
(图片来源:Kulikov et al. 2026)
工作流的设计空间是巨大的,自然我们可以将工作流设计视为一个搜索问题,因此我们应该能够通过算法而不是仅靠手动设计来找到好的解决方案。沿着这个方向,Agent 系统的自动设计(ADAS;Hu et al. 2025)将 Agent 设计本身形式化为一个优化问题,即“元 Agent 搜索”,其中元 Agent 提出新的 Agent 工作流设计。
-
使用简单的 Agent(如 CoT 和 self-refine)初始化一个 Agent 工作流存档。
-
要求元 Agent 编程新的 Agent,全部使用代码,并受存档中现有解决方案的启发。
- 元 Agent 首先生成新工作流的高级描述,然后用代码实现它。
- 该草稿程序随后通过两个自我精炼步骤(即要求模型提供反馈,然后要求同一模型根据反馈精炼先前生成的输出;Madaan et al. 2023)由元 Agent 检查其新颖性。
-
评估每个新候选,并将成功的添加到存档中。
-
重复步骤 2-3,直到达到最大迭代次数。
(图片来源:Hu et al. 2025)
AFlow(Zhang et al. 2025)将 Agent 工作流表示为图,其中节点代表 LLM 调用的动作,边在代码中实现逻辑操作。工作流优化依赖于 MCTS(蒙特卡洛树搜索):
- 用模板在树中初始化起始工作流 W0。
- 使用分数和均匀探索的软混合选择工作流节点。
- 通过要求 LLM 根据其评估性能生成修改后的工作流来展开节点。
- 执行和评估新工作流。
- 如果新工作流在 N 轮预算内显示出改进,则将其添加回树中。
- 重复步骤 2-5,当 top-k 平均分数趋于平稳或达到预算时停止。
(图片来源:Zhang et al. 2025)
AFlow 在 QA、代码和数学任务上的实验显示,AFlow 相对于手动设计的工作流和 ADAS 有显著的改进。
(图片来源:Zhang et al. 2025)
自我改进的 Harness
上下文工程或工作流设计都只是 harness 的一部分。我们需要搜索整个设计空间,同时优化上下文管理逻辑、工作流、权限和许多其他 harness 组件。正如我们在 Meta-Harness、ADAS 和 AFlow 等工作中所看到的,✨代码✨ 是定义程序和系统的通用语言。简而言之,harness 是编程提示、工具调用、子 Agent、控制流、记忆和工作流逻辑如何协同工作的代码。如果 LLM 能够优化执行 Agent 的代码,它就可以访问一个比手工编写的提示大得多的设计空间。
自学习优化器(STOP;Zelikman et al. 2023)是递归支架改进的早期例子之一。在步骤 t=0 时的种子改进器 I0 接受初始解 s、效用函数 u 和黑盒语言模型 M,并返回改进的解 s′,即 s′=I(u,s;M)。STOP 的目标不是直接改进 s,而是改进改进器 I 本身。
首先,让我们将元效用定义为给定改进器函数 I 在一组下游任务 D 上的平均效用:
u^(I) ≜ 1/|D| E_{(u,s)~D} [u(I(u,s;M))]
由于改进改进器函数本身就是一个优化问题,我们可以通过自我改进更新,根据由元效用衡量的 I_{t-1} 的性能递归地获得 I_t 的新版本:
I_t = I_{t-1}(u^, I_{t-1}; M)
(图片来源:Zelikman et al. 2023)
在 Zelikman et al. (2023) 的实验中,改进后的改进器发现了各种策略,例如遗传算法、分解和改进部分、多臂提示赌博机、模拟退火、变化温度和波束/树搜索。这类似于 harness 工作流如何表示为优化对象。
(图片来源:Zelikman et al. 2023)
他们发现的一个警示性结果是,使用 GPT-4 时,STOP 在迭代中提高了平均下游性能,但使用较弱的模型(如 GPT-3.5 和 Mixtral)时性能下降。仅有递归结构是不够的,基础模型必须足够有能力来改进机制。这意味着 harness 改进能够更好地部署模型,但智能仍然是核心。
更近期的研究,Self-Harness(Zhang et al. 2026),依赖 LLM Agent 通过“提出-评估-接受”循环来改进它们自己的 harness。
(图片来源:Zhang et al. 2026)
Self-Harness 中的循环包含三个阶段:
-
弱点挖掘:将失败聚类成基于验证者的失败模式。
- 使用当前 harness h_t 在任务上进行评估,并收集执行轨迹用于分析。
- 注意,两次运行可能在错误日志的表面共享相同的验证者结果(例如超时或缺少工件),但具有不同的因果机制。因此,我们需要一个包含丰富信息的失败记录,包括终端验证者级别的原因、相关 Agent 行为的因果状态以及轨迹暴露的抽象 Agent 机制,以揭示根本原因。
-
Harness 提议:基于挖掘的失败模式提出有界的 harness 编辑。
- 在 h_t 下调用相同的模型作为提议者。
- 向模型提供有界的提议上下文:(1) 当前 harness 的可编辑表面,(2) 来自评估系统的基于验证者的失败模式,(3) 应保留的成功行为记录,以及 (4) 先前尝试的编辑摘要。
- Harness 编辑应优先处理可解决的重复错误模式(例如,非任务特定的难度)并且可以通过小范围的修改来解决。
- Harness 编辑候选应具有独特性且多样化。
-
提议验证:验证并合并合格的编辑以创建新的 harness h_{t+1}。
- 候选编辑通过在保留集 D_in(用于测试弱点是否解决)和保持集 D_out(用于检查是否引入了其他未知问题)上的回归测试进行评估。
- 仅当候选编辑在保留集和保持集上都没有回归时,才被接受。
- 接受的候选编辑被合并以更新 harness 为 h_{t+1},而拒绝的候选编辑被记录而不改变活动 harness。
当在 Terminal-Bench-2 上运行 MiniMax M2.5、Qwen3.5-35B-A3B 和 GLM-5 时,Self-Harness 被证明能够学习特定于模型的 harness 指令,这些指令针对不同基础模型的不同弱点,并提高了保持集的通过率。
Self-harness 这类工作确实引起了我的担忧:如果允许程序编辑 OS 系统,抽象边界就会被打破。可编辑表面需要适当设计,权限控制和安全层需要存在于这个循环之外。所有关于奖励破解的挑战仍然存在。
进化搜索
进化搜索是一种受自然选择启发的优化方法(参见我关于进化算法的旧文)。它通过变异解决方案并只保留群体中具有高“适应度”的解决方案来进化解决方案种群。进化搜索在以下情况下很有用:(1) 搜索空间广阔或形状奇特;(2) 难以直接用梯度优化但易于评估解决方案。Harness 搜索似乎很适合这里。
进化搜索在过去的提示工程研究中已被使用。Promptbreeder(Fernando et al. 2023)通过丰富的变异操作优化特定任务的提示,有趣的是,变异提示(即指示 LLM 变异任务提示的指令)本身也通过进化得到改进。GEPA(Agrawal et al. 2025)将基于反思的提示与进化搜索相结合,并利用对试错轨迹的自然语言反思来提出提示更新。
Novikov et al. (2025) 引入了 AlphaEvolve 作为一个编码 Agent 进化搜索系统,该系统存储候选程序池,并冻结 LLM 以生成用于改进的差异。随着系统重复评估子程序并保留成功的程序,它能够及时找到更好的解决方案。
(图片来源:Novikov et al. 2025)
AlphaEvolve 的设计中有几个值得注意的细节:
- 提示包括父程序、结果、指令,有时还包括元信息。
- 编码 Agent 可以访问完整的仓库,但需要改进的代码区域显式地用
# EVOLVE-BLOCK-START和# EVOLVE-BLOCK-END标记。 - 元提示与指令和上下文共同进化,由 LLM 建议,类似于我们进化解决方案程序的方式。
消融实验显示了进化过程、提示中的上下文、元提示、全文件进化以及使用更强 LLM 的价值。
(图片来源:Novikov et al. 2025)
最近的变体如 ThetaEvolve(Wang et al. 2025)将进化搜索与 RL 和上下文学习相结合。另一方面,ShinkaEvolve(Lange et al. 2025)引入了三个新组件来提高 LLM 采样效率:
- 通过设计父代采样以平衡性能排名和后代数量,实现更高效的探索。
- 代码新颖性拒绝采样:基于嵌入的余弦相似度,丢弃与现有群体过于相似的候选。
- 在元草稿纸中识别成功解决方案中的良好模式,以指导未来的变异。
与上述侧重于解决方案改进的方法不同,Darwin Gödel 机器(DGM;Zhang et al. 2025)明确目标是对一个可编辑的 harness 代码仓库进行进化,使用基于 LLM 的编码 Agent。准确地说,该 Agent 被允许修改自己的 harness。随后关于 Hyperagents 的工作(Zhang et al. 2026)引入了一个元 Agent 来控制如何修改现有的任务 Agent 以创建新的 Agent。
- 从池中的一个编码 Agent 开始。
- 在每次迭代中,选择一个父代,其概率与其性能成正比,与其拥有的子代数量成反比,进行修改并分支以产生新的 Agent。
- 选定的父 Agent 检查自己的基准评估日志,然后对其自己的 harness 代码库提出改进,以生成编码 Agent 的新版本。代码编辑通过两个基本工具实现:(1) bash(参数:
<bash_command>)和 (2) 编辑器(参数:view/create/edit <file_path>)。 - 评估新的编码 Agent,只有性能足够高的才被添加回池中。
- 重复步骤 2-4,直到达到某个停止标准。
DGM 是在固定模型下的 harness 进化。在使用 Claude 3.5 Sonnet 作为基础 LLM 和简单的初始 harness 配置的实验中,DGM 发现的 Agent 在 SWE-bench Verified(20% 到 50%)和 Polyglot(14.2% 到 30.7%)上可与手工制作的 Agent 相媲美或超越。
这类方法在候选解决方案可自动评估且候选适应度易于量化时效果很好,例如矩阵乘法、GPU 内核优化、算法竞赛、数据中心调度。它在评估缓慢、模糊或主要基于启发式的领域则难以发挥作用。进化的计算效率和有效性也是问题。
与模型权重的联合优化
Harness 进化会改变模型周围的非参数系统。为了实现完全的自我改进,完全可以同时允许模型更新自身的权重。权重更新可以通过改进模型训练流程或测试时的持续学习来实现。持续学习这个主题值得将来专门写一篇文章。
SIA(Hebbar et al. 2026)是早期尝试在同一优化循环中结合 harness 改进和模型参数更新的工作,其设计包含三个组件:
- 元 Agent:提出初始 harness。
- 任务特定 Agent:执行任务。
- 反馈 Agent:根据最近的轨迹选择是更新 harness 还是模型权重。
(图片来源:Hebbar et al. 2026)
SIA 的实验中有一些令人困惑的选择,使得结果难以解释。例如,任务特定 Agent 比用于元 Agent 和反馈 Agent 的模型弱得多(gpt-oss-120b vs Claude Sonnet 4.6),并且基线太弱,无法干净地与其他相关方法交叉引用。我认为这个方向很有趣,但证据是暂时的。然而,许多挑战,如训练稳定性和 Goodhart 效应,仍然悬而未决。
未来挑战
AI Scientist 系列工作强有力地证明了一个专家设计的 harness 能够协调自动研究循环的很大一部分,并以撰写研究论文的形式进行实验。但论文产出并不等同于科学发现。一个系统可以写出一篇看似合理的稿件,但仍然存在捏造引用、实现偏差或实验结果薄弱等问题。
Trehan & Chopra (2026) 测试了 LLM 能否在最小脚手架和基本工具(即 read_file、write_file、llm_search、list_files)下从一个研究想法走到一篇论文。每个想法都有一个专用工作区,Agent 可以在其中生成和读取文档作为上下文的一部分。他们在三个领域(世界模型、多 Agent RL、AI 安全与对齐)进行了实验,每个领域包含 45-50 个高质量种子文档以激发新想法。只有四个想法被人类专家选中运行完整流程,只有一个完全执行成一篇文章。他们在实验中观察到六种反复出现的失败模式:
- 偏向训练数据默认值:使用旧库、过时命令、标准格式或与实际仓库或数据集不符的假设。
- 执行压力下的实现漂移:当实现变得技术复杂时,模型可能会转向常见的更简单解决方案,而不是所提出的方法。
- 记忆和上下文退化:除非日志被写为持久工件,否则长期项目会丢失关键细节。
- 过度乐观:尽管实验嘈杂或失败,模型仍声明成功,类似于 Bubeck et al. (2025) 观察到的“p-hacking 和 eureka-ing”模式,模型可以在信号仍然是噪声时引入“数值胶带”并宣布胜利。
- 领域智能不足:模型缺乏隐性工艺知识,例如预测实现复杂性、判断实验结果是否合理或知道哪些基线重要。
- 科学品味薄弱:实验可能是可执行的,但未能回答正确的问题。
朝着完全 RSI 的方向,研究人员取得了实际进展,但仍有几个瓶颈。
1. 薄弱和模糊的评估器。 许多研究声明没有快速且精确的验证者,许多现实世界的任务也是如此。当前的自我改进循环在评估指标可衡量且客观的任务上效果最好,类似于强化学习的工作原理。
研究品味、新颖性和长期科学价值更难衡量。例如,研究品味常常混合了问题框架、实验设计以及关于哪些令人惊讶的结果值得追求、哪些失败案例值得重试的判断。
2. 上下文和记忆生命周期。 随着 AI Agent 变得更加自主和独立,记忆会增长。一个有用的 harness 需要管理上下文和记忆,以补充长上下文生成中的现有局限性,同时最大化长周期任务的成功。由于人类能够在整个生命周期中维持记忆,我认为这里存在一个类比:上下文工程将并且应该成为智能的核心部分,而不是停留在软件系统层。
3. 负面结果。 研究人员倾向于发表成功的结果,因此文献偏向于成功。在大量数据(至少目前大部分是人类创建的,开个玩笑)上训练的 LLM 可能不擅长决定何时放弃一个假设、报告负面结果,甚至由于数据中成功与失败案例的不平衡而承认失败。研究 harness 应使失败的尝试易于保存,因为从失败中学习是缩小任务搜索空间的最佳方式。
4. 多样性崩溃。 进化和 RL 循环倾向于利用已知的高回报模式。我们需要机制来防止群体崩溃为同一解决方案的变体。这对于开放式研究尤其关键,因为最佳路径在当前评估器下可能最初看起来更差。
5. 奖励破解。 自我改进循环会优化它收到的任何信号。如果奖励来自单元测试,Agent 可能会过拟合测试;如果奖励来自评判模型,它可能会学习特定于此评判模型的奖励破解技巧;如果奖励来自基准分数,它可能会利用基准工件。
评估器和权限控制很可能应该位于进化 harness 的循环之外,并配合保持集测试、轨迹审计以及在关键决策点上的人工审查——多少监督可以扩大和自动化仍然是一个开放的研究领域。
6. 长期成功。 一个外在的优化循环作用于我们在训练沙盒中可以模拟的、单个展开之外的奖励。
以编码 Agent 为例。编码 Agent 已经提高了软件工程中的日常生产力,但许多优化目标仍然太短期。它通常可以完成手头的任务,但不太明显的是,它应该如何保护由数百或数千名工程师共同维护的仓库的长期健康。标准的基于沙盒的 RLVR 式训练很少能捕捉到可维护性、所有权边界、迁移成本、向后兼容性或未来的调试负担。
7. 人类的角色。 人类应该向上移动堆栈,而不是从循环中被移除,这意味着人类应该在正确的时间、正确的抽象级别提供监督,我们的系统设计应该考虑何时以及如何设置这样的接触点。
上面列出的许多挑战需要人类的反馈和引导。毕竟,我们是在为人类更美好的未来而构建技术,而不是相反。
引用
请引用本文为:
Weng, Lilian. “Harness Engineering for Self-Improvement”. Lil’Log (Jul 2026). https://lilianweng.github.io/posts/2026-07-04-harness/
或使用 BibTeX 引用:
@article{weng2026harness,
title = {Harness Engineering for Self-Improvement},
author = {Weng, Lilian},
journal = {lilianweng.github.io},
year = {2026},
month = {July},
url = "https://lilianweng.github.io/posts/2026-07-04-harness/"
}
附录:一些有用的基准
-
PaperBench:从零开始复现 20 篇 ICML 2024 Spotlight 和 Oral 论文,包括理解论文贡献、开发代码库并成功执行实验。
- 每个复现任务被分解为更小的、可单独评分的子任务。
- 总共 8,316 条评分细则,与论文作者共同开发。
- 当时最好的模型(
Claude 3.5 Sonnet,约 21%)没有超越机器学习博士生。 - 包括 PaperBench、PaperBench Code-Dev(更轻量版本)和 JudgeEval。
-
CORE-Bench:评估已发表研究的计算可复现性。
- 基于计算机科学、社会科学和医学领域的 90 篇科学论文的 270 个任务。
- 任务涉及从提供的代码和数据中复现结果。
- 包括多个难度级别以及纯语言和视觉-语言任务。
- 当时最好的报告 Agent(
GPT-4o和GPT-4o-mini)在最难任务上仅达到 21% 的准确率。
-
ScienceAgentBench:评估 LLM Agent 在数据驱动的科学发现方面的能力。
- 从四个学科(数学、化学、生物学、地理学)的 44 篇同行评议出版物中提取 102 个任务。
- 涵盖这些领域的基础数据科学任务:数据处理、模型开发、数据分析和信息可视化。
-
RE-Bench:评估前沿 AI Agent 在逼真的机器学习研究工程环境中与人类专家的对比。
- 7 个具有挑战性、开放式的机器学习研究工程环境。
- 每个环境 =(评分函数、起始解决方案、参考解决方案);每个环境可在 8 块或更少的 H100 GPU 上运行。
- 示例:优化内核、运行标度律实验、修复嵌入、微调 GPT-2 用于问答等。
- 包括来自 61 位不同人类专家的 71 次 8 小时尝试的数据。
- 人类专家在 82% 的 8 小时尝试中获得了非零分数;24% 达到或超过了强参考解决方案。
- 最佳 AI Agent 在 2 小时预算下得分是人类专家的 4 倍,但人类专家在更长的预算下回报更好,并在 8 小时和 32 小时设置下超过了 Agent。
-
MLE-bench:评估机器学习工程 Agent 在离线 Kaggle 竞赛中的表现。
- 包含从 Kaggle 策划的 75 个机器学习工程竞赛。
- 测试训练模型、准备数据集、运行实验以及向评分脚本提交预测的能力。
- 使用 Kaggle 公共排行榜作为人类基线。
- 论文中最佳设置,
o1-preview搭配 AIDE 支架,在 16.9% 的竞赛中至少达到了 Kaggle 铜牌水平。 - 包括资源缩放和污染分析。
-
KernelBench:评估生成的 GPU 内核的正确性和速度。
- 250 个 PyTorch 任务,评估 LLM 能否编写快速且正确的内核。
- 评估指标 fast_p = 生成的内核中正确且比基线快的百分比。
参考文献
[1] Good, I. J. “Speculations Concerning the First Ultraintelligent Machine.” Advances in Computers, 6:31–88, 1965.
[2] Yudkowsky, Eliezer. “Recursive Self-Improvement.” LessWrong, 2008.
[3] Choi, et al. “Anchored Self-Play for Code Repair.” ICML 2026.
[4] Zhao, et al. “Absolute Zero: Reinforced Self-play Reasoning with Zero Data.” arXiv preprint arXiv:2505.03335, 2025.
[5] Yuan, et al. “Self-Rewarding Language Models.” arXiv preprint arXiv:2401.10020, 2024.
[6] Chen, et al. “Self-Play Fine-Tuning Converts Weak Language Models to Strong Language Models.” ICML 2024.
[7] Zhang, et al. “Agentic Context Engineering: Evolving Contexts for Self-Improving Language Models.” ICLR 2026.
[8] Ye, et al. “Meta Context Engineering via Agentic Skill Evolution.” arXiv preprint arXiv:2601.21557, 2026.
[9] Lee, et al. “Meta-Harness: End-to-End Optimization of Model Harnesses.” arXiv preprint arXiv:2603.28052, 2026.
[10] Lu, et al. “Towards end-to-end automation of AI research.” Nature, 651:914–919, 2026.
[11] Meng, et al. “ScientistOne: Towards Human-Level Autonomous Research via Chain-of-Evidence.” arXiv preprint arXiv:2605.26340, 2026.
[12] Kulikov, et al. “Autodata: An agentic data scientist to create high quality synthetic data.” arXiv preprint arXiv:2606.25996, 2026.
[13] Hu, Lu, and Clune. “Automated Design of Agentic Systems.” ICLR 2025.
[14] Madaan, et al. “Self-Refine: Iterative Refinement with Self-Feedback.” NeurIPS 2023.
[15] Zhang, et al. “AFlow: Automating Agentic Workflow Generation.” ICLR 2025.
[16] Zelikman, et al. “Self-Taught Optimizer (STOP): Recursively Self-Improving Code Generation.” COLM 2024.
[17] Zhang, et al. “Self-Harness: Harnesses That Improve Themselves.” arXiv preprint arXiv:2606.09498, 2026.
[18] Fernando, et al. “Promptbreeder: Self-Referential Self-Improvement Via Prompt Evolution.” arXiv preprint arXiv:2309.16797, 2023.
[19] Agrawal, A. et al. “GEPA: Reflective Prompt Evolution Can Outperform Reinforcement Learning.” arXiv preprint arXiv:2507.19457, 2025.
[20] Novikov, et al. “AlphaEvolve: A coding agent for scientific and algorithmic discovery.” arXiv preprint arXiv:2506.13131, 2025.
[21] Lange, Imajuku, and Cetin. “ShinkaEvolve: Towards Open-Ended And Sample-Efficient Program Evolution.” arXiv preprint arXiv:2509.19349, 2025.
[22] Wang, et al. “ThetaEvolve: Test-time Learning on Open Problems.” arXiv preprint arXiv:2511.23473, 2025.
[23] Zhang, et al. “Darwin Gödel Machine: Open-Ended Evolution of Self-Improving Agents.” arXiv preprint arXiv:2505.22954, 2025.
[24] Zhang, et al. “Hyperagents.” arXiv preprint arXiv:2603.19461, 2026.
[25] Yuksekgonul, et al. “Learning to Discover at Test Time.” arXiv preprint arXiv:2601.16175, 2026.
[26] Riaz, et al. “Epistemic Uncertainty for Test-Time Discovery.” arXiv preprint arXiv:2605.11328, 2026.
[27] Hebbar, et al. “SIA: Self Improving AI with Harness & Weight Updates.” arXiv preprint arXiv:2605.27276, 2026.
[28] Trehan and Chopra. “Why LLMs Aren’t Scientists Yet: Lessons from Four Autonomous Research Attempts.” arXiv preprint arXiv:2601.03315, 2026.
[29] Bubeck, et al. “Early science acceleration experiments with GPT-5.” arXiv preprint arXiv:2511.16072, 2025.
[30] Starace, et al. “PaperBench: Evaluating AI’s Ability to Replicate AI Research.” ICML 2025.
[31] Wijk, et al. “RE-Bench: Evaluating frontier AI R&D capabilities of language model agents against human experts.” ICML 2025.
[32] Chan, et al. “MLE-bench: Evaluating Machine Learning Agents on Machine Learning Engineering.” arXiv preprint arXiv:2410.07095, 2024.
[33] Chen, et al. “ScienceAgentBench: Toward Rigorous Assessment of Language Agents for Data-Driven Scientific Discovery.” ICLR 2025.
[34] Siegel, et al. “CORE-Bench: Fostering the Credibility of Published Research Through a Computational Reproducibility Agent Benchmark.” TMLR 2024.
[35] Ouyang, et al. “KernelBench: Can LLMs Write Efficient GPU Kernels?” arXiv preprint arXiv:2502.10517, 2025.
- 原文链接: lilianweng.github.io/pos...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~