如何实现的就是Deep Agent 任务规划(Planner)
规划任务的本质是:LLM 使用 HTN + ToT + Self-Projection 构建深层任务图,再结合工具信息、生存反馈、过程评估,不断迭代优化任务计划,最终形成可执行的行动序列。
0. 任务规划(Task Planning)是什么?
在 Deep Agent 内部,Planner 的功能不是“展开步骤”,而是:
构建一个可执行的任务图(Task Graph / Plan Tree)——包括子任务、依赖、工具选择、预期输出、失败恢复策略。
Planner 决定 Agent “怎么做”,Executor 决定“如何执行”。
1. Deep Agent Planner 的总体架构
Planner 一般由 五个模块组成:


Task Understanding(任务理解)
HTN / 层级任务分解(Hierarchical Task Networks)
Tool-Aware Decomposition(基于工具可行性的任务分解)
Plan Graph Construction(计划图构建)
Self-Projection(未来步骤预测)与 Plan Refinement(计划调整)
下面逐一讲透。
2️⃣ Task Understanding(任务理解)
Planner 首先会把用户输入转换为一个结构化任务:
任务理解的典型结构:
{
"goal": "构建一个 OTA 固件升级系统",
"constraints": ["使用 Python", "提供 REST API", "有设备状态查询"],
"deliverables": ["代码仓库", "API文档", "测试"],
"environment": {
"tools": ["python_repl", "file_system", "http_request"],
"context_files": [...]
}
}
这部分一般由一个 LLM Prompt + 系统上下文共同决定。
3️⃣ HTN:Hierarchical Task Decomposition(层级任务分解)
HTN 是现代 Deep Agents 的主流框架(OpenAI、Anthropic、Google、AutoGPT 都逐渐转向 HTN)。
HTN 的核心思想:任务 = 方法(methods) → 子任务(subtasks)
例如:
Goal: Build OTA System
Method M1:
1. Create backend structure
2. Implement firmware upload
3. Implement device status
4. Create scheduler
5. Add tests
LLM 会根据已有工具、上下文、约束,生成多种可选 Method,然后选择最优一个。
为什么 HTN 重要?
可解释(你能看到任务树)
可回滚(某个节点失败 → 只重跑该节点)
便于评测(Progress Rate = 完成节点数 / 总节点数)
可长期任务执行(树深越大,支持的动作序列越长)
4️⃣ 任务树是怎么“生成”的?(核心算法)
这是 Deep Agent Planner 的关键:
不是一次性“写出步骤”,而是通过多轮搜索生成任务树。
常用方法:
(1) Top-down 多轮推理(LLM 为 node expander)
每次展开一个节点:
Task → Subtask 1, 2, 3…
Subtask 1 → Sub-subtask 1.1, 1.2…
类似深度优先搜索(DFS)+ 结果修正。
(2) Tree-of-Thought(ToT)式多路径展开
Planner 不是只展开一条路径,而是:
展开多条候选路径
使用 LLM Judge/PRM 评分
选择最优 plan → commit 到执行轨迹
你之前做的 PRM/LLM Judger 就是用在这一环。
(3) Self-projection(未来预测)
很多 Deep Planner 会问 LLM:
“假设你按这个计划执行,未来可能遇到什么问题?”
模型在 planning 阶段就能提前修正:
依赖冲突
工具不可用
缺少文件 / 缺少环境
步骤顺序问题
这是 GPT-o 系列和 Claude 3.7 的强杀招。
(4) 约束求解(Constraint Satisfaction)
使用 LLM 生成计划 → 约束求解器检查:
任务顺序是否符合依赖
工具是否足够执行
输出格式是否满足要求
类似“计划编译器”。
5️⃣ Plan Graph(任务图)最终长什么样?
典型结构:
{
"plan": {
"nodes": [
{"id": 1, "task": "Analyze requirements"},
{"id": 2, "task": "Design architecture", "depends_on": [1]},
{"id": 3, "task": "Setup repo", "depends_on": [2]},
{"id": 4, "task": "Implement API", "depends_on": [3]},
{"id": 5, "task": "Add tests", "depends_on": [3]},
{"id": 6, "task": "Integration", "depends_on": [4,5]}
]
}
}
这是一个 DAG(有向无环图)。
Executor 会用 topological sort 决定执行顺序。
6️⃣ Planner 如何选择工具?
规划步骤会包含:
动作类型
工具选择
输入 / 输出格式
示例:
Task: 获取设备状态
→ Action: http_request
→ Endpoint: /device/status
→ Expect: JSON schema = {...}
Planner 会基于:
任务目标
可用工具(tool registry)
文件系统状态
历史调用成功率
生成最优工具链。
7️⃣ 规划的执行与修正(Plan Execution Loop)
Deep Agent 的 Planner → Executor → Reviewer 构成闭环:


步骤:
Planner 生成任务树
Executor 执行下一个节点
Reviewer/PRM 检查结果
如果失败
Planner 调整节点(replan)
或替换子任务
或调整工具
这使得 agent 可以:
修复代码
重写步骤
调整策略
重新规划部分任务树
8️⃣ 深度规划器对模型能力的要求(GPT-5 / o3 为什么这么强?)
Planner 的效果高度依赖模型具备以下能力:
① 结构化推理(structured reasoning)
模型要能输出 JSON、任务树、方法描述。
② 长序列一致性
任务树可能长达 50–200 步,需要模型不崩溃。
③ 自我投影能力(self-projection)
模型必须能“预测如果执行,会发生什么”。
④ 代码能力(codegen + debug)
因为大部分任务最终落地成工具链调用 & 代码执行。
⑤ 反思能力(self-reflect)
Planner 需要能主动发现自己生成的 plan 有问题。
9️⃣ 如何工程上构建一个 Planner?
下面是一个最简版可运行 Planner(Python)结构:
planner/
├── parser.py # 任务解析
├── htn.py # 层级任务分解
├── tool_selector.py # 工具选择
├── grapher.py # 构建任务图
├── evaluator.py # 计划质量评估
└── planner.py # 主入口
planner.py(伪代码)
class Planner:
def __init__(self, llm, tools):
self.llm = llm
self.tools = tools
def plan(self, user_goal):
# Step 1: Task understanding
task_spec = self._parse_goal(user_goal)
# Step 2: HTN decomposition
htn = self._htn_decompose(task_spec)
# Step 3: Add tool info
htn = self._attach_tools(htn)
# Step 4: Build task graph
graph = self._build_graph(htn)
# Step 5: Evaluate plan quality (LLM Judge)
score = self._evaluate(graph)
return graph, score
实际企业级 Planner 的强化要素(重点)
① 规划缓存(Plan Cache)
同类任务不必重新规划 → 大幅降低成本。
② 动态 replanning
执行过程中根据上下文变化重新规划剩余节点。
③ 模型混合(Mixture-of-Agents)
Planner 用 o3-mini
执行时用更便宜模型
反思用 PRM/LLM judge
④ Plan Compression(计划压缩)
将 100 步任务压缩为 10 层抽象步骤 → 提升稳定性。
⑤ 任务树可视化(企业必备)
用于:
Debug
演示
风控审批(尤其金融/能源)

浙公网安备 33010602011771号