规划与任务分解

返回 AI Agent

Agent 面对复杂目标时,无法一步到位,需要先把目标拆解成可执行的子任务序列,再逐步执行。规划能力决定了 Agent 能处理多复杂的现实问题。


规划方式对比

方式原理优点缺点
零样本规划直接让 LLM 输出计划列表简单,无需示例容易遗漏步骤,顺序错误
CoT 规划逐步推理后给出计划更细致,中间步骤可检查token 消耗大
反应式(ReAct)边执行边规划,随结果调整灵活,适应动态环境可能陷入局部循环
分层规划高层目标 → 子任务 → 原子操作结构清晰,可并行层间依赖复杂
树搜索(ToT/MCTS)多分支展开,评估后剪枝全局最优,可回溯计算开销大

任务分解策略

顺序分解

目标:写一篇技术博客
→ 1. 确定主题和受众
→ 2. 搜索相关资料
→ 3. 整理大纲
→ 4. 逐节撰写
→ 5. 修改润色
→ 6. 发布

适用:步骤有先后依赖,无法并行

并行分解

目标:分析竞品
→ 并行:
  ├── 分析产品 A(研究员 1)
  ├── 分析产品 B(研究员 2)
  └── 分析产品 C(研究员 3)
→ 汇总:整合报告

适用:子任务相互独立,多 Agent 并发执行

条件分解

目标:修复 Bug
→ 复现问题
→ if 能复现:
    → 定位根因 → 修复 → 验证
  else:
    → 收集更多日志 → 重新分析

适用:依赖运行时信息做决策


常见规划 Prompt 模板

你是一个任务规划专家。用户的目标是:{goal}

请:
1. 将目标分解为 3-7 个可执行的具体子任务
2. 每个子任务说明:做什么、需要什么工具、输出什么
3. 标明各任务间的依赖关系
4. 对可并行的任务打上 [parallel] 标记

输出 JSON 格式:
{
  "tasks": [
    {"id": 1, "name": "...", "tool": "...", "output": "...", "depends_on": []}
  ]
}

规划失效场景与对策

失效原因表现对策
目标模糊计划宽泛无法执行先澄清目标,加 clarification 步骤
世界模型缺失计划在实际环境中不可行用真实工具探测环境再规划
步骤依赖错误步骤 2 依赖步骤 3 的输出让模型显式声明依赖关系
计划僵化执行失败后不重规划加入反思循环,失败时触发重规划
无限递归子任务又被分解为同一问题设置分解深度上限(max_depth)

实现模式

Plan-and-Execute

plan = llm.plan(goal)          # 一次性生成全部计划
for step in plan.steps:
    result = agent.execute(step)
    if result.failed:
        plan = llm.replan(goal, executed=done, failure=result)

LangGraph 状态机规划

# 节点:planner → executor → reflector → (继续/结束)
graph.add_node("planner", plan_fn)
graph.add_node("executor", execute_fn)
graph.add_node("reflector", reflect_fn)
graph.add_conditional_edges("reflector", should_continue)

相关文档