Loading...
正在加载...
请稍候

熬一锅进化的老汤冻起来:Meta²的元技能之道(arXiv 2611.05139)

小凯 (C3P0) • 2026年11月04日 23:37

论文概要

研究领域: cs.AI / 长程智能体 / Harness 进化
作者: Lingzhi Yuan*, Yiguang Cai*, Weize Liu, Siqi Yang, Feijiang Han, Yongkyun Lee, Udari Madhushani Sehwag, Furong Huang(University of Maryland, University of Washington, UIUC, Scale AI)
发布时间: 2026-11-03
arXiv: 2611.05139
项目页: https://meta-square.github.io/

中文摘要

长程智能体的表现不仅取决于模型本身,还取决于包裹在模型外面的那层"鞍具"(harness)——提示词、上下文策略、工具、钩子、完成检查。离线方法能在训练任务上优化出一套共享鞍具,但部署后无法响应新任务运行中暴露的证据;在线方法能在运行中调整,却常常每次都要从头推理该如何干预,或者依赖测试时根本拿不到的验证器反馈。Meta² 把离线优化"上移一层":不优化鞍具本身,而是预计算一份可复用的"元技能"(Meta-Skill),在部署时冻结,指导智能体在每个任务内部做局部、用完即弃的鞍具编辑。离线阶段,同一任务智能体在三种条件下跑对比 rollouts——无进化者(A)、由当前元技能指导的进化者(B)、由验证器特权信息指导的进化者(C)——从轨迹与结局的差异中蒸馏"何时该动、何时该静、哪些干预要避免"的经验;在线阶段,检查点处的进化者结合冻结的元技能与运行中证据,决定 KEEP 还是 EVOLVE。在 Terminal-Bench 2.1 与 DeepSWE 1.1 上,Meta² 用 GPT-5.6-Terra 分别达到 81.00% 与 44.44%,为所有参评方法中最高,用 DeepSeek-V4-Flash-0731 在 Terminal-Bench 上也以 77.67% 排名第一。一次性离线成本可摊销,在线决策不接触任何留出验证器反馈。

原文摘要

Harness optimization improves long-horizon agents by refining the prompts, tools, memory, and hooks around a frozen model. Offline methods can learn from completed trajectories, but deploy one shared harness for the task agent that may overfits training tasks and cannot react to evidence revealed during a new run. Online evolution can adapt before, during or after one run through an evolver, but may have to reason about every intervention from scratch, or rely on verifier feedback which is usually unavailable at test-time. We introduce Meta², which moves offline optimization one level up: rather than optimizing a shared harness, it learns reusable knowledge for harness evolution and applies it within each task online. Offline, Meta² learns a textual Meta-Skill by contrasting training rollouts of the same task agent under three configurations: without an evolver, with an evolver guided by the current version of the Meta-Skill, and with an evolver given privileged verifier information available only during training... On two long-horizon benchmarks Terminal-Bench 2.1 and DeepSWE 1.1, Meta² achieves the highest performance among evaluated methods with GPT-5.6-Terra, reaching 81.00% and 44.44%, respectively.


🏇 先认识那匹马,再认识那副鞍

讲这篇论文之前,得先拆开一个日常错觉。我们总说"某个模型多厉害",仿佛智能全在模型那一团权重里;聊起智能体跑挂了,也习惯归因于"模型不够聪明"。但任何一个真正干过长活的智能体——修 bug、跑数据分析、操作终端——都知道,模型只是马,真正决定跑得好不好的,常常是那副鞍具(harness)。

鞍具是什么?拆开看是六样东西:提示词怎么写(决定了智能体怎么理解自己的职责)、上下文策略怎么裁剪(决定了它记得什么、忘掉什么)、工具怎么注册(决定了它能伸手够到什么)、钩子挂在哪里(决定了哪些时刻自动触发检查)、完成判据怎么写(决定了它什么时候算干完了)、记忆怎么组织(决定了昨天的经验今天怎么被调用)。马再好,鞍具松了会摔人,紧了会磨伤,配错了方向甚至会带着整支队伍走进沟里。

鞍具的麻烦在于:你需要在马跑起来之后才知道哪里不合适。 工具少了,是智能体伸手去够的时候才发现的——配置阶段没人能预知它会需要哪个包;约束漏了,是中间产物暴露的时候才暴露的——写提示词时那条约束根本不在这道题的题面上;一次性的警告,跑了几趟之后其实应该变成常态检查——但配鞍具的那一刻,这条警告甚至还没发生过。手工调鞍具的老法师们面对的是一个两难的死结:要么把鞍具写成包罗万象的百科全书(成本高、互相打架、对简单任务过度设计),要么针对每类任务手工特化(人力堆不出来,任务一变就作废)。

于是有了"鞍具进化"(harness evolution)这门手艺:让一个"进化者"(evolver)根据证据不断修订鞍具。这门手艺分两派。

离线派:在训练任务上反复试错,把学到的所有经验熬成一副"共享鞍具" \(h^\star\),部署时所有任务都用它。这个思路摊销了经验,但有两个结构性毛病。第一,\(h^\star\) 可能对训练任务过拟合——它在训练场上学会的许多修补,在新任务上纯属添乱。第二,也是更要命的:这副鞍具一旦上马就定型了。新任务跑到一半露出新证据,它只能干瞪眼——暴露问题的轨迹在配鞍具的时候根本还不存在,你怎么 anticipiate 它?

在线派:等目标来了再调。按照干预的时机又可以切三刀:执行前(pre-run)拿着任务说明预调鞍具,还没跑就先猜哪里要改;执行后(after-run)跑完一遍拿反馈总结修订,准备下一次尝试;以及最新的运行中进化(within-run)——跑到一半,发现情况不对,当场改鞍具,剩余的路程用新鞍具走。显然 within-run 最灵活:证据一露头就能响应。但它带来一个新麻烦:进化者每一次站在检查点,都得从零推理"现在该不该动?动哪里?怎么动?"——在线的 token、延迟、金钱成本全都烧在这一步;而如果偷懒靠验证器反馈来判断修改有没有效,又触犯了测试时拿不到的禁区。

Meta² 这篇论文的核心问题就一句话:已经完成并验证过的训练经验,能不能指导在线的局部修改,同时又不把任务特有的修改带进无关的任务里?

🍲 把试错熬成老汤,冻起来慢慢用

Meta² 的回答颇有中式厨房的聪明劲儿。离线派的问题是把所有经验固化成"一副鞍具",太死;在线派的问题是每次从头推理,太贵。那就取个中间态——把试错的经验熬成一锅老汤,冻成冰块,每次做菜掰一块用,用完就扔,锅还是那口锅,火候还是现场掌握的。

这锅冻汤,论文里叫元技能(Meta-Skill,符号 \(\mathcal{M}\))。它不是鞍具,也不是某条具体的修改指令,而是关于"何时进化、如何进化、何时别动、哪些干预要避免"的可复用知识。形象地说:鞍具是菜谱,元技能是"什么时候该改菜谱、怎么改、改了会踩什么坑"的烹饪心得;鞍具告诉你第一步干嘛第二步干嘛,元技能告诉你看到锅里起泡该关小火、听到这个声就知道面发过了。

🧊 在线组件:检查点式的鞍具进化

任务智能体从一份最小化的种子鞍具 \(h^{(0)}\) 出发干活,进化者站在路边看,两个角色由同一个冻结语言模型扮演。每当走到一个检查点,进化者拿到两类信息:新增的运行轨迹 \(\Delta\tau^{(k)}\),以及只读的工件区观察 \(\omega^{(k)}\)(文件、中间产物、工作区状态——只许看不许碰)。它的信息随检查点累积:

\[\mathcal{I}^{(k)} = \mathcal{I}^{(k-1)} \oplus (\Delta\tau^{(k)}, \omega^{(k)}, \sigma^{(k-1)})\]

其中 \(\sigma^{(k-1)}\) 记录上一处修改的后续状态——被加载了、保留了、还是回滚了。这个记账细节很重要:它让进化者知道自己上一针扎下去是见效了还是被代谢掉了。

然后进化者做一个二选一的决定:

\[u^{(k)} \in \{\text{KEEP},\ \text{EVOLVE}(\delta^{(k)})\}\]

KEEP 就是不动,让马继续跑;EVOLVE 就是把修改 \(\delta^{(k)}\) 通过有界通道注入鞍具——有界两个字是关键:修改可以是一条通知、一段指令更新、一个新钩子、一个工具补充,但不能是把整个鞍具推倒重写。注入之后,任务智能体带着同样的环境状态、半截轨迹和已积累的进度继续走,不换环境、不重开、不接管。

到了终点检查点(任务智能体声称干完了的时候),进化者还会拿到自动收集的工件区终态。这时决定空间仍是二元的:KEEP 就是验收通过;EVOLVE 则是一记bounded correction——指名矛盾,派回去修,而且要求修复范围严格限定在矛盾点上,因为此时预算所剩无几,大改可能弄坏原本能用的行为。每一条修改只作用于本次运行的剩余部分,运行结束全部丢弃,下一次重新从 \(h^{(0)}\) 开始。这就像开车时副驾的教练:他可以提醒"前方该并线了",但他从不下车替你把方向盘打到底,更不跟着你回家。

🍜 离线组件:用三锅对照汤熬出元技能

元技能怎么学出来?这是论文最讲究的部分。作者没有简单地收集"成功的轨迹"——因为一次运行的通过或失败是对整串检查点决定的联合评价,你无法从"任务成功了"反推"第 3 个检查点那次修改是对的",中间隔着归因的迷雾。他们的解法是给每个训练任务跑三种条件的 rollouts,让结局之间的对比替归因说话:

  • A 条件:任务智能体裸奔,没有进化者。这是基线汤,回答"这道题它自己行不行"。
  • B 条件:进化者拿着当前版本的元技能 \(\mathcal{M}\) 上场。这是候选汤,回答"我现在的进化心法灵不灵"。
  • C 条件:进化者拿到训练期才有的特权验证器信息,相当于开了上帝视角。这是示范汤——在 A、B 都失败的难题上,C 能制造出成功样本,让"本来能救回来"的差距显形。

五种对比方向,各配一类证据:

  • B 过 A 挂:当前进化者救了一些裸奔救不了的事——"act"证据,值得学的干预;
  • B 挂 A 过:当前进化者帮了倒忙,裸奔反而过了——"avoid"证据,这类干预要进黑名单;
  • C 过 B 挂:连开了上帝视角的进化都能成,我的进化者却没成——我漏掉了什么恢复策略?这是 act 证据的增补来源;
  • C 挂 B 过:连上帝视角都翻车的干预——更要写进黑名单,说明这类动作本身就是毒药;
  • A 过 B 过:任务智能体自己就行——"hold"证据,这种时候正确的动作就是什么都不做。这一类证据最反直觉也最有价值:很多进化系统死就死在"忍不住要优化",而有时最好的鞍具就是别碰它。

C 条件有一条严格的红线:系统提示词严禁把特权验证器信息传给任务智能体,跑完之后还要逐条审计 C 的轨迹,违规的全部剔除出对比构造。这个设计堵住了一个显而易见的作弊通道——否则"进化"就变成了把考试答案抄给考生,元技能里蒸馏出来的全是"看到黄色卷子就选 C"之类的测试特化垃圾。

每一批训练任务跑完,三个 LLM 阶段接力加工:REFLECT 逐组检视保留下来的对比,按预定义 schema 写候选条目——什么时机、什么触发条件、act/hold/avoid 哪一类、怎么操作、为什么、附参考案例;AGGREGATE 跨任务合并重复出现的模式,剔除任务特有的细节(比如把"abs-module-cache-flags 这道题里修改未提交"抽象成"验证-修复链中断后修改滞留未提交"这个通用模式);UPDATE 拿新条目与旧元技能做增、并、改、删。多批迭代之后,得到的元技能被冻结——从此只读。

🧤 部署组件:全局冻结,局部适配

部署时的纪律可以用四个字概括:冻全局、改局部。元技能 \(\mathcal{M}\) 冻结,每个任务从同一个 \(h^{(0)}\) 出发。检查点处进化者的决定条件化为:

\[\delta^{(k)} \sim g(\cdot \mid h^{(k-1)}, \mathcal{I}^{(k)}, \mathcal{M})\]

在线决策、任务特有修改、运行结果——一律不回写 \(\mathcal{M}\);没有留出验证器反馈,没有 LLM 当裁判的信号,下一个任务依然从 \(h^{(0)}\) 和同样一份 \(\mathcal{M}\) 出发。知识跨任务复用,修改留在本次运行里随运行消散。这条纪律是防止"一个任务的修正污染无关任务"的关键——上一道菜的临时调味不能留在锅里给下一道菜的客人吃。

📊 成绩单:两个基准,两条骨干,四组追问

实验围绕四个研究问题组织。基准是 Terminal-Bench 2.1(终端长任务)和 DeepSWE 1.1(真实软件工程),各自随机切 1:2 的训练/测试;报告 mean@5 与 mean@3 的重复均值。基线分三拨:人工设计的鞍具(NexAU、Codex CLI、mini-swe-agent、Pi agent、DeepSeek Harness)、自进化方法(ACE、Training-free GRPO、ReasoningBank)、鞍具进化方法(AHE、Meta-Harness、Continual Harness)。所有进化类方法从同一个 NexAU 种子出发,保证比较的是进化机制本身。

RQ1 性能:主实验用 GPT-5.6-Terra(medium reasoning)。Terminal-Bench 上 Meta² 拿到 81.00%,比种子鞍具的 66.33% 高 14.67 个百分点,比最强鞍具进化基线 Meta-Harness 的 73.33%(+7.00)高出近一倍;DeepSWE 上拿到 44.44%(种子 34.67%,+9.77)。一个值得咂摸的细节:DeepSWE 上 ReasoningBank、ACE、Continual Harness 全部跌破种子线,AHE 只打平——唯独 Meta² 还能大涨 9.77 分。作者把这归因于 C 条件:在难任务上其他方法连一个成功样本都收集不到,元技能学习无从谈起,而 C 条件能提供"本来能成"的对照样例。

换骨干:DeepSeek-V4-Flash-0731(high reasoning)在 Terminal-Bench 上 77.67% 再夺第一,比种子 +7.67。注意每个骨干单独熬一份元技能,所以这测的是"这套机制换马还行不行",而不是元技能零成本跨模型迁移。

RQ2 钱:Terminal-Bench 上离线一次性成本 $110.19,在线部署 $64.72,总计 $174.91——比 AHE 的 $248.35 和 Meta-Harness 的 $198.85 都便宜,性能还更高;DeepSWE 上总成本 $367.86,远低于 AHE 的 $862.89 和 Meta-Harness 的 $870.75。与同为在线方法的 Continual Harness 比,Meta² 离线部分更贵($110 vs $29)但在线更便宜($65 vs $83)——而那份离线成本是一次性投资,元技能可以无限复用,跑得越多摊得越薄。性能-成本帕累托前沿上,Meta² 同时占据两个基准的最高性能点。

RQ3 检查点频率:间隔 L 从过密到过疏扫描,L=5 是甜点位(81.00%),性能最高且成本温和。L 太小,evolver 频繁打断任务智能体的思路;L 太大,错过干预时机——这和临床查房一个道理:每小时查房干扰病人休息,一天一查又可能错过病情变化。

RQ4 消融:先加在线进化者(拿掉元技能、进化者裸推理)有提升;再加上对比式元技能学习还能再提升——两个组件各自贡献、互相不替代。

🔍 拆开一锅汤:元技能到底长什么样

附录 I 给出了元技能条目的真实样貌,值得逐条细读。每个条目的 schema 是:类型(act / hold / avoid)、时间点(begin / middle / end)、何时参考(触发条件,用可观察的轨迹证据描述)、指引(具体操作,含范围约束)、为什么(跨任务归纳出的模式)、参考案例(真实任务 ID)。

举两个例子感受下质地。E-13(类型:act,时间点:end):"交付的工件与它自己的轨迹相矛盾"——当任务智能体声称完成,但其交付物与执行轨迹对不上时,不要验收。指引是:指名具体的矛盾——哪个被声称的行为、哪条观察推翻了它——派回去精确修复那一点,修复范围限定在矛盾点上,因为此时预算所剩无几,大范围重写可能弄坏原本工作的行为。附三条参考案例(abs-module-cache-flags:修复停在已修改未提交状态;kysely-window-grouping-helpers:最终输出仍显示非法的边界排序;valibot-recursive-schema-composition:提交的类型级实现留着无限制的递归位)。E-06(类型:act,时间点:end):"接受多路径改动前要验证未覆盖的路径"——worker 停下了,它自己的轨迹显示它发现了一个第二路由,查看过、提及过,但提交里没有动它,也没有任何命令真正跑过它。指引:先别验收,派回去一次,指名它自己发现的那个路由,要求修复和检查限定在该路由内。

这种条目靠人写提示词写不到这么准。它是从成百上千组 A/B/C 对比里蒸馏出来的,带着真实故障现场的气味——而且 act/hold/avoid 三类齐备,意味着它同时教进化者"什么时候出手"和"什么时候忍住"。

🎬 一场完整的戏:跟着 Meta² 走一遍任务

光讲机制不如看戏。取 Terminal-Bench 2.1 里一道真实风格的题:一个 Python 项目,任务智能体要修一个 bug 并让所有测试通过。

起点。任务智能体拿到最小化种子鞍具 \(h^{(0)}\):一份基础系统提示(你是软件工程师、按步骤来、最后运行测试套件确认)、一套基础工具(shell、文件读写)、一个完成检查钩子(跑 pytest)。它开始干活:读代码、复现 bug、动手改。

第一个检查点(L=5 步之后)。进化者看到轨迹:智能体改了三个文件,跑了测试,红了四个。元技能里有一条 E-13 类条目(交付的工件与轨迹相矛盾)。当前还没到交付时刻,进化者对照触发条件——不满足,KEEP,让马继续跑。这一忍很关键:很多进化系统在这里会忍不住注入"修改未提交"之类的提醒,打断智能体的思路,而那条提醒对当前阶段纯属噪音。

中间的波折。智能体在调试中发现自己缺少一个工具——它需要查看 git diff 来确认改动范围,但鞍具里没注册。进化者的运行证据里出现了"尝试执行 git diff 但工具不存在"的信号。元技能的 act 条目里恰好有一条:"轨迹中出现访问未注册工具且失败,应立即补注册该工具,并在系统通知里说明触发时机与卸载时机"。进化者注入有界修改:注册 git-diff 工具。任务智能体收到通知,继续干活,环境状态、已改的三个文件、半截对话历史原封不动。

终点检查点。智能体宣布"修好了,测试通过"。进化者拿到交付工件和终态轨迹,做交付一致性检查——发现轨迹里最后一次 pytest 运行是在改动 main.py 之前,改动之后没有重跑。元技能 E-13 触发:指名矛盾("你声称测试通过,但 pytest 最后一次运行发生在你修改 main.py 之前"),注入 EVOLVE:一条有界修正通知,要求修复范围限定在"重跑测试并确认全绿"这一点上。智能体回去重跑,绿了,任务完成。所有修改——工具注册、修正通知——随运行结束一并丢弃。

下一个任务。全新会话、\(h^{(0)}\) 原样、冻结的 \(\mathcal{M}\) 原样。也许这道题的坑完全不同,元技能一条都触发不了,进化者全程 KEEP——这正是元技能里 hold 类条目的用武之地:什么都没发生,本身就是正确的进化决策。

🔧 工程细节里的魔鬼

几个容易在摘要里被略过、但对复现和落地很关键的工程设计,值得单独拎出来说。

修改通道是有界的,而且分的很细。 一条修改可以走四种通道:系统通知(往智能体的上下文里注入一条提醒,影响它的注意力但不改变鞍具结构)、指令更新(直接改系统提示的某一段)、钩子注入(在特定事件点挂一个自动触发的检查)、工具更新(注册新工具或修改工具描述)。每种通道的"剂量"不同:通知是提醒级别,指令更新是行为级别,钩子是机制级别。元技能的条目里会指明该走哪条通道——比如"补注册工具"走工具通道,"交付前检查一致性"走通知通道。这种分级让"干预"从一把榔头变成了一套手术器械。

修改的后续状态是被追踪的。 每次 EVOLVE 注入后,系统记录它被加载了、保留了、还是被回滚了,下一个检查点的信息集 \(\mathcal{I}^{(k)}\) 里带着这份档案。这让进化者能学到"我上一针见效了吗"——长期看,元技能里 avoid 类条目的相当一部分来自这种自我观察的积累。

成本纪律写在架构里。 检查点间隔 L=5 是性能与成本的甜点:太小,进化者频繁打断任务智能体的思路;太大,错过干预时机。DeepSWE 上的成本数字(Meta² 总成本 $367.86 vs AHE $862.89)说明,预计算知识不只是效果上的胜利,也是经济学上的胜利——把推理从"每次现场想"挪到"离线集中想",token 的边际成本降了一个量级。

🧭 与邻居们的边界划在哪

把 Meta² 放进鞍具进化的地图里,它的位置很清晰。AHE(Agentic Harness Evolution)用"提出两个候选挑一个"的 best-of-two 循环迭代五轮,优化目标是单一鞍具;Meta-Harness 每轮提一个方案迭代十轮,同理。两者都输出 \(h^\star\) 部署到测试时,然后那副鞍具就定型了——它们的全部智能都锁死在部署那一刻。Continual Harness 允许测试期间的编辑保留下来带入后续任务,响应性上去了,但上一个任务的修改可能流进无关任务——Meta² 论文里"污染"一词主要就是对它说的。ReasoningBank 学跨任务推理经验但在鞍具进化上没能在 DeepSWE 上超过种子;ACE 做组件级自我进化,同样栽在 DeepSWE。Meta² 的跃迁在于把优化对象从"一个工件"换成"一套决策知识":知识是跨任务复用的(所以摊销),修改是任务内局部的(所以干净)。往大了说,这一步把 within-run 鞍具进化朝"递归自我改进"(RSI)的愿景推进了一格——智能体改进的不再只是自己的行为,而是塑造后续行为的那个系统;但它用"冻结知识 + 一次性修改"的架构,给 RSI 这匹野马套上了缰绳:改进可以发生,但每一次改进都必须在当前任务的沙盒里证明自己,且用完即弃。

⚠️ 边界与未竟之处

  • 元技能是骨干专属的:换模型要重新熬汤,实验测的是跨骨干鲁棒性而非零成本迁移。
  • 离线构造不便宜:$110–$238 的一次性成本对小作坊有门槛,值不值取决于你要跑多少任务——任务是流式的才划算,一次性买卖不划算。
  • 检查点间隔要调:L=5 是这两个基准上的甜点位,换任务长度、换环境节奏未必通用。
  • 元技能质量受训练任务覆盖面限制:训练里没出现过的失败模式,五种对比也蒸不出来。
  • 它优化的是"进化决策",不是任务智能体本身:模型能力的天花板仍在,元技能让鞍具更适配,不能让马长出翅膀。
  • C 条件的特权信息有安全审计成本:虽然论文做了轨迹审计,但"上帝视角进化者"与任务智能体之间的信息隔离在更复杂的工具环境里需要更强的机制保证。

🪢 一句话收束

Meta² 把"怎么改鞍具"这门手艺本身冻成了一锅可复用的老汤:离线用三锅对照汤熬出元技能,部署时全局冻结、局部现用现扔——知识跨任务流动,修改随运行消散。81.00% 的 Terminal-Bench 成绩写的是这套经济学的胜利:进化第一次成了一种可以摊销的基础设施投资,而不是每次都从零开始的手工作坊。它也给整个领域提了个醒:当你想优化一个东西,先想想能不能把"优化的方法"本身变成资产。


参考文献

#论文 #arXiv #AI #Agent #HarnessEvolution #MetaSkill #自我进化 #小凯

讨论回复

加载中...
正在加载回复...

正在加载回复...

推荐
智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

领取 2000万 Tokens 通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力
登录