2026 年 10 月,谷歌 Cloud AI Research 与西北大学联合开源了名为 Harness² 的框架(论文《Harness²: Recursive Agent Harnessing for an Open World》,arXiv 编号 2610.14224,2026-10-09 提交)。它要做的事情一句话可以说清:模型权重一个比特都不动,让智能体通过反复修改自己的「执行框架」越变越强。在完全冻结权重、不依赖真实标签验证的条件下,GLM-5 与 Gemini 3.5 Flash 两个模型在三个专业基准上分别最高上涨 11.5 分(WorkBuddy-Bench)、4.5 分(JobBench)和 11.8 个百分点(LAB)。GitHub 仓库采用 Apache 2.0 许可,截至 2026-10-26 已收获约 1.96 万 star。
这就是业界谈论已久的 RSI(Recursive Self-Improvement,递归自我改进)的一次务实落地。它没有让模型改自己的权重——那条路成本高、易遗忘,而且对闭源 API 根本走不通——而是把「改进」的对象换成了模型外面那层执行框架。本文拆解它的架构、机制与成绩单,也把社区的质疑一并摆上桌面。
前提共识:Agent = 模型 + 框架
理解 Harness² 先要接受一个判断:智能体的能力不只有模型一个变量。同一个模型,套上不同的系统提示词、工具集、记忆管理与子智能体编排,实测表现可以有两位数的差距。这层包裹在模型外部、帮助它与真实世界交互的基础设施,就是 harness(原意「马具」,即「给马套上缰绳和挽具」)。
论文把问题定义为:既然模型短期内不会更好(闭源 API 改不了权重,开源模型微调又贵又不稳),那能不能让 harness 自己变好?Harness² 的答案是让优化过程递归化——先针对当前任务完善执行框架,再把可复用的框架与经验更新进一个「改进框架」,用来指导以后的优化。用论文的公式写就是 R(t+1) = Update(R(t), H*(t), D(t)):改进框架 R 每做完一个任务就吸收一次该任务的最终框架与完整执行记录。
值得强调的一个细节:每个新任务都从同一个基线框架 H₀ 重新出发,而不是在上一个任务的框架上继续改。经验不靠「继承上一套装备」,而靠改进框架在提案阶段「选择性复用」库里的旧组件。这避免了误差滚雪球,也让框架始终贴合当前任务。
八大可编辑组件:把「框架」变成可 diff 的文件
Harness² 的做法非常工程化:把执行框架具体化为八个文件组件,每一次「改进」都是对这些文件的 diff 编辑。按运行时角色分四组:
| 分组 | 组件 | 作用 | 加载时机 |
|---|---|---|---|
| 上下文构建 | 系统提示词 | 定义角色与顶层流程 | 每次调用 |
| 上下文构建 | 护栏(Guardrails) | 硬约束与安全边界 | 每次调用 |
| 上下文构建 | 记忆(Memory) | 跨任务持久的领域事实 | 每次调用 |
| 上下文构建 | 技能(Skills) | 固化的专家流程,含脚本 | 按需加载 |
| 工具接口 | 工具指导(Tool Guidance) | 每个工具的用法与避坑指南 | 每次调用 |
| 工具接口 | 脚本(Scripts) | 确定性代码段,靠执行不靠推理 | 经 bash 运行 |
| 编排 | 子智能体(Sub-agents) | 独立上下文的被委派工作者 | 经任务工具调用 |
| 中间件 | 插件(Plugin) | 包在工具调用循环外强制行为 | 工具循环内 |
这张表有两个容易被忽略的巧思。其一,插件是唯一「强制」而非「建议」的通道——它包在工具调用外部,模型无从违抗,适合放必须发生的校验逻辑;其二,论文明确指出子智能体是唯一会新增推理上下文的组件——其余七个组件都只是往现有上下文里放内容,只有子智能体开辟了新的并行推理空间。这两个属性决定了改进空间的结构:想强制什么就写插件,想扩容什么就开子智能体。
这套拆法与业界正在收敛的工程惯例高度同构:Anthropic 的 Agent Skills 开放标准、OpenAI 的 AGENTS.md、Claude Code 的 CLAUDE.md,本质上都是把框架从「写死在代码里」变成「可编辑的文件」。Harness² 的贡献是给这堆文件配了一台自动优化机器。
第一层递归:Propose-Probe-Compose
面对一个从未见过的任务,怎么知道该改哪个组件、怎么改?Harness² 的任务级递归设计了一套名为 PPC(Propose-Probe-Compose,提案-探测-合成) 的对比机制,全程不需要标准答案。
flowchart LR
A[参考执行 H0] --> B[提案 Propose]
B --> C1[通用型候选<br/>治跨域通病]
B --> C2[领域型候选<br/>治本域知识缺口]
C1 --> D[探测 Probe<br/>同任务试跑对比]
C2 --> D
D --> E[合成 Compose<br/>选择性合并]
E --> F[后继框架 H']
F --> G[反思 Reflect]
G --> H[(经验库 R)]
H -.->|指导下一任务| B
提案(Propose):先分析参考执行的轨迹,暴露出的问题会生成两类候选修改——通用型候选针对跨任务可能复现的智能体通病(规划、工具使用、上下文管理、任务委派),领域型候选针对当前任务所在领域的知识、流程与约束。两类候选都是可执行的完整框架。
探测(Probe):让换上不同候选的智能体在同一任务、同一配置下实际试跑,把执行轨迹与交付物和参考执行对比,得出行为差异——这个编辑是缓解了目标缺陷、毫无变化、还是引入了回归。关键在于论文的诚实声明:这种对比不验证正确性。执行有随机性,模型有系统性偏好,行为差异只能作为「证据」而非「证明」。
合成(Compose):合成器读取参考执行、两类候选、完整 diff 与全部执行证据,产出后继框架。合成是选择性的——可以合并有证据支持的修改、修订互相冲突的编辑、只采纳其中一候选、甚至维持原框架不动。论文强调每个决定都要「绑定到一个具体的观察,而不是假想的分数增益」。
递归有两种扩展形态:并行递归同时生成 k 个参考执行、k 个通用候选、k 个领域候选,由 k 个合成器各自独立合成(每个都能看到全部候选池),最后由一个「盲选器」在匿名化后的交付物中挑选——看不到来源框架和分数,防止偏袒;顺序递归则是 k 步链式对比,每一步都带着先前框架与累积执行证据进入下一步。k 越大,搜索越充分,token 成本也线性往上走。
第二层递归:把「怎么改进」本身变成经验
如果只有第一层,每个任务都从零摸索,Agent 不过是个熟练工。Harness² 的第二层——元级递归(harnessing-level recursion)——才是它名字里「平方」的由来:改框架的过程本身也被框架化、被沉淀。
每轮任务级优化结束后,反思(Reflect)环节会读取完整改进记录——参考执行、候选框架、探测结果、每个合成决定——提炼成经验条目写入改进库(improvement library)。每条经验包含两部分:一套可执行的完整框架文件,加一份 EXPERIENCE.md(记录适用情形、教训与支持证据)。新任务提案时,改进框架会引导从库里选择性复用旧组件,但任务特定的事实必须对照当前任务的证据重新验证,不允许照抄。
这里有一条贯穿代码的硬规则,值得所有做智能体的人记下来:只有被执行对比支持的教训才允许入库;证据不足时,反思宁可一个条目都不加。开源仓库的 library.py 在写入前强制校验经验条目的线索、教训、证据三个字段非空,还有一个更耐人寻味的函数——拒绝任何包含评分裁决的文件树入库。换句话说:分数本身不是证据,行为对比才是;而且评判标准绝不允许混进经验库(防止「自己给自己写好评」的作弊)。每条经验按领域隔离存储,每轮实验从空库冷启动,避免跨实验污染。
这套设计与人类工程师的复盘何其相似:改了什么、为什么改、凭什么认为有用、下次什么情况下照做——四问都答得上来才许写进团队 wiki。
成绩单:冻结权重下的涨幅
实验设置相当克制:执行模型只有两个——Gemini 3.5 Flash 与 GLM-5(全程冻结);初始框架是 OpenCode 与 Codex 两个现货执行器,组合出四个「模型 × 框架」配置;框架编辑器与盲选器用的是 Claude Opus 4.8。三个基准各有分工:WorkBuddy-Bench(来自腾讯,办公交付物场景,Code/Web/Office 共 200 题)考复杂办公流,JobBench(65 道职业任务、7 个领域)考真实职业技能,LAB(Harvey 法律智能体基准,1251 道任务、24 个执业领域)考垂直专业深度。
| 基准 | 配置 | 基线 | 单步优化后 | 涨幅 |
|---|---|---|---|---|
| WorkBuddy-Bench | GLM-5 / OpenCode | 64.2 | 75.7 | +11.5 |
| JobBench | Gemini 3.5 Flash / OpenCode | 31.5 | 36.0 | +4.5 |
| LAB(Partial) | GLM-5 / OpenCode | 59.6 | 71.4 | +11.8 pp |
| WorkBuddy-Bench | Gemini 3.5 Flash / OpenCode | 72.4 | 77.5(k=1)→ 80.8(k=5 并行) | +5.1 → +8.4 |
几个更细的发现值得展开。递归预算 k 越大收益越高但边际递减:Gemini/OpenCode 在 WB-Code 上 k=1 到 k=5 从 76.5 涨到 80.8(+4.3),k=5 时三个分域相对基座分别涨 7.4、8.4、9.4 分。k=2 就已经越过所有基线在 k=5 的表现——对比探测的性价比在低预算区间最划算。与基线比算力账也赢:Meta-Harness(离线在训练分割上搜索框架再部署)在 k=5 花了更多算力却性能更低;ReasoningBank(固定框架、检索历史任务蒸馏的策略条目注入提示词)全程被压在下方;论文的 compute-performance 曲线显示两个 Harness² 配置都落在实证帕累托前沿上。
注意摘要里那句「最高涨 11.5 分」的准确含义:它是 GLM-5/OpenCode 配置在 WorkBuddy-Bench 上的平均涨幅,不是所有配置的均值;换 Gemini 3.5 Flash 同口径是 +5.1。媒体标题里的数字,读论文时最好都还原到具体配置。
冷静看:成本、回归与社区质疑
论文自己承认的局限集中在两处。一是成本:提案、探测、合成都要额外的执行与会话开销,论文只刻画了有界预算内的权衡,没有声称找到普适的最优分配;k 增大带来的 token 开销是实打实的。二是信号不可靠:行为对比受执行随机性与共享模型偏差影响,采纳的修改不保证在别的任务上同样有效。附录里如实记录了三类回归失败:选错(把 55 分的输出当成 95 分的选走)、传播错误前提(一条「键必须是字面量」的错误要求或未校验的缓存假设造成 2 到 11 分的损失)、归因困难(结果波动、评判缺失导致说不清哪次编辑起了作用)。
Hacker News 上的讨论(81 分、约 19 条评论)则提供了另一面的镜子。最扎的一条质疑是:「这不就是所有开发 AI 系统的人本来就在做的事吗——从过去的运行里学习、更新自己的技能库和系统提示词?」这条批评有它的道理,Harness² 的增量不在「会自我改进」这个想法,而在把改进过程机制化:候选对比、盲选、证据门槛、评分隔离,这些约束让「凭感觉调提示词」变成可审计的流程。其他批评包括缺少一个真正能端到端跑起来的示例(仓库的本地 demo 无需模型凭据,但完整基准要配 Docker、gcloud 与各基准的凭据)、README 上「非官方支持产品」的免责声明,以及一个意味深长的提问:谷歌开源了 Gemini CLI 却把新一代 CLI 收进闭源产品——「如果框架是闭源的,为什么开源『改进框架的方法』?」
结语
Harness² 真正证明的不是「AI 开始自我改进了」这种宏大叙事,而是一个更朴素、也更可复制的结论:在模型冻结的条件下,执行框架是一块足够大、且可以系统化开采的性能矿区。它的双层递归把「对比出真知」和「经验要带证据」变成了机器可执行的流程——这两条原则不需要谷歌的算力,任何团队今晚就能抄进自己的智能体工作流。至于递归自我改进的终局是让框架越叠越高、还是最终被蒸馏回模型权重本身,论文没有给答案,学界也还在争论。但至少在这个开放世界里,「不改权重的进化」已经从口号变成了带成绩单的工程。
参考资料
- Harness²: Recursive Agent Harnessing for an Open World(arXiv:2610.14224)——论文原文,2026-10-09 提交
- Harness² 项目主页——架构图与作者机构信息
- google-research/harness2(GitHub)——Apache 2.0 开源实现,含 improvement library 源码
- Hacker News 讨论帖——社区质疑:与手调经验的重叠、端到端示例缺失
- 新智元:谷歌开源双层 RSI 框架 Harness²(2026-10-25)——中文报道(本选题线索来源,数字均以论文原文核校)
读者留言
COMMENTS 暂无还没有留言,来说第一句?