📋 Plan-and-Execute
1. 什么是Plan-and-Execute
Plan-and-Execute(先规划后执行)是一种将任务规划与执行分离的Agent架构。 它首先通过一个Planner(规划器)制定完整或阶段性的行动方案,然后由Executor(执行器) 按计划逐步实施。这种架构借鉴了传统AI规划思想,将高层决策与底层执行解耦。
🏗️ 两阶段架构
📐 Planner(规划器)
- 分析任务目标和约束
- 将复杂任务分解为步骤序列
- 确定步骤间的依赖关系
- 评估每步需要的工具和资源
→
⚡ Executor(执行器)
- 按计划逐步执行每个子任务
- 调用工具、获取反馈
- 报告执行结果和异常
- 支持失败重试和局部调整
2. Plan-and-Execute vs ReAct(6维度对比)
| 维度 | ReAct | Plan-and-Execute |
|---|---|---|
| 规划深度 | 贪心式局部决策,缺乏全局视角 | 先全局规划,再进行执行,层次清晰 |
| 灵活性 | ⚡ 极高 — 每步根据最新Observation动态调整 | 🔄 中等 — 计划可动态调整但有一定开销 |
| Token效率 | 💰 较低 — 每步都需完整Thought文本 | ✅ 较高 — 规划一次,执行时减少推理消耗 |
| 适应性 | ✅ 强 — 遇到意外情况立即调整 | ⚠️ 中等 — 需要额外的计划修正机制 |
| 架构复杂度 | 🟢 简单 — 单一Agent循环 | 🟡 中等 — 需要Planner+Executor两个组件 |
| 最佳场景 | 信息检索、简单工具调用、需要实时反馈 | 多步骤工作流、有明确步骤的任务、代码生成 |
3. 计划生成策略
Plan-and-Execute的核心是Plan的质量。不同的计划生成策略适用于不同的场景:
| 策略 | 描述 | 优点 | 适用场景 |
|---|---|---|---|
| 一次性规划 | 执行前生成完整计划,执行期不再修改 | 效率最高,Token消耗低 | 确定性任务、已知工作流 |
| 增量规划 | 先规划前几步,执行中根据结果规划后续步骤 | 兼顾规划和灵活性 | 不确定性较高的任务 |
| 分层规划 | 先生成高层目标,每层细化后执行 | 适合超长链任务 | 复杂项目、多阶段任务 |
| 条件规划 | 生成含条件分支的计划,执行时根据条件选择路径 | 覆盖多种可能性 | 有多种结果可能性的任务 |
| 重规划(Replan) | 执行失败时重新调用Planner生成新计划 | 容错性强 | 高风险、易出错的任务 |
4. 规划失败处理
计划执行中不可避免会遭遇失败。有效的失败处理机制是Plan-and-Execute可靠性的关键保障:
🛡️ 三层失败处理
- 执行层重试:单步执行失败时,由Executor进行重试(指数退避、参数调整)
- 局部调整:某步骤多次失败,Executor请求Planner调整该步及后续相关步骤
- 全局重规划:计划整体方向错误或前提条件改变,完全重新调用Planner
⚠️ 重规划的成本
每次重规划都相当于重新调用一次大模型,Token消耗较高。建议设置重规划次数上限(如最多3次),
超过上限后降级为简化版执行方案或请求人工介入。
5. 三种模式综合对比
| 维度 | ReAct | Plan-and-Execute | 混合模式 |
|---|---|---|---|
| 核心思想 | 边思考边行动 | 先规划后执行 | 宏观规划 + 微观ReAct |
| 规划方式 | 无规划,贪心决策 | 一次/多次全局规划 | 规划子目标,ReAct自由执行 |
| Token消耗 | 中等-高 | 低-中 | 中等 |
| 适用任务长度 | 短-中(3-10步) | 中-长(5-20步) | 任意长度 |
| 错误恢复 | 即时调整 | 需要重规划 | 子目标内即时调整,跨子目标重规划 |
| 实现复杂度 | ⭐ 简单 | ⭐⭐ 中等 | ⭐⭐⭐ 复杂 |
| 典型框架 | LangChain Agent、HuggingFace Agent | LangGraph、AutoGPT | LangGraph、CrewAI |
💡 混合模式推荐
生产环境中最常用的是混合模式:Planner制定宏观计划(如"先搜索、再分析、最后生成报告"),
每个子目标内的执行使用ReAct循环(灵活处理搜索结果和工具调用)。
这样兼顾了全局规划的效率和局部执行的灵活性。