一句话定义
规划是把一个大目标分解为有序、可执行、可校验的子任务清单的过程——ReAct 是"走一步看一步",规划是"先画路线图再上路";两者组合(先规划、执行中按需重规划)是长任务 Agent 的标准配置。
为什么重要
长任务是 Agent 的价值所在,也是阵亡率最高的场景。纯 ReAct 在 10+ 步任务上会"迷路":目标被中间产物淹没(kp-003)、每步只看眼前导致绕圈。规划提供三样东西:全局视野(防局部最优)、进度结构(做完哪几项了)、可校验的完成标准(每项有交付物)。Claude Code、Deep Research 这类顶级系统全部内置显式计划结构(如 todo list 工具,kp-028)。
前置知识
kp-012(ReAct)、kp-005(结构化输出)。
核心概念
两种规划时序
| 模式 | 做法 | 优点 | 风险 |
|---|---|---|---|
| 先规划后执行(plan-then-execute) | 先产出完整计划,逐项执行,偏差大时重规划 | 全局性、可并行、可预算 | 计划基于错误假设 → 执行到一半崩 |
| 边做边规划(ReAct + todo) | 维护一张动态更新的任务清单 | 适应发现型任务 | 无全局视野,易绕路 |
实践中最常用的是混合:开局生成初步计划 → 执行中用"todo 工具"勾掉/追加/修订 —— Claude Code 的 TodoWrite 就是这个模式的落地:计划不是文档,是循环中的一个工具,模型每完成一步就重写计划文件,从而把"我做到哪了"固化进上下文(对抗上下文腐烂的关键手段)。
好计划的三个特征
- 子任务原子化:每项一次工具调用或一个短 ReAct 能完成、有明确产出
- 顺序显式且依赖清晰:"先拿到数据(B 依赖 A 的 file_id)"
- 每项带验收标准:"输出 CSV,列齐全,行数 = 输入记录数"——没有验收标准的计划只是愿望清单(也是 kp-024 评测的天然素材)
分解的两种引擎
- 模型分解(LLM Decompose):让模型自己列计划——灵活,适合陌生任务;注意给 few-shot 示例"好计划长什么样"
- 结构化分解(plan schema):强制输出
[{id, goal, depends_on, deliverable, status}]的 JSON——可程序化跟踪、可并行调度(无依赖项并行执行,kp-019/027)
原理与机制
为什么显式计划能提升长任务成功率?三个机制:
- 对抗上下文腐烂:计划文件是"可再读的目标锚点"。50 轮工具输出淹没初心时,模型重读计划即可复位——比"相信注意力自己记住目标"可靠得多(kp-003)
- 分解降低单步复杂度:每步的条件生成面对的是"小问题 + 明确子目标",出错率低于直接面对大问题(与人类工作记忆的道理相同,米勒 7±2)
- 结构带来校验点:计划项是天然的检查站——可插入人工审批(kp-023)、自动验收、并行分发(kp-019)
经典的 Plan-and-Solve 论文(2023)证明:仅靠在提示里加"先制定计划再执行"的指令,就能修复 zero-shot CoT 的常见失败(缺步骤、重复、计算错误)。后续 HuggingGPT 用"任务规划→模型选择→执行→响应生成"四阶段,把规划推向复杂多模态管线。
直观类比
装修房子:ReAct 是"边住边改"——今天看厨房不顺手改厨房,常常推倒昨天砌的墙。规划是先出施工图(水电→瓦工→木工→油漆,依赖明确),施工中按图勾进度;发现承重墙(意外)就重画那一页图纸,而不是整个推倒。todo 工具 = 贴在墙上的施工进度表,每完成一项划掉——不是给业主看的,是给工人自己看的(对抗迷路)。
实例与案例
"分析这份 500 页 PDF 财报,输出三家同行对比报告"的计划(结构化输出):
json[{"id": 1, "goal": "提取主公司关键财务指标", "deliverable": "metrics.json", "status": "pending"},
{"id": 2, "goal": "识别三家可比公司", "deliverable": "comps.txt", "depends_on": [1], "status": "pending"},
{"id": 3, "goal": "逐家获取同行数据", "deliverable": "comps/*.json", "depends_on": [2], "parallel": true},
{"id": 4, "goal": "生成对比图表与结论", "deliverable": "report.md", "depends_on": [1, 3]}]
注意三点:交付物是文件(不占上下文,kp-022)、第 3 项可并行(分派给 worker,kp-019)、每项可独立验收(行数/字段齐全性可程序检查,kp-024)。
常见误区
- 误区一:计划一次成型。信息在执行中才暴露(查了才知道有哪些同行)——必须有重规划机制,否则计划变枷锁。
- 误区二:计划粒度过粗("1. 收集数据 2. 写报告")等于没分解;过细则僵化。经验粒度:3-10 项、每项 1-5 分钟模型工作量。
- 误区三:计划只存在上下文里。长任务中会被冲刷——写进文件/工具(todo 工具模式),这是与"想过一遍"的本质区别。
- 误区四:所有任务都上规划。两步小任务直接做,规划开销反而添乱。
自测题
- 显式计划对抗上下文腐烂的机制是什么?
- plan-then-execute 与 ReAct+todo 各适合什么场景?
- 为什么计划项的 deliverable 建议是文件而不是"记住结果"?
(参考答案:1. 计划是可重读的目标锚点,被淹没后可复位;2. 步骤大体可预知(可预算可并行)vs 发现型任务(边走边修);3. 文件不占上下文、可程序校验、可被子 Agent/后续步骤引用。)
与其他知识点的关系
- 计划的分派执行 → kp-019;验收标准 → kp-024
- 计划失败后的自我修正 → kp-014;Anthropic 的多 Agent 研究结论 → kp-020
延伸阅读
- Wang et al., Plan-and-Solve Prompting(2023)
- Shen et al., HuggingGPT(2023)——LLM 作为规划器调度专家模型