任务规划

任务规划把目标拆成相互关联的步骤,说明每一步需要什么、产出什么,以及哪些步骤可以同时进行。

返回概念图谱 →

理解与应用

任务规划是在执行前或执行过程中,为达成目标安排步骤。它不只是把一件事分成若干小事,还要确定步骤之间的依赖:哪些信息必须先拿到,哪些结果会被后续步骤使用。计划可以是自然语言,也可以是程序能够调度的任务图;重要的是执行者能据此判断接下来做什么。

假设要制作一份按地区比较销售额的报告。数据导出后,需要先核对日期范围、币种和退款是否计入,再开始计算。计算完成后,绘制图表和撰写初步结论可以并行;最终报告需要同时用到这两项结果。如果直接把“取数据、画图、写报告”排成三行,就容易漏掉口径检查,直到交付时才发现图表比较的不是同一类数据。

计划里的完成状态应对应具体产物。例如“检查口径完成”意味着已经确认所用字段和计算规则,而不只是模型写出了这句话。依赖满足也不总等于可以并行:两个步骤若会改写同一份文件,仍要协调修改顺序。任务图表达信息依赖,文件和资源的使用则由执行系统管理。

计划会随着事实改变。如果发现两个地区使用不同币种,原计划就需要加入换算步骤;若其中一个地区缺少数据,结论的范围也要调整。对复杂任务,可以先安排大的阶段,获得数据后再细化近期步骤。这种逐步展开的方式保留方向,又避免为尚不了解的细节制定一份很快失效的长计划。

关系速览
任务规划应用于 →Plan-and-Solve:先规划再求解

先规划再执行适合可拆分任务,但必须允许计划被新事实修正。

任务规划应用于 →智能体工作流

已知依赖与验收条件可以固化成工作流,不必每步重新请求模型决策。

任务规划应用于 →旅行助手

旅行任务适合分解时间、预算与可用性约束;实际预订仍需新的实时校验和授权。

动手试一试:找出销售报告中可以同时进行的工作

代码按依赖关系计算执行批次,不会真的导出或分析数据。绘图与写结论使用同一份已确认的计算结果,因此可以独立开展;实际调度器应在产物通过检查后才把任务加入 done。

将代码保存为 example.py,使用 Python 3.10+ 运行 python3 example.py。仅使用标准库,无需密钥,不会调用外部模型。

Python 代码

dependencies = {
    "导出数据": set(),
    "核对口径": {"导出数据"},
    "计算各地区销售额": {"核对口径"},
    "绘制图表": {"计算各地区销售额"},
    "撰写结论": {"计算各地区销售额"},
    "整理报告": {"绘制图表", "撰写结论"},
}
done = set()
while len(done) < len(dependencies):
    ready = [name for name, deps in dependencies.items()
             if name not in done and deps <= done]
    if not ready:
        raise ValueError("任务图存在循环或缺少前置任务")
    print("、".join(ready))
    done.update(ready)

运行结果

导出数据
核对口径
计算各地区销售额
绘制图表、撰写结论
整理报告

常见误区

  • 把详细计划当成已完成的工作,会掩盖仍然缺失的数据、产物和检查结果。
  • 对几分钟就能完成的简单操作建立庞大任务图,协调成本可能比任务本身更高。

前置与延伸

建议先读

相关概念

参考与版本

Apollo 原创讲解与教学示例。参考资料用于核对技术定义;核验日不代表资料的发布日期。

  • ACL:Plan-and-Solve Prompting ↗

    已核对 ACL 2023 正式论文条目与方法摘要;原研究的提示方法与本文工程化计划结构分开说明。 · 核验:2026-10-10

  • Anthropic:Building effective agents ↗

    已核对官方文章对 workflow、agent 及环境反馈的区分;工程原则参考,不把文中产品清单视为固定版本。 · 核验:2026-10-10