Plan-and-Execute Pattern

Plan-and-Execute Pattern 是先用 LLM 生成完整计划,再逐步执行的 Agent 模式。它比 ReAct 更适合复杂多步任务,因为计划可以全局优化。

#type / concept #status / evergreen #tech / ai #tech / architecture

[!info] related notes

Plan-and-Execute Pattern

一句话定义

Plan-and-Execute Pattern 是先用 LLM 生成完整计划,再逐步执行的 Agent 模式。和 ReAct 的”想一步做一步”不同,它是”先想清楚所有步骤,再逐步做”。

它解决什么问题

ReAct 的问题:

  • 每步只看当前状态,不考虑全局
  • 容易走弯路(做了 A 才发现应该先做 B)
  • 无法并行执行独立步骤

Plan-and-Execute 先规划全局,再执行局部。

核心原理

两阶段架构

阶段 1: Planning
  用户目标 → LLM 生成 Plan (步骤列表)

阶段 2: Execution
  逐步执行 Plan → 每步调用工具 → 收集结果
  (可选: 执行中 Re-plan)

与 ReAct 的对比

ReActPlan-and-Execute
思维模式想一步做一步先想清楚再做
全局视野
适应性强(每步可调整)中(需要 Re-plan)
适用场景简单任务、探索性任务复杂多步任务

Python 实现

class PlanAndExecuteAgent:
    def __init__(self, planner: Planner, executor: PlanExecutor, llm):
        self.planner = planner
        self.executor = executor
        self.llm = llm

    async def run(self, goal: str) -> str:
        # 阶段 1: 生成计划
        plan = await self.planner.create_plan(goal)

        # 阶段 2: 逐步执行
        for step in plan.steps:
            result = await self.executor.execute_step(step)

            if result.error:
                # 失败时 Re-plan
                plan = await self.re_plan(goal, plan, step, result)
                continue

            step.result = result.data

        # 汇总结果
        return await self.summarize(plan)

    async def re_plan(self, goal: str, current_plan: Plan, failed_step: PlanStep, error) -> Plan:
        """执行失败时重新规划"""
        prompt = f"""
原始目标: {goal}
原计划: {current_plan}
失败步骤: {failed_step}
错误: {error}

请重新规划剩余步骤。
"""
        return await self.planner.create_plan(prompt)

常见设计模式

1. 静态 Plan

一次性生成完整 Plan,不修改。

2. 动态 Re-plan

执行中遇到失败或新信息时重新规划。

3. 分层 Plan

高层 Plan 定义大步骤,每个大步骤内部再生成子 Plan。

常见坑

  1. Plan 不可执行: 步骤太抽象,无法转换为工具调用
  2. 不做 Re-plan: 执行失败后卡住
  3. Plan 太长: 20 个步骤的 Plan 容易出错
  4. 不做结果验证: 步骤执行了但结果不对

参考资料

创建于 2026/6/30 更新于 2026/7/15