首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Agent自进化系列(三)--从反思到自进化:Agent 如何把一次经历变成未来能力

Agent自进化系列(三)--从反思到自进化:Agent 如何把一次经历变成未来能力

原创
作者头像
languageX
发布2026-08-23 23:05:59
发布2026-08-23 23:05:59
3172
举报

上一篇,我们用“五个问题和一个验证门槛”,讨论了什么才叫自进化 Agent。

但 Agent 不会从“会做事”直接跃迁到“会成长”。在真正进化之前,必须先完成一个关键转化:把一次具体任务中的成功或失败,变成在未来任务中仍然有用的经验。经验都没有形成,也就谈不上后续的 Memory 如何进化、Skill 如何更新。

Agent 每天都会留下大量执行轨迹:它看到了什么、如何思考、调用了哪些工具、在哪一步失败,以及最终是否完成任务。但 Trace 只是对“发生过什么”的记录,并不等于有了经验;任务结束后让模型生成一段反思,也不意味着 Agent 已经真正学会了什么。

所以需要解决的问题就是:

一次具体的成功或失败,怎样才能沉淀为未来任务中仍然有用的能力?

整理近几年一些论文,可以看到一条逐渐清晰的技术演进路线:先让 Agent 针对单次失败进行反思,再从多条轨迹中提炼可跨任务迁移的规律;然后把这些规律进一步组织成 workflow 或者 skill,最终形成一套持续获取、整理、复用和验证经验的闭环。

本文沿着这条演进路线来讨论:一次成败,怎样变成以后还能用的经验。

一、Agent 留下了一条 Trace,但它还没有学会什么

先看一条最简单的代码 Agent 轨迹。

用户要求,修改数据库字段,并更新相关接口-->Agent 修改数据库模型-->Agent 修改接口返回结构-->运行测试失败--> 发现序列化逻辑没有同步更新-->补充修改并通过测试。

同一条 trace 中,可能同时存在不同抽象层级的信息:

“Agent 打开文件失败”,可能只是当前任务中的偶发细节;

“修改字段后,需要同步检查序列化逻辑”,可能是这个项目中的局部经验;

“数据库结构发生变化后,必须执行完整回归测试”,可能是一条更稳定的工程规范。

trace 记录了这些事情,但它不会自动告诉系统:哪一条值得留下,又应该以什么抽象层级留下。

所以,从 Trace 到 Experience,至少要经过三次判断:

  1. 结果评价:这次任务究竟成功还是失败?
  2. 成败归因:哪些动作真正造成了结果?
  3. 经验抽象:具体经历里,什么可以迁移到未来任务?
Trace 如何变成 Experience
Trace 如何变成 Experience

这几步看起来很自然,但是实际应用中每一步都可能出错。

Agent 可能把测试失败归因给 prompt 不够详细,真正原因却是工具返回被错误解析,抽出来的建议就会指错方向。也可能从一次偶然成功里总结出规律,却没说清以后遇到什么情况才该用。还可能建议本身是对的,却没标明它只适用于哪类任务,于是被用到不该用的地方。

所以经验不是把轨迹缩写成一段话。以后要还能用,至少得写清三件事:什么情况下启用(触发条件),具体该怎么做(可执行建议),以及它适用到哪、不适用到哪(适用范围)。

二、Reflexion:先让 Agent 从一次失败中吸取教训

Reflexion : Language Agents with Verbal Reinforcement Learning

Reflexion 提出 Verbal Reinforcement Learning。环境往往只回一个很稀疏的信号,比如成功了/失败了,它并没有告诉 Agent 错在哪、下一步该改什么。Reflexion 不拿这个信号去更新模型参数,而是让 Agent 查看整条轨迹,把失败写成一段能读懂的复盘,存进情景记忆(Episodic Memory),下次再解同一道题时把这段记忆带上。

Reflexion把Agent拆成三个角色:

  • Actor:去执行任务,留下轨迹;
  • Evaluator:看环境给的结果,判断这次成没成;
  • Self-Reflection:对照轨迹和评价,写清这次错在哪、下次该怎么改。
Reflexion 任务内反思循环
Reflexion 任务内反思循环

例如,在文本交互环境 ALFWorld 中,Agent 寻找或处理物品失败时,环境通常只返回失败信号。Self-Reflection 会结合完整轨迹,把它扩展成更具体的建议:可能是没有确认是否真正拿到物品,也可能是搜索顺序不合理。下一轮,Actor 再把这段反思放进上下文,调整新的行动路径。

Reflexion 最重要的贡献,不只是增加了一个复盘 Prompt。而是它把策略沉淀成:

固定模型参数 + 可更新的语言记忆

模型权重没有变化,但 Agent 下一次看到的上下文发生了变化,因此行为策略也跟着变化。(硬说的话,我觉得这和大模型早期的 few-shot 是同一类办法:不改权重,只改上下文。差别在于,few-shot 塞进去的是别人准备好的示范;Reflexion 塞进去的,是 Agent 自己刚写下的失败复盘。)

论文把反思称作一种更有语义的信息反馈,相比单一标量奖励,它可以直接指出应该修改什么。这已经具备了:执行轨迹、环境反馈、经验留存和再次使用。

但严格来说,Reflexion 主要解决的还是:同一个任务失败之后,下一次应该怎么做得更好。

论文在很多实验里让 Agent 围绕同一个问题多次尝试,Memory 也通常只保留最近 1~3 条反思。它证明了语言反馈能够改善后续 Trial,却没有完整解决一条经验能否稳定迁移到不同任务、怎样长期管理大量经验,以及更新是否会伤害其他能力。

我觉得 Reflexion 可以算是自进化的重要前驱:

它让 Agent 学会了失败后反思,但还没有完全解决跨任务成长。

三、ExpeL:从一次反思,走向多条轨迹中的共同规律

ExpeL: LLM Agents Are Experiential Learners

Reflexion 关注一次失败后的再次尝试,ExpeL则把观察范围拉到了多条任务轨迹。

ExpeL流程如下:

多次任务执行 ↓ 成功 / 失败轨迹池 ↓ 比较成败、寻找共同模式 ↓ 形成 Insight ↓ 新任务加载 Insight + 相似成功轨迹fewshot

ExpeL 跨任务经验提炼
ExpeL 跨任务经验提炼

这里有两个变化很重要。

1. 不只看失败,也比较成功与失败

单独看一条失败轨迹,Agent 很容易错误归因。假设同一个任务第一次失败、第二次成功,把两条轨迹放在一起比较,就可以更具体地看到哪些动作相同,以及哪个分叉点真正改变了结果。

ExpeL 一方面比较同一任务的失败—成功轨迹对,另一方面从多个不同任务的成功轨迹中寻找共同的最佳实践。这样提炼出来的不再只是我刚才哪一步做错了,而更接近这一类任务通常应该采用什么策略。

2. Insight不是无限追加,而是会被投票和修改

ExpeL 维护一组 Insight,并允许模型执行四种操作:

  • ADD:增加新经验;
  • EDIT:修改已有经验;
  • UPVOTE:更多轨迹支持这条经验;
  • DOWNVOTE:新证据不支持这条经验。

当一条 Insight 的重要性降到一定程度,它还会被删除。

这比每次失败就在 prompt 后面加一句话前进了一步。经验不再只写入,还会被后续证据修改、支持或者淘汰。

不过,ExpeL 的整体流程仍然更接近先学习,再评测。到新任务后,Insight 提供通用原则,检索到的成功轨迹提供 few-shot 示例。它证明了跨任务经验提炼与迁移的价值,但还不是部署后持续运行的完整在线进化系统。

论文还提出一个值得注意的发现:在特定实验设置下,把失败后生成的 Reflection 一并纳入 Insight 提炼,效果反而可能下降。可能原因是,Reflection 本身可能误判失败原因,从而把更高层的洞见带偏。

这说明:

反思获取不是必然正确的经验。Agent 对自己的解释,也必须接受其他轨迹和真实结果的检验。

四、Agent Workflow Memory:经验也可以变成流程

Agent Workflow Memory

Reflection 和 Insight 都还停在提醒这一层:用自然语言告诉 Agent 该注意什么。可很多复杂任务不能只靠一句原则,还得有一套能反复走的流程步骤。

2024 年的Agent Workflow Memory这篇论文将经验进一步表示成 Workflow。

一条 Workflow 有两块:一块说明这套流程是干什么的,再加一块抽掉具体细节后的步骤。

例如,过去完成过一次“在网站中查找订单并申请退款”,系统可以把具体订单号、用户名等实例信息抽掉,留下更一般的流程存储到记忆。

AWM 可以离线从已有示例中归纳 Workflow,也可以在线从已经成功完成的测试任务中不断沉淀新 Workflow。后续遇到相似任务时,Agent将相关Workflow 放进上下文,指导长链路操作。

这代表经验表示的一次重要升级:

Reflection:这一次哪里做错了 Insight:这一类任务应该注意什么 Workflow:这一类任务通常按什么步骤完成

经验从 Reflection 到 Workflow
经验从 Reflection 到 Workflow

但 Workflow 也带来了新的风险。

一条过去成功的操作路径,不一定适合当前环境。如果网页结构变了、工具接口变了,或者中间状态不同,Agent 仍然机械遵循旧 Workflow,反而可能走错。AWM 的实验也观察到,Workflow 有时会引导 Agent 执行与当前环境状态并不相关的动作,而 Agent 不一定知道应该在什么地方偏离既有流程。

所以,把经验从一句话变成 Workflow,不只是让经验更强,也让错误经验的影响更大。

五、从经验复用到持续学习:生命周期、探索与归因

到 Reflexion、ExpeL 和 AWM,经验学习的几个基本部件已经出现了:

  • 从环境获得反馈;
  • 从轨迹中生成反思;
  • 从多条经历中抽象 Insight;
  • 检索相似经验;
  • 把成功路径归纳成 Workflow。

但这些部件还没有自动组成一个长期运转的系统。

一个持续工作的 Agent 每天可能产生上千条轨迹。新经验会不断进入,旧经验会过期,多个规则会互相冲突。一条 Insight 在前三个任务中有效,在第四个任务中失败,系统究竟应该修改它、降低权重,还是直接删除?

这时研究问题就从“怎样保存一次经验”,转向了:

怎样管理经验从产生、提炼、使用、评价到更新的完整生命周期?

ReasoningBank、EvolveR 和 AgentEvolver 分别补上三个不同缺口:ReasoningBank 关注经验怎样被抽象和复用,EvolveR 关注经验怎样形成完整生命周期,AgentEvolver 则进一步追问任务从哪里来、探索怎样被经验引导,以及最终结果应该归因给哪些动作。

1. ReasoningBank:不保存答案,而是保存可迁移的推理策略

ReasoningBank: Scaling Agent Self-Evolving with Reasoning Memory

ReasoningBank关注的不是原始轨迹,也不只保存成功案例。它要解决的是:没有标准答案、任务陆续到来时,怎样把刚做完的成功和失败,变成下一题还能用的推理策略。

论文给出做法:新任务先检索已有策略,带着策略去执行,再判断这次成没成;成功就抽出为什么有效,失败就抽出以后怎样避坑,写回策略库。它刻意丢掉网页名、具体字符串等信息,只留跨任务还能用的判断方式。例如,网页某功能按钮在右上角很容易过期;执行不可逆操作前先确认对象和权限则更可能复用。

这相当于把经验再往上抽一层:从具体动作、成败反思、操作流程,抽到可迁移的推理策略。

但是肯定也不是越抽象越好,如何很好的抽象也是个难题。过于具体的经验难以迁移,过于抽象的原则又难以落到具体动作上。ReasoningBank 主要解决策略抽取、检索与复用,但还没建立长期维护意义上的完整经验治理。

2. EvolveR:把经验获取、整理、使用和参数更新闭合起来

EvolveR: Self-Evolving LLM Agents through an Experience-Driven Lifecycle

EvolveR包含两个交替阶段:Online Interaction 和 Offline Self-Distillation

EvolveR 完整经验生命周期
EvolveR 完整经验生命周期

在离线阶段,Agent 用自己的策略模型分析历史轨迹:成功轨迹被提炼为 Guiding Principle,失败轨迹被提炼为 Cautionary Principle。新 Principle 不会被直接追加,而是先进行语义去重,再判断应该新增还是合并到已有经验。每条 Principle 还维护历史效果分数,用于记录它在后续任务中的真实作用。

关键的是,EvolveR 不只把经验放进上下文。在线交互产生的轨迹还被用于强化学习,进一步更新模型策略。于是经验同时作用在两个位置:

  • 模型外:经验库中的 Principle;
  • 模型内:通过强化学习更新的 Policy Parameter。

这比早期的“经历—反思—重试”更接近完整自进化闭环,因为经验不仅被生成和复用,还进入了持续整理、质量控制和策略更新。

但 EvolveR 仍然不是一个完全在线、完全自治的系统。它采用交替运行的阶段式设计:Agent 先在线完成一批任务并积累轨迹,再进入离线自蒸馏阶段,提炼、去重和评价经验,随后通过强化学习更新策略,最后进入下一轮在线交互。

所以,这里的 Online 指任务轨迹产生于交互阶段,并不意味着每完成一个任务,系统都会立即更新自身。论文的主要实验也集中在 HotpotQA 等具有明确答案的多跳问答任务上,搜索方向和最终答案相对容易评价。距离开放环境中的长期运行,以及 Agent 自主决定何时更新、哪些更新可以安全晋升,仍有明显距离。

3. AgentEvolver:经验还要回答“哪一步真正有贡献”

AgentEvolver: Towards Efficient Self-Evolving Agent System

AgentEvolver进一步把问题推进到任务生成、探索和归因。

它提出三个相互配合的机制:

  • Self-questioning:在新环境中自主生成任务,减少对人工数据的依赖;
  • Self-navigating:利用已有经验改善探索,而不是每次随机试错;
  • Self-attributing:分析轨迹中不同状态和动作对最终结果的贡献。

其中 Self-attributing 尤其关键。

一个长任务最终失败,不意味着其中所有动作都是错的;最终成功,也不意味着每一步都值得学。如果系统只给整条轨迹一个 0 或 1,就很难知道该强化哪一步、避开哪一步。这就是 Credit Assignment:最终结果,应该归因给哪些决策?

AgentEvolver 没有停在指出这个问题。它让模型事后回看完整轨迹,逐步判断每个动作对最终结果产生了正面还是负面贡献,再把过程质量信号与最终任务结果结合,形成比单一成败奖励更细的学习信号。奖励不再只落在终点,中间真正影响结果的动作也有机会获得差异化权重。

不过,这种归因仍然依赖 LLM 对完整轨迹的事后判断,并不等于获得了严格的因果归因。归因一旦出错,后续 Memory、Skill、Harness 或模型参数更新,都可能把错误进一步固化。

六、从 Trace 到能力,中间其实有很多层

再把这些论文放在一起回顾,可以看到“经验”不是一个单一对象。

层级

保存的内容

代表论文

主要作用

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,会把一次偶然路径固化成能力;直接更新模型参数,成本太大,而且更难解释和回滚。

七、Reflection、Experience Learning 与 Self-Evolution 的边界

通过前面章节的介绍可以看出:会反思、会抽经验、会写流程,都不等于自进化。

档位

做什么

代表

还没跨过的线

改当前输出

生成后再批评、修改这一次的答案

Self-refinement

没有留存,也不跨任务

任务内反思

失败后把教训留下,再试同一道题

Reflexion

跨任务成长

经验学习

从多条轨迹抽规律,用于新任务

ExpeL、AWM

持续在线更新,并用未来任务验证

经验驱动的自进化

持续获取、管理经验,并据此改变未来的自己

EvolveR、AgentEvolver 开始补齐

开放环境、自治决定何时进化、安全晋升

所以,论文里出现 Reflection、Memory 或 Experience,不能直接称为自进化。

Reflection 解决“这次失败后怎么再试”;经验学习解决“多次经历中能提炼出什么”;自进化还要解决“怎样持续、可靠地改变未来的自己”。

从反思到自进化
从反思到自进化

八、困难的不是生成经验,而是防止学错

今天让大模型读一条轨迹,再生成几条经验,并不困难。真正困难的是判断这些经验是否值得进入未来。一条候选经验至少要通过四道门:

反馈是否可信:任务真的成功了吗,环境信号是否可靠

归因是否正确:真正影响结果的是哪一步,而不是模型事后猜测的原因

抽象是否合适:经验会不会过于具体、过于空泛,或者缺少适用边界

后续是否受益:独立的新任务中,经验能否带来稳定收益,而不是新的副作用

最后仍要回到上一篇的验证门槛:一次经验在相似任务上有效,不代表未来一定更好。系统还需要在历史任务、相似新任务和无关任务上分别检验收益与副作用。

所以研究重点也正在从Agent 能不能生成经验,转向系统怎样判断哪条经验值得进入未来。

结语

一次成功或失败都可以变成反思、洞见、流程或原则,但那都不等于自进化。自进化还要这些经验被持续使用,并且让未来任务真的变好。

经验被抽出来之后,还要被保存、检索、更新和遗忘。一个系统即使提炼出了正确经验,如果后续任务检索不到、加载错了,或者旧经验在环境变化后没有及时失效,仍然不会稳定成长。

所以下一篇,我们继续讨论自进化中最重要的经验载体:Memory。

有 Memory 为什么还不够?一套记忆系统要发生什么变化,才不只是不断积累过去,而是真正开始进化?

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、Agent 留下了一条 Trace,但它还没有学会什么
  • 二、Reflexion:先让 Agent 从一次失败中吸取教训
    • Reflexion : Language Agents with Verbal Reinforcement Learning
  • 三、ExpeL:从一次反思,走向多条轨迹中的共同规律
    • ExpeL: LLM Agents Are Experiential Learners
      • 1. 不只看失败,也比较成功与失败
      • 2. Insight不是无限追加,而是会被投票和修改
  • 四、Agent Workflow Memory:经验也可以变成流程
    • Agent Workflow Memory
  • 五、从经验复用到持续学习:生命周期、探索与归因
    • 1. ReasoningBank:不保存答案,而是保存可迁移的推理策略
      • ReasoningBank: Scaling Agent Self-Evolving with Reasoning Memory
    • 2. EvolveR:把经验获取、整理、使用和参数更新闭合起来
      • EvolveR: Self-Evolving LLM Agents through an Experience-Driven Lifecycle
    • 3. AgentEvolver:经验还要回答“哪一步真正有贡献”
      • AgentEvolver: Towards Efficient Self-Evolving Agent System
  • 六、从 Trace 到能力,中间其实有很多层
  • 七、Reflection、Experience Learning 与 Self-Evolution 的边界
  • 八、困难的不是生成经验,而是防止学错
  • 结语
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档