Day 35 / 共 68 天 · 阶段 6 Agent 核心

规划与任务分解

昨天(Day 34)的 ReAct 是"走一步想一步",适合探索。但遇到大任务("做一份竞品调研报告"),边走边想容易迷路、丢三落四。今天学更宏观的一招:让 Agent先列一份计划、把大任务拆成小的子任务,再逐个击破。这是它从"能干杂活"到"能扛项目"的关键一步。学完你能设计出条理清晰的复杂 Agent;明天(Day 36)补上让它"记得住"的记忆能力。

📍 你在阶段 6(Agent 核心 D33-38)的位置
D33 Agent 是什么 D34 ReAct D35 规划 D36 记忆 D37 状态&断点 D38 手写最小 Agent
💡 用一个类比兜住今天(今天全程沿用「操办一桌年夜饭」的世界观) 要做一桌十道菜的年夜饭,厨房新手一头扎进去东一榔头西一棒子,准手忙脚乱、菜上齐时凉了一半。老练的人怎么做?先规划:列菜单、排顺序(先炖汤这种慢的,再炒快手菜);任务分解:把"做红烧肉"拆成买肉→焯水→炒糖色→炖;动态调整:发现酱油没了,临时改计划先去买。规划就是 Agent 的"菜单 + 上菜顺序",子任务就是每道菜的分步骤。今天你从"帮厨"升级成"总厨"。
L01

大任务边走边迷路

🤔 痛点让 Agent 用 ReAct 直接干"写一篇某行业竞品调研报告",它常常:查了两家竞品就急着开始写、忘了还要查市场规模、写到一半发现结构乱了推倒重来……没有全局观,走到哪算哪。任务越大越明显。
💡 本质ReAct 的短板是"只顾眼前一步,缺少全局蓝图"。就像不列菜单直接进厨房,做着做着才想起还有道菜没备料。解法是在动手前多加一步:先让模型把整件事想成一份计划,有了蓝图再逐步执行,就不容易漏、不容易乱。
📝 举个例子:有没有计划的差别 任务:"帮我策划三天周末短途游。"
无规划(硬走 ReAct):先查了个景点 → 又查个餐厅 → 想起没定酒店 → 发现景点和酒店离得远……来回折腾还漏了交通。
先规划:先出计划【① 定目的地 ② 排每天行程 ③ 订酒店(靠近行程) ④ 查交通 ⑤ 汇总预算】,再一项项办。条理清楚、不遗漏——像先列了菜单再下厨。
L02

先规划再执行:Plan-and-Execute

🤔 痛点"先规划"具体怎么落到 Agent 上?难道我手写死步骤?那不就成 workflow 了?
💡 本质不是你写死,而是让模型自己先生成计划,再照着执行。这套路叫 Plan-and-Execute(先计划后执行):第一步只干一件事——让 LLM 输出一份编号步骤清单(菜单);之后进入执行循环,拿着这份清单一项项做(每一项内部可以再用 Day 34 的 ReAct)。规划者负责"想全","执行者"负责"做实"。
Plan-and-Execute:先出菜单,再逐道做 ① 规划:LLM 生成步骤清单 ② 做第1步 ③ 做第2步 ④ 做第3步… 全部完成→汇总交付
图注:对比 Day 34 纯 ReAct(没有顶上那步"先出清单")。多花一次"规划"调用,换来全局条理——大任务上非常值。
# 第①步:只让模型"出计划",先不执行(提示里明确要它列编号步骤)
plan_prompt = f"""你是任务规划师。把下面任务拆成 3-6 个可执行步骤,
只输出编号清单,先别动手:
任务:{user_task}"""
plan = llm(plan_prompt)      # 例如返回:1.查A 2.查B 3.对比 4.写结论

# 第②步:拿着 plan 一项项执行(每项内部可再用工具/ReAct)
for step in parse_steps(plan):          # 把清单拆成一条条
    do_step(step)                        # 执行这一步,结果记进历史(Day32/36)
# 全部做完 → 汇总输出
👶 这不又变成"写死流程"了吗?区别在于:清单是模型现场生成的,不是你写死的。换个任务,它出的计划完全不同。你只固定了"先规划、再逐项执行"这个套路,具体计划内容仍由 AI 决定——所以它仍是 Agent(自主),只是自主得更有章法。
L03

任务分解:把大象切成能下口的块

🤔 痛点"做竞品报告"这种任务太大,模型一口吞不下。计划里的某一步(比如"分析竞品")本身可能还是很大,怎么办?
💡 本质任务分解 = 把大任务层层拆成足够小、能一步做完的子任务,像把"做年夜饭"拆到"切葱花"这种颗粒度。大步还太大,就再拆一层(子任务下面还有子子任务),直到每个末端子任务小到"一两个工具调用就能搞定"。判断标准:一个子任务应当目标单一、能独立验收
任务树:大任务 → 子任务 → 子子任务 竞品调研报告 收集竞品资料 对比分析 撰写结论 查A官网 查B定价 …每个末端小到"一两次工具调用即可完成"
图注:末端子任务("查A官网")小而明确,好执行也好验收。这种"任务树"思维,后面阶段 8 多智能体里会派给不同 Agent 分工。

👶 小白:拆得越细越好吗?拆到"点一下鼠标"那么细?

👨‍🏫 老师:不!过度拆解一样是坑——步骤太碎,规划和协调的开销比干活还大,还容易在步骤间丢信息。经验法则:拆到"每个子任务用一两个工具、一轮 ReAct 能完成"就停。就像切菜,切到能下锅的大小即可,剁成泥反而没法炒。粗细的手感,你多做几个 Agent 自然就有了。

L04

计划要能改:酱油没了就改菜单

🤔 痛点计划是一开始定的,可执行到第 3 步发现"某竞品官网打不开"或"查到的信息推翻了原假设",还死守原计划,不就撞墙了?
💡 本质好的规划型 Agent不是一次性定死计划就闷头执行,而是执行中回看、按新情况调整计划——做菜发现酱油没了,就改菜单先去买、或换个不用酱油的做法。做法:每做完一步(或遇到意外),把进展和意外交回给"规划者",让它决定"继续原计划 / 改后续步骤 / 加一步"。这叫"可复盘、可重规划",是它比死板 workflow 强的地方。
📝 举个例子:中途改计划 原计划第 3 步"抓取竞品 C 的价格页"。执行时发现 C 已经改版、价格藏在需登录的后台——
死板做法:卡在这步,任务失败。
会重规划:规划者收到"C 价格拿不到"的反馈,调整计划为"改用第三方比价站查 C 的大致价位,并在报告里标注'C 价格为估算'"——绕过障碍,任务照样交付(这正好复用了 Day 32 的"降级"思想)。
👶 这会不会导致它一直改计划、永远做不完?会有这风险,所以还是靠 Day 32 那几根"保险丝":总步数上限、重规划次数上限。允许调整,但不允许无限调整。灵活与收敛之间要有闸门——这句话你会在整个课程里反复听到,因为它是 Agent 工程的核心张力。
L05

何时该规划,何时别多此一举

🤔 痛点规划这么好,是不是所有任务都先规划一下?
💡 本质不是。规划本身要多花一次 LLM 调用、增加延迟和复杂度,小任务上得不偿失。判断标准很朴素:任务够大、步骤多、有明显阶段依赖 → 值得先规划;任务简单、一两步就完 → 直接 ReAct 甚至一问一答就够。就像下碗面不用列菜单,办满汉全席才要。
任务建议方式为什么
"翻译这句话"一问一答一步,无需循环/规划
"查两地天气谁热"ReAct(边走边想)几步,探索型,不必先规划
"写一份竞品调研报告"先规划再执行 + 分解大、多步、有阶段依赖,需全局蓝图
"整理这个季度所有报销并生成台账"先规划再执行批量+多阶段,规划能防漏防乱
一句话记牢:越复杂越要先规划,越简单越别折腾。这与 Day 33 "克制使用自主性"、Day 32 "能写死别放开"是同一套工程审美——用最简单能解决问题的方案。面试聊到"你怎么设计一个复杂 Agent",先说这套判断,稳。
L06

今日小结 + 动手 10 分钟

🧠 今天你应该能回答

  • 纯 ReAct 在大任务上有什么短板?为什么要"先规划"?
  • Plan-and-Execute 是什么套路?"计划由谁生成"?它为什么仍算 Agent 而非 workflow?
  • 任务分解拆到多细算合适?过度拆解的坏处?
  • 为什么计划要"能改"?怎么做到(执行中回看、重规划)?靠什么防止无限重规划?
  • 哪些任务值得先规划,哪些不必?判断标准是什么?

✋ 动手 10 分钟:给一个真实大任务做"规划 + 分解"

不写代码,练"总厨思维"。挑一件你真想让 Agent 帮你做的复杂事(如"帮我调研 3 款扫地机器人并给购买建议"),按下面模板手写它的计划和任务树:

# 目标任务:___________________________

# 第一层:先规划出 3-6 个大步骤(菜单)
# 1. ____
# 2. ____
# 3. ____
# 4. 汇总给建议

# 挑其中最大的一步,再分解一层(子任务):
#   步骤 2「____」拆成:
#     2.1 ____(末端:一两个工具能完成?能验收?)
#     2.2 ____
#
# 最后自问三题:
#  ① 哪一步最可能出意外?出了怎么"重规划/降级"?
#  ② 我的子任务是不是拆得太碎或太粗?
#  ③ 这个任务真的值得"先规划"吗,还是 ReAct 就够?

写完你会直观感到:大任务一旦画成"计划 + 任务树",立刻从"不知从何下手"变成"照着做就行"。这正是规划的威力,也是你面试讲复杂 Agent 设计时最能加分的部分。

明日预告 · Day 36:规划得再好,如果 Agent 做完第 2 步就忘了第 1 步查到啥,照样白搭。明天补上最后一块核心零件——记忆(Memory):短期记忆(对话历史)、长期记忆(向量库,还记得阶段 4 的 RAG 吗)、工作记忆各是什么,什么时候该把信息"写进"记忆。有了记忆,你的 Agent 才真正"记事、越用越懂你"。
← Day 34 · ReAct 模式 Day 36 · 记忆 Memory →