任务规划
任务规划把目标拆成相互关联的步骤,说明每一步需要什么、产出什么,以及哪些步骤可以同时进行。
理解与应用
任务规划是在执行前或执行过程中,为达成目标安排步骤。它不只是把一件事分成若干小事,还要确定步骤之间的依赖:哪些信息必须先拿到,哪些结果会被后续步骤使用。计划可以是自然语言,也可以是程序能够调度的任务图;重要的是执行者能据此判断接下来做什么。
假设要制作一份按地区比较销售额的报告。数据导出后,需要先核对日期范围、币种和退款是否计入,再开始计算。计算完成后,绘制图表和撰写初步结论可以并行;最终报告需要同时用到这两项结果。如果直接把“取数据、画图、写报告”排成三行,就容易漏掉口径检查,直到交付时才发现图表比较的不是同一类数据。
计划里的完成状态应对应具体产物。例如“检查口径完成”意味着已经确认所用字段和计算规则,而不只是模型写出了这句话。依赖满足也不总等于可以并行:两个步骤若会改写同一份文件,仍要协调修改顺序。任务图表达信息依赖,文件和资源的使用则由执行系统管理。
计划会随着事实改变。如果发现两个地区使用不同币种,原计划就需要加入换算步骤;若其中一个地区缺少数据,结论的范围也要调整。对复杂任务,可以先安排大的阶段,获得数据后再细化近期步骤。这种逐步展开的方式保留方向,又避免为尚不了解的细节制定一份很快失效的长计划。
动手试一试:找出销售报告中可以同时进行的工作
代码按依赖关系计算执行批次,不会真的导出或分析数据。绘图与写结论使用同一份已确认的计算结果,因此可以独立开展;实际调度器应在产物通过检查后才把任务加入 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