← AI Agent

ReAct 与 Plan-and-Execute 有什么区别?Agent 如何选择规划方式?

高频 中等 Plan-and-Execute 与任务拆解 · 第 1 / 3 问 更新于 2026/09/29
ReActPlan-and-ExecuteAgent 规划工具调用
本题落地项目AI Agent数据分析平台

简化版

ReAct(Reason + Act)把推理、动作、观察交替进行——想一步、做一步、看结果、再想,适合信息逐步揭示、需要快速纠偏的任务;Plan-and-Execute 先形成较完整的计划,再逐步执行、必要时重规划,适合依赖关系清晰的长任务。生产系统通常混合使用(粗计划 + 短 ReAct 循环),并让应用保存结构化计划,而不是把模型的思考文本当可信执行依据。

详细版

ReAct 循环:判断下一步 → 调工具 → 读观察 → 再判断。优点是反馈及时;缺点是易局部短视、重复调用、陷入循环。

Plan-and-Execute:先规划再执行。优点是便于检查依赖、并行、进度;缺点是初始计划可能基于不完整信息,执行中仍需重规划。

选择依据:任务长度、步骤依赖、环境不确定性、工具成本、可审计要求。无论哪种,都要设最大步数、预算、截止时间、完成条件、失败出口。

完整版教学

一、ReAct:边做边看

ReAct 的精髓是「推理轨迹」和「任务动作」交错,让动作从环境取得观察、再更新决策:

Thought: 要查用户订单状态,先调 get_order
Action:  get_order(order_123)
Observation: 状态=已发货,物流=顺丰 SF123
Thought: 用户问何时到,需查物流
Action:  track_logistics(SF123)
Observation: 预计明天送达
Thought: 信息够了,可以回答

它适合搜索、问答、交互操作等不能一次拿全信息的场景。工程要点:不必向用户展示完整思考过程,真正要持久化的是工具名、参数、结果摘要、状态变化、决策理由这些可审计字段。

二、Plan-and-Execute:先看全局

规划器先把目标拆成带依赖的子任务,执行器逐项完成:

Plan:
  1. 查产品 A 的负责人          (无依赖)
  2. 查该负责人所在部门         (依赖 1)
  3. 查该部门今年的项目         (依赖 2)
Execute: 逐项做;若某步结果让后续前提失效 → 重规划剩余计划(而非机械执行旧列表)

复杂任务可把计划表示为 DAG(有向无环图) 识别可并行步骤;但涉及共享资源或副作用时仍需顺序和事务控制。

数据分析场景里计划怎么结构化、每一步怎么复用单次分析链路,见「数据分析 Agent 怎么把一个分析目标拆成多步计划并执行?」。

三、两种方式的风险对照

ReActPlan-and-Execute
优势反馈及时、灵活纠偏全局视野、可并行、可审计
典型风险循环、频繁试错、上下文膨胀过度规划、错误前提传播、计划与实际脱节
适合信息逐步揭示的短任务依赖清晰的长任务

共同红线:模型写出看似合理的计划,不代表计划可执行——每一步都要经参数校验、权限检查、前置条件检查。

四、混合策略(生产最常用)

先生成粗粒度里程碑(Plan):里程碑1 → 里程碑2 → 里程碑3
每个里程碑内部用短 ReAct 循环处理细节
完成一步 → 更新结构化状态 → 只在关键事实变化时重规划
高成本工具:计划先过规则/人工审批;低风险查询:允许 Agent 自主探索

这样兼得「全局规划的条理」和「ReAct 的灵活纠偏」。

五、终止条件(比选哪种规划更重要)

不管 ReAct 还是 Plan-and-Execute,硬性终止条件是可靠性的地基,至少要同时具备:

✓ 任务成功谓词(怎样算完成)
✓ 最大工具调用数
✓ 最大连续失败数
✓ 总时长 / 费用预算
✓ 需要人工接管的状态

记忆钩子:只在 Prompt 里写”不要循环”不能代替运行时的硬限制——模型不会可靠地自我约束,必须由代码兜底。

六、如何用同一批任务选择规划方式

不要凭个别演示决定架构,应把 ReAct、Plan-and-Execute 与混合策略放到同一评测集上比较。假设 200 个任务的结果如下:

策略成功数平均工具调用P95 延迟平均成本
ReAct1588.221 秒0.18 元
Plan-and-Execute1666.925 秒0.20 元
混合策略1747.122 秒0.21 元

混合策略成功率为 174/200=87%,但不能据此断言它在所有场景最佳。还要按任务类型切片:信息高度不确定的任务可能由 ReAct 占优,长依赖任务可能由 Plan 占优;涉及副作用的任务则必须额外统计越权执行、重复写入和超预算次数,并把安全违规设为上线否决项。

七、常见误区与追问

  • 误区:ReAct 一定比 Plan-and-Execute 好(或反之)。 各有适用场景,可靠实现通常是二者混合。
  • 误区:模型写出的计划就能执行。 看似合理≠可执行,每步都要参数/权限/前置条件校验。
  • 误区:靠 Prompt 说”不要重复”就能防循环。 无硬保证,必须靠运行时的最大步数/失败数/预算限制。
  • 误区:要把完整思考过程存下来/给用户看。 只需持久化工具名/参数/结果/状态/理由等可审计字段。
  • 追问:ReAct 的核心思想? 推理与动作交错,动作从环境取观察再更新决策,适合信息逐步揭示。
  • 追问:Plan-and-Execute 何时重规划? 执行结果让后续前提失效时修订剩余计划,而非机械执行旧列表。
  • 追问:ReAct 和 Plan 各自的典型风险? ReAct 易循环/试错/上下文膨胀;Plan 易过度规划/错误前提传播/计划脱节。
  • 追问:终止条件要包含什么? 成功谓词 + 最大调用数 + 最大连续失败 + 时长/费用预算 + 人工接管状态。

八、加强记忆

ReAct vs Plan-and-Execute 记「边做边看 vs 先看全局」:ReAct 推理-动作-观察交错(反馈及时但易循环,适合信息逐步揭示)、Plan-and-Execute 先规划带依赖子任务再执行(全局可并行但初始计划可能基于不完整信息)。可靠实现是混合——粗计划 + 短 ReAct 循环 + 可验证结构化状态 + 硬性终止条件。两条红线钉死:模型写的计划≠可执行(每步校验参数/权限/前置)、Prompt 说”别循环”不顶用(靠运行时最大步数/失败数/预算硬兜底)。

项目实战落地

项目里怎么做的

《AI Agent数据分析平台》的 Agent 分析是 Plan-and-Execute,计划和执行被拆成两个页面、两个动作:

  • 先出计划:用户输入一个较大的分析目标(如「订单下降原因分析」),模型一次生成计划标题和步骤数组,存进 agent_plan,页面先把步骤列出来;
  • 点了才执行:用户在执行追踪页点「执行计划」,后端把每一步插成一条「待执行」的 agent_execution_step 就立刻返回,后台线程按顺序逐步执行,前端每 2 秒轮询状态;
  • 每一步复用已有链路:Agent 本身不直接查库,而是把步骤里的分析问题转成一次标准的数据分析请求,走 Text-to-SQL、校验执行、图表推荐、数据解读;
  • 成败按业务状态判:SQL 校验或执行没成功就记「执行失败」和原因,不以「没抛异常」当成功;某一步失败后照常执行后面的步骤,执行过程中不改计划。

《AI Agent 智慧医院智能导诊就诊系统》的分诊是 ReAct:没有事先的计划,模型每一轮看着上一步查到的数据决定下一步调哪个工具,最多 12 轮。

为什么这样取舍

  • 数据分析先出计划:大目标要先拆成多个可执行的分析步骤,每一步都有自己的问题、SQL 目的和建议图表,拆好之后逐步执行、逐步留痕,报告再按计划汇总各步骤。
  • 执行放后台:一个请求等多次 AI 调用会让前端超时断开,接口只负责建步骤和启动后台任务。
  • 分诊用 ReAct:要查什么、查几次取决于患者说了什么,患者一句话和五句话需要查的信息量完全不同,没法事先写成计划。

面试官还会追问

  • 某一步生成的 SQL 执行失败了,这一步会自动纠错吗?最多纠几次?为什么不多试几次?
  • 同一个计划连点两次「执行计划」,第一次留下的步骤、分析记录和报告怎么处理?

学完《AI Agent数据分析平台》,上面这些追问你都会迎刃而解。

本题落地项目登峰造极AI Agent数据分析平台基于Agent、Text-to-SQL和安全查询执行,实现数据集管理、指标口径维护、分析意图识别、SQL纠错、图表推荐、数据解读和报告生成,适合BI分析落地、过程追踪和多轮会话。SpringbootSpringAIAgentText-to-SQLLLM源码+SQL喂饭学习教程配套面试文档环境安装文档项目运行文档 学习这个项目 也可以学AI Agent 智慧医院智能导诊就诊系统地狱锤炼 查看项目