Agent · 范式对比

ReAct / Plan-and-Execute / Reflection:三大 Agent 范式有什么核心区别?怎么选型?

一张地图、三张原理图、一张核心对比表,再加两个交互演示,把"什么时候该用哪种"彻底讲透。

一、一句话答案

三者都是「让大模型反复决策」的控制流策略,但决策发生的时机和姿势不同

  • ReAct 边想边做:每走一步都重新推理(局部最优,灵活但可能绕路)。
  • Plan-and-Execute 先规划后做:开局先列全局计划,再照着执行(有大局观,但计划可能脱离现实)。
  • Reflection 干完再复盘:执行后自我批评,把教训写进记忆再重来(最抗错,但要多花几轮成本)。
选型第一性原则:看你的任务"是否需要实时信息 / 是否步骤多 / 是否容易出错"——三者正好分别对症下药。

二、心智模型:三种「干活方式」

用装修一套房子来类比,三种范式就是三种项目经理的工作风格:

🛠️ ReAct = 边干边想的电工

到了现场才决定下一步:先看看插座在哪,决定拆哪面墙,看一眼结果再决定下一步。灵活,但没人提前画全屋图纸,复杂工程容易返工。

📋 Plan-and-Execute = 先出图纸再施工

开工前先出完整施工图(水电、泥木、油漆分步),工人照图执行。有全局把控,但若现场和图纸不符(比如墙体结构变了),就卡住。

🔍 Reflection = 干完拍视频复盘

每干完一段就录下来自己挑刺:"这里线排乱了、下次要先标尺寸",把教训记到本子上,下一处就改。越干越稳,但费时间。

记住这组比喻——下面所有技术细节,都是这三种「性格」的延伸。

三、范式地图总览

把三种范式按「是否先有全局计划」和「是否显式反思」两个维度摆开:

纵轴:是否开局先有全局计划 | 横轴:是否在执行后显式复盘 不显式复盘 ←→ 执行后显式反思(写记忆) 边走边想 ←→ 开局先规划 ReAct 边想边做 Plan- Execute 先规划后做 Reflection 干完复盘 Plan+ ReAct+ 组合范式 (右下角:纯 ReAct 既不先规划也不显式反思)

四、ReAct:边想边做

ReAct = Reasoning(推理) + Acting(行动),Yao 等 2022 年提出。核心是 Thought → Action → Observation 的循环:想一步、调一次工具、看一眼结果、再想下一步,直到 Finish

Thought 想法决定下一步 Action 行动调工具 Observation 观察工具返回 每步即时决策(局部最优),循环到 Finish

✅ 适合

  • 需要实时/外部信息(搜索、API、数据库、代码执行)
  • 任务中等复杂度、步骤不太多
  • 需要根据结果动态调整路线
  • 想快速出原型、可解释可审计

⚠️ 短板

  • 无全局计划:容易绕路、重复、卡死
  • 上下文爆栈:步数一多,草稿本很长
  • 错误传播:某步 Observation 错,后面全歪
  • 长任务易"走偏"或陷入死循环

五、Plan-and-Execute:先规划后做

Plan-and-Execute 把过程拆成两段:Planner(规划者)先产出一份完整、可执行的步骤计划;Executor(执行者)再逐条执行(执行者本身往往就是个 ReAct)。开局定方向,中途少迷路。

Planner 规划者一次性产出计划 Plan = [步骤1, 步骤2, 步骤3 …]全局、有序、可检查 Executor 执行者逐条执行(常是ReAct) Observation 各步结果累积到上下文 虚线:按计划循环执行,可触发重规划

✅ 适合

  • 多步骤、长任务,需要全局把控
  • 流程相对可预测、能提前分解
  • 希望计划可被人工审核/审批
  • 步骤可并行、可分工

⚠️ 短板

  • 计划可能脱离现实:模型开局看不见执行细节,常列错/漏步骤
  • 环境一变(数据缺失),计划就失效,需重规划兜底
  • 重规划有额外成本,且不擅长临时改路线

六、Reflection:干完再复盘

Reflection(论文 Reflexion,Shinn 等 2023)是"语言化强化学习":Agent 先尝试,再由 Critic(批评者)对自己整段轨迹自我批评,把"哪错了、怎么改"写成反思记忆,下一轮带着记忆重来。错误不白犯。

Actor 行动者执行任务 Environment 环境返回结果/反馈 Critic 批评者自我挑刺 Reflection Memory 反思记忆 虚线:把"教训"写回记忆,下一轮带着它重做

✅ 适合

  • 易出错、需要反复试错的任务(写代码、决策、博弈)
  • 有客观反馈/可验证对错(单测、评分)
  • 质量要求高,容得下多花几轮成本
  • 希望 Agent"越用越聪明"

⚠️ 短板

  • 成本最高:同一任务跑多遍
  • 依赖 Critic 自评质量,评不准就白反思
  • 延迟高、可能不收敛(反复改仍不对)
  • 单轮失败没有兜底,必须多轮

七、核心区别对比表(重点)

把三者放在同一张表里逐维度对照——这是选型时最常翻的一页。

维度ReActPlan-and-ExecuteReflection
核心动作想+做交错循环出计划再执行执行后自我批评再重来
下一步何时决策每步即时、局部开局一次性定全局每轮结束后反思纠偏
是否有全局计划❌ 只有局部思路✅ 开局就有⚠️ 通常无(可叠加)
是否利用失败经验仅限当前轮上下文靠重规划补救✅ 显式写记忆复用
上下文结构线性草稿本(Thinking+Obs)计划 + 执行轨迹轨迹 + 反思记忆
适合任务长度短–中中–长中(靠多次尝试)
容错性低(错误易传播)中(可重规划)(反思能改)
token / 成本中–高(计划+执行)(跑多遍)
实时信息依赖(边查边用)
最大风险绕路/死循环/走偏计划脱离现实不收敛/自评失真
典型实现LangChain AgentExecutor、OpenAI 工具调用LangGraph、PlanAndExecute AgentReflexion、LangGraph + Critic 节点
一句话记住:ReAct 管"灵活"、Plan 管"不乱"、Reflection 管"不犯错"。三者解决的问题正交,所以现实里常组合。

八、为什么会有这些区别(本质)

区别的根本来源,是「规划 / 行动 / 反思」三者被放在了循环的哪个位置

ReAct:规划=行动内循环

没有独立规划阶段,规划被压缩进每一步的 Thought。所以灵活但无大局。

Plan:规划=独立前置

把规划单拎出来一次性完成,执行阶段尽量"别动脑"。所以稳但怕变。

Reflection:反思=独立后置

不改动单次循环,而是在循环外加一层"复盘→记忆"。所以贵但抗错。

ReAct 把"规划"塞进循环里 | Plan 把"规划"提到循环前 | Reflection 把"反思"加到循环后

九、交互1:同一任务,三种范式怎么走

任务:「分析竞品 A 上月销量,写一份与本公司、行业的对比报告」(需要查多源数据 + 易漏项)。分别点三种范式,看它们各自的处理轨迹。

👆 点击上方按钮,查看该范式处理这个任务时的典型轨迹。

十、实际项目里怎么选型

不要盲选,按下面 4 个信号对号入座:

信号①:要不要实时/外部信息?

只要任务需要查搜索、API、数据库、跑代码——必须含"行动",ReAct 类是最低门槛。纯 CoT 直接排除。

信号②:步骤多不多、要不要大局?

超过 5 步、且顺序/依赖重要(如"订机票→酒店→行程")——优先 Plan-and-Execute,先定计划再走,避免中途迷失。

信号③:容不容得错、好不好验证?

写代码、生成方案这类易错且能自动校验的——上 Reflection,让它试错后自我修正。

信号④:预算与延迟?

Reflection 最贵最慢,ReAct 最省最灵活,Plan 居中。在线高并发选轻量,离线批处理可上 Reflection。

经验法则:先用 ReAct 打底(它能覆盖大多数场景);当发现"长任务总走偏"→加 Plan;当发现"总犯同类错"→加 Reflection。

十一、选型决策树

任务需要外部实时信息? 否 → 纯 LLM / CoT 即可 是 → 需要"行动" 步骤多(>5)且要全局把控? 是 → Plan-and-Execute 否 → ReAct 起步 任务易错且能自动验证? 是 → 叠加 Reflection

决策树读起来就是:需要信息→必行动;步骤多→先计划;易错→加复盘。最右那支(ReAct 起步)往往还会再叠加 Reflection,见下一节。

十二、真实项目:多数要"组合"而非单选

工业级 Agent 几乎不会只用一种。最常见的组合是 规划 + 执行 + 复盘 三段式:

① Planner出全局计划 ② Executor (ReAct)逐步调工具执行 ③ Critic/Reflect复盘写记忆 虚线:复盘不满意则回到 Planner 重规划,形成闭环
这也解释了为什么很多框架(如 LangGraph)用而不是线性循环来描述 Agent:节点 = 规划/执行/批评,边 = 流转条件。三种范式本质上就是这三类节点的不同编排。

十三、框架映射:你在用什么就在用哪种

范式代表框架 / 组件怎么认
ReActLangChain AgentExecutor、LlamaIndex ReActAgent、OpenAI 函数调用 / 工具调用Prompt 里写 Thought/Action/Observation,运行时解析循环
Plan-and-ExecuteLangChain PlanAndExecute Agent、LangGraph(planner/executor 节点)、Microsoft TaskWeaver、AutoGPT(早期)明显分"先生成计划列表"和"再跑计划"两阶段
ReflectionReflexion(原论文)、LangGraph + Critic 节点、self-reflection loop、AI Scientist / CAMEL 反思模块有独立的"批评/复盘"步骤,并把结论存回记忆
组合LangGraph 状态图、CrewAI、AutoGen 多角色规划→执行→批评 多节点串成图,可循环

十四、落地检查清单

  • ☐ 任务是否必须调外部工具?否 → 别上 Agent,纯 LLM 更省。
  • ☐ 步骤 >5 且依赖顺序重要?是 → 先上 Plan-and-Execute。
  • ☐ 过程易错且能自动验证(单测/评分)?是 → 叠加 Reflection。
  • ☐ 是否在线高并发、延迟敏感?是 → 轻量 ReAct,慎用 Reflection。
  • ☐ 是否离线批处理、质量优先?是 → 可放心用 Reflection 多轮。
  • ☐ 有没有给 ReAct 加 max_steps 防死循环?有没有给 Plan 加重规划兜底?
  • ☐ Reflection 的 Critic 有没有"客观反馈"可用?纯主观任务反思容易空转。

十五、小结速记

问题答案
三者核心区别?ReAct 每步即时决策(灵活);Plan 开局定全局(不乱);Reflection 执行后复盘(抗错)
本质差异来自哪?「规划/行动/反思」被放在循环的 内 / 前 / 后 三个不同位置
怎么选?需实时信息→必含行动;步骤多→Plan;易错可验证→Reflection;多数组合使用
真实项目怎么用?Planner → Executor(ReAct) → Critic(Reflection) 三段式闭环,用图编排
最容易踩的坑?ReAct 走偏/死循环;Plan 计划脱离现实;Reflection 不收敛/自评失真
配套阅读:本目录 agent-reasoning-react.html(ReAct 原理与实现细节)、agent-tools.html(工具调用机制)。
《大模型工作原理图解系列 · Agent 篇》之二。