规划与执行
规划与执行工作流将一项工作分给两种角色:规划会话负责准备和验收工作,一个或多个执行会话负责具体实施。本章介绍如何从菜单或会话中启动工作流、确认任务拆分、选择工作目录,以及跟踪工作流的进度。
1. 工作流的运行方式
工作流包含两种角色,每个角色都以独立的会话显示在左栏中:
- 规划与验收。规划会话研究任务和项目,为执行会话编写任务说明,并验收每次的结果。在结果合格之前,它会不断要求修改;只有核查了实际改动和验证依据后,才会验收通过。
- 执行。执行会话完成分配的任务并汇报结果。修改要求会发给同一个执行会话,它在各轮之间保留上下文。
在左栏中,执行会话显示为规划会话的子会话。两个会话都以会话视图运行。两种角色互发的消息会显示发送方的智能体图标、会话名称和角色(「规划」或「执行」),因此在任一对话中都能看到双方的往来。
两种角色都需要使用支持会话视图的智能体:Claude Code、Codex、OpenCode、Pi 或 OMP。规划会话和执行会话可以使用不同的智能体、模型和推理强度。
你可以随时查看、答复或中断任一会话。任一角色发出的权限请求仍需等待你答复。
2. 从菜单启动
打开项目、分组或会话的右键菜单(或会话的「新建子会话」子菜单),选择「新建规划/执行会话…」。对话框包含以下内容:
- 「创建位置」:规划会话的创建位置。执行会话会创建在规划会话之下。
- 「任务说明」:描述任务、要求和验收标准。可以粘贴图片,图片会随规划会话的任务以及执行会话的第一份任务说明一起发送。
- 「自动拆分多个任务」:见 §4。
- 「规划与验收」和「执行」:分别设置每种角色的智能体(「会话类型」)、「模型」和「推理强度」。可选的模型和推理强度来自所选的智能体。对话框会记住你上次为每种角色所做的选择。
- 「工作目录路径」和目录选项:见 §5。
选择「创建并启动」即可启动规划会话。方案就绪后,规划会话会创建执行会话。仅打开或取消对话框不会创建任何内容。该对话框有自己的地址,因此复制链接、刷新页面或使用后退和前进时,对话框都不会丢失。
3. 从会话中启动
在 VelaTerm 启动的任何会话中运行:
vspawn --plan-execute \
--plan-agent claude --plan-model opus --plan-effort high \
--exec-agent codex --exec-model gpt-5.5 --exec-effort medium \
"Implement the agreed changes and verify all acceptance criteria"
在 Claude Code 中,/vspawn --plan-execute <task> 的效果相同;在 Codex 中,请使用 $vspawn --plan-execute <task>。技能会先根据当前对话写出一份自成一体的任务,再启动工作流。这些技能需要先安装 Vela 技能(「设置 ▸ 通用」)。
新的规划会话会创建在运行该命令的会话之下。请求会先打开会话派生与 Git 协作 §4 中介绍的确认卡片,你可以在其中检查并修改任务以及两种角色的设置。
| 选项 | 含义 |
|---|---|
--plan-agent、--plan-model、--plan-effort | 规划会话的智能体、模型和推理强度 |
--exec-agent、--exec-model、--exec-effort | 执行会话的智能体、模型和推理强度 |
--claude、--codex、--model、--effort | 未指定角色专用选项时,用于规划会话 |
--split-tasks | 让规划会话提出多个任务(§4) |
--worktree-mode none|shared|each | 所有角色的目录模式(§5);会覆盖 --worktree |
--cwd <path> | 工作流的工作目录和仓库 |
--yes | 跳过最初的确认卡片;任务拆分方案仍会显示以供确认 |
未明确指定智能体时,从 Claude、Codex、OpenCode、Pi 或 OMP 会话启动的规划会话使用相同的智能体;从其他会话启动时则使用 Claude Code。所选智能体不支持的模型或推理强度会在任何会话启动前被拒绝。
新会话看不到发起它们的那段对话。请在任务中写明目前已做出的决定、已有的改动、约束条件以及要求的交付位置。
4. 拆分为多个任务
在对话框中开启「自动拆分多个任务」,或在 vspawn --plan-execute 中加上 --split-tasks。规划会话随后会调查这项工作,并提出 1 到 12 个相互独立的任务。在你确认之前,不会启动任何执行会话。
拆分方案会在「确认执行任务」对话框中打开:
- 在列表中选择一个任务,即可编辑其「会话名称」「任务说明」、智能体、「模型」和「推理强度」。在任务之间切换时,已做的编辑会保留。
- 「移除任务」会移除一个任务;「撤销移除」可将其恢复。至少需要保留一个任务。
- 启动按钮(「启动 N 个子会话」)会为每个任务创建一个执行会话。
- 关闭对话框后,拆分方案仍会等待确认,屏幕上会保留一个「确认执行任务」链接,用于重新打开对话框。取消方案会停止工作流,且不会创建执行会话。
- 该对话框有自己的地址,刷新后仍会保留;但尚未确认的编辑会在刷新时丢失。
通过技能启动并拆分任务时,技能会添加 --yes,因此只会出现这一次最终确认。确认时可以修改每个执行会话的设置,但不能修改规划会话的设置,因为规划会话已在运行。
同一个规划会话接收所有执行会话的汇报,并逐项验收各个任务,每个任务有各自的修改轮次。只有所有任务都验收通过后,整个工作流才算完成。
拆分任务时,应避免多个任务修改同一批文件。每个执行会话都运行自己的智能体进程,因此请结合机器的资源情况决定任务数量。
5. 工作目录与工作树
目录选项适用于工作流中的所有角色:
| 选项 | --worktree-mode | 结果 |
|---|---|---|
| 「使用当前目录」 | none | 所有会话都在指定的目录中工作 |
| 「共用一个工作树」 | shared | 规划会话和所有执行会话共用一个新的工作树和分支 |
| 「各用一个工作树」 | each | 规划会话和每个执行会话各自使用独立的工作树和分支 |
新工作树基于当前提交创建,不包含未提交的改动。如果无法创建工作树,相应的会话不会启动,也不会改用其他目录。在命令行中,单独使用 --worktree 等同于 shared。
在你合并之前,成果会一直保留在工作树中。在会话上使用「Git ▸ 合并…」即可合并分支(见会话派生与 Git 协作 §6)。工作流不会自行合并、推送或删除工作树。
6. 跟踪进度
- 规划会话的对话会实时显示每一次汇报和修改要求。执行会话工作期间,规划会话会等待它们的汇报。
vflow status <workflow-id>显示工作流的状态、任务、会话和当前轮次。工作流 ID 会出现在工作流消息中。vflow stop <workflow-id>会停止后续轮次,并要求正在运行的会话停止。停止整个工作流会停止其所有任务;停止单个任务不会影响其他任务。vstat显示哪些会话正在工作、正在请求权限或处于等待状态。处于等待状态的执行会话不一定已完成任务;只有规划会话验收通过才算完成。- 如果某个角色结束了回合却没有移交工作,工作流就会进入阻塞状态。请查看对话,答复需要处理的内容,然后从规划会话继续。
这些命令的说明见会话命令。