
上一篇,我们用“五个问题和一个验证门槛”,讨论了什么才叫自进化 Agent。
但 Agent 不会从“会做事”直接跃迁到“会成长”。在真正进化之前,必须先完成一个关键转化:把一次具体任务中的成功或失败,变成在未来任务中仍然有用的经验。经验都没有形成,也就谈不上后续的 Memory 如何进化、Skill 如何更新。
Agent 每天都会留下大量执行轨迹:它看到了什么、如何思考、调用了哪些工具、在哪一步失败,以及最终是否完成任务。但 Trace 只是对“发生过什么”的记录,并不等于有了经验;任务结束后让模型生成一段反思,也不意味着 Agent 已经真正学会了什么。
所以需要解决的问题就是:
一次具体的成功或失败,怎样才能沉淀为未来任务中仍然有用的能力?
整理近几年一些论文,可以看到一条逐渐清晰的技术演进路线:先让 Agent 针对单次失败进行反思,再从多条轨迹中提炼可跨任务迁移的规律;然后把这些规律进一步组织成 workflow 或者 skill,最终形成一套持续获取、整理、复用和验证经验的闭环。
本文沿着这条演进路线来讨论:一次成败,怎样变成以后还能用的经验。
先看一条最简单的代码 Agent 轨迹。
用户要求,修改数据库字段,并更新相关接口-->Agent 修改数据库模型-->Agent 修改接口返回结构-->运行测试失败--> 发现序列化逻辑没有同步更新-->补充修改并通过测试。
同一条 trace 中,可能同时存在不同抽象层级的信息:
“Agent 打开文件失败”,可能只是当前任务中的偶发细节;
“修改字段后,需要同步检查序列化逻辑”,可能是这个项目中的局部经验;
“数据库结构发生变化后,必须执行完整回归测试”,可能是一条更稳定的工程规范。
trace 记录了这些事情,但它不会自动告诉系统:哪一条值得留下,又应该以什么抽象层级留下。
所以,从 Trace 到 Experience,至少要经过三次判断:

这几步看起来很自然,但是实际应用中每一步都可能出错。
Agent 可能把测试失败归因给 prompt 不够详细,真正原因却是工具返回被错误解析,抽出来的建议就会指错方向。也可能从一次偶然成功里总结出规律,却没说清以后遇到什么情况才该用。还可能建议本身是对的,却没标明它只适用于哪类任务,于是被用到不该用的地方。
所以经验不是把轨迹缩写成一段话。以后要还能用,至少得写清三件事:什么情况下启用(触发条件),具体该怎么做(可执行建议),以及它适用到哪、不适用到哪(适用范围)。
Reflexion 提出 Verbal Reinforcement Learning。环境往往只回一个很稀疏的信号,比如成功了/失败了,它并没有告诉 Agent 错在哪、下一步该改什么。Reflexion 不拿这个信号去更新模型参数,而是让 Agent 查看整条轨迹,把失败写成一段能读懂的复盘,存进情景记忆(Episodic Memory),下次再解同一道题时把这段记忆带上。
Reflexion把Agent拆成三个角色:

例如,在文本交互环境 ALFWorld 中,Agent 寻找或处理物品失败时,环境通常只返回失败信号。Self-Reflection 会结合完整轨迹,把它扩展成更具体的建议:可能是没有确认是否真正拿到物品,也可能是搜索顺序不合理。下一轮,Actor 再把这段反思放进上下文,调整新的行动路径。
Reflexion 最重要的贡献,不只是增加了一个复盘 Prompt。而是它把策略沉淀成:
固定模型参数 + 可更新的语言记忆
模型权重没有变化,但 Agent 下一次看到的上下文发生了变化,因此行为策略也跟着变化。(硬说的话,我觉得这和大模型早期的 few-shot 是同一类办法:不改权重,只改上下文。差别在于,few-shot 塞进去的是别人准备好的示范;Reflexion 塞进去的,是 Agent 自己刚写下的失败复盘。)
论文把反思称作一种更有语义的信息反馈,相比单一标量奖励,它可以直接指出应该修改什么。这已经具备了:执行轨迹、环境反馈、经验留存和再次使用。
但严格来说,Reflexion 主要解决的还是:同一个任务失败之后,下一次应该怎么做得更好。
论文在很多实验里让 Agent 围绕同一个问题多次尝试,Memory 也通常只保留最近 1~3 条反思。它证明了语言反馈能够改善后续 Trial,却没有完整解决一条经验能否稳定迁移到不同任务、怎样长期管理大量经验,以及更新是否会伤害其他能力。
我觉得 Reflexion 可以算是自进化的重要前驱:
它让 Agent 学会了失败后反思,但还没有完全解决跨任务成长。
Reflexion 关注一次失败后的再次尝试,ExpeL则把观察范围拉到了多条任务轨迹。
ExpeL流程如下:
多次任务执行 ↓ 成功 / 失败轨迹池 ↓ 比较成败、寻找共同模式 ↓ 形成 Insight ↓ 新任务加载 Insight + 相似成功轨迹fewshot

这里有两个变化很重要。
单独看一条失败轨迹,Agent 很容易错误归因。假设同一个任务第一次失败、第二次成功,把两条轨迹放在一起比较,就可以更具体地看到哪些动作相同,以及哪个分叉点真正改变了结果。
ExpeL 一方面比较同一任务的失败—成功轨迹对,另一方面从多个不同任务的成功轨迹中寻找共同的最佳实践。这样提炼出来的不再只是我刚才哪一步做错了,而更接近这一类任务通常应该采用什么策略。
ExpeL 维护一组 Insight,并允许模型执行四种操作:
当一条 Insight 的重要性降到一定程度,它还会被删除。
这比每次失败就在 prompt 后面加一句话前进了一步。经验不再只写入,还会被后续证据修改、支持或者淘汰。
不过,ExpeL 的整体流程仍然更接近先学习,再评测。到新任务后,Insight 提供通用原则,检索到的成功轨迹提供 few-shot 示例。它证明了跨任务经验提炼与迁移的价值,但还不是部署后持续运行的完整在线进化系统。
论文还提出一个值得注意的发现:在特定实验设置下,把失败后生成的 Reflection 一并纳入 Insight 提炼,效果反而可能下降。可能原因是,Reflection 本身可能误判失败原因,从而把更高层的洞见带偏。
这说明:
反思获取不是必然正确的经验。Agent 对自己的解释,也必须接受其他轨迹和真实结果的检验。
Reflection 和 Insight 都还停在提醒这一层:用自然语言告诉 Agent 该注意什么。可很多复杂任务不能只靠一句原则,还得有一套能反复走的流程步骤。
2024 年的Agent Workflow Memory这篇论文将经验进一步表示成 Workflow。
一条 Workflow 有两块:一块说明这套流程是干什么的,再加一块抽掉具体细节后的步骤。
例如,过去完成过一次“在网站中查找订单并申请退款”,系统可以把具体订单号、用户名等实例信息抽掉,留下更一般的流程存储到记忆。
AWM 可以离线从已有示例中归纳 Workflow,也可以在线从已经成功完成的测试任务中不断沉淀新 Workflow。后续遇到相似任务时,Agent将相关Workflow 放进上下文,指导长链路操作。
这代表经验表示的一次重要升级:
Reflection:这一次哪里做错了 Insight:这一类任务应该注意什么 Workflow:这一类任务通常按什么步骤完成

但 Workflow 也带来了新的风险。
一条过去成功的操作路径,不一定适合当前环境。如果网页结构变了、工具接口变了,或者中间状态不同,Agent 仍然机械遵循旧 Workflow,反而可能走错。AWM 的实验也观察到,Workflow 有时会引导 Agent 执行与当前环境状态并不相关的动作,而 Agent 不一定知道应该在什么地方偏离既有流程。
所以,把经验从一句话变成 Workflow,不只是让经验更强,也让错误经验的影响更大。
到 Reflexion、ExpeL 和 AWM,经验学习的几个基本部件已经出现了:
但这些部件还没有自动组成一个长期运转的系统。
一个持续工作的 Agent 每天可能产生上千条轨迹。新经验会不断进入,旧经验会过期,多个规则会互相冲突。一条 Insight 在前三个任务中有效,在第四个任务中失败,系统究竟应该修改它、降低权重,还是直接删除?
这时研究问题就从“怎样保存一次经验”,转向了:
怎样管理经验从产生、提炼、使用、评价到更新的完整生命周期?
ReasoningBank、EvolveR 和 AgentEvolver 分别补上三个不同缺口:ReasoningBank 关注经验怎样被抽象和复用,EvolveR 关注经验怎样形成完整生命周期,AgentEvolver 则进一步追问任务从哪里来、探索怎样被经验引导,以及最终结果应该归因给哪些动作。
ReasoningBank关注的不是原始轨迹,也不只保存成功案例。它要解决的是:没有标准答案、任务陆续到来时,怎样把刚做完的成功和失败,变成下一题还能用的推理策略。
论文给出做法:新任务先检索已有策略,带着策略去执行,再判断这次成没成;成功就抽出为什么有效,失败就抽出以后怎样避坑,写回策略库。它刻意丢掉网页名、具体字符串等信息,只留跨任务还能用的判断方式。例如,网页某功能按钮在右上角很容易过期;执行不可逆操作前先确认对象和权限则更可能复用。
这相当于把经验再往上抽一层:从具体动作、成败反思、操作流程,抽到可迁移的推理策略。
但是肯定也不是越抽象越好,如何很好的抽象也是个难题。过于具体的经验难以迁移,过于抽象的原则又难以落到具体动作上。ReasoningBank 主要解决策略抽取、检索与复用,但还没建立长期维护意义上的完整经验治理。
EvolveR包含两个交替阶段:Online Interaction 和 Offline Self-Distillation

在离线阶段,Agent 用自己的策略模型分析历史轨迹:成功轨迹被提炼为 Guiding Principle,失败轨迹被提炼为 Cautionary Principle。新 Principle 不会被直接追加,而是先进行语义去重,再判断应该新增还是合并到已有经验。每条 Principle 还维护历史效果分数,用于记录它在后续任务中的真实作用。
关键的是,EvolveR 不只把经验放进上下文。在线交互产生的轨迹还被用于强化学习,进一步更新模型策略。于是经验同时作用在两个位置:
这比早期的“经历—反思—重试”更接近完整自进化闭环,因为经验不仅被生成和复用,还进入了持续整理、质量控制和策略更新。
但 EvolveR 仍然不是一个完全在线、完全自治的系统。它采用交替运行的阶段式设计:Agent 先在线完成一批任务并积累轨迹,再进入离线自蒸馏阶段,提炼、去重和评价经验,随后通过强化学习更新策略,最后进入下一轮在线交互。
所以,这里的 Online 指任务轨迹产生于交互阶段,并不意味着每完成一个任务,系统都会立即更新自身。论文的主要实验也集中在 HotpotQA 等具有明确答案的多跳问答任务上,搜索方向和最终答案相对容易评价。距离开放环境中的长期运行,以及 Agent 自主决定何时更新、哪些更新可以安全晋升,仍有明显距离。
AgentEvolver进一步把问题推进到任务生成、探索和归因。
它提出三个相互配合的机制:

其中 Self-attributing 尤其关键。
一个长任务最终失败,不意味着其中所有动作都是错的;最终成功,也不意味着每一步都值得学。如果系统只给整条轨迹一个 0 或 1,就很难知道该强化哪一步、避开哪一步。这就是 Credit Assignment:最终结果,应该归因给哪些决策?
AgentEvolver 没有停在指出这个问题。它让模型事后回看完整轨迹,逐步判断每个动作对最终结果产生了正面还是负面贡献,再把过程质量信号与最终任务结果结合,形成比单一成败奖励更细的学习信号。奖励不再只落在终点,中间真正影响结果的动作也有机会获得差异化权重。
不过,这种归因仍然依赖 LLM 对完整轨迹的事后判断,并不等于获得了严格的因果归因。归因一旦出错,后续 Memory、Skill、Harness 或模型参数更新,都可能把错误进一步固化。
再把这些论文放在一起回顾,可以看到“经验”不是一个单一对象。
层级 | 保存的内容 | 代表论文 | 主要作用 |
|---|---|---|---|
Trace | 完整状态、动作、观察和结果 | -- Agent 日志与轨迹系统 | 提供原始执行证据 |
Reflection | 对一次成功或失败的语言解释 | Reflexion | 改善当前任务的下一次尝试 |
Insight / Principle | 从多条轨迹中提炼出的规律 | ExpeL、EvolveR | 跨任务提供策略建议 |
Workflow | 去除实例信息后的操作步骤 | Agent Workflow Memory | 复用稳定任务流程 |
Skill | 带触发条件和执行逻辑的能力单元 | Voyager | 直接执行或组合复杂动作 |
Policy | 决定下一步动作的内部策略 | AgentEvolver、EvolveR | 将经验写入模型行为 |
(其中 Skill 这一层,Voyager 是早期代表:把成功执行过的行为封装成代码技能,存进不断增长的技能库,后续任务再检索和组合。它已经是可调用的能力单元,不再只是一句提醒或一套步骤。但是一旦写成这样,创建、修改、验证和失效就都成了新问题。本文要看的是经验从轨迹里被抽成什么,Voyager不展开讲解。)
这些表示形式,不是说越往下越“高级”。一次偶然失败可能只留在 Trace;稳定教训可以写成原则;反复出现的步骤适合 Workflow 或 Skill;高频、通用且经过充分验证的才可能值得进入模型 Policy。它们不是同一条经验的必经升级路线,而是对应了不同的成本、复用范围和执行风险。
所以系统不只要知道学到了什么,还得知道应该把它写到哪里。
如果所有经验都写进 Memory,Memory 会不断膨胀;所有教训都写进 Prompt,规则可能会互相冲突;过早封装成 Skill,会把一次偶然路径固化成能力;直接更新模型参数,成本太大,而且更难解释和回滚。
通过前面章节的介绍可以看出:会反思、会抽经验、会写流程,都不等于自进化。
档位 | 做什么 | 代表 | 还没跨过的线 |
|---|---|---|---|
改当前输出 | 生成后再批评、修改这一次的答案 | Self-refinement | 没有留存,也不跨任务 |
任务内反思 | 失败后把教训留下,再试同一道题 | Reflexion | 跨任务成长 |
经验学习 | 从多条轨迹抽规律,用于新任务 | ExpeL、AWM | 持续在线更新,并用未来任务验证 |
经验驱动的自进化 | 持续获取、管理经验,并据此改变未来的自己 | EvolveR、AgentEvolver 开始补齐 | 开放环境、自治决定何时进化、安全晋升 |
所以,论文里出现 Reflection、Memory 或 Experience,不能直接称为自进化。
Reflection 解决“这次失败后怎么再试”;经验学习解决“多次经历中能提炼出什么”;自进化还要解决“怎样持续、可靠地改变未来的自己”。

今天让大模型读一条轨迹,再生成几条经验,并不困难。真正困难的是判断这些经验是否值得进入未来。一条候选经验至少要通过四道门:
反馈是否可信:任务真的成功了吗,环境信号是否可靠
归因是否正确:真正影响结果的是哪一步,而不是模型事后猜测的原因
抽象是否合适:经验会不会过于具体、过于空泛,或者缺少适用边界
后续是否受益:独立的新任务中,经验能否带来稳定收益,而不是新的副作用
最后仍要回到上一篇的验证门槛:一次经验在相似任务上有效,不代表未来一定更好。系统还需要在历史任务、相似新任务和无关任务上分别检验收益与副作用。
所以研究重点也正在从Agent 能不能生成经验,转向系统怎样判断哪条经验值得进入未来。
一次成功或失败都可以变成反思、洞见、流程或原则,但那都不等于自进化。自进化还要这些经验被持续使用,并且让未来任务真的变好。
经验被抽出来之后,还要被保存、检索、更新和遗忘。一个系统即使提炼出了正确经验,如果后续任务检索不到、加载错了,或者旧经验在环境变化后没有及时失效,仍然不会稳定成长。
所以下一篇,我们继续讨论自进化中最重要的经验载体:Memory。
有 Memory 为什么还不够?一套记忆系统要发生什么变化,才不只是不断积累过去,而是真正开始进化?
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。