本页目录10
- Workflow 把编排计划写进脚本,不再占用 Claude 上下文窗口,支持暂停、恢复和重复运行。
- 内置 `/deep-research` 命令可一键体验多源交叉验证研究,无需手写脚本。
- 在 prompt 中加入 `ultracode` 关键词,或用 `/effort ultracode` 开启会话级全局编排。
- 保存的 Workflow 自动成为 `/<name>` 命令,可放项目或个人目录,同名时项目级优先。
- 单次运行上限 16 个并发代理、1000 个总代理;运行前先用小范围测试评估 Token 消耗。
- 子代理始终以 `acceptEdits` 模式运行,建议提前将常用 Shell 命令加入许可列表以避免中途打断。
本文是对官方文档「Orchestrate subagents at scale with dynamic workflows」的中文要点摘要,完整内容以原文为准。原文链接:https://code.claude.com/docs/en/workflows
什么是动态 Workflow
动态 Workflow 是一段由 Claude 编写、运行时在后台执行的 JavaScript 脚本,用于大规模调度子代理(subagent)协同完成任务。用户的对话窗口在运行期间保持响应,脚本的中间结果存在变量里而非 Claude 的上下文窗口,最终把汇总结果返回给用户。
适用场景:全仓库 Bug 扫描、数百个文件的批量迁移、需要多源交叉验证的研究问题、需要从多个角度起草再择优的复杂方案。
版本与计划要求:Claude Code v2.1.154 及以上,付费计划(Pro / Max / Team / Enterprise)、Anthropic API 及 Amazon Bedrock / Google Cloud Vertex AI / Microsoft Foundry 均支持。Pro 用户需在 /config 中手动启用 Dynamic workflows。
四种协作模式对比
| 模式 | 谁决定下一步 | 中间结果存在哪 | 可重复性 | 规模上限 |
|---|---|---|---|---|
| 子代理 Subagents | Claude 逐轮决定 | 上下文窗口 | 仅 worker 定义 | 每轮少量任务 |
| 技能 Skills | Claude 按指令决定 | 上下文窗口 | 指令本身 | 同子代理 |
| 代理团队 Agent teams | 主代理逐轮分配 | 共享任务列表 | 团队定义 | 少量长期任务 |
| Workflow | 脚本本身 | 脚本变量 | 整个编排流程 | 数十至数百个代理 |
核心优势:编排逻辑固化在脚本里,不再依赖 Claude 的上下文窗口,支持大规模并行、可复用、可恢复,也可以用「独立代理相互验证」等质量模式提升可信度。
快速体验:内置 /deep-research
Claude Code 内置了一个开箱即用的 Workflow 命令:
/deep-research What changed in the Node.js permission model between v20 and v22?
执行后它会从多个角度并行展开网络搜索,抓取来源并交叉验证每条声明,最终返回带引用的研究报告——未通过验证的内容已自动过滤。
运行后可用 /workflows 命令查看进度,支持按阶段、代理逐层下钻,查看各代理的 prompt、工具调用记录和结果。
/workflows 进度视图快捷键
| 按键 | 操作 |
|---|---|
↑ / ↓ | 选择阶段或代理 |
Enter 或 → | 展开查看详情(阶段→代理,可读其 prompt、近期工具调用与结果) |
Esc | 返回上一层 |
j / k | 代理详情溢出时在其中滚动 |
f | 按状态过滤所选阶段的代理列表,再按一次循环切换(v2.1.186+) |
p | 暂停 / 恢复运行 |
x | 停止选中代理;焦点在整个运行上时停止整个 Workflow |
r | 重启选中的运行中代理 |
s | 将脚本保存为可复用命令 |
触发 Workflow 的两种方式
方式一:在 prompt 中加入 ultracode 关键词
ultracode: audit every API endpoint under src/routes/ for missing auth checks
Claude Code 会高亮该关键词,Claude 随即编写 Workflow 脚本而非逐轮处理。用自然语言「use a workflow」或「run a workflow」也同样有效。若不想触发,可按 Option+W(macOS)或 Alt+W(Windows/Linux)取消本次高亮,或在 /config 中彻底关闭 Ultracode keyword trigger。
方式二:会话级 /effort ultracode
/effort ultracode
开启后,本次会话内 Claude 会主动为每个实质性任务规划 Workflow,一个请求可能拆成多个串行 Workflow(理解代码 → 执行修改 → 验证结果)。Token 消耗会显著增加。会话结束后自动重置,日常工作结束后建议用 /effort high 切回。
审批与权限模式
| 权限模式 | 触发审批提示的时机 |
|---|---|
| 默认 / accept edits | 每次运行(已选「不再询问」除外) |
| Auto 模式 | 仅首次;任意 Yes 即记录授权,后续直接启动 |
Bypass / claude -p / Agent SDK | 从不提示,直接启动 |
子代理始终以 acceptEdits 模式运行,继承用户的工具许可列表。长时间运行前建议将所需 Shell 命令预先加入许可列表,避免中途频繁弹出确认。
保存与复用 Workflow
对满意的运行结果,在 /workflows 视图选中后按 s 保存:
- 项目级:
.claude/workflows/(随仓库共享,对所有克隆者生效) - 个人级:
~/.claude/workflows/(跨项目可用,仅自己可见)
保存后可在任意会话以 /<name> 调用,出现在 / 自动补全列表中。同名时项目级优先于个人级。Monorepo 场景(v2.1.178+)中,沿工作目录向上查找最近的 .claude/workflows/,最近路径的同名 Workflow 优先。
Workflow 还支持通过 args 参数接受结构化输入(研究问题、目标路径列表、配置对象等),脚本内以全局变量 args 读取,无需每次手动改脚本。
运行机制与限制
Workflow 脚本在独立隔离环境中执行,不直接操作文件系统或 Shell——这些操作由它调度的子代理完成,脚本本身只负责协调。每次运行的脚本会写入 ~/.claude/projects/ 下的会话目录,可自行查看、对比或修改后重跑。
| 约束 | 说明 |
|---|---|
| 无法中途接收用户输入 | 只有工具权限提示可暂停运行;需要阶段间审批时,请将各阶段拆成独立 Workflow |
| 最多 16 个并发代理 | CPU 核数较少的机器会更低,以限制本地资源消耗 |
| 单次运行最多 1000 个代理 | 防止脚本失控循环 |
| 仅在同一会话内可恢复 | 退出 Claude Code 后重新运行将从头开始 |
成本控制建议
- 先用小范围(单目录、一个窄问题)跑一次评估 Token 消耗,再扩展到全量
/workflows中随时查看每个代理的 Token 用量,可中途停止且不丢失已完成结果- 运行前检查
/model,并在描述任务时要求 Claude 对低复杂度阶段使用轻量模型 - 如需关闭 Workflow:在
/config中关闭 Dynamic workflows,或在~/.claude/settings.json中设置disableWorkflows为true,或设置环境变量CLAUDE_CODE_DISABLE_WORKFLOWS=1 - 企业管理员可在 managed settings 或 Claude Code 管理页面全局关闭