论文标题:FlowEvo: Self-Evolving Agents through the Co-Evolution of Workflows and Executable Skills

论文链接:https://arxiv.org/abs/2607.21596

代码仓库:https://github.com/DEFENSE-SEU/FlowEvo

发表时间:2026 年 8 月(arXiv 2607.21596v2,2026-08-20 更新)

机构:东南大学 + 伦斯勒理工学院(RPI)+ 香港科技大学,纯高校合作

一句话概括:把 agent 辛苦摸索出来的成功工作流,当场"编译"成可执行、可测试、可治理的技能,存进一个越用越强的技能银行——模型权重一参数不动,能力却在推理期持续进化。


一、研究背景:聪明一次,忘掉一次

现在的 LLM Agent 越来越擅长在推理期临场搭建工作流来解题:把任务拆解、调用工具、写代码、中途检查、失败修复,一套动作行云流水。但论文开篇就点破了一个尴尬的现状:这些辛苦发现的有效流程,用完一次就扔了。

打个比方:一位实习生第一天摸索出了报销流程,第二天又从头问一遍;一个月做了三十次报销,还是每次都像第一次。不是他不聪明,而是他没有把经验沉淀成可复用的资产——每次执行完,轨迹(trajectory)就被丢弃,下一个相似任务来了,agent 只能重新推导、重新探索、重新踩坑。这带来的代价很直接:

  • token 成本高:相似流程反复推导,推理开销线性累积;
  • 表现不稳定:同一个任务这次成功下次失败,方差大;
  • 经验无法积累:agent 永远停留在"第一次做"的状态。

已有工作从两个方向补救,但都各有缺口。第一条路是文本记忆:把过往的计划、轨迹、工作流存成文字,后续任务检索出来当参考(代表如 Agent Workflow Memory、ExpeL)。问题是文字"能看不能跑"——它描述了"上次这么做成功了",却不能被调用、不能被验证,复用时模型仍要自己把文字重新翻译成动作,相当于看了别人的游记还是要自己摸路。第二条路是可执行技能/工具库:把过程做成可调用的对象(如 Voyager 的技能库、LATM 的工具制造)。这些技能可调用、可检查,但通常是离线预先构建的,与 agent 自己解题的过程脱节,也不会随 agent 的实战经验生长。

于是论文提出了一个很本质的问题:当 agent 通过工作流解题时,成功的工作流应该如何变成可复用的技能,并反过来影响后续工作流的构建——且全程不改模型参数? 这就是 FlowEvo 要回答的问题。

二、核心思想:把"日记"编译成"函数"

FlowEvo 的答案可以用一个类比讲清楚:文本记忆像是把经验写成日记,可执行技能则是把经验写成带单元测试的函数。日记读完还得自己照着做,函数直接调用就行,而且随时可以跑测试验证它还灵不灵。

具体来说,FlowEvo 构建了一个工作流→技能→工作流的闭环:

  1. agent 解题产生执行轨迹;
  2. 成功的轨迹(且通过了验证)被在线编译成技能记录,存入持久技能库;
  3. 后续任务从库里检索技能,以两种方式反哺:直接执行(当成可调用子程序跑)或技能条件化生成(作为结构化上下文,引导新工作流的规划)。

注意这里的关键设计:技能库不是提示词文本,而是推理期的持久能力层。模型权重(如 GPT-4o-mini)从头到尾冻结,所有"进化"都发生在这个外挂的技能库上——这就是标题里 training-free 与 Self-Evolving 的含义。

一条技能记录 $s = (f, \sigma, T, m, \ell)$ 包含五个部分,完全是软件工程的思路:

组件含义类比
$f$ 可执行体带明确入口点的可调用代码/动作模板函数体
$\sigma$ 调用接口显式签名、前置条件函数签名
$T$ 回放测试重放或验证测试集单元测试
$m$ 元数据来源、任务模式标签、路由统计、负面证据文档 + 使用日志
$\ell$ 生命周期状态active / suppressed 等版本与灰度状态

论文的三大贡献正对应这个闭环的三个环节:workflow-to-skill 编译(把成功工作流变成技能记录)、分层技能复用路由(决定直接执行、条件化生成还是动态生成)、对比效用生命周期治理(自动抑制造成负迁移的技能)。下面逐一拆解。

三、方法拆解:三机制闭环

3.1 机制一:workflow-to-skill 编译——只收"验证过"的成功

编译器只处理验证器通过的成功轨迹,这一步像质检关卡:任务失败免谈,成功才进入提炼流程。编译器从轨迹中识别入口点、推断可调用签名、尽可能抽取回放测试,并记录任务模式标签与路由元数据。

以论文附录给出的真实技能为例(ALFWorld 的"加热后放置"任务),编译出的模板是一段参数化动作序列:

go to {object_location}
take {object} from {object_location}
go to {heating_station}
heat {object} with {heating_station}
go to {target_location}
move {object} to {target_location}

参数(物体、加热站、目标位置)在运行时从任务目标中解析绑定。可以看到,这不是一段自然语言心得(“应该先拿东西再加热”),而是一个填空就能跑的程序。

候选技能还要通过准入三关:接口合规(能否按声明的签名和前置条件被调用)、功能正确(回放测试与留出检查是否支持其声称的行为)、安全合规(是否遵守部署约束,如禁用 os、subprocess、eval 等危险调用)。过不了关的不许直接执行;边缘案例可能只保留"作为上下文参考"的资格,或进入影子状态供诊断。

3.2 机制二:分层路由——三条路,能省则省

对每个新任务,检索器综合词面重合、任务模式兼容性、接口兼容性和历史效用信号打分,并感知负面证据(坑过人的技能会被降权)。然后路由器在三条路里选:

路由检索到的技能怎么用执行代码?间接影响?
直接执行作为可执行子程序调用是否
技能条件化生成仅作为结构化上下文注入规划否是
动态生成不用任何技能,从零生成否否

这像医院的分诊台:确诊的常见病直接走标准化处置(直接执行,最省);症状相似的疑难症参考既往病例调整方案(条件化生成);全新病症只能现场会诊(动态生成)。直接执行若不满足前置条件或验证失败,会自动降级到技能条件化生成——技能库里没有"硬套失败就完蛋"的尴尬。

这个区分在方法论上很重要:技能库的增益不能全部归因于"背过原题重放答案",条件化生成贡献的是结构先验而非答案本身,这正是代码、数学这类任务还能受益的原因。

3.3 机制三:对比效用生命周期——技能也要"试用期"

技能入库不是终点。有的技能看似有用,实际会把后续任务带沟里(负迁移)。FlowEvo 的治理机制非常像一个带对照组的临床试验:对每个在用技能,周期性地比较"用了它的任务成功率"(guided)与"没用它的匹配任务成功率"(unguided),当这个对比差值持续为负(论文阈值 Δ < −0.1,且至少积累 5 次引导、3 次未引导样本)时,触发抑制。

论文给了一个真实案例:ALFWorld 中的 pick_two_obj_and_place(找两个物体并放置)技能,引导下成功率仅 2/14(14%),不引导反而 1/3(33%),Δ = −0.19,低于 −0.1 阈值,于是在 14 次引导 episode 内被抑制。抑制后该类任务回退到动态生成,避免了坏技能持续伤害后续任务。被抑制的模板保留为影子条目供诊断,不进活跃检索。

配合去重与抑制,技能库在 ALFWorld 全程 134 个任务后仅饱和在 7 个工作流模板(六类任务各一个 + 一个蓝图)和 18 个范例,检索开销有界。整个流程(论文 Algorithm 1)每个 episode 走一遍:检索→路由→执行验证→(成功则)编译准入→更新统计→治理。

四、实验与主结果:八基线全胜,成本还更低

实验设置很有诚意:五个基准全量标准 split——交互环境 ALFWorld(134 个评测任务、六类任务、只有二值终端成功信号、无任何隐藏测试或过程标注),加上海量代码与数学基准 HumanEval(164 题)、MBPP(500 题)、GSM8K(1,319 题)、MATH-500(500 题)。骨干统一为 GPT-4o-mini(便宜、常用,也是 AFlow 自己的执行模型之一,赢了不可能是"靠大模型开挂"),八个基线(ExpeL、Self-Gen ICE、ADAS、AFlow、MermaidFlow、EvoAgentX、DyFlow、ORCH)全部用官方代码默认配置、同等优化预算复现。

主结果(准确率 / 每任务平均 token):

方法ALFWorldHumanEvalMBPPGSM8KMATH-500
ExpeL46.389.073.892.167.5
ADAS53.086.268.590.758.2
AFlow59.287.265.591.463.5
FlowEvo85.6(±3.8)95.179.697.175.9
FlowEvo tokens9,3298802,2305411,532

几个关键读数:

  • 五个基准全部第一。ALFWorld 上 85.6%,超最强基线 AFlow(59.2)26.4 个百分点——这是全部 split 中差距最大的一项,而且 ALFWorld 没有外部验证器可依赖,最能体现可执行编译的价值;
  • ALFWorld 每任务 9,329 tokens,约为基线(29,671–32,958)的三分之一:直接复用跳过了逐步探索,又准又省;
  • HumanEval 95.1%,超最强基线 7.3 点,成本不足 AFlow 的五分之一;MBPP 超 ExpeL 5.8 点;MATH-500 超 EvoAgentX 2.3 点、超 ExpeL 8.4 点,且在全部七个子学科领先;
  • 论文很坦诚地指出:MBPP 和 MATH-500 上 FlowEvo 的 token 比 ExpeL 更贵——用合理加价换显著加准,准确率-成本 frontier 仍是占优的。

跨模型稳健性同样扎实:把骨干换成 10 个模型(GPT-4.1 系列 nano/mini/标准、Qwen2.5-7B、Qwen3-8B、Llama-4-Scout、Gemini-2.5-Flash-Lite、GPT-5.4-nano、DeepSeek-V3.1、GPT-4o-mini,覆盖 7B–671B、稠密到 MoE),50 个"模型×数据集"单元里 FlowEvo 49 个胜过 ExpeL,平均 +11.0、中位数 +7.0 点。唯一落败的是 Qwen3-8B 在 MATH-500(−10.0):小模型产出的技能体频繁违反接口约定被准入拒绝,技能库太稀疏撑不起检索——这标出了方法的能力下限。更有意思的是 GPT-4.1 规模阶梯揭示的规律:模型越小,增益越大(ALFWorld 上最小的 nano 模型获益 +53.2 点),说明技能库补的正是弱骨干缺的结构。

五、消融与机制分析:增益到底从哪来

论文在 ALFWorld 上做了逐步开闸的受控消融(从 ReAct 基线出发,每次只加一个机制):

阶段启用机制成功率增量
1ReAct(无技能库)33.6%—
2+workflow-to-skill 编译(只存不用)38.8%+5.2
3+技能反馈(直接执行 + 条件化生成)80.6%+41.8
4+技能治理(生命周期管理)85.6%+5.0

结论清晰:技能反馈(复用)是绝对主力,占 41.8 点;编译本身(即使不回用)也有 5.2 点——从成功轨迹中提取可复用结构本身对行为有正则化作用;治理再贡献 5.0 点,并 qualitative 地挡住了负迁移。

积累动态的观察同样精彩:约第 10 个 episode 出现第一次技能复用后,每任务 token 断崖式下降并持续保持低位;134 个任务中 101 个走了直接复用,命中后成功率 98%(99/101)。分任务类型看,增益与"直接命中率"近似单调相关:pick_heat 类直接命中率 83%,增益高达 +78 点;而 look_at_obj_in_light(开灯看物体)直接命中率为 0——技能在 15/18 个任务中被检索匹配,却没有一次直接执行完成——即便如此仍拿到 +28 点增益。这个任务类型恰好孤立地证明了第二种复用模式:技能作为结构化上下文注入,即使不能重放,也能把规划引向正确方向。

此外还有两组值得一提的稳健性实验:

  • 弱监督容忍度:去掉"轨迹必须成功"的编译门槛只掉 1.5 点,翻转 20% 的成败标签只掉 1.7 点,McNemar 检验均不显著——两段式设计(编译时验证 + 使用时对比检查)能吸收上游标签噪声;
  • MBPP 冻结库机制分析:在精确迁移切片上,可执行复用 85.9% @204 tokens,优于动态生成 81.7% @224;文本工作流记忆略高(87.3%)但要多花 85% 的 token。论文对此的表述很克制:两种记忆形式处于同一准确率-效率前沿上,可执行技能在相近准确率下给出更强前沿,还附带文本永远给不了的可验证性、可调用性、可审计性。

六、为什么有效:可执行表示 vs 文本记忆,表示差异是根源

把所有证据拼起来,这篇文章真正的洞见浮出水面:技能的"表示形式"决定了它的复用上限。文本记忆和可执行技能的差异,不是"存的东西不一样",而是根本不同的能力资产类别:

维度文本记忆(日记/心得)可执行技能(函数+测试)
复用方式模型读后重新推导填参数直接调用
可验证否,只有描述有回放测试,随时体检
可调用否有显式接口
成本长文本占上下文,仍要付推导费跳过推导,token 断崖下降
可治理难以归因伤害对比效用可测量、可抑制
出错时无从发现验证失败自动降级

为什么 ALFWorld 是最大赢家?因为它的六类任务带参数变化地反复出现:热土豆要放抽屉、热杯子要放咖啡机——结构相同、参数不同。参数化模板恰好匹配这种分布,101/134 直接复用、98% 成功,既省 token 又省探索。而代码/数学题每题几乎唯一,没有"重放价值",此时增益换轨不消失:靠技能条件化生成注入解题主干结构(类似"见过类似题型"的套路感),HumanEval、GSM8K、MATH-500 的领先全部由此而来。再加一层对比治理兜底负迁移,三种机制合起来覆盖了从"可重放"到"只可参考"再到"有害要压制"的全谱系——这就是它在五类基准上都能赢的根本原因,也是各基线"各赢一段、出圈即垮"(ExpeL 代码数学尚可、ALFWorld 仅 46.3;AFlow HumanEval 87.2、ALFWorld 59.2)的镜像解释。

七、相关工作定位:四条线的交汇点

论文的相关工作梳理可以把 FlowEvo 放进一张地图:

研究线代表工作缺口FlowEvo 的差异
工作流生成与优化ADAS、AFlow、GPTSwarm、MermaidFlow只优化当前任务/基准,不保留学习成果成功工作流沉淀为可执行资产
工作流 agent 的记忆AWM、ExpeL、Self-Gen ICE文本可读不可跑,复用仍需重推导记忆升级为可调用、可验证的技能
技能/工具的执行化复用Voyager、LATM、CREATOR、TROVE离线构建或与自身解题轨迹脱节技能从自己的验证通过轨迹在线编译
免训练自进化Promptbreeder、STOP、CLIN、Evoflux缺少具体的能力积累机制显式准入与治理策略管理的技能银行

最接近的两个对手:Agent Workflow Memory(精神上最像,但存的是文本工作流记忆);Evoflux(设定最像,同为推理期进化可执行工具流,但 FlowEvo 的进化对象更操作化——从自身验证轨迹蒸馏、且有显式准入治理)。一句话定位:FlowEvo 补上了"基于工作流的 agent 如何以可执行形式持久积累自身能力"这块拼图。

八、局限、批判与启发

局限(论文自己承认得比较诚实):

  • 依赖可验证信号:编译门槛设在"验证通过"上,实验覆盖的是环境反馈或隐藏测试可判定对错的领域;完全无信号的开放对话、长文写作不在射程内,延迟、部分、对抗性反馈仍是挑战;
  • 有启动门槛:Qwen3-8B 在 MATH-500 的失败说明,骨干太弱时产不出合规技能,闭环转不起来——自进化不是无本之木;
  • 治理策略偏保守:抑制阈值、最小样本数等 177 个常量(论文披露核心若干)虽声称无逐基准调参,但这类超参的敏感性只有部分披露;
  • 技能库长期运维:论文自己也指出,长期运行下的修订、合并、退役与检索干扰是独立未解问题。

我的批判性补充:10 基线对比中 DyFlow、ORCH 等近期系统分数偏低,论文解释为"默认配置+朴素骨干下的默认行为",虽有保真度核对(ADAS 复现 90.7 vs 原文 90.8),但读者仍需注意这是"共享弱骨干"语境下的公平比较。另外,跨基准不迁移(每个基准独立从空库开始)意味着本文展示的是域内持续积累能力,不是通用技能迁移。

启发:

  1. 表示决定复用上限:把经验从"文本描述"升级为"代码+接口+测试",是 agent 记忆研究的一个范式级判断,预计会影响后续 memory 方向的设计;
  2. 能力层与规模互补:模型越小增益越大(+53.2 点),说明外挂结构是缩小模型落地的现实路径——结构补弱模型的短板,强模型处则自动让位;
  3. 对照组思维可迁移:对比效用(guided vs unguided)给"评估单个组件的真实贡献"提供了免标注的轻量因果信号,值得任何做模块化系统的人借鉴;
  4. 未来方向:作者展望把自进化扩展到 agent 框架其余部分(验证器、重试策略、检索启发式)乃至 MCP 标准化工具生态——如果技能银行能跨 agent、跨生态流通,“个人函数库"就长成了"能力应用商店”。

总评:FlowEvo 用"编译-路由-治理"三件套,把 agent 的成功经验从一次性的轨迹变成可执行、可验证、可审计的持久资产。方法不炫技但每个环节都咬合:编译解决"存什么",路由解决"怎么用",治理解决"坏了怎么办"。在五个全量基准上八基线全胜、弱骨干上增益更大、token 反而更省——这是一篇"问题重要、思路干净、证据扎实"的工作,对做 agent 记忆、自进化和推理期学习的读者都属于必读之列。