Agent Harness 与 AI 自我改进的讨论(三):递归机制篇 ——读 Lilian Weng《Harness Engineering for Self-Improvement》

这是「Agent Harness 与 AI 自我改进」系列的第三篇。如果希望先了解前序讨论,可先回顾系列第一篇与系列第二篇;本文将在此基础上转向递归机制,讨论 Harness 如何开始参与生成自己的下一版本。
上一篇讨论了自我改进怎样从 Harness 的一些基础机制开始,例如上下文工程和工作流。文章最后也留下了一个问题,系统的基础架构仍然由开发者事先规定,例如怎样分析轨迹、生成候选、比较结果,并且改进的对象和范围也比较有限。也就是说,虽然Agent Harness有自我改进的部分,但基本上还是稍微放宽了限制的开发者主导的 Harness 自我改进。
分析到这,我们发现一个问题,改进的发起者是开发者还是 Agent Harness 本身。Lilian Weng的博客主要讨论的 RSI(Recursive Self-Improvement,递归自我改进),对于Harness的改进对象来说,“递归”和“自我”应该能体现在通过 Harness 的表现来改进 Harness 整体的架构。这种方法已经有先例了。2023 年提出的 Self-Taught Optimizer(STOP)已经尝试过在以代码为基础的Harness架构上,创建一个“改进器”,改进自己的代码。
近几年的工作将这层关系逐渐放进完整的Agent Harness系统。Self-Harness 研究当前 Harness 怎样参与产生自己的下一版本;Darwin Gödel Machine(DGM)让多个智能体版本沿不同路径继续演化;SIA 又把 Harness 和模型权重放进同一个更新循环。沿着这条路径追下去,递归表现为一组逐层进入改进循环的系统关系。
从直观上说,让智能体修改自身 Harness,首先要知道系统究竟哪里需要改进,然后再做针对性改进。相同的错误表现,背后可能是完全不同的失败原因。以终端任务中的超时为例,验证器最终记录的都是 timeout,可事实上智能体可能是在反复执行已经报错的命令,也可能一直在浏览文件而迟迟没有开始实现,还可能在工具调用失败后找不到恢复路径。如果只根据 timeout 这类最终结果生成补丁,不同行为问题很容易被混在一起。我们自然想到,系统需要继续分析执行轨迹,找到导致失败的具体行为,再判断哪一部分 Harness 可以进行干预。只有改进对象从最终错误落到具体的失败机制上,后面的修改才可能具有针对性。
2026 年 6 月,上海人工智能实验室研究团队发表了论文《Self-Harness: Harnesses That Improve Themselves》,把这套思路做成了一套可以反复运行的 Harness 改进方法。论文想要验证,固定模型能否根据自己在当前 Harness 下的表现修改 Harness,并让修改后的版本继续影响自己。

Self-Harness 的第一步叫作弱点挖掘。系统先让模型在当前 Harness 下完成一批任务,收集失败轨迹和验证器结果,再为每次失败生成一份失败特征(failure signature)。这份记录会说明验证器拒绝了什么结果、智能体的哪些行为造成了失败,以及背后反映出什么问题。如果几次失败可以通过同一处 Harness 修改来改善,系统就把它们归到一组,并不要求这些轨迹在语义上相似。这样一来,同样表现为超时或缺少产物的任务,也可以按照各自的原因分开处理。
完成归类后,模型会换一个角色,开始提出 Harness 修改方案。这里使用的仍是刚才执行任务的同一个固定模型。它先查看允许修改的部分、整理出的失败模式和需要保留的成功做法,也会参考此前尝试过的方案。随后,模型给出几组范围较小、彼此不同的候选。系统只处理那些反复出现、又可以通过 Harness 干预的问题。任务本身过难或模型能力不足等情况,不会被强行转化成一条 Harness 补丁。
候选方案生成以后,Self-Harness 会分别在已知任务集和留出任务集上重新评测。前者检查修改是否解决了已经发现的问题,后者检查它是否破坏了其他能力。一项修改只有在至少改善一组任务、又不让另一组退步时,才会被接受。多项互不冲突的修改会合并成新的 Harness,成为下一轮运行和改进的起点。
论文在 Terminal-Bench 2.0 上测试了三个固定模型,分别是 MiniMax M2.5、Qwen3.5-35B-A3B 和 GLM-5。经过 Self-Harness 改进,三者在留出任务上的通过率都得到提升,绝对增幅为 14.2 至 21.4 个百分点。三个模型最终保留下来的修改也有明显差异。MiniMax 更需要及早创建产物并终止无效的工具循环;Qwen 的修改主要是提前检查依赖,避免反复执行失败命令;GLM 则需要保留环境设置,更快地从探索进入实现和测试。这些差异正好回应了开头的问题。表面相似的错误,最后需要沿着不同原因来修改 Harness。
Self-Harness 所说的“自我改进”,就体现在这里。执行任务的大模型会回过头分析自己先前的规划和操作,参与改进 Harness。新的 Harness 又会反过来约束它之后的运行。
这种自我改进仍然有明确的范围。基础模型、任务集合、验证器、允许修改的部分和候选接受规则都由外部规定。系统只能针对已经暴露的问题,在开发者划定的范围内修改 Harness。
Self-Harness 会把通过评测的修改合入 Harness,作为下一轮的起点,整个过程沿着一条版本链继续推进。这其实是遵从了仅保留局部最优的规则,并不去探索在当前步骤并非最优的修改。每次都选取局部最优的算法有点像贪心算法,贪心算法有些时候能得到全局最优,而一般情况下全局最优并非局部最优的积累。如果系统希望保留更多可能性,就需要另一种保存和选择历史版本的方法。
我们继续看同时考虑多条优化路径的情况。每次改进如果只选择一个方案,那就会形成一个类似链表的结构,而当我们同时考虑多条路径时,每一轮改进就会形成树形结构,搜索全局最优的过程就会在树或图中进行。Lilian Weng 用进化搜索来概括这类方法。进化搜索会同时保存一组候选方案,从中选择父版本,通过修改产生新的候选,再根据评测结果决定后续从哪些版本继续探索。它不能保证找到全局最优,主要作用是避免搜索过早收敛到一条路径。
2025 年发表的论文《Darwin Gödel Machine: Open-Ended Evolution of Self-Improving Agents》提出了 Darwin Gödel Machine(DGM)。DGM 用一个存档同时保留多个能够修改自身代码的 Coding Agent。每轮开始时,系统从中选出一个父版本。这个智能体读取自己的评测日志,决定下一步要增加什么功能,再修改代码,生成一个子版本。子版本只要能够正常运行、保留代码编辑能力并完成基准评测,就可以进入存档。
这样积累下来的版本会形成一棵不断分支的树。一个早期版本可以产生几个方向不同的后代,得分较低的分支也不会立刻被删除。DGM 选择父版本时会同时考虑性能和它已经产生了多少个子节点,让成绩较好的路线获得更多机会,也让探索较少的版本有机会继续演化。
DGM 把那些为后续改进提供条件的中间版本称为 stepping stones。论文展示的最佳版本谱系中,两次阶段性下降之后都出现了新的提升。消融实验也给出了相似证据。系统如果总是让最新版本继续修改自己,在 SWE-bench 上进展很小;允许存档中的不同版本重新成为父节点后,才找到了表现更好的 Coding Agent。存档的价值就在这里。有些改动在一次评测中还看不出作用,进入存档后仍有机会与后面的改动组合起来。
DGM 还有一层更直接的递归关系。Coding Agent 改进的是自己的代码库,它在任务中获得的代码理解和编辑能力,也会用于下一轮自我修改。演化过程中,系统自动加入了更合适的代码编辑工具、长上下文管理和同行评审等机制。DGM 在 SWE-bench 上的成绩从 20.0% 提高到 50.0%,在 Polyglot 上从 14.2% 提高到 30.7%。论文还设置了一组对照,始终让同一个基础智能体生成新版本,结果低于完整 DGM。这说明,让改进后的智能体继续负责修改,与更好的最终结果有关。
这层反馈目前主要在编码任务中得到验证。代码任务需要理解和修改代码,智能体修改自己时也在做相近的工作,任务能力与自我修改能力在这里有较大重合。法律分析、科学研究或企业流程中的任务能力,与修改自身运行机制未必有同样紧密的关系。DGM 也没有改动更高层的演化规则。存档怎样维护、父版本怎样选择、什么样的子版本可以留下来,仍然由开发者预先规定。
我们在前面讨论的所有自我改进的方法都在模型外围的Agent Harness,模型权重保持不变。修改提示词、工具、记忆和工作流,可以帮助模型更充分地使用已有能力,却不能保证模型获得原本缺少的领域知识,或形成新的内部策略。Harness 改进逐渐停滞时,继续增加外部规则未必还能解决问题,把模型权重也纳入改进范围也算是一种解决办法。
2026 年 5 月发表的论文《SIA: Self Improving AI with Harness & Weight Updates》把 Harness 更新和模型权重更新放进了同一个系统。任务智能体先在当前 Harness 下完成任务,留下执行轨迹和奖励。Feedback-Agent 读取这些结果,再决定下一步改什么。它可以调整任务提示词、工具调度、重试和搜索过程,也可以暂时固定 Harness,选择一种强化学习方法来更新任务模型的 LoRA 权重。更新完成后,任务智能体重新执行,产生下一轮数据。

两种更新会互相影响。Harness 决定模型怎样探索环境、调用工具,以及留下什么样的训练轨迹,权重更新又会改变模型的行为。原来合适的运行规则可能随之暴露出新问题,模型也可能表现出 Harness 还没有利用的新能力。在论文的三项实验中,系统都先修改 Harness,在收益停滞后再更新模型权重。以 LawBench 为例,Harness 更新把准确率从 13.5% 提高到 50.0%,权重更新随后将其推到 70.1%。三个任务的联合更新结果都超过了只修改 Harness 的最好成绩。
SIA 中的“自我改进”与前两项研究不完全一样。执行任务的是 gpt-oss-120b 及其更新后的 LoRA 权重。系统另外使用 Claude Sonnet 4.6 作为 Meta-Agent 和 Feedback-Agent,负责初始化 Harness、选择更新动作。任务模型是被改进的一方,另一个固定模型负责决定这次应该修改 Harness,还是更新权重。SIA 展示了整个系统怎样同时改进 Harness 和模型权重,任务模型本身还不会选择改进自己的方式。
Feedback-Agent 的选择方法也没有随着结果继续改进。它会读取当前轨迹,判断收益是否停滞,再选择下一种更新动作。系统不会用历次选择的结果继续训练它的决策能力。论文把这一步留给了后续研究。到这里,系统可以修改 Harness,也可以修改任务模型,决定何时改哪一层的机制仍然固定。
把三项研究连起来看,递归确实在逐步进入 Agent Harness。Self-Harness 让执行任务的模型参与修改下一版本 Harness;DGM 保存多条版本路线,让改进后的智能体继续修改自己;SIA 又把模型权重纳入系统,使 Harness 与模型可以根据运行结果交替更新。被放进改进循环的部分越来越多。
被放进循环的部分越来越多,循环之外也始终存在由开发者固定的机制。Self-Harness 依赖外部规定的验证器和候选接受规则,DGM 不能修改存档与父版本选择方法,SIA 的 Feedback-Agent 也不会从历次选择中继续学习。系统已经可以修改越来越多的组成部分,却仍由外部决定什么算作进步、哪些路径值得继续,以及多大范围的修改可以发生。
到这里,Lilian Weng 博客中关于 Harness 优化方式的主要研究已经讨论完。下一篇将转向剩下的 Future Challenges,讨论这类自我改进为什么还难以长期持续。评价偏差可能让系统越改越偏,失败经验和不同分支可能在反复选择中消失,短期成绩也未必代表长期收益。与此同时,权限、安全和人的控制边界还需要留在改进循环之外。这些问题共同决定了递归式自我改进能够走多远。
参考文献
Lilian Weng, “Harness Engineering for Self-Improvement”, 2026.
2.Hangfan Zhang et al., “Self-Harness: Harnesses That Improve Themselves”, 2026.
3.Jenny Zhang et al., “Darwin Gödel Machine: Open-Ended Evolution of Self-Improving Agents”, 2025.
4.Prannay Hebbar et al., “SIA: Self Improving AI with Harness & Weight Updates”, 2026.
5.Eric Zelikman et al., “Self-Taught Optimizer (STOP): Recursively Self-Improving Code Generation”, 2023.








