跳转到内容

使用计划模式

本指南介绍如何在智能体编写任何代码之前,先让它产出一份结构化的计划。

在计划模式中,智能体以只读方式调研,唯一的交付物是一份带类型的计划:一张由你 批准的步骤依赖图,Control Center 随后把它编译成真正的工作。当你想要看清一项改动的 范围、拿到拆解后的步骤,或者希望在动任何东西之前先明确风险和依赖关系时,就用它。

以下任一操作都会翻转空间的模式,并且这项改动会被持久化:

  • 在输入框工具栏最左侧的模式下拉菜单中选择 规划
  • 按 Shift+Tab
  • 发送 /plan。单独一个 /plan 只是启用该模式;/plan <request> 会启用它,并把 其余内容作为你的消息发送

/plan 绝不会以文本形式传递——它设置的是存储的模式,也正是工具面、护栏预设和 提示词共同读取的那个权威来源。因此该模式对这一轮以及之后的每一轮都生效,直到你把它 改回来。

模式存储在空间上,因此同一个智能体可以在这里处于计划模式,在别处处于智能体模式。

  1. 它以只读方式调研——记忆、代码索引、文件
  2. 它调用 submit_plan 一次,带上一个 goal 以及 nodes,每个节点都携带一个 稳定的 key、一个 title、一个 description,以及它所 dependsOn 的节点键 (这正是让彼此独立的工作可以并行运行的原因)
  3. 它停下来

该工具会校验这张图——重复的键、悬空的依赖、环——并把违规内容返回给智能体去修复, 而不是接受一份坏掉的计划。

计划会在对话中显示为一行紧凑的条目,展示目标、它的状态和步骤数。Plan Studio ——依赖图、逐节点检查器和费用估算——会作为对话旁的标签页打开:点击该行上的打开, 或者干脆等着,因为在你正看着对话时,30 秒内落地的计划会自己打开它的标签页。

在这里,文字叙述算不上交付物。一次运行如果没有调用 submit_plan 就结束,会在对话中 发出一条可见的“Ended without submitting a plan (no submit_plan call).”提示行,并把 该运行标记为没有交付它应有的交付物。该运行的状态有意保持为 completed——这样流水线 和工单的状态机就不会被触动——所以要读那一行提示,而不是状态徽标。

在对话中计划的那一行上,按批准并运行。在 Plan Studio 的审批栏中,按批准计划 (或它旁边的拒绝;当图存在校验错误时,批准会被禁用)。

然后:

  1. Control Center 把计划编译成一次编排并把它物化——工单和运行。这一步不涉及任何 模型;它是确定性的
  2. 计划由写出它的那个智能体执行。是否要拉别人进来,由该智能体在运行时决定——它 可以用 delegate_task 把某个步骤交给更合适的队友,前提是不超过工作区的委派深度 上限
  3. 计划的目标会成为该对话的目标,工作在同一个对话中运行:每个步骤都会发布 智能体被要求做什么,并把它那一轮流式返回,因此你就在自己已经待着的地方跟进它 (并且可以停止某一轮)
  4. 对话的通用侧面板(待办下方)中的目标行会以 settled/total 显示该运行的 进度,并带有它的停止按钮;Plan Studio 会在图上显示每个节点的状态,也可以在那里 取消

如果你宁愿留在这个对话里,而不是批准这份计划,智能体可以调用 exit_plan_mode。 这是唯一被认可的退出方式:它会打开一个与该对话关联的持久审批请求并返回 pending ——空间保持在计划模式,智能体不得行动。一旦请求获批,智能体下一次调用 exit_plan_mode 就会把空间从计划模式翻转到智能体模式,并解锁它的变更类工具。 如果请求被拒绝,它则可以针对一份修订后的计划新开一个请求。

要离开计划模式,请切换输入框下拉菜单(或按 Shift+Tab),或者批准已提交的计划。 exit_plan_mode 会打开一项持久的审批,由 MCP 工具 decide_approval 裁决。用于被 阻止的工具调用的护栏浮层是另一套内存中的队列,不承载计划退出请求。

一个 messaging.createSpace 流水线节点从节点配置的 mode extra 读取对话模式 ——extras['mode']: 'plan'。该键要求精确匹配:其他任何写法,包括 conversationMode 或 dispatchMode,都会被静默忽略,房间会回退到请求体的默认值, 也就是审查模式,而不是聊天模式。promptAgent 步骤加入的是它没有创建的房间, 不会重新设置其权限。节点配置编辑器中的调度模式选择器(allParallel / manager)是给团队派发节点用的。请在打开空间的模板上,或通过 API 在该节点的配置 上,用 extras['mode'] 设置对话模式。