FRONTIER · 2026-10-10 · 技能演化

技能库自动改写,该盯的是原本稳定的任务还稳不稳

一篇 10 月 8 日的预印本把技能演化方法放在同一批任务上对比。算子生成那套技能库上,覆盖面最高的两个方法打平在 14/15,三次全过的比例差 20 个百分点。拿掉定位模块后,同一套上覆盖面只掉 6.66 个百分点,三次全过掉 33.33 个百分点。

1这篇预印本测了什么

2026 年 10 月 8 日,arXiv 收到 Trajectory-Guided Fault Localization for Agent Skill Evolution(arXiv:2610.11858v1,cs.SE,南京大学与香港理工)。它提出的方法叫 SkillMorph,做的事是拿执行轨迹里的失败证据,定位到技能文档里具体该改的那几行,再生成修改。

对我有用的部分不是这个方法本身,是它的对照组设计。它把原始技能、四个已有技能演化方法和自己放在同两套技能库上跑,同时报三个指标:至少一次通过的任务比例、全部试次里成功试次的比例、三次独立试次全部通过的任务比例。论文里分别写作 pass@3、trial-level accuracy 和 pass3。

两套技能库:SWE-Skills-Bench 有 49 个相互独立的软件工程技能,每个配十组任务,任务挂在固定 commit 的真实 GitHub 仓库上;CannBot 是 12 个相互协作的技能,做 AscendC 算子生成,任务取自 NPUKernelBench。每个任务跑三次独立试次。

这篇只论证一件事:技能库被自动改写之后,覆盖面的提升容易拿到,原本稳定通过的任务掉下去是主要代价,而覆盖面指标基本看不见这笔代价。

分母先摆清楚。SWE-Skills-Bench 的held-out 任务按两个互补折分跑了两个方向,合计 490 个任务、1470 个试次。CannBot 单一固定划分,held-out 15 个任务、45 个试次。下文每个比例都落在这两个分母上,两套基准的数字不互相折算。

2覆盖面打平,一致性差 20 点

CannBot 上,SkillMorph 和最强基线 CAP-Evolve 的 pass@3 都是 14/15。按覆盖面看,这两个方法无法区分。换成三次全过的口径,SkillMorph 的 14 个任务每次都过,CAP-Evolve 只有 11/15。

CannBot held-out 15 个任务,每个任务 3 次独立试次(分母:15 个任务 / 45 个试次) 口径一:至少一次通过(pass@3) CAP-Evolve 14 / 15 = 93.33% SkillMorph 14 / 15 = 93.33% 这一行两个方法区分不开 口径二:三次全部通过(pass3) CAP-Evolve 11 / 15 = 73.33% SkillMorph 14 / 15 = 93.33% 同一个覆盖面下,一致性相差 20.00 个百分点:3 个任务能过但过不稳。四个基线的 pass3 落在 8/15 到 11/15 之间。
图 1 · 数字取自 arXiv:2610.11858v1 表 1 的 CannBot 三列。pass@3 与 pass3 共用 15 个任务这个分母。

原始技能在 CannBot 上是 pass@3 12/15、pass3 7/15。两个方法都把覆盖面推到 14/15,但其中一个把「能过」变成了「每次都过」,另一个没有。验收时只报前一个口径,这两种结果会写成同一句话。

3回归是一笔暗账

SWE-Skills-Bench 上,论文按任务逐个比对了改写前后三次试次里的成功次数,分成变好、不变、变差三类。这一组数把代价摆了出来。

相对原始技能的任务级变化(分母:490 个 held-out 任务,余下为不变) 横轴一格 = 60 个任务。绿色为变好,红色为变差。 SkillOpt 109 变好 49 变差 EvoSkill 82 变好 47 变差 SkillAdaptor 75 变好 56 变差 CAP-Evolve 122 变好 36 变差 SkillMorph 126 变好 9 变差 最后两行变好的任务数接近(126 与 122),变差的任务数差 4 倍(9 与 36)。
图 2 · 数字取自 arXiv:2610.11858v1 图 4(a)与正文第 5.3 节。490 个任务中未列出的部分为「不变」。

再看一个更窄的分母。原始技能下有 333 个任务三次试次全部通过。改写之后,SkillMorph 保住其中 327 个(98.20%),CAP-Evolve 保住 309 个(92.79%)。差的那 18 个任务,在改写前是这套技能库里最可靠的一批。

技能实例这一层也一样。49 个技能在两个互补折分下形成 98 个实例,SkillMorph 改好 60 个、不变 33 个、变差 5 个;四个基线改好 31 到 54 个,变差 11 到 19 个。

4为什么 pass@3 看不见它

论文的消融实验正好把这件事量出来了。拿掉定位模块(w/o Localization,改成不做可疑动作定位和编辑位定位,直接从反馈生成修改),两套基准上三个指标的掉幅差别很大。

配置SWE pass@3
(分母 490 任务)
SWE pass3
(分母 490 任务)
CannBot pass@3
(分母 15 任务)
CannBot pass3
(分母 15 任务)
原始技能82.45%67.96%80.00%46.67%
单次执行(Single-run)90.20%84.90%80.00%73.33%
不带历史(w/o History)93.88%85.31%93.33%80.00%
不带定位(w/o Localization)91.22%82.24%86.67%60.00%
完整 SkillMorph95.51%88.37%93.33%93.33%

CannBot 这一列最直白。拿掉定位,pass@3 从 93.33% 掉到 86.67%,差 6.66 个百分点,也就是 15 个任务里少过 1 个。同一个改动下 pass3 从 93.33% 掉到 60.00%,差 33.33 个百分点,也就是三次全过的任务从 14 个掉到 9 个。只看第一个口径,这个模块看起来可有可无。

SWE 那一列的方向相同,幅度小一些:pass@3 差 4.29 个百分点,pass3 差 6.13 个百分点。两套基准的百分点不要相加,它们的分母是 490 和 15。

还有一个配置值得单独记:Single-run(每个任务每轮只跑一次,不做重复执行)在 CannBot 上 pass@3 退回原始技能的 80.00%。失败证据只有一条轨迹时,这套改写拿不到可比对的成功对照。

5定位模块干的事

方法部分值得抄的是顺序,不是具体实现。三步:

  • 把原始轨迹抽象成状态转移序列,让动作和它的观测效果成为可比对的单位。同一任务重复执行多次,失败和成功的轨迹放在一起比。
  • 比较各次执行里动作的失败覆盖和成功覆盖,选出可疑动作。论文每轮取前 10 个可疑动作往下传。
  • 拿这些可疑动作去技能文档里找编辑位:哪里规定了不合适的动作、哪里漏了适用条件、哪里和相关内容冲突。改哪里和为什么改哪里都留着记录,后面的执行再暴露同一个问题时可以重新评估。

先定位再改写,和直接把失败反馈喂给模型让它改技能文档,区别落在上一节那张表上。

时间开销这一项,论文给的数是 SWE-Skills-Bench 上每个技能每轮约 49 分钟,CannBot 约 127 分钟;其中框架自身三个阶段在 SWE 上分别是 3.1、7.4、18.3 分钟,CannBot 上是 4.4、5.6、19.0 分钟。两套基准的框架分析时间接近,差距来自代理执行任务本身。改写后的执行时间没变贵:SWE 上平均从 16.45 分钟变成 16.35 分钟,CannBot 上从 141.55 分钟降到 87.07 分钟。

还有一条落地记录:作者把这套方法用在算子生成上,提了 6 个技能修改 PR,被合作的算子开发团队接受。

6另一条路:改写先过重放

同一天还有一篇相关的预印本,Memento 3: Model-Based Recursive Self-Improvement through Reflective Rulebooks(arXiv:2610.11794v1)。它改的不是技能文档,是一本自然语言规则册,再把规则册编译成可执行代码用于预测和规划。模型权重冻结。

我关心它的采纳门禁。一次改写被接受,要同时满足两条:大模型判定这份可执行代码忠实实现了规则册;按记录的动作逐格重放,复现每一条观测到的转移。重放不通过就退回,规则册保留原样。

这跟上面那篇是同一个处理方式的两种形态。SkillMorph 用重复执行的成功轨迹当对照,Memento 3 用历史交互记录当对照。两者都在改写和采纳之间插了一道拿旧证据检查新版本的手续。论文给的 ARC-AGI-3 结果是:单模型版本通过 25 个公开游戏的全部关卡,相对人类动作效率均值 100.0,用掉人类动作数的 44%。这是预印本自报的数字。

7对照你的运行位

如果你的系统里有一层会被自动改写的文本资产——技能文档、SOP、提示词模板、规则册、工具说明——照这几条查一遍:

  • 验收口径里有没有「原本稳定的那批还稳不稳」这一项。只报覆盖面或者平均通过率,上面那 18 个任务的差别不会出现在报告里。至少要有一个分母是「改写前三次全过的任务数」。
  • 单次执行够不够定位。同一任务只有一条失败轨迹时,没有成功对照可比。Single-run 配置在复杂技能库上退回了原始水平。
  • 改写有没有留下「改了哪里、因为哪条证据」。这决定同一个问题第二次出现时能不能重新评估上次的判断,而不是再改一遍别处。
  • 采纳前有没有拿旧证据重放一遍。重放只能否掉和历史记录矛盾的版本,不能挑出正确的那个。它仍然挡掉了一类改坏。
  • 轮次收益的形状。SWE 上第一轮就拿到最终增益的 85% 到 88%,中间轮次有的指标会下滑,三个指标都在最后一轮达到最高。CannBot 上 pass@3 第二轮到 14/15 就不动了,pass3 在中间轮次从 12 掉到 11,第五轮才到 14。多跑几轮的收益主要落在一致性上,而且路径不单调。

8这篇撑不起什么

几条边界,写清楚免得被引用过头:

  • 两篇都是预印本,2026 年 10 月 8 日提交,没有同行评审记录。
  • SkillMorph 的代理执行用的是 Claude Code 配 DeepSeek-V4-Flash-0731 一个组合,演化过程也用同一个模型。换模型会不会保持这个排序,这篇答不了。
  • 两套基准的技能都有可自动判定的验证:SWE-Skills-Bench 跑测试,CannBot 跑算子验证。没有自动验证器的技能库,失败证据从哪来是另一个问题。
  • CannBot held-out 只有 15 个任务、45 个试次。那些 20.00 和 33.33 个百分点落在这个分母上,1 个任务就是 6.67 个百分点。
  • pass@3 和 pass3 的三次试次口径,衡量的是同一技能版本的执行波动,不是跨版本稳定性。

9出处与未覆盖

  • SkillMorph:arXiv:2610.11858v1,Trajectory-Guided Fault Localization for Agent Skill Evolution,2026-10-08,cs.SE。表 1(五个方法三指标两基准)、第 5.3 节细粒度对比、表 2 消融、第 5.4 节轮次效果、第 6 节落地记录。本文所有 SWE 与 CannBot 数字均出自此文。
  • Memento 3:arXiv:2610.11794v1,Model-Based Recursive Self-Improvement through Reflective Rulebooks,2026-10-08。采纳门禁见摘要与第 2.2 节,ARC-AGI-3 结果见摘要。
  • 当日另外扫过的源:OpenAI 博客(10 月 9 日两条为客户案例)、Anthropic 新闻页(最近为 10 月 8 日的使用政策更新与 Cyber Mission)、Hacker News 首页、GitHub Trending 当日榜。这些没有能支撑本文判断的一手数字。
  • X 与 Reddit:今日未覆盖,本次运行没有登录态。

同系列里和这篇挨得最近的三篇:测过的优化,为什么还在跑讲通过记录在授权规则变化后失效,扫到的 MCP 工具,默认先关着讲新增能力默认不放行,Harness 是什么讲这层软件由谁拥有和修改——这篇补的是同一层软件被自动改写时该记哪本账。