Reflexion(反思)
Reflexion 由 Noah Shinn 等人于 2023 年提出(论文《Reflexion: Language Agents with Verbal Reinforcement Learning》,中文译名《语言智能体的语言强化学习》)。核心思想是在 ReAct 的执行循环外加一层语言自评估(verbal self-reflection):每次尝试失败后,Agent 不直接重试,而是先用自然语言回顾"哪里出了问题、下次怎么做不一样",把这段反思写入情节记忆(episodic memory),再次尝试时将反思作为额外上下文读入,避免重蹈覆辙。
这种机制不依赖梯度更新权重,而是依赖语言推理在上下文内完成"试错 → 总结 → 改进"的闭环——本质上是把人类"做完一遍、复盘、再来"的学习模式编码进 Agent Loop。
三个角色分工
Reflexion 框架在内部引入三个独立角色:
- Actor(执行者):基于当前策略执行 ReAct 循环,产生行动轨迹
- Evaluator(评估者):判断 Actor 的轨迹好不好——是否达到目标
- Self-Reflection Model(自省模型):根据 Evaluator 的信号生成语言反思,将反思追加到情节记忆
三者形成外层循环:Actor 执行 → Evaluator 评分 → 若失败则 Self-Reflection 生成反思 → Actor 带着反思重试。
与 ReAct 的关系
| 维度 | ReAct | Reflexion |
|---|---|---|
| 推理轨迹 | Thought-Action-Observation | 同上(ReAct 作为内层循环) |
| 失败处理 | 继续下一步 Thought | 先反思失因,写入情节记忆 |
| 跨轮记忆 | 无 | 把反思结果带入下一轮尝试 |
| 适合场景 | 大多数工具调用任务 | 试错密集型任务(搜索、代码调试) |
Reflexion 不是 ReAct 的替代,而是在 ReAct 循环外加了一个"复盘层"。
典型应用场景
Reflexion 在以下场景比纯 ReAct 更有优势:
- 多步决策任务:如 AlfWorld(交互式文字游戏环境),Reflexion 相较基础 ReAct 有显著提升
- 代码生成与调试:失败用例 → 反思错误 → 修改代码,比盲目重试效率更高
- 搜索密集型推理:每次搜索结果不理想时总结信息缺口,引导下一次更精准的查询
局限性
Reflexion 依赖模型能生成有效的反思内容。如果模型本身无法准确判断失败原因,反思质量低,积累的情节记忆反而引入错误前提,导致后续尝试越偏越远。此外,每轮都追加反思记忆会快速扩大上下文,带来 Context Rot(上下文腐烂) 风险。
在循环演进中的位置
Reflexion 属于第二代(Gen 2,2022–2023)Agent Loop(智能体循环) 架构,与 ReAct 和 Plan-and-Execute(规划与执行) 同属这一代的代表性模式。三者各自探索提升多步 Agent 循环质量的不同路径:ReAct 引入显式推理轨迹,Reflexion 引入跨轮自我校正,Plan-and-Execute 引入执行并行化。
相关概念
- Evaluator-Optimizer(评估器-优化器) — 相关的迭代改进模式,但使用独立的评估者 LLM 而非同一模型自我反思
- ReAct — Reflexion 的基础执行层,Thought-Action-Observation 三元组
- Agent Loop(智能体循环) — Reflexion 是在 Agent Loop 上追加自评估的增强模式
- Plan-and-Execute(规划与执行) — 同代的另一种模式,关注执行并行化而非自我校正
- Agent Memory(Agent 记忆) — 情节记忆是 Reflexion 的核心机制,与跨轮状态持久化密切相关
- Context Rot(上下文腐烂) — 反思记忆累积后的上下文膨胀风险
- Loop Engineering(循环工程) — Reflexion 为循环工程的 Verifier/Sub-agent 角色提供了一个实现参考
- Evals(评估) — Evaluator 角色在更大系统中对应的外部验证机制