规划与任务分解
本目录讨论 Agent 如何把目标拆成可执行步骤、如何选择搜索/规划策略、如何在执行中处理中断、恢复和计划漂移。它与 02-Agent核心架构 的区别是:02 关注系统拓扑,07 关注规划算法、计划对象和执行控制。
核对日期:2026-05-09。
1. 文件索引
| 文件 | 主题 | 适用问题 |
|---|---|---|
| Task-Decomposition | 任务分解的通用方法 | 怎样把目标拆成可执行、可验收的步骤 |
| Plan-and-Execute | 计划-执行-重规划循环 | 如何让 Agent 按计划推进并处理失败 |
| Tree-of-Thoughts | 树搜索式推理 | 如何在多个推理路径中搜索更优方案 |
| Graph-of-Thoughts | 图结构推理 | 如何合并、回退和复用中间 thought |
| 状态机与Agent规划 | 状态机约束规划 | 如何把开放 Agent 放进可控业务流程 |
| 任务中断与恢复 | checkpoint、interrupt、resume | 如何让长任务可暂停、可恢复、可审批 |
| 计划漂移问题 | 计划执行中的偏移 | 如何发现 Agent 偏离目标、权限或约束 |
2. 规划层核心对象
{
"goal": "完成一次合规风险初筛",
"constraints": ["不能外发客户数据", "必须给出证据来源"],
"plan": [
{
"id": "s1",
"action": "读取材料并抽取事实",
"depends_on": [],
"done_when": "输出结构化事实表并带来源"
}
],
"execution_state": {
"current_step": "s1",
"completed": [],
"blocked": [],
"plan_version": 1
},
"control": {
"max_replans": 3,
"approval_required_for": ["external_send", "database_write"]
}
}
3. 方法选型
| 任务特征 | 推荐方法 | 不推荐 |
|---|---|---|
| 步骤明显、依赖清楚 | Task decomposition + Plan-and-Execute | ToT/GoT 过度搜索 |
| 需要探索多个方案 | Tree-of-Thoughts | 单一路径计划 |
| 中间结果可复用和合并 | Graph-of-Thoughts | 纯树搜索 |
| 业务状态强约束 | 状态机 + Agent 局部规划 | 纯自主 Agent |
| 人工审批或等待外部系统 | 中断与恢复 | 同步阻塞等待 |
| 执行中目标容易偏离 | 计划漂移监控 | 只看最终答案 |
4. 通用质量标准
- 每个步骤要可执行、可验证、可回放。
- 分解不应过细到每一步都变成模型调用,也不应过粗到无法定位失败。
- 计划应声明约束、依赖、允许工具和完成标准。
- 执行中出现新事实时,应通过受控重规划更新计划版本。
- 计划与 trace 绑定,评测时能比较“计划说要做什么”和“实际做了什么”。
5. 权威资料
- Plan-and-Solve Prompting: https://arxiv.org/abs/2305.04091
- ReAct paper: https://arxiv.org/abs/2210.03629
- Tree of Thoughts paper: https://arxiv.org/abs/2305.10601
- Graph of Thoughts paper: https://arxiv.org/abs/2308.09687
- Least-to-Most Prompting: https://arxiv.org/abs/2205.10625
- LangGraph graph API: https://docs.langchain.com/oss/python/langgraph/graph-api
- LangGraph interrupts: https://docs.langchain.com/oss/python/langgraph/interrupts
- OpenAI Agents SDK tracing: https://openai.github.io/openai-agents-python/tracing/