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):先查了个景点 → 又查个餐厅 → 想起没定酒店 → 发现景点和酒店离得远……来回折腾还漏了交通。
先规划:先出计划【① 定目的地 ② 排每天行程 ③ 订酒店(靠近行程) ④ 查交通 ⑤ 汇总预算】,再一项项办。条理清楚、不遗漏——像先列了菜单再下厨。
无规划(硬走 ReAct):先查了个景点 → 又查个餐厅 → 想起没定酒店 → 发现景点和酒店离得远……来回折腾还漏了交通。
先规划:先出计划【① 定目的地 ② 排每天行程 ③ 订酒店(靠近行程) ④ 查交通 ⑤ 汇总预算】,再一项项办。条理清楚、不遗漏——像先列了菜单再下厨。
L02
先规划再执行:Plan-and-Execute
🤔 痛点"先规划"具体怎么落到 Agent 上?难道我手写死步骤?那不就成 workflow 了?
💡 本质不是你写死,而是让模型自己先生成计划,再照着执行。这套路叫 Plan-and-Execute(先计划后执行):第一步只干一件事——让 LLM 输出一份编号步骤清单(菜单);之后进入执行循环,拿着这份清单一项项做(每一项内部可以再用 Day 34 的 ReAct)。规划者负责"想全","执行者"负责"做实"。
图注:对比 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官网")小而明确,好执行也好验收。这种"任务树"思维,后面阶段 8 多智能体里会派给不同 Agent 分工。
👶 小白:拆得越细越好吗?拆到"点一下鼠标"那么细?
👨🏫 老师:不!过度拆解一样是坑——步骤太碎,规划和协调的开销比干活还大,还容易在步骤间丢信息。经验法则:拆到"每个子任务用一两个工具、一轮 ReAct 能完成"就停。就像切菜,切到能下锅的大小即可,剁成泥反而没法炒。粗细的手感,你多做几个 Agent 自然就有了。
L04
计划要能改:酱油没了就改菜单
🤔 痛点计划是一开始定的,可执行到第 3 步发现"某竞品官网打不开"或"查到的信息推翻了原假设",还死守原计划,不就撞墙了?
💡 本质好的规划型 Agent不是一次性定死计划就闷头执行,而是执行中回看、按新情况调整计划——做菜发现酱油没了,就改菜单先去买、或换个不用酱油的做法。做法:每做完一步(或遇到意外),把进展和意外交回给"规划者",让它决定"继续原计划 / 改后续步骤 / 加一步"。这叫"可复盘、可重规划",是它比死板 workflow 强的地方。
📝 举个例子:中途改计划
原计划第 3 步"抓取竞品 C 的价格页"。执行时发现 C 已经改版、价格藏在需登录的后台——
死板做法:卡在这步,任务失败。
会重规划:规划者收到"C 价格拿不到"的反馈,调整计划为"改用第三方比价站查 C 的大致价位,并在报告里标注'C 价格为估算'"——绕过障碍,任务照样交付(这正好复用了 Day 32 的"降级"思想)。
死板做法:卡在这步,任务失败。
会重规划:规划者收到"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 才真正"记事、越用越懂你"。