05-规划能力:任务分解与多步推理

规划能力:任务分解与多步推理

复杂任务不能一步做完,Agent 需要能把大目标拆成小步骤,一步步执行。这篇讲 Agent 的规划能力:任务分解的方法、Chain of Thought、Tree of Thoughts、Plan-and-Execute 模式,以及规划失败了怎么调整。

大家好,我是黒漂技术佬。

简单的问题,Agent 调用一两个工具就解决了。但复杂任务呢?比如「调研 5 个竞品,写一份对比分析报告」,涉及搜索、整理、对比、写作,好多步骤。这就需要 Agent 有规划能力:先拆解任务,再按计划执行。

这篇讲 Agent 怎么规划:任务分解、CoT、ToT、Plan-and-Execute、自我修正。


一、为什么需要规划?

简单任务 vs 复杂任务

简单任务(1-2 步):

  • "北京天气怎么样?" → 调用天气工具 → 回答
  • "123×456等于多少?" → 调用计算器 → 回答

ReAct 循环走一两步就搞定。

复杂任务(多步骤):

  • "调研主流 RAG 框架,对比优缺点,写个选型建议"
  • "帮我做一份下周去上海的行程安排,包括交通、住宿、会议"
  • "分析我们产品上个月的用户留存下降原因"

涉及多个步骤、多个工具、中间还要判断调整。没有规划的话,Agent 容易走一步看一步,跑偏、遗漏、效率低。

规划的作用

  1. 拆解大任务:把大目标拆成可执行的小步骤
  2. 减少走偏:有计划就不容易跑题
  3. 提高效率:知道哪些可以并行、哪些有依赖
  4. 可追溯:有计划就能看做到哪了、为什么这么做

二、Chain of Thought(思维链)

是什么

让模型一步步思考,把推理过程说出来,而不是直接给答案。

例子

没有 CoT:

问题:一个球和一个球拍一共11元,球拍比球贵10元,球多少钱?
回答:1元。(错的)

有 CoT:

问题:一个球和一个球拍一共11元,球拍比球贵10元,球多少钱?
思考:设球x元,球拍就是x+10元。加起来x + (x+10) = 11 → 2x+10=11 → 2x=1 → x=0.5。
回答:0.5元。(对的)

把思考过程写出来,正确率大幅提升。

Zero-shot CoT

不用给示例,加一句「请一步步思考」就行:

让我们一步步来思考这个问题。

简单有效。

Few-shot CoT

给几个带思考过程的示例,效果更好:

示例1:
问题:...
思考:...
答案:...

示例2:
问题:...
思考:...
答案:...

现在回答:
问题:xxx

适用场景

  • 数学推理
  • 逻辑题
  • 需要多步推导的问题
  • 简单的任务规划

CoT 是最基础的推理增强方法,几乎所有 Agent 都在用。


三、任务分解(Task Decomposition)

是什么

把一个复杂目标拆成多个子任务,每个子任务是一个可执行的小步骤。

怎么拆?

方法 1:让模型自己拆

请把以下任务分解为具体的执行步骤:
任务:调研主流RAG框架并写选型建议

输出格式:
1. 步骤一:xxx
2. 步骤二:xxx
...

模型输出:

1. 确定主流的RAG框架有哪些(LangChain、LlamaIndex、Haystack等)
2. 分别搜索每个框架的特点、优缺点、适用场景
3. 整理对比维度(功能、性能、易用性、社区、 license)
4. 制作对比表格
5. 撰写选型建议
6. 输出完整报告

方法 2:模板化分解

特定类型的任务用固定模板,比如调研报告就是「确定范围 → 收集信息 → 整理对比 → 撰写结论」。

优点:稳定可控;缺点:不够灵活。

分解的原则

  1. 每个子任务要具体可执行,不能还是模糊的大目标
  2. 有明确的输入输出,做完一个知道结果是什么
  3. 考虑依赖关系,哪些要先做,哪些可以并行
  4. 粒度适中,太细了步骤多效率低,太粗了不好执行

四、Plan-and-Execute 模式

是什么

先做完整计划,再按计划一步步执行。跟 ReAct 的「走一步看一步」不同,Plan-and-Execute 是「先想好全部,再按顺序做」。

流程

用户任务
  ↓
规划阶段:生成详细的执行计划(步骤列表)
  ↓
执行阶段:按计划一步步执行
  ↓
(可选)重规划:遇到问题调整计划
  ↓
最终输出

两个角色

可以是一个模型干两件事,也可以拆成两个 Agent:

  • Planner(规划者):负责拆解任务、制定计划
  • Executor(执行者):负责执行每个步骤,调用工具

优点

  • 任务结构清晰,不容易跑偏
  • 可以看到整体计划,用户知道要做什么
  • 复杂任务表现更好

缺点

  • 计划可能不符合实际,执行到一半发现不对
  • 不够灵活,遇到意外情况需要重规划

适用场景

  • 任务比较明确、步骤可预测
  • 调研报告、数据分析、内容创作这类结构化任务

五、Tree of Thoughts(思维树)

是什么

不只是一条线思考,而是探索多个可能性,像树一样展开,选最好的路径。

跟 CoT 的区别

  • CoT:一条路走到黑,错了就错了
  • ToT:生成多个候选思路,评估哪个好,选最优的继续

流程

当前问题
  ↓
生成3个可能的下一步思路
  ↓
评估每个思路的可行性(打分)
  ↓
选最好的1-2个继续展开
  ↓
... 层层深入 ...
  ↓
选最终最优的答案

优点

  • 复杂推理问题效果更好
  • 不容易钻牛角尖,能探索多种可能

缺点

  • 调用次数多,慢且贵
  • 实现复杂

适用场景

  • 高难度推理题
  • 需要创意、多种方案的问题
  • 对正确率要求高的场景

一般业务 Agent 用不上这么重的,CoT + 规划就够了。


六、反思与自我修正(Reflection / Self-Correction)

是什么

做完之后自己检查一下,做得好不好、对不对,不好就改。

自我反思流程

执行任务 → 生成初步结果
  ↓
反思:这个结果对吗?有没有遗漏?哪里可以改进?
  ↓
有问题 → 修正 → 再反思 → 直到满意
  ↓
输出最终结果

反思 Prompt

请检查上面的回答,从以下维度评估:
1. 准确性:事实是否正确?
2. 完整性:有没有遗漏关键点?
3. 逻辑性:推理是否合理?
4. 相关性:有没有偏离问题?

如果有问题,请给出修正后的版本。

Reflexion 框架

更正式的反思框架:

  • 行动 → 评估 → 反思 → 下次改进
  • 把反思存起来,积累经验

适用场景

  • 写作类任务:写完自己润色
  • 代码生成:写完自己检查 bug
  • 复杂推理:算完自己验算
  • 质量要求高的输出

缺点是多了一轮(或多轮)调用,更慢更贵。


七、规划失败了怎么办?

常见的规划问题

1. 计划太粗

执行的时候发现一步里面还有好多事,做不完。

解决:动态细化,执行到那一步的时候再拆细。

2. 计划错了

方向不对,或者假设错误。

解决:重规划(Re-planning)。执行中发现不对,停下来重新做计划,继续执行。

3. 步骤有依赖没考虑到

后面的步骤需要前面的结果,但前面没做。

解决:规划时考虑依赖关系,或者动态调整顺序。

4. 工具调用失败

某个工具用不了,或者返回错误。

解决:换工具、换方式,或者跳过(如果不重要)。

动态调整机制

好的 Agent 不是按计划死执行,而是:

  • 每执行一步评估一下进展
  • 发现偏差就调整计划
  • 遇到死路就回溯换方向

八、实际开发中的规划建议

1. 从简单开始

大多数业务场景,ReAct + CoT 就够了,不用上来就搞 ToT、多 Agent 规划。

2. 固定类型任务用模板化规划

比如客服工单处理、数据分析,流程相对固定,预设步骤模板,比让模型自由规划稳定得多。

3. 让用户可见计划

Agent 要做什么,先展示给用户看:

我将按以下步骤完成:
1. xxx
2. xxx
3. xxx
可以吗?

用户可以调整,也更放心。

4. 设置检查点

关键步骤之后检查一下方向对不对,不对及时修正。

5. 控制最大步数

防止死循环,设最大执行轮次,到了就停止并汇报进展。

6. 复杂任务才上重规划

简单任务 ReAct 就行,真的复杂任务再用 Plan-and-Execute + 重规划。


九、不同规划方法对比

方法 复杂度 效果 成本 适用场景
直接回答 最低 简单问题够用 最低 事实性问答
CoT 思维链 推理题提升明显 数学、逻辑、简单规划
ReAct 工具调用场景好 大多数 Agent 场景
Plan-and-Execute 中高 复杂结构化任务好 中高 调研报告、数据分析
Tree of Thoughts 复杂推理最佳 很高 高难度推理、创意任务
+ Reflection 反思 +1级 质量进一步提升 +50%~100% 质量要求高的输出

十、本篇小结

  • 规划能力:把复杂任务拆成小步骤,有序执行,是 Agent 处理复杂任务的关键
  • Chain of Thought(思维链):让模型一步步思考,基础且有效,几乎所有场景都能用
  • 任务分解:把大目标拆成可执行的子任务,是规划的核心
  • Plan-and-Execute:先做完整计划再执行,适合结构化复杂任务
  • Tree of Thoughts:多路径探索选最优,效果好但成本高,一般场景用不上
  • 反思/自我修正:做完自己检查改进,进一步提升质量
  • 规划会失败,需要动态调整、重规划机制
  • 实际开发建议:从简到繁,简单任务 ReAct + CoT 就够,复杂的再上 Plan-and-Execute

下一篇讲多 Agent 协作:多个智能体分工合作,各自扮演不同角色,怎么通信、怎么协调。

我是黒漂技术佬。

posted @ 2026-09-14 18:20  阿拉斯攀登  阅读(0)  评论(0)    收藏  举报