Plan-and-Execute vs ReAct:Agent 架构选型与实战指南

1. Plan-and-Execute 架构的核心思路

Plan-and-Execute 的核心理念是“谋定而后动”。其工作流程分为两个阶段:首先由 Planner(规划者)LLM 将用户的复杂任务拆解为有序的步骤列表;随后由 Executor(执行者)严格按照该列表逐一执行。

与 ReAct 架构“走一步看一步”的动态决策不同,Plan-and-Execute 在执行前已具备全局视野。这种“先规划、后执行”的模式特别适合步骤繁多、逻辑严密且需要全局把控的复杂任务,能有效避免 Agent 在长链路任务中迷失方向。

2. Plan-and-Execute 与 ReAct 的本质差异及 LangGraph 实现

设计哲学差异

  • ReAct(在线规划):采用“思考-行动-观察”循环,每步动态决定下一步。优势是灵活性强,能即时响应环境反馈;劣势是在复杂长任务中容易偏离目标或陷入死循环。
  • Plan-and-Execute(离线规划 + 在线执行):先生成完整计划,再逐步落地。优势是全局一致性好,路径清晰;劣势是对突发变化的适应性较弱,计划变更成本较高。

场景选型建议

  • 适合 React 的场景:短平快任务、需快速迭代、工具反馈对后续决策影响极大的场景(如实时查询汇率、天气、简单问答)。
  • 适合 Plan-and-Execute 的场景:长链路、多步骤、强逻辑依赖的任务(如复杂数据分析、长篇报告撰写、代码工程生成)。这类任务需要先理解整体需求,拆解子任务,分别执行后再汇总。

Image

LangGraph 实现思路

在 LangGraph 中,通常通过以下三个核心节点构建该架构:

  1. Planner 节点:调用 LLM 将用户任务分解为有序步骤列表,存入 State 的 plan 字段。
  2. Executor 节点:从 plan 中读取当前步骤,调用对应工具执行,并将结果记录在 past_steps 中。
  3. Replanner 节点(可选但推荐):当某步骤执行失败或结果偏离预期时触发。它接收当前 State(含原始计划、已完成步骤、错误信息),生成修订后的计划。

这种模块化设计使得每个节点职责单一,借助 LangSmith 可清晰追踪 Planner 的生成了什么计划、每个 Executor 步骤的输入输出,极大提升了调试效率。

3. 如何控制 Agent 的任务分解粒度?

任务分解粒度是平衡可执行性、成本与可观测性的关键。

粒度失衡的后果

  • 粒度过粗

    • 示例:“分析竞品并生成报告”。
    • 问题:单个 LLM 上下文窗口难以承载,需多次隐式搜索与分析,中间状态黑盒化,出错难定位,Token 消耗不可控。
  • 粒度过细

    • 示例:将“搜索竞品”拆分为“搜索关键词A”、“搜索关键词B”等几十个微任务。
    • 问题:规划本身消耗大量 Token,子任务间上下文传递开销大,调度复杂度呈 O(n²) 增长,导致高延迟和高成本。

合适粒度的判断标准

  1. 原子性:单次 LLM 调用或少量工具调用即可独立完成。
  2. 明确性:有清晰的输入定义和输出标准。
  3. 可验证性:结果可独立验收(Pass/Fail)。
  4. 经济性:预估 Token 消耗在合理范围(如 < 2000 tokens)。

动态调整策略

本章节为 Public 试读订购后可阅读全文。

需付费查看