04. Agent 的 Planning 一般怎么做?常见的规划策略有哪些?

整理 Agent Planning 的常见策略、优缺点与落地方式。

简单回答

Agent Planning 是指 Agent 在执行任务前或执行过程中,对任务进行分解和步骤规划的能力。常见策略包括:ReAct 式的逐步规划(每步做完再想下一步)、Plan-then-Execute(先制定完整计划再逐步执行)、以及 LLM 自省式的动态重规划。好的规划需要在"计划的完整性"和"执行的灵活性"之间取得平衡——计划太细则缺乏适应性,计划太粗则容易偏离目标。

详细解释

为什么 Planning 是 Agent 的核心难题

Agent 和普通 LLM 调用最大的区别在于 Agent 需要完成多步骤的复杂任务。面对一个复杂任务,Agent 必须能"想清楚"先做什么后做什么,步骤之间有什么依赖关系。这就是 Planning。

Planning 难的根本原因是 LLM 的推理能力是有限的。LLM 擅长的是短距离的推理和模式匹配,对于需要长距离规划、考虑多个约束条件、处理步骤间复杂依赖关系的任务,经常力不从心。就像一个人下棋可以往前看两三步,但要看十步就非常困难了。

逐步规划(ReAct / Step-by-Step)

ReAct 前面已经讲过了,它的规划策略本质上是"走一步看一步"——每一步根据当前状态决定下一步做什么,不做远期规划。

优点是灵活——每一步都能基于最新的信息做决策,不会被错误的早期计划束缚。缺点也很明显——缺乏全局视角,可能走弯路,可能在关键步骤上做出短视的选择。比如一个需要先收集多源信息再做综合分析的任务,ReAct 可能在收集到一半信息后就急于给出结论。

Plan-then-Execute(先规划后执行)

这种策略是先让 LLM 制定一个完整的执行计划(拆分子任务、排列顺序),然后逐步执行计划中的每一步。

实现上通常分两个 LLM 角色:Planner 负责制定计划,Executor 负责执行每个子任务。Planner 接收用户的原始任务描述,输出一个步骤列表:

计划:
1. 搜索目标公司的最新财务数据
2. 搜索竞品公司的财务数据
3. 对比两家公司的关键指标
4. 撰写分析报告

然后 Executor 按顺序执行每一步,每步可能涉及 Tool Calling 和结果处理。

优点是有全局视角,步骤之间的逻辑关系更清晰。缺点是计划可能在执行过程中需要调整——比如第一步搜索没有找到期望的数据,后面的计划就需要修改。纯粹的"先计划再执行"不够灵活。

动态重规划(Plan-Execute-Replan)

这是 Plan-then-Execute 的改进版。执行每一步之后,Agent 会回头检查"当前计划是否还合理",如果不合理就调整计划。这相当于在全局规划和逐步灵活之间找到了一个平衡。

LangGraph 中的 Plan-and-Execute 模式就是这个思路——Agent 有一个 plan 状态,执行每步后可以 replan(更新、增删步骤、调整顺序)。

层次化规划

对于非常复杂的任务,可以做多层规划。顶层 Planner 把大任务拆成几个大阶段,每个阶段内部再由子 Planner 做更细粒度的规划。这有点类似于软件工程中的"自顶向下分解"。

比如"帮我做一份竞品分析报告"这个大任务,顶层拆成"信息收集→数据对比→报告撰写"三个阶段。"信息收集"阶段内部再拆成"搜索 A 公司信息→搜索 B 公司信息→搜索行业报告"等子任务。

基于 Prompt 的规划实现

目前 Agent Planning 主要依赖 Prompt 设计来引导 LLM 做规划。常见的 Prompt 模式:

让 LLM 在回答前先列出步骤——"请先制定一个计划,然后逐步执行"。

给 LLM 提供规划的格式模板——"请按以下格式输出计划:Step 1: 描述 Step 2: 描述 ..."。

让 LLM 做自我反思——"在执行下一步之前,请检查当前进展,评估计划是否需要调整"。

规划的评估和质量控制

Planning 质量难以自动化评估。一个计划好不好往往要等执行完才知道。工程上可以做的是:限制计划的步骤数(防止 LLM 生成过于细碎的计划)、在每步执行后做 checkpoint 检查(结果是否符合预期)、以及设置 fallback(如果 Agent 偏离目标太远就中断并重新规划或回退人工)。

当前 LLM 在 Planning 上还远不够可靠。对于关键业务场景,不要完全依赖 LLM 做规划,而是用人工设计的 Workflow 覆盖主路径,只在边缘情况用 Agent Planning 做补充。

面试时可以这样答

Agent Planning 是让 Agent 在执行复杂任务前做步骤规划。常见策略有几种。ReAct 式的逐步规划,走一步看一步,灵活但缺乏全局视角。Plan-then-Execute 先制定完整计划再逐步执行,有全局视角但不够灵活。Plan-Execute-Replan 是两者的折中,执行每步后检查计划是否需要调整。对于非常复杂的任务还可以做层次化规划,先拆大阶段再拆子任务。

实现上主要靠 Prompt 设计来引导 LLM 做规划,比如让模型先列步骤再执行,或者在每步之后做自我反思判断是否需要 replan。

坦白说当前 LLM 的 Planning 能力还不够可靠,特别是在步骤多、约束复杂的任务上。实际项目中我倾向于用 Workflow 覆盖主路径,只在需要灵活性的地方引入 Agent Planning,而不是把整个系统的决策都交给 LLM。

常见追问

  1. Plan-then-Execute 和 ReAct 在具体什么场景下各自更好?
  2. LLM 在 Planning 上最容易犯什么错误?
  3. 怎么判断 Agent 的规划偏离了正轨?有没有自动化的检测方法?