规划与任务分解
规划可以让一项长任务变得易于理解,暴露依赖关系,并创建有用的检查点。它也可能增加仪式化负担,将系统锁定在早期的误解中,或产出一串具有说服力却无法执行的步骤。并非每个多步骤任务都需要单独的规划器。
生成的计划是关于如何达成目标的带版本的工作假设。运行时系统必须验证其约束,只执行符合条件的下一步,并依据观察到的状态进行修订。
计划不会授予许可、证明可行性、预留资源,或建立任务已完成。这些职责仍由工具、状态、策略、控制回路(control loop)与验证承担。
何时显式规划有帮助
Section titled “何时显式规划有帮助”当显式计划能带来协调性或正确性收益时使用它:
- 任务有影响顺序的依赖关系;
- 多个产物或参与方需要汇合;
- 昂贵或影响重大的行动从预览中受益;
- 工作需要暂停与恢复;
- 并行任务需要边界与汇合条件;
- 需要让进展与剩余义务可见;或
- 证据表明初始路径将需要有意的修订。
对短小、可逆、反馈即时的任务,一次选择一个行动可能更简单。一次单独的规划器调用会消耗上下文与延迟,并可能在观察环境之前进行臆测。
Plan-and-Solve 显示,在所评估的推理数据集上,相较其提示基线,显式分解提升了结果(Wang et al., 2023)。相反,受控规划研究发现,在所测试的经典规划领域中,自治可执行性较差;当用外部规划器或验证器(verifier)检查 LLM 提案时,前景更好(Valmeekam et al., 2023)。两项结果都不能决定所有现代智能体(agent)设计。合起来它们支持一个务实规则:分解可以有帮助,但有效性必须来自任务环境与适当的检查。
计划不仅仅是纯文字步骤列表
Section titled “计划不仅仅是纯文字步骤列表”表示足够的结构以便执行与修订:
| 字段 | 用途 |
|---|---|
| 目标与成功证据 | 定义计划预期要达成的结果 |
| 假设与约束 | 揭示可行性所依赖的事实 |
| 步骤 ID 与目标 | 为每个单元提供稳定标识与明确目的 |
| 依赖关系 | 定义顺序与并行的可执行性 |
| 输入与期望输出 | 建立移交约定 |
| 所有者与权限 | 指明谁可行动及其作用范围 |
| 前置条件 | 说明执行前必须为真的条件 |
| 验证 | 定义如何检查该步骤的结果 |
| 失败与重规划触发条件 | 定义当路径不再可信时的信号 |
| 状态与证据 | 将计划与实际运行状态关联起来 |
将这种表示保存在模型对话记录之外。模型可以提出变更建议,但运行框架(harness)仅应用合法的转换并记录版本。
选择合适的分解边界
Section titled “选择合适的分解边界”一个良好的任务单元应具有连贯的产出,便于其他组件消费与验证。它不应只是“思考 X”。有用的边界常常与以下内容对齐:
- 一个产物或一次状态变更;
- 一个证据问题;
- 一项职责或领域;
- 一个权限边界;
- 一条可独立执行的分支;或
- 一个验证检查点。
过度分解会引入移交、重复上下文与协调成本。分解不足会产生不透明的任务,无法调度、设界或验证。粒度是一个评估变量:度量分解是否足以提升结果与恢复能力来抵消其开销。
从当前状态制定计划,然后按边界逐步执行
Section titled “从当前状态制定计划,然后按边界逐步执行”一个执行循环可以是:
- 加载目标、权威状态、约束与当前计划版本;
- 识别依赖与前置条件已满足的符合条件的下一步;
- 选择一个步骤或一个有边界的并行集合;
- 验证行动权限与资源上限;
- 执行并验证结果;
- 根据证据更新状态与计划状态;以及
- 继续、修订、等待、升级处理,或停止。
这使规划从属于控制回路。计划仅提出未来的转换;它不预先授权它们。即便某计划曾被批准,权限、库存、用户意图或外部状态的变化也可能使某一步骤失效。
重规划需要触发条件
Section titled “重规划需要触发条件”每步之后都重规划会使系统不稳定;从不重规划会使系统脆弱。定义如下触发条件,例如:
- 某个前置条件为假或依赖发生变化;
- 期望输出无法验证;
- 某步骤揭示了新的重要约束;
- 用户更改了目标或范围;
- 资源消耗超出估算;
- 反复尝试未产生与任务相关的进展;
- 风险或审批边界发生变化;或
- 出现更直接的路径。
保留旧计划被取代的原因以及哪些已完成的效果仍然有效。不要仅为了看起来连贯而重生成整个计划;不受控的重写可能丢失义务并重复行动。
当约束是形式化的时,使用确定性规划
Section titled “当约束是形式化的时,使用确定性规划”语言模型适用于解释含糊的目标、提出分解、并根据语义反馈进行适配。当问题已经具有形式化约束且正确性重要时——例如调度、图可达性、访问策略、资源分配或事务不变量——不应以模型替代可靠的求解器。
一种混合设计可以让模型将意图翻译为候选约束,然后使用规划器、优化器、数据库、编译器或规则引擎进行检查并产出有效操作。模型可以解释结果,但在其假设范围内,由形式化组件提供保证。
并行性是一种依赖决策
Section titled “并行性是一种依赖决策”仅当输入足够稳定、外部影响不冲突、预算允许且已定义汇合条件时,才并行运行步骤。记录状态版本与所有权。两个任务若都编辑同一产物、消耗同一配额,或进行相互依赖的外部更改,并不会因为描述不同而相互独立。
在汇合处,根据约定验证每个结果,解决冲突,并检查全局成功条件。“所有执行者都已返回”并不等于“所有所需输出均有效”。《多智能体系统》将讨论在确有必要使用独立智能体循环时如何协调;普通的并行作业并不自动需要多个智能体。
如果计划揭示了具体效果、依赖、不确定性与审批点,它们可以使影响重大的工作可审阅。当论据或后果未知时,对高层计划的批准不应自动批准后续每个行动。将审批绑定到范围、阈值、时间与变更规则。
当有人干预时,记录他们是纠正了目标、更改了约束、批准了某一步骤、承担了所有权,还是仅提供了信息。每种情况对剩余计划都有不同的影响。
将计划当作预言
Section titled “将计划当作预言”环境已经改变,系统仍遵循早期序列。针对当前状态验证下一步。
将计划当作授权
Section titled “将计划当作授权”将文字性批准视作未明确效果的许可。应验证并在需要时批准具体行动。
为展示而生成的计划在执行时不引用步骤 ID、依赖或检查。要么将其与状态连接起来,要么去掉这种仪式化。
无休止的重规划
Section titled “无休止的重规划”系统重写任务而不是行动或收集新证据。要求触发条件并限定修订次数。
执行者共享可变输入或外部影响,并在没有提示的情况下相互覆盖。应定义所有权、版本与汇合规则。
每个念头都变成一个任务。协调消耗的精力超过执行。围绕可验证的产出与真实边界进行分解。
每个计划步骤都被标记为已完成,但最初的成功条件未满足。独立于计划状态验证目标。
使用尽可能精简的规划约定,使依赖与验证显式化:
goal, scope, and success evidenceassumptions, constraints, and authoritative state versionsteps with IDs, outcomes, dependencies, owners, and limitspreconditions, authority, and verification per stepparallel groups and join conditionsreplan triggers and maximum revisionscompleted effects that survive a plan changeapproval and handoff boundaries- 显式规划是否为该类任务带来了可量化的收益?
- 计划是否作为带版本的工作状态存储,而不是隐藏在文字中?
- 每个步骤是否具有范围明确的产出、依赖、输入、所有者与验证?
- 是否在执行前再次检查了权限与当前前置条件?
- 计划完成与目标完成是否被分别评估?
- 重规划触发条件与修订上限是否显式?
- 计划更新是否保留了已完成效果、未了义务与变更原因?
- 形式化约束是否在适当情况下委托给可靠的确定性机制?
- 并行工作是否真正独立、具备版本管理并通过结果约定汇合?
- 人是否能审阅具体后果,而不只是抽象的步骤序列?
参考文献及其用途
Section titled “参考文献及其用途”- Wang et al., “Plan-and-Solve Prompting” — 经同行评审的证据,表明在所评估的推理任务上,显式分解提高了结果;不推广到所有智能体工作流。
- Valmeekam et al., “On the Planning Abilities of Large Language Models: A Critical Investigation” — 用于区分看似合理的生成计划与可执行计划,并支持外部规划器与验证器。
- Yao et al., “ReAct” — 支持交替进行行动与观察信息,而非承诺于完整的开环计划的主要研究。
- NIST AI 600-1, Generative Artificial Intelligence Profile — 风险管理资料,支持围绕生成式 AI 系统记录假设、实施人工监督、开展测试与管理变更。