Agent 开发学习站
Agent 开发›核心›核心

规划与任务分解

核心核心

一句话定义

规划是把一个大目标分解为有序、可执行、可校验的子任务清单的过程——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 就是这个模式的落地:计划不是文档,是循环中的一个工具,模型每完成一步就重写计划文件,从而把"我做到哪了"固化进上下文(对抗上下文腐烂的关键手段)。

好计划的三个特征

  1. 子任务原子化:每项一次工具调用或一个短 ReAct 能完成、有明确产出
  2. 顺序显式且依赖清晰:"先拿到数据(B 依赖 A 的 file_id)"
  3. 每项带验收标准:"输出 CSV,列齐全,行数 = 输入记录数"——没有验收标准的计划只是愿望清单(也是 kp-024 评测的天然素材)

分解的两种引擎

  • 模型分解(LLM Decompose):让模型自己列计划——灵活,适合陌生任务;注意给 few-shot 示例"好计划长什么样"
  • 结构化分解(plan schema):强制输出 [{id, goal, depends_on, deliverable, status}] 的 JSON——可程序化跟踪、可并行调度(无依赖项并行执行,kp-019/027)

原理与机制

为什么显式计划能提升长任务成功率?三个机制:

  1. 对抗上下文腐烂:计划文件是"可再读的目标锚点"。50 轮工具输出淹没初心时,模型重读计划即可复位——比"相信注意力自己记住目标"可靠得多(kp-003)
  2. 分解降低单步复杂度:每步的条件生成面对的是"小问题 + 明确子目标",出错率低于直接面对大问题(与人类工作记忆的道理相同,米勒 7±2)
  3. 结构带来校验点:计划项是天然的检查站——可插入人工审批(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 工具模式),这是与"想过一遍"的本质区别。
  • 误区四:所有任务都上规划。两步小任务直接做,规划开销反而添乱。

自测题

  1. 显式计划对抗上下文腐烂的机制是什么?
  2. plan-then-execute 与 ReAct+todo 各适合什么场景?
  3. 为什么计划项的 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 作为规划器调度专家模型