论文链接:

  • 【A】Evolving Procedural Memory from User Traffic for Agentic Graphic Design(EVOLVE):arXiv:2609.22086
  • 【B】GraphSkillEvo: Evolutionary Optimization of Graph-Structured Agent Skills:arXiv:2609.21749 代码仓库:GraphSkillEvo(B 文开源;A 文为企业内部系统未开源) 发表时间:2026年9月(两篇均 2026-09-18 提交 v1) 机构:
  • A:Adobe(企业)+ Brown University(高校)🌟企业+高校联合,真实生产场景
  • B:City University of Hong Kong(港城大)+ National University of Singapore(NUS)+ Southern University of Science and Technology(南科大)纯高校 3 校合作 领域标签:cs.AI / cs.LG,Agent 技能优化与自进化(Harness 研究脉络)

两篇论文同年同月挂在 arXiv 上,主题撞车得很有意思:它们都在回答同一个问题——“Agent 的技能(Skill)能不能像生物体一样,从经验里自己越变越好?” 但给出的答案走向两个互补的方向:A 文关心"技能库怎么在真实噪声流量里安全地长大",B 文关心"单个技能长什么样、用什么算法把它优化到最好"。读完会发现,它们其实是同一枚硬币的两面。

下面先建立共用背景,再各自定位、定义问题、讲解法、看评估,最后回到共同的根源与灵感。


一、论文背景(共用)

1.1 Skill 是什么:给 Agent 的"岗位操作手册"

现代 Agent 通常由一个 LLM(大脑)+ 一堆工具(手)组成。LLM 负责思考,工具负责干活(查数据库、跑 Python、调 Photoshop)。但 LLM 再聪明,遇到"做一张电商 Banner 图"这种长流程任务,也容易走弯路、漏步骤。

**Skill(技能)**就是塞给 LLM 的一段自然语言"操作手册",告诉它:这类任务一般怎么拆、先做什么后做什么、有哪些坑要注意、用哪些工具。类比一下:

  • Skill ≈ 老员工留给新人的"标准作业流程(SOP)";
  • 没有 Skill 的 Agent ≈ 每次都从零摸索的实习生;
  • 技能库(Skill Bank)≈ 公司共享的知识库,遇到对应任务就检索出来喂给模型。

业界把这种"把知识放在模型外面的文本里、随用随取"的做法,叫做 SKILL.md 范式——一个 Markdown 文件就是一个技能,名字致敬 Claude Skills / 代码仓库里的 SKILL.md 约定。

1.2 技能库 vs 参数训练:为什么不改权重

传统机器学习要变强,就微调模型权重(fine-tuning)。但今天的生产级 Agent 大多跑在外部托管的闭源前沿模型(GPT、Claude)上,你改不了它的权重,也不想为每次变化重训一个 200B 模型。

于是两篇论文共享一个核心前提:把"学习"的对象从模型参数,挪到模型身边的自然语言资产(技能库 / 单个技能)上。这带来三个诱人性质:

  1. 可解释、可编辑:技能是纯文本,人能读、能改、能审计;
  2. 零权重更新:冻结模型,省算力、不漂移、不破坏已有能力;
  3. 跨模型可移植:同一份技能换个 LLM 还能用(B 文专门验证了这点)。

一句话背景总结:Agent 技能 = 放在模型外面的"操作手册资产";两篇论文都在研究"这份资产怎么从经验里自动进化",只是 A 管"库的持续增长",B 管"单个技能的优化质量"。


二、论文定位和关联工作

2.1 研究谱系:从"试错反思"到"技能进化"

Agent 从经验里变强,经典路线如下:

谱系代表作核心思想与本二文的差异
反思/自我批评Reflexion(arXiv:2303.11366)让 Agent 把失败写成"口头反思"塞回上下文,下一轮避免再犯只在单轮/单轨迹内反思,没有把反思沉淀成持久、可复用的技能库
经验抽象ExpeL(arXiv:2308.10144)从多条轨迹里提炼"抽象经验教训"写入记忆提炼出的多是通用原则,缺少 A 文的"覆盖缺口聚类"与 B 文的"图结构组件"
技能发现Voyager(arXiv:2305.16291)Minecraft 里自动课程+自动技能库,技能可复用Voyager 技能偏"动作脚本",本二文技能是高层自然语言程序且带准入门控
安全策略改进Safe Policy Improvement / SPIBB(Laroche et al., 2019;Thomas et al., 2015)只在"不比基线差"的约束下采纳策略更新直接启发 A 文的 Matched Replay Gate(∃won ∧ ∄lost)
技能优化SkillOpt(Yang et al., 2026a)用 rollout 反思→打补丁→验证门控迭代优化单技能B 文的直接 baseline;它是无结构文本技能 + 单候选自我精炼
提示/资产优化GEPA / DSPy 谱系用评估反馈做"反思式变异"优化 prompt/程序与 B 文的变异算子一脉相承,但 B 加了种群+交叉做更广探索

2.2 两篇论文各自的位置

维度A:EVOLVEB:GraphSkillEvo
进化对象整个技能库(76→139 个 SKILL.md)单个技能的结构与内容
经验来源真实产品用户流量(噪声、不可验证反馈)训练集轨迹(有可靠评分函数 R)
表示形式非结构化自然语言 SKILL.md图结构:全局指导 h_s + 有向图 g_s
优化算法两轴启发式(Widening/Deepening)+ 保守准入门种群进化(N=4,T=5 代)+ 4 个变异/交叉算子
安全机制Matched Replay Gate(防回归)验证集 fitness 精英选择 + 图校验器
典型增益执行成功率 72.7%→99.3%较 SkillOpt +1.76~+4.01pp,token 省 24~27%

定位结论:A 是"生产级、噪声环境下的技能库持续适应",B 是"受控评测下的技能表示与优化算法"。二者正交——B 优化出的好技能,正可以放进 A 的库里被持续演化。


三、问题定义

3.1 A 文:噪声反馈下的安全技能进化

具体问题:一个冻结模型控制 230+ 工具的图形设计 Agent,每天从真实用户拿到成百上千条 brief(设计需求)。反馈是噪声且不可验证的——设计没有"成功 oracle",评分器(VLM Grader)对同一张图的分值会漂移,且一条任务失败很难归因到"哪一步、哪个技能"错了。

抽象问题:在"反馈不可信、上下文会漂移、改一个技能可能救了一个请求却搞砸另一个"的条件下,如何只采纳那些确实无损或有益的技能改动?

形式化:给定技能库 S、评分函数 R(有偏且漂移)、冻结上下文集合 C,候选改动 Δ 被采纳当且仅当 ∃ prompt 在重放中胜出 ∧ ∄ prompt 在重放中落败(即式 (1))。 精妙之处在于:它根本不用绝对分数,只用"同一上下文下的 pairwise 胜负",把"评分漂移"这个不可控变量消掉了。

3.2 B 文:技能表示空间的结构化

具体问题:现有技能优化把技能当"一段无结构自然语言"来写。结果两难:① 写长了像冗长 checklist,小模型看不懂该走哪步;② 搜索空间爆炸——同一工作流有无数种文本写法,优化器在"文字游戏"里空转。

抽象问题:把技能优化重写成一个有约束的搜索问题——

max_s J_D(s), s = ⟨h_s, g_s⟩, g_s = (V_s, E_s)

其中 h_s 是全局指导,g_s 是有向图(节点=自包含执行步骤,边=条件化转移)。目标不变(让 Agent 在任务集 D 上得分最高),但搜索空间被图结构显式压缩、去冗余。这把"优化一段任意文本"变成"在结构化组件空间里重组",类比:把"随便写散文"变成"在乐高零件库里拼装"。


四、问题解法

4.1 A 文三机制:Widening / Deepening / Replay Gate

A 文的循环只有 SKILL.md 文件会变,围绕四个角色:Prompt(出题)、Solver(Agent 执行)、Grader(多模态打分+说清为什么失败)、Reflector(把失败改成 SKILL.md 编辑)。两个轴提出改动,一个门决定谁能上线。

(1) Widening(拓库:发现没覆盖的子任务)

  • 每轮把"没检索到任何技能"或"技能背了失败锅"的子任务抽出来,按规范标签累计进"覆盖缺口池";
  • 某标签累计出现 k_min = 3 次,冻结 LLM 把这批案例蒸馏成一个候选新技能;
  • 类比:客服把"反复被问到却没标准答案"的问题,攒够 3 次就写成一篇新 SOP。

(2) Deepening(深化:把已有技能捶硬)

  • 非对称设计——选是便宜宽松的启发式,准入才是严格裁判;
  • 一条轨迹若得分低于阈值(τ=0.6)就记它检索过的每个技能一次"失败";某技能失败计数达 m=2(默认,优先处理失败最多的)就送去修订;
  • Reflector 拿到"失败理由 + 同一技能成功调用的工具序列/中间结果",做成功↔失败对比式改写——不是只看失败文本拍脑袋,而是对着"这次为啥成、那次为啥败"的具体分歧来改;
  • 同技能反复改不过门,则升级为整篇重写;仍失败可触发"探索循环"判定该技能是更新、删除还是保留。

(3) Matched Replay Gate(匹配重放门)——类比"灰度发布 + 回滚" 这是全文最巧的设计。它解决两个混淆源:① VLM 绝对分会漂移;② 结果好坏不只看技能(素材检索等上游状态也影响)。

做法:

  • 冻结上下文——对每个相关 prompt 造几个上下文(不同素材/上游状态),同一个上下文在同一批里被双臂重放:候选 vs 在位(改写时)或候选 vs 无技能(新技能时);
  • 顺序随机化做 pairwise 判断,所以"同一上下文里唯一在变的只有技能条件";
  • 一个 prompt 要"赢"必须在其多个上下文里多数胜;
  • 改动上线条件:至少赢了一个 prompt,且一个都没输(∃won ∧ ∄lost)。

类比:像互联网公司的"灰度发布"——新版本先对小部分固定用户放量, pairwise 对比新旧;只要没在任何一处在指标上回退(不回归),且至少一处变好,才全量推。它用"冻结上下文的重放对比"替代了"看绝对分数",等于把不可信的评分器变成了可信的"差分裁判"。

4.2 B 文:图表示 + 四算子进化

(1) 图结构技能 s = ⟨h_s, g_s⟩

  • h_s 全局指导:任务描述、通用原则、跨步共享模板;
  • V_s 节点集:每个节点是一个自包含执行步骤(如"解析目标"“检索证据"“验证答案”),带自己的指令/规则/约束;
  • E_s 边集:由若干 workflow 定义(“Use When… → 步骤序列”),不同 workflow 可共享节点但走不同路径(条件化执行)。
  • 三个好处:低冗余(共享指令写一次)、显式工作流引导(小模型知道现在该走哪步)、更紧凑的搜索空间。

(2) 种群进化框架——类比"遗传算法的基因重组” 固定 N=4 个候选技能,跑 T=5 代:

  1. 初始化:初始技能 + LLM 造的多样化技能,逐个在验证集 D_val 上算 fitness;
  2. 训练集执行:每代从 D_train 抽 B=15 条,每个技能执行并保留最多 K=5 条失败轨迹作反思素材;
  3. 生成新技能:round-robin 选 4 个算子之一,按 fitness 排名概率选父代(排名越靠前越可能被选),LLM 生成新技能;
  4. 精英选择:合并父子代,保留 fitness 最高的 N 个进下一代。

四个算子(类比基因操作):

算子类比干什么
全局指导变异改"公司总章程"基于失败轨迹修订 h_s,保留图结构
图结构变异改"流程图节点/连线"精炼节点指令、增删节点、调路径
全局指导交叉两个公司合并章程重组两份技能的 h_s,保留一方图结构
图结构交叉两条装配线拼零件重组节点与边,保留一方 h_s

类比:传统 SkillOpt 像"一个人对着镜子反复改自己的稿子"(单候选自我精炼);GraphSkillEvo 像"养了一池子候选人,让好的组件互相杂交"——交叉算子把不同搜索轨迹上发现的有效片段组合起来,探索得更广。


五、评估指标与实验证据

5.1 A 文:真实流量 5 轮,无权重更新、无人工标注

指标基线5 轮后说明
技能库规模76(文档蒸馏冷启动)139(其中 63 来自用户轨迹)纯经验驱动增长
GenEval2 执行成功率(Claude-Sonnet-4)72.7%99.3%组合式文生图能力
GenEval2 质量分 Soft-TIFA34.2646.25生成质量 +11.99
BannerRequest400 胜率(vs 无技能)74.7%100%专业 Banner 设计基准
对无技能 Agent 胜率—61.8%(Sonnet-4)/ 67.6%(Opus-4.6)4 个专业设计基准 pairwise
延迟开销—+3.4~6.2%检索技能的代价,很小

设计证明力:

  • 组合超加性:仅 Widening 胜率 49.4%、仅 Deepening 48.6%,二者组合 58.5%(p=0.025)。证明两轴不是各加各的,而是协同——覆盖新子任务 + 捶硬旧技能互相放大。
  • 恒定留出集:每轮都在固定的 200 条人工 brief 上打分,排除"题目越出越简单"的作弊。
  • 消融对照:R1 几乎全是修复(缺口池还没攒够),R2–R3 新技能最多,随覆盖饱和而回落——曲线本身证明了 Widening/Deepening 各自的阶段作用。

5.2 B 文:5 基准 × 2 模型 × 2 harness

主结果(vs No Skill 平均提升 / vs SkillOpt 平均提升,单位 pp):

设定vs No Skillvs SkillOpt
GPT-5.4(无 harness)+15.37+1.76
GPT-5.4-nano(无 harness)+21.86+4.01
GPT-5.4(Codex harness)+10.31+1.33
  • 小模型受益最大:nano 上 +4.01 > 全量 +1.76——图结构的显式工作流对小模型尤其救命(它最怕长 checklist)。
  • 过程型任务增益最大:SpreadsheetBench 较 SkillOpt +10.60、ALFWorld +3.73(唯一例外是 LiveMath-nano 略低 0.80)。
  • token 省 24~27%:SkillOpt 总消耗是 GraphSkillEvo 的 1.31×(GPT-5.4)/1.36×(nano)倍,即优化本身更便宜。

设计证明力(消融,GPT-5.4-nano 平均):

变体平均掉点
去变异(w/o mutation)−17.02(掉最多)
去图结构(w/o graph structure)−7.44
去交叉(w/o crossover)−4.93

→ 变异(用轨迹反馈局部精炼)贡献最大,图结构其次,交叉提供广探索补充。三者各自必要。

跨模型迁移:用 nano 优化、部署到 GPT-5.4,GraphSkillEvo 在 SpreadsheetBench 达 71.78,超过"直接在 GPT-5.4 上优化"的 69.40 和"迁移的 SkillOpt"的 53.21。证明图结构技能跨模型仍有效,且比非结构技能更好迁移。


六、效果优势的根源解释

6.1 因果链

A 文优势根因(论文实验已支持):

冻结上下文的 pairwise 重放 → 消除 VLM 绝对分漂移与上游状态混淆 → 只采纳"修失败且不回归成功"的改动 → 技能库在噪声反馈下单调变好、不污染。

若没有 Replay Gate(反事实):绝对分上升可能只是评分漂移,会误纳回归改动,生产环境里"改坏一个常用技能"代价极高——所以 A 文把"不回归"当作硬约束,这正对应其消融里"组合胜率远高于单轴"。

B 文优势根因(论文实验已支持):

图结构把"任意文本"约束为"显式步骤+条件边" → ① 执行时 Agent 明确当前该走哪步(低冗余、显式工作流);② 优化时搜索空间被压缩去冗余、组件可复用 → 变异/交叉在结构化空间高效重组 → 更广探索 + 更少 token 找到更优技能。

因果印证:去图结构 −7.44、去变异 −17.02、去交叉 −4.93 三项消融,恰好分别落到"表示约束"“轨迹反馈精炼"“种群广探索"三个环节,数字大小与因果权重一致;跨模型迁移(71.78>69.40)印证"结构化表示比非结构文本更可移植”。

6.2 相关工作检索与对照(交叉验证表)

下表所列前序工作多为两篇论文自身在 Related Work 中引用的谱系(即作者声明的灵感来源,而非本文另行独立复现的外部验证)。它们与本文机制的关系如下:

研究(可核验链接)相似尝试相关结论与本文差异/边界对根源解释的影响
Reflexion(arXiv:2303.11366)用失败反思改进后续行为口头反思能缓解重复犯错仅单轨迹内、不沉淀为持久技能支撑 A 的 Reflector / B 的"基于失败轨迹变异"思路来源
ExpeL(arXiv:2308.10144)从多轨迹抽象经验写入记忆抽象经验提升后续泛化提炼的是通用原则,无覆盖聚类/图结构支撑"经验应被持久化为可复用资产"这一前提
Voyager(arXiv:2305.16291)自动课程+可复用技能库技能库显著降低探索成本技能偏动作脚本,无准入门控支撑 A 的"技能库"概念与 B 的"技能即可复用 artifact”
Safe Policy Improvement / SPIBB(Laroche et al. 2019; Thomas et al. 2015)仅在不劣于基线约束下采纳策略更新保守更新避免部署回退原用于 RL 策略,本文移植到文本技能直接启发 A 的 Matched Replay Gate(∃won∧∄lost)
GEPA / DSPy 优化谱系用评估反馈做反射式变异优化 prompt反思式变异比盲目搜索更高效多为单候选;B 加了种群+交叉支撑 B 的变异算子与验证门控设计来源
SkillOpt(Yang et al., 2026a)无结构技能 + 单候选自我精炼 + 验证门迭代精炼有效但搜索冗余B 的 direct baseline,缺结构与种群反衬 B"图结构+交叉"带来的增益

说明:上表以论文自引谱系为主,构成"作者声明的机制来源"。在本文检索范围内,未发现与"Matched Replay Gate 防回归"或"图结构压缩技能搜索空间"直接矛盾的反例;两者优势在各自设定(噪声生产流量 / 受控评测)下成立。条件边界:A 的增益依赖有可重放的冻结上下文与 pairwise 裁判;B 的增益在过程型、低冗余收益大的任务上最显著,纯推理任务(如 LiveMath-nano)增益收窄。

6.3 综合判断

  • 多研究共同支持:① “经验持久化为外部资产优于改权重”(ExpeL/Voyager 同脉);② “保守/不回归的更新约束可防部署退化”(SPIBB 同脉)。
  • 仍属合理推测:A 的"组合超加性"是否来自"覆盖与深化共享同一检索通道"的协同,论文用胜率差(p=0.025)支持,但机制细节属作者推测级。
  • 失效条件:反馈完全不可重放、或 pairwise 裁判本身有偏时,A 的 Gate 失效;任务无清晰工作流结构时,B 的图收益下降。

七、必要知识反推

假设一个零基础的人要复现这两篇工作,他最少必须掌握:

领域知识层

  • Agent/Harness 运作:LLM + 工具调用循环、SKILL.md 检索注入机制(A 文 §2 明确要求理解"禁用检索即还原原 Agent"这一对照组)。
  • 评测不可靠性:VLM 评分的位置/顺序偏差(Zheng et al.)、设计无成功 oracle——不理解就无法解释为何需要"差分裁判"。

方法论知识层

  • 进化计算(EC)基础:种群、适应度、变异/交叉、精英选择(B 文核心)。
  • 安全策略改进(SPIBB)的"不回归约束"形式化(A 文 Gate 的数学来源)。
  • 技能优化谱系:SkillOpt 的"反思→打补丁→验证门"流程(B 文的 baseline 与对照基准)。

工程知识层

  • 如何构造"冻结上下文重放":同一 prompt 多上下文采样、双臂同批、顺序随机化(A 文落地的关键工程)。
  • 图序列化与图校验器:把技能解析成 ⟨h_s, g_s⟩ 并校验 workflow 合法性(B 文落地关键)。
  • 统计检验:pairwise 胜率、p=0.025 显著性、恒定留出集设计。

知识融合的关键节点:A 文的创造性节点在于"把 SPIBB 的保守更新,翻译成文本技能的 pairwise 重放门";B 文的创造性节点在于"把’技能难优化’重构为’表示空间太冗余’,用图+EC 同时解决执行与优化两难"。两者都是"换个表征/换个约束"级别的第一性原理重构,而非堆模块。


八、论文中可以提取的通用性灵感(共用)

  1. 范式迁移:把"训练权重"换成"进化资产"。 证据:两文均在零权重更新下让冻结模型大幅变强(A 72.7%→99.3%;B 较 No Skill +15~22pp)。 推广:RAG 知识库自维护、Prompt 模板自动演化、企业 SOP 自动补漏、客服话术持续优化。

  2. 机制:保守准入门 > 无界重写。 证据:A 的 ∃won∧∄lost 门控是组合增益(58.5% vs 单轴~49%)的根;去门控会误纳评分漂移导致的假改进。 推广:任何"用不可信自动评估驱动的配置变更"都应加"不回归"硬约束——模型微调的学习率门控、A/B 发布的护栏、自动代码重构的准入。

  3. 表示结构决定优化上限。 证据:B 把技能从"无结构文本"改为"图",搜索空间去冗余,token 省 24~27% 且质量更高;去图结构 −7.44。 推广:把要优化的对象先结构化再优化——把自由文本 prompt 改成带槽位的模板、把杂乱笔记改成知识图谱、把长 checklist 改成状态机。

  4. 种群+交叉 > 单候选自我精炼。 证据:B 去交叉 −4.93、去变异 −17.02,且迁移(71.78)优于直接优化(69.40);交叉组合了不同轨迹的有效片段。 推广:LLM 资产的"集体进化"——多份候选 prompt/技能并行、互相杂交;也适用于多智能体方案的择优重组。

  5. 拒绝/失败信号本身就是学习信号。 证据:A 用失败计数 m=2 选修订对象、用"成功调用"作不回归基线;B 保留最多 K=5 条失败轨迹驱动变异。 推广:把错误日志、用户差评、测试用例失败当作"定向改进清单",而非仅仅是监控指标。

  6. 跨模型可移植资产价值巨大。 证据:B 用 nano 优化、GPT-5.4 部署仍达 71.78;技能是模型无关的"程序性知识"。 推广:在模型快速迭代的时代,把能力沉淀为模型无关的中间资产(技能/工具/协议),比绑定单一模型权重更抗过时。


一句话收束:EVOLVE 与 GraphSkillEvo 像是 2026 年 9 月给"Agent 技能自进化"这道题写下的两封互补答案信——一封讲"库如何在噪声里安全地长大",一封讲"单个技能如何被结构化地优化到最好"。它们共同印证:当模型权重被冻结,模型身边的自然语言资产才是持续适应真正的主战场。