学习笔记:详述 Agent 规划的核心范式、任务分解策略、自我反思机制以及工程落地要点

目录


概述

Agent 规划是决定 Agent 能否处理复杂任务的关键能力。没有规划能力的 Agent,只能机械地响应单轮 prompt;而具备规划能力的 Agent,能够将复杂目标拆解为可执行的子步骤,在执行过程中监控进展并动态调整。本章系统梳理 Agent 规划的设计思路与主流范式。

为什么规划对 Agent 至关重要

  • 复杂任务需要分解——"开发一个电商网站"无法一步完成,必须拆解为需求分析、数据库设计、后端开发、前端开发、部署上线等阶段。
  • 避免短视决策——没有全局规划,Agent 可能在第一步就做出事后看来错误的选择。
  • 支持执行监控——规划提供了"预期进度"基准,Agent 可以判断当前是否偏离目标。
  • 实现可复用流程——良好的规划结构可以沉淀为 SOP,复用于类似任务。

核心规划范式

思维链(Chain-of-Thought, CoT)

  • 核心思想:在给出最终答案前,先输出中间的推理步骤。
  • 关键机制:将复杂推理拆解为多个小步骤,每一步的输出成为下一步的输入。
  • 效果:显著提升算术、符号推理、常识推理等任务的准确率。
❌ 直接回答:"答案是 12。"
✅ CoT 模式:
   "首先,题目要求计算 3 + 4 × 2。
    根据运算优先级,先算乘法:4 × 2 = 8。
    然后算加法:3 + 8 = 11。
    所以答案是 11。"
  • 变体
    • Zero-shot CoT:在 prompt 末尾加 “Let’s think step by step” 触发推理
    • Few-shot CoT:提供几个"问题-推理-答案"示例作为示范
    • Self-Consistency:生成多条推理路径,取多数一致的答案
      在这里插入图片描述

ReAct:推理与行动交织

  • 全称:Reasoning + Action(推理 + 行动)
  • 核心思想:Agent 在一个循环中交替进行"思考"和"行动",每次行动后观察结果,再基于观察进行下一轮思考。
Thought: 用户想要查询北京的天气。我需要先调用天气查询工具。
Action: call_weather_tool(city="北京")
Observation: 北京今天晴,25℃,空气质量良
Thought: 天气信息已获取,现在可以回答用户了。
Answer: 今天北京天气晴朗,气温25度,空气质量良好。

ReAct vs 纯 CoT

维度 纯 CoT ReAct
能力边界 仅限内部推理 可调用外部工具
信息来源 训练知识 实时环境信息
错误风险 可能产生幻觉 可通过观察验证

适用场景:需要与外部环境交互的任务——查天气、搜文档、调用 API、执行代码。

思维树(Tree of Thoughts, ToT)

在这里插入图片描述

  • 核心思想:在每个决策点不只选一条路,而是探索多条可能的推理路径,形成树状结构。
  • 关键机制
    • 分支:每个步骤生成多个候选方案
    • 评估:对每个分支进行打分或评估
    • 回溯:发现某分支不通时,可以回到上一步换条路走
      在这里插入图片描述

优势:解决需要"试错"或"全局搜索"的问题,避免一条路走到黑。

局限:计算开销大,路径指数增长。

规划与执行(Plan-and-Execute)

  • 核心思想:先规划再执行,两阶段分离。

    1. 规划阶段:LLM 基于目标一次性规划完整步骤序列
    2. 执行阶段:按顺序执行每一步,必要时可重规划
  • 伪代码示意

public Result plan_and_execute(Task task)
     // 阶段1:规划
    List<Step> plan = planner.plan(task);

    // 阶段2:执行
    for (Step step : plan) {
        Result result = execute(step);
        if (!validate(result)) {
            // 阶段3:重规划
            plan = replan(task, completedSteps, result);
        }
    }
    
    return finalResult;
}

适用场景:任务边界清晰、步骤可预先规划的场景(如"写一个 REST API")。

变体:HuggingGPT 的 “Planning → Selection → Execution → Response” 四阶段流程。

任务分解策略

逐步分解(Step-by-step Decomposition)

  • 做法:每次只分解一步,执行完再看下一步。
  • 优点:灵活,适应性强,每步可基于上一步结果调整。
  • 缺点:缺乏全局视野,可能在早期步骤做出影响后续的短视决策。

层级分解(Hierarchical Decomposition)

  • 做法:将任务分解为多级子目标,形成树状结构。
  • 示例:“开发电商网站” → “后端开发” → “用户模块” → “注册接口”。
  • 优点:结构清晰,便于管理复杂项目。
  • 工具:LLM+P 将自然语言转为 PDDL(规划域定义语言)进行形式化规划。

并行分解(Parallel Decomposition)

  • 做法:识别相互独立的子任务,同时执行。
  • 示例:获取"用户信息"和"订单列表"是两个独立调用,可以并行。
  • 优点:缩短总体执行时间。
  • 前提:子任务之间无依赖关系。

自我反思与纠错

核心思想Agent 不仅要执行,还要审视自己的输出,识别错误并修正

Reflexion 模式

  1. 执行:Agent 生成初步答案或执行动作
  2. 反思:让 LLM 评估刚才的输出有什么问题
  3. 修正:基于反馈生成改进版本
Step 1: 生成代码 → "这是用户要求的功能代码"
Step 2: 自我反思 → "这段代码有两个问题:1) 没有处理空输入;2) 变量命名不规范"
Step 3: 修正输出 → "改进后的代码..."

常见反思触发条件

  • 工具调用返回错误
  • 执行结果不符合预期
  • 用户明确表示不满
  • 置信度低于阈值时主动复查

反思的粒度

  • 单步反思:每完成一步就检查
  • 阶段性反思:完成一个子目标后检查
  • 最终反思:任务完成后整体回顾

执行监控与重规划

监控维度

维度 监控指标
进度 当前步骤 vs 计划步骤,完成度百分比
质量 中间结果是否符合预期
资源 Token 消耗、执行时间是否超限
风险 是否进入异常状态

重规划触发条件

  • 工具调用失败且重试无效
  • 观察结果与预期不符
  • 用户修改了需求或目标
  • 执行路径被阻塞(缺少必要信息/权限)

重规划策略

策略 适用场景
局部调整 小偏差,调整当前步骤即可
回退重试 上一步有问题,回到上一步重新执行
整体重规划 目标或前提已变,需要重新规划全部步骤

记忆增强规划

将记忆能力与规划能力结合,让 Agent 能够"借鉴历史经验"来优化规划

  • 经验复用:检索历史类似任务的分解方式,参考执行
  • 偏好记忆:记住用户对计划格式、时间安排的偏好
  • SOP 沉淀:将成功的规划模式固化为模板
规划流程:
1. 解析当前任务
2. 检索记忆:"用户之前类似的电商项目是怎么规划的?"
3. 提取经验,结合当前需求,生成定制化计划
4. 执行并更新记忆

主流框架与开源方案

LangChain / LangGraph Agents

  • 提供:ReAct 风格 agent、Plan-and-Execute 模板、工具调用封装
  • 特点:高度灵活,可组合多种规划策略

HuggingGPT

  • 流程:Planning → Model Selection → Task Execution → Response Generation
  • 特点:以 LLM 为控制器,编排 HuggingFace 上的模型和工具

ReAct Agent 实现

  • 核心循环:Thought → Action → Observation → Thought…
  • 关键组件
    • Prompt 模板(定义思考格式)
    • 工具注册表(可调用的外部能力)
    • 观察解析器(从工具返回中提取信息)

AutoGPT / BabyAGI

  • 特点:自主规划+自主执行,闭环程度高
  • 局限:对 LLM 能力要求高,成本和错误率也较高
框架 规划风格 自主程度 适用场景
LangChain Agents ReAct / Plan-and-Execute 快速构建、工具编排
HuggingGPT 分阶段控制器 多模型协作
AutoGPT 自主分解执行 端到端任务
ReAct 实现 思考-行动-观察循环 需要工具调用的场景

工程化建议

  • 从简单开始:先实现单轮规划(CoT),验证有效后再加入行动(ReAct),最后考虑复杂策略(ToT)。
  • Prompt 设计:明确的指令格式、示例示范、思考步骤引导。
  • 工具设计:每个工具职责单一、输入输出清晰、有明确的错误处理。
  • 成本控制:复杂规划策略 token 消耗大,对成本敏感场景需权衡。
  • 可观测性:记录每轮思考、每次行动、观察结果,便于调试和审计。
  • 安全边界:规划过程中需设置执行边界,防止 Agent 调用危险工具或进入死循环。

参考资料

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐