📋 Plan-and-Execute

1. 什么是Plan-and-Execute

Plan-and-Execute(先规划后执行)是一种将任务规划执行分离的Agent架构。 它首先通过一个Planner(规划器)制定完整或阶段性的行动方案,然后由Executor(执行器) 按计划逐步实施。这种架构借鉴了传统AI规划思想,将高层决策与底层执行解耦。

🏗️ 两阶段架构

📐 Planner(规划器)

  • 分析任务目标和约束
  • 将复杂任务分解为步骤序列
  • 确定步骤间的依赖关系
  • 评估每步需要的工具和资源

⚡ Executor(执行器)

  • 按计划逐步执行每个子任务
  • 调用工具、获取反馈
  • 报告执行结果和异常
  • 支持失败重试和局部调整

2. Plan-and-Execute vs ReAct(6维度对比)

维度ReActPlan-and-Execute
规划深度 贪心式局部决策,缺乏全局视角 先全局规划,再进行执行,层次清晰
灵活性 ⚡ 极高 — 每步根据最新Observation动态调整 🔄 中等 — 计划可动态调整但有一定开销
Token效率 💰 较低 — 每步都需完整Thought文本 ✅ 较高 — 规划一次,执行时减少推理消耗
适应性 ✅ 强 — 遇到意外情况立即调整 ⚠️ 中等 — 需要额外的计划修正机制
架构复杂度 🟢 简单 — 单一Agent循环 🟡 中等 — 需要Planner+Executor两个组件
最佳场景 信息检索、简单工具调用、需要实时反馈 多步骤工作流、有明确步骤的任务、代码生成

3. 计划生成策略

Plan-and-Execute的核心是Plan的质量。不同的计划生成策略适用于不同的场景:

策略描述优点适用场景
一次性规划 执行前生成完整计划,执行期不再修改 效率最高,Token消耗低 确定性任务、已知工作流
增量规划 先规划前几步,执行中根据结果规划后续步骤 兼顾规划和灵活性 不确定性较高的任务
分层规划 先生成高层目标,每层细化后执行 适合超长链任务 复杂项目、多阶段任务
条件规划 生成含条件分支的计划,执行时根据条件选择路径 覆盖多种可能性 有多种结果可能性的任务
重规划(Replan) 执行失败时重新调用Planner生成新计划 容错性强 高风险、易出错的任务

4. 规划失败处理

计划执行中不可避免会遭遇失败。有效的失败处理机制是Plan-and-Execute可靠性的关键保障:

🛡️ 三层失败处理

  1. 执行层重试:单步执行失败时,由Executor进行重试(指数退避、参数调整)
  2. 局部调整:某步骤多次失败,Executor请求Planner调整该步及后续相关步骤
  3. 全局重规划:计划整体方向错误或前提条件改变,完全重新调用Planner
⚠️ 重规划的成本 每次重规划都相当于重新调用一次大模型,Token消耗较高。建议设置重规划次数上限(如最多3次), 超过上限后降级为简化版执行方案或请求人工介入。

5. 三种模式综合对比

维度ReActPlan-and-Execute混合模式
核心思想 边思考边行动 先规划后执行 宏观规划 + 微观ReAct
规划方式 无规划,贪心决策 一次/多次全局规划 规划子目标,ReAct自由执行
Token消耗 中等-高 低-中 中等
适用任务长度 短-中(3-10步) 中-长(5-20步) 任意长度
错误恢复 即时调整 需要重规划 子目标内即时调整,跨子目标重规划
实现复杂度 ⭐ 简单 ⭐⭐ 中等 ⭐⭐⭐ 复杂
典型框架 LangChain Agent、HuggingFace Agent LangGraph、AutoGPT LangGraph、CrewAI
💡 混合模式推荐 生产环境中最常用的是混合模式:Planner制定宏观计划(如"先搜索、再分析、最后生成报告"), 每个子目标内的执行使用ReAct循环(灵活处理搜索结果和工具调用)。 这样兼顾了全局规划的效率和局部执行的灵活性。