返回转载

用动态工作流大规模编排子 Agent

约 7 分钟读完

动态工作流通过 Claude 编写的脚本编排大量子 Agent,可重复运行。适用于代码库审计、大规模迁移和交叉验证的研究。


原文:Orchestrate subagents at scale with dynamic workflows

动态工作流目前处于研究预览阶段。需要 Claude Code v2.1.154 或更高版本,在所有付费计划中可用,支持 Anthropic API 访问,以及 Amazon Bedrock、Google Cloud Vertex AI 和 Microsoft Foundry。在 Pro 计划中,通过 /config 的 Dynamic workflows 行开启。

动态工作流是一个 JavaScript 脚本,用于大规模编排子 Agent。Claude 为你描述的任务编写脚本,运行时在后台执行该脚本,同时你的会话保持响应。

当任务需要比单个对话能协调的更多 Agent 时,或者当你想将编排固化为可读取和重复运行的脚本时,就该使用工作流。示例包括代码库范围的 bug 搜索、500 个文件的迁移、需要多个来源交叉验证的研究问题,以及在承诺采用之前值得从多个独立角度起草的复杂方案。

本页涵盖:

  • 决定何时使用工作流而非子 Agent 或 Skills
  • 使用 /deep-research 运行内置工作流
  • 让 Claude 编写工作流并保存
  • 理解工作流运行方式和管理运行

何时使用工作流

子 Agent、Skills 和工作流都可以运行多步骤任务。区别在于谁掌控计划:

子 AgentSkills工作流
是什么Claude 生成的工作者Claude 遵循的指令运行时执行的脚本
谁决定下一步运行什么Claude,逐轮决定Claude,遵循 prompt脚本
中间结果存在哪里Claude 的上下文窗口Claude 的上下文窗口脚本变量
什么是可重复的工作者定义指令编排本身
规模每轮几个委派任务同子 Agent每次运行数十到数百个 Agent
中断重启该轮重启该轮可在同一会话中恢复

工作流将计划移入代码。使用子 Agent 和 Skills 时,Claude 是编排者:它逐轮决定接下来生成什么,每个结果都落入 Claude 的上下文。工作流脚本自身持有循环、分支和中间结果,因此 Claude 的上下文只保存最终答案。

将计划移入代码还让工作流能应用可重复的质量模式,而不仅仅是运行更多 Agent:它可以让独立的 Agent 对彼此的发现进行对抗性审查后再报告,或从多个角度起草方案并相互对比,这样你得到的结果比单次处理更可信。

运行内置工作流

查看工作流实际运行的最快方式是运行 /deep-research,这是 Claude Code 内置的工作流,用于跨多个来源调查问题。你会看到 Agent 在后台逐阶段工作,同时你的会话保持空闲,最终得到一份报告而非逐轮的对话记录。

要为自己的任务运行工作流,让 Claude 编写一个,一旦运行达到预期,你可以在之后将其保存为命令。

内置工作流

Claude Code 内置了 /deep-research 工作流:

命令功能
/deep-research <问题>围绕一个问题从多个角度展开网络搜索,获取并交叉验证找到的来源,对每个论断投票,返回一份引用报告,未通过交叉验证的论断会被过滤。需要 WebSearch 工具可用

你自己保存的工作流也会以同样方式成为命令,出现在 / 自动补全中。

查看运行状态

工作流在后台运行,会话保持响应。随时运行 /workflows 列出正在运行和已完成的工作流,然后选择一个打开其进度视图。

/workflows

进度视图显示每个阶段的 Agent 数量、Token 总量和经过时间。底部列出每个操作的快捷键:

快捷键操作
↑ / ↓选择阶段或 Agent
Enter 或 →深入选中的阶段,再深入 Agent 查看其 prompt、最近的工具调用和结果
Esc返回上一级
j / k在 Agent 详情溢出时滚动
p暂停或恢复运行
x停止选中的 Agent,或当焦点在运行上时停止整个工作流
r重启选中的运行中 Agent
s保存运行的脚本为命令

让 Claude 编写工作流

你可以通过两种方式让 Claude 为你的任务编写工作流:

  • 在 prompt 中要求工作流——使用"workflow"关键词,Claude 会为任务编写工作流。
  • 让 Claude 自动决定(ultracode):设置 /effort ultracode,Claude 会为会话中每个实质性任务规划工作流。

你也可以运行已有的工作流命令:内置工作流如 /deep-research,或你已保存的工作流。

在 prompt 中要求工作流

要将单个任务作为工作流运行而不改变会话的 effort 级别,在 prompt 中任意位置包含"workflow"一词即可。

Run a workflow to audit every API endpoint under src/routes/ for missing auth checks

Claude Code 会高亮你输入中的该词,Claude 将为任务编写工作流脚本而非逐轮处理。

如果运行达到预期,你可以在之后保存为命令。

如果 Claude Code 在你不想触发时高亮了该词,按 alt+w 可忽略本次 prompt 中的触发。

让 Claude 自动决定(ultracode)

Ultracode 是一个 Claude Code 设置,将 xhigh 推理力度与自动工作流编排结合。开启后,Claude 会为每个实质性任务规划工作流,无需你主动要求。

/effort ultracode

开启 ultracode 后,Claude 自行判断任务是否需要工作流。一个请求可能转化为连续多个工作流:一个用于理解代码,一个用于做出更改,一个用于验证。这适用于会话中的每个任务,因此每个请求使用更多 Token 且耗时更长。

Ultracode 在当前会话持续有效,启动新会话时重置。回到常规工作时用 /effort high 降回。它在支持 xhigh effort 的模型上可用;其他模型的 /effort 菜单不提供此选项。

运行前批准计划

在 CLI 中,每次运行的确认提示会显示计划的阶段和以下选项:

  • Yes, run it:开始运行
  • Yes, and don't ask again for <name> in <path>:开始,并在本项目中不再为此工作流询问
  • View raw script:在决定前查看脚本
  • No:取消

Ctrl+G 在编辑器中打开脚本。Tab 允许你在运行开始前调整 prompt。

是否看到此提示取决于你的权限模式:

权限模式何时提示
Default、accept edits每次运行,除非你已为该项目中该工作流选择了 Yes, and don't ask again
Auto仅首次启动。任何 Yes 都会在用户设置中记录同意,后续启动无需提示。开启 ultracode 时完全跳过
Bypass permissions、claude -p、Agent SDK从不。运行立即开始

在桌面应用中,一张审批卡片显示工作流名称、阶段列表和 Token 使用提醒,提供 Once、Always 和 Deny 操作。进度视图出现在后台任务侧边栏中。

你的权限模式仅控制上述启动提示。工作流生成的子 Agent 始终在 acceptEdits 模式下运行,并继承你的工具白名单,无论你会话的模式如何。文件编辑自动批准。

Shell 命令、网页获取和不在白名单中的 MCP 工具仍可能在运行中提示你。要避免长时间运行中的中断,在开始前将 Agent 需要的命令添加到白名单。

在 claude -p 和 Agent SDK 中没有人可以提示,因此工具调用遵循你配置的权限规则,无需交互确认。

保存工作流以供重用

当 Claude 为你将要重复的任务编写了工作流时,你可以将该运行的脚本保存为命令。像每次分支都要运行的审查流程,就能每次执行相同的编排。

运行 /workflows,选择要保留的运行,按 s。在保存对话框中,Tab 在两个保存位置间切换:

  • 项目中的 .claude/workflows/:与克隆仓库的所有人共享
  • 主目录中的 ~/.claude/workflows/:在每个项目中可用,仅对你可见

按 Enter 保存。工作流在之后的会话中以 /<名称> 运行。

如果项目工作流和个人工作流同名,项目的优先运行。

工作流运行方式

工作流运行时在一个隔离环境中执行脚本,与你的对话分离。中间结果保存在脚本变量中,而非落入 Claude 的上下文。

运行时跟踪每个 Agent 的结果,这使得运行可以在同一会话中恢复。

行为和限制

运行时施加以下约束:

约束原因
运行中无用户输入只有 Agent 权限提示可以暂停运行。如需在阶段间签核,将每个阶段作为独立工作流运行
工作流本身无直接文件系统或 shell 访问Agent 负责读写文件和运行命令。脚本协调 Agent
最多 16 个并发 Agent,CPU 核心有限的机器上更少限制本地资源使用
每次运行最多 1,000 个 Agent防止失控循环

管理运行

运行开始后,从 /workflows 视图管理,或展开输入框下方任务面板中的进度行。

暂停后恢复

如果你停止了一次运行,可以恢复它:已完成的 Agent 返回缓存结果,其余的实时运行。从 /workflows 选择暂停的运行按 p 恢复,或要求 Claude 用相同脚本重新启动工作流。

恢复在同一 Claude Code 会话中有效。如果你在工作流运行时退出 Claude Code,下次会话将从头开始运行工作流。

成本

工作流生成大量 Agent,因此单次运行可能比在对话中处理相同任务使用显著更多的 Token。运行像任何其他会话一样计入你的计划使用量和速率限制。你可以随时从 /workflows 停止运行中的工作流,不会丢失已完成的工作。

工作流中的每个 Agent 使用你会话的模型,除非脚本将某个阶段路由到不同模型。要控制模型成本:

  • 在大型运行前检查 /model,如果你通常切换到较小模型做常规工作
  • 在描述任务时,要求 Claude 对不需要最强模型的阶段使用较小模型

关闭工作流

工作流在 CLI、桌面应用、IDE 扩展、非交互模式(claude -p)和 Agent SDK 中可用。相同的禁用设置在所有平台上适用。

为自己关闭工作流:

  • 在 /config 中关闭 Dynamic workflows 开关。跨会话持久。
  • 在 ~/.claude/settings.json 中设置 "disableWorkflows": true。跨会话持久。
  • 设置 CLAUDE_CODE_DISABLE_WORKFLOWS=1。启动时读取,因此在你设置的任何地方生效。

为整个组织关闭工作流,在托管设置中设置 "disableWorkflows": true,或使用 Claude Code 管理设置页面上的开关。

工作流禁用后,内置工作流命令不可用,workflow 关键词不再触发运行,ultracode 从 /effort 菜单中移除。

相关资源