Agent 的决策与规划:ReAct、Plan-and-Execute、Reflexion 与 Tree of Thoughts

本文是「Agent 基本概念」系列第三篇。

前两篇我们分别讲清了 Agent 是什么 和 Agent 由哪些组件构成 。这一篇进入 Agent 最核心也最容易被混淆的部分:Agent 到底怎么"想"和"做" 。

系列规划:① 什么是 AI Agent → ② 核心组件 → ③ 决策与规划 → ④ 记忆与工具 → ⑤ 架构与落地。

前言:Agent 的"思维方式"决定了它的能力上限

上一篇文章中,我们把 Agent 拆成了感知、LLM/规划、记忆、工具、行动、执行循环六个组件。其中,"规划"和"执行循环"之间的配合方式,直接决定了 Agent 在真实任务中的表现。

同样是调用 LLM + 工具,不同的决策与规划模式会带来截然不同的结果:

  • 有的 Agent 一步一想,边做边看,灵活但容易绕路;
  • 有的 Agent 先谋后动,全局规划,稳定但不够灵活;
  • 有的 Agent 做完就反思,能自我改进,但成本更高;
  • 有的 Agent 同时探索多条路径,质量更高,但计算代价大。

这四种模式,就是当前 Agent 领域最主流的 ReAct、Plan-and-Execute、Reflexion、Tree of Thoughts。

这篇文章的主线是:

从"如何做决策"出发,理解四种主流规划模式的设计思想、工作流程和适用场景。

一、ReAct:边想边做,推理与行动交替

1.1 为什么需要 ReAct?

在 ReAct 出现之前,LLM 做推理主要靠 Chain-of-Thought(CoT) ,让模型生成推理链再给出答案。但 CoT 有一个根本问题:模型完全依赖内部知识,不与外部世界交互,无法获取实时信息,也无法根据环境反馈调整推理方向。

另一方面,也有研究让 LLM 在环境中直接行动(比如文本游戏、网页导航),但这些方法缺乏高层推理和长期记忆,无法抽象地规划目标。

ReAct 的核心洞察是: 推理和行动不是二选一,而是应该交替进行、相互增强。

1.2 ReAct 的工作机制

ReAct 让 LLM 以交错方式生成推理轨迹(reasoning traces)和任务特定动作(actions)。

一个典型的 ReAct 循环包含三步:

  1. Thought(思考) :模型推理当前状态,决定下一步该做什么;
  2. Action(行动) :调用工具或执行动作;
  3. Observation(观察) :获取行动结果,作为下一步推理的输入。

这个循环不断重复,直到任务完成。

关键机制 :推理轨迹帮助模型归纳、跟踪和更新行动计划,同时处理异常情况;动作则允许模型与外部环境交互以获取额外信息。两者的协同让模型能够进行动态推理,在执行过程中创建、维护和调整计划。

1.3 一个直观的例子

假设用户问:"苹果遥控器是什么时候发布的?"

ReAct Agent 的轨迹可能是:

text 复制代码
Thought 1: 我需要查找 Apple Remote 的发布信息
Action 1: Search[Apple Remote]
Observation 1: 找到相关页面,但信息不完整
Thought 2: 我需要进一步确认发布时间
Action 2: Search[Apple Remote release date]
Observation 2: 找到确切日期
Thought 3: 信息足够,可以回答了

每一步的推理都基于上一步的观察,推理和行动紧密耦合。

1.4 优势与局限

优势:

  • 灵活,能根据中间结果动态调整策略;
  • 每一步都有推理痕迹,可解释性好;
  • 适合需要边查边做的探索性任务。

局限:

  • 每步都要调用 LLM,延迟和成本较高;
  • 容易陷入局部决策,缺乏全局视角;
  • 在长任务中容易偏离目标。

适用场景:工具调用、API 查询、网页导航等需要频繁与环境交互的任务。ReAct 在开源模型上的最低门槛约为 4B 参数。

二、Plan-and-Execute:先谋后动,规划与执行分离

2.1 为什么需要 Plan-and-Execute?

随着 Agent 要处理的任务越来越复杂,ReAct 的"一步一想"模式暴露出两个问题:

  1. 提示词越来越长:每一步都要把全部历史塞进上下文,token 成本急剧上升;
  2. 缺乏全局规划:ReAct 容易"只见树木不见森林",在复杂多步任务中效率低下。

LangChain 团队在 2023 年提出了 Plan-and-Execute 架构,核心思想是:把高层规划与短期执行分开。

2.2 Plan-and-Execute 的工作机制

Plan-and-Execute 的伪代码非常简洁:

text 复制代码
- Plan steps to take
- For step in steps:
    determine the proper tools or best course of action

它依赖两个核心组件:

Planner(规划器) :

  • 接收用户目标,一次性制定完整的多步子任务列表;
  • 几乎总是使用语言模型,利用其推理能力处理歧义和边缘情况;
  • 输出可以解析为有序步骤列表。

Executor(执行器) :

  • 接收 Planner 生成的单个高层步骤;
  • 决定使用哪些工具来完成这一步(可能一步完成,也可能需要多步);
  • 在 LangChain 的初始实现中,Executor 本身就是一个 Action Agent。

关键设计 :Planner 和 Executor 解耦,可以分别选型------Planner 用强模型保证规划质量,Executor 用快模型降低成本。中间结果可以回灌给 Planner,必要时触发 Re-Plan 修订后续计划。

2.3 一个直观的例子

用户说:"帮我策划一次团队建设活动。"

Plan-and-Execute Agent 先制定计划:

text 复制代码
Plan:
1. 确定团队规模和预算
2. 搜索适合的场地
3. 比较价格和评价
4. 确认日期和预订
5. 制定活动流程
6. 发送通知

然后逐项执行,每步可以由 Executor Agent 自主选择合适的工具。

2.4 优势与局限

优势:

  • 全局视角,规划质量高;
  • 规划与执行解耦,成本可控;
  • 适合步骤明确、有强依赖关系的任务。

局限:

  • 一次性规划可能不适应动态环境变化;
  • 静态预规划在面对动态反馈时鲁棒性不足;
  • 规划本身需要一次较大的 LLM 调用。

适用场景:ETL 流程、自动化工作流、需要审计的合规任务、批量处理任务。研究表明 Plan-and-Execute 在逻辑推理任务中优于 ReAct,因为多条件评估和分支逻辑更适合全局规划。

三、Reflexion:从失败中学习,用语言做强化

3.1 为什么需要 Reflexion?

ReAct 和 Plan-and-Execute 都有一个共同问题:做完就结束,不会从错误中学习。如果一次尝试失败,下一次还是从零开始,犯同样的错误。

传统强化学习通过更新模型权重来学习,但需要大量训练样本和昂贵的微调。

Reflexion 的核心洞察是: 不更新权重,用语言反馈来强化 Agent。

3.2 Reflexion 的工作机制

Reflexion 由三个核心组件构成:

Actor(执行者) :

  • 基于当前任务和累积的反思记忆,生成行为轨迹;
  • 本质上是执行任务的 Agent。

Evaluator(评估者) :

  • 判断 Actor 的输出是否成功;
  • 可以是二值信号(通过/失败)、启发式规则,或另一个 LLM 的评判。

Self-Reflection(自反思模型) :

  • 根据评估结果和失败轨迹,生成自然语言的错误分析和改进建议;
  • 反思文本存储在情景记忆缓冲区 中,引导后续试验中更好的决策。

Reflexion 可以整合各种类型的反馈信号(标量值或自由语言),以及各种来源(外部或内部模拟),在顺序决策、编码、语言推理等任务上都取得了显著提升。

3.3 核心数据

Reflexion 在 HumanEval 编码基准 上达到了 91% pass@1 准确率 ,超过了当时 GPT-4 的 80%。

但代价也很明显。一项涵盖 300 个任务的对比研究发现,Reflexion 虽然达到了最高的单次准确率(74.1%),但其成本是 ReAct-GPT-o3 的 5.12 倍 ,而准确率仅高出 5.4 个百分点。在成本归一化后,Plan-and-Execute 以 71.9% 的效果和 4.1 倍更低的成本,在性价比上优于 Reflexion。

3.4 优势与局限

优势:

  • 能跨轮次积累经验,持续改进;
  • 不需要模型微调,即插即用;
  • 适合对输出质量要求极高的任务。

局限:

  • 成本显著高于其他模式;
  • 延迟较高,不适合实时场景;
  • 反思质量依赖 Evaluator 的准确性。

适用场景 :事实问答、代码生成、需要准确性的高风险任务。MLflow 的指南建议:当输出准确性是首要指标、延迟是次要考虑时,选择 Reflexion。

四、Tree of Thoughts:同时探索多条路径

4.1 为什么需要 Tree of Thoughts?

CoT 让模型沿着一条推理链走下去,但人类解决难题时不是这样的。人类会同时考虑多个方案,评估后选择最有希望的。

ToT 的灵感来自认知科学中的 "System 2" 思维------慢速、审慎、有意识的问题求解模式。它将问题求解建模为在组合问题空间中进行搜索 ,用树结构表示。

4.2 ToT 的四个支柱

ToT 的具体实现需要回答四个问题:

1. 如何将中间过程分解为思维步骤?

  • 根据问题性质决定思维粒度;
  • 一个"思维"可以是一个词、一个方程,或一整段。

2. 如何从每个状态生成候选思维?

  • 采样:从 CoT 提示中独立同分布地采样;
  • 提议:用"propose prompt"顺序生成候选。

3. 如何启发式地评估状态?

  • 独立评估每个状态的价值(0-10 分);
  • 或对多个状态进行投票。

4. 使用什么搜索算法?

  • BFS(广度优先搜索) :适合树深度有限的情况;
  • DFS(深度优先搜索) :适合顺序决策链;
  • Beam Search:每层保留 top-B 节点,在质量和计算之间取得平衡。

4.3 一个直观的例子

以"Game of 24"为例(用 4 个数字通过四则运算得到 24):

text 复制代码
输入: 4, 9, 10, 13

思维分解:
  步骤1: 13 - 9 = 4  (剩余 4, 4, 10)
  步骤2: 10 - 4 = 6  (剩余 4, 6)
  步骤3: 4 * 6 = 24  (答案: 24)

ToT 不会只走一条路径,而是同时展开多条候选路径,评估每条路径的可行性,剪掉死路,保留最有希望的分支。

4.4 优势与局限

优势:

  • 能探索多条推理路径,质量更高;
  • 有回溯能力,不会一条路走到黑;
  • 适合需要"深思熟虑"的高价值任务。

局限:

  • 计算成本极高,需要多次生成和评估;
  • 延迟高,不适合实时场景;
  • 实现复杂度远高于 ReAct。

适用场景:需要审慎问题求解的高价值任务,如数学证明、复杂规划、创意写作等。

五、四种模式的横向对比

维度 ReAct Plan-and-Execute Reflexion Tree of Thoughts
核心思想 推理与行动交替 先规划后执行 从失败中反思学习 同时探索多条路径
决策粒度 一步一想 全局规划 + 逐步执行 轮次级反思 树级搜索
Token 成本 低-中 中(规划一次,执行多次) 高(多轮迭代) 极高(多次生成+评估)
延迟 快 中 中-慢 慢
迭代次数 3-10 取决于计划步数 3-8 取决于搜索深度
最低模型要求 4B+ 中等 8B+ 高
优势 灵活、可解释 全局视角、成本可控 自我改进、准确率高 质量最高、可回溯
局限 缺乏全局规划 静态规划鲁棒性差 成本高、延迟大 计算代价极大
最佳场景 工具调用、API查询 工作流、合规任务 代码生成、事实问答 数学、复杂规划

数据参考:ReAct 和 Reflexion 的迭代次数和模型门槛来自 Reactive Agents 的选型指南;成本对比数据来自 CLEAR 评估研究。

六、如何选型:决策树与组合策略

6.1 选型决策树

text 复制代码
任务是否需要与外部工具/环境频繁交互?
├── 是 → 任务步骤是否明确、可预先规划?
│         ├── 是 → Plan-and-Execute
│         └── 否 → ReAct
└── 否 → 任务是否需要极高准确性?
          ├── 是 → 是否需要探索多条路径?
          │         ├── 是 → Tree of Thoughts
          │         └── 否 → Reflexion
          └── 否 → 直接 LLM 调用或简单 CoT

6.2 组合策略

这四种模式不是互斥的,实际系统中经常组合使用:

ReAct + Reflexion:在 ReAct 循环结束后加入反思环节,让 Agent 从失败中学习。社区实践建议,无论用 ReAct 还是 Plan-and-Execute,都建议结合 Reflection Loop,因为它对最终输出质量至关重要。

Plan-and-Execute + ReAct:Planner 制定全局计划,Executor 内部用 ReAct 模式执行每个子任务。这是 LangChain 的默认实现方式。

Plan-and-Execute + Reflexion:在 Re-Plan 环节引入反思机制,根据执行反馈修订计划。

三层架构:Plan(全局规划)→ ReAct(逐步执行)→ Reflexion(轮次反思),适合高复杂度、高价值任务。

6.3 一个重要的工程判断

一项 2025 年的研究给出了一个值得注意的结论:ReAct 在单次成功率上可能表现更好,但在多次运行的稳定性(pass@8)上,通用 Agent 的可靠性会显著下降 。ReAct-GPT4 的 pass@1 为 72.3%,但 pass@8 降至 58.3%,下降了 19.4 个百分点。

这说明:选型不能只看单次成功率,还要看可靠性 。专家评估也表明,CLEAR 框架(综合效果、成本、可靠性、合规性、效率)与部署就绪度的相关性(ρ=0.83)远高于仅看效果(ρ=0.41)。

一位专家的评价很到位:"一个 70% 成功率但稳定运行的 Agent,比一个 80% 成功率但时好时坏的 Agent 更容易部署。"

七、总结

回到主线:

Agent 的决策与规划模式,决定了它"怎么想"和"怎么做"。

四种主流模式,各有其设计哲学:

模式 一句话概括
ReAct 边想边做,灵活应变
Plan-and-Execute 先谋后动,全局规划
Reflexion 吃一堑长一智,用语言做强化
Tree of Thoughts 多路探索,深思熟虑

选型时记住三条原则:

  1. 任务复杂度决定模式:简单任务直接回答或单次工具调用;中等任务用 ReAct;复杂任务用 Plan-and-Execute;高价值任务考虑 Reflexion 或 ToT。
  2. 成本和延迟是硬约束:Reflexion 和 ToT 的质量更高,但成本可能是 ReAct 的数倍。要根据业务场景做权衡。
  3. 组合优于单选:Plan-and-Execute + ReAct + Reflexion 的三层架构,往往是生产环境的最优解。

下一篇,我们会深入 Agent 的记忆与工具:短期记忆、长期记忆、向量数据库、MCP、Function Calling,看看 Agent 如何"记住"和"动手"。

本文是「Agent 基本概念」系列第 3 篇。

如果你觉得有帮助,欢迎点赞、收藏、关注。

下一篇:《Agent 的记忆与工具:从上下文窗口到 MCP》

相关推荐
阿明61 小时前
小白入门机器学习基础【AI】
人工智能·机器学习
java资料站1 小时前
十一、评估测试
开发语言·人工智能·python
东方佑1 小时前
从《事件发生与智能》的框架看中国古代命理学
人工智能·深度学习·语言模型·自然语言处理·架构
天远API2 小时前
零信任架构实战:基于天远运营商三要素简版V即时版查询构建自动化司乘安全绑定网关
人工智能·安全·架构·自动化
Henry-SAP2 小时前
SAP PP核心引擎计划策略业务解析
人工智能·云原生·sap·erp
DP DPharness2 小时前
拆开 dsh-knowledge 的检索链路,看 RRF 融合与锚点续读
人工智能·dpharness
I'm a winner2 小时前
《AI 赋能嵌入式开发:从 0 到全栈工程师》模块1|第4课时
人工智能
johnsong2 小时前
当决策成为免费商品:思维成本崩溃背后的治理真空
大数据·人工智能
ZhangJun953 小时前
在 32GB 内存电脑上本地搭建 Qwen3.6-35B-A3B 大模型踩坑实录
运维·人工智能·阿里云·ai·软件构建