← 返回题目列表

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

高频 中等 第 12 / 25 题 更新于 2026/07/25
ReActPlan-and-ExecuteAgent 规划工具调用

简化版

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(有向无环图) 识别可并行步骤;但涉及共享资源或副作用时仍需顺序和事务控制。

三、两种方式的风险对照

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

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

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

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

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

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

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

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

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

六、常见误区与追问

  • 误区: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 说”别循环”不顶用(靠运行时最大步数/失败数/预算硬兜底)