Dynamic Workflows 是 Claude Code 的运行时能力:Claude 根据当前任务现场写一段 JavaScript 脚本,用这段脚本调度几十到上百个子 Agent 并行干活,最后把结果汇总回来。2026-05-28 发布并已 GA。可以理解成 Claude Code 内置了一个”任务编排引擎”——以前这类编排要开发者自己写脚本串联多次 API 调用,现在 Claude 当场生成执行框架。

本页只讲在 Claude Code 里怎么用。脚本原函数、执行语义、运行时约束见 principles。

环境与前提

  • 需要 Claude Code v2.1.154+,支持 CLI、Desktop、IDE 扩展、claude -p 和 Agent SDK
  • 所有付费套餐可用,也支持 Anthropic API、Amazon Bedrock、Google Cloud Agent Platform、Microsoft Foundry
  • Pro 用户需要在 /config 的 Dynamic workflows 行手动打开;Max 和 Team 默认开启;Enterprise 由管理员启用
  • ultracode 只对 human-origin 的交互输入生效,-p、schedule、webhook relays 这类输入不会自动触发

什么时候用

默认 Claude Code Harness 适合常规编码——在一个上下文里同时完成规划和执行。任务大到单个上下文协调不过来时,才值得上 workflow:全仓库 bug 排查、500 文件迁移、需要来源交叉验证的研究问题、值得从多个独立角度起草的硬方案。

官方用一张表说明四种编排方式的区别——谁掌握计划:

维度子 AgentSkillsAgent TeamsWorkflows
它是什么Claude 生成的工作者Claude 遵循的指令主导 Agent 监督对等会话runtime 执行的脚本
谁决定下一步Claude,逐轮Claude,遵循提示主导 Agent,逐轮脚本
中间结果存哪Claude 上下文Claude 上下文共享任务列表脚本变量
可重复的是什么工作者定义指令团队定义编排本身
规模每轮几个委派与子 Agent 相同少数长期对等体每次运行数十到数百个
中断处理重启轮次重启轮次队友继续运行同一会话内可恢复

不适合:写一个函数、改一个 bug、解释一段代码——日常小任务上 token 消耗反而得不偿失。

触发方式

三种,门槛从低到高:

  1. 提示词里点名:包含 ultracode 关键词,或直接说”use a workflow”/“run a workflow”,Claude 就为这个任务写脚本。关键词只在你自己输入的 prompt 里生效(交互式 CLI、IDE 面板、Remote Control、标记为 human 的 Agent SDK 输入);-p、定时任务、webhook 转发的 prompt 不会触发。误触发可按 Option+W(macOS)/Alt+W 取消高亮,或光标在关键词后按退格;也可在 /config 关掉 Ultracode keyword trigger。
  2. 开启 ultracode 模式:/effort ultracode(或启动时 claude --effort ultracode,需 v2.1.203+),Claude 对每个实质任务自主决定是否用 workflow,全会话生效。一个请求可能连续变成多个 workflow(先理解代码、再改、再验证)。token 和耗时显著增加,做完记得 /effort high 切回。
  3. 直接跑已有 workflow:内置的 /deep-research,或你自己保存的 workflow 命令,无需任何提示词技巧。

审批与权限

CLI 里每次运行前会展示计划阶段和几个选项:Yes, run it、Yes, and don't ask again for <name> in <path>、View raw script、No。Ctrl+G 用编辑器打开脚本,Tab 可以在运行前调整 prompt。

是否弹提示取决于权限模式:

权限模式提示时机
Auto仅首次;任一 Yes 会记录到用户设置,之后不再提示;ultracode 开启时完全跳过
Manual、accept edits每次都提示,除非对某个 workflow 选过 don’t ask again
Bypass permissions不提示,直接运行
claude -p、Agent SDK不提示,走普通权限评估

在 claude -p 和 Agent SDK 中要放行 workflow,可用 Workflow / Workflow(<name>) allow 规则、Auto 模式分类器、Bypass、PreToolUse hook,或宿主的 permission prompt 工具/callback。

子 Agent 使用你的权限规则。长任务开始前建议把需要的工具加进 allow 列表,避免中途反复弹提示。ultracode 只决定如何组织工作,子 Agent 的工具调用仍走和其他工具一样的权限检查和沙箱。

内置捆绑工作流:/deep-research

Claude Code 自带 /deep-research <question>:在多个角度扇出网络搜索,抓取并交叉检查来源,对每条声明投票,返回带引用的报告,未通过交叉检查的声明会被过滤(v2.1.196 起,验证 Agent 因限流/API 错误无法核实的声明标记为”未验证”而非直接判定驳回)。需要 WebSearch 工具可用,且只在你主动调用时运行。与低代码平台官方研究模板的差异见 vs-lowcode。

观察与管理:/workflows 面板

运行在后台启动,会话保持响应。用 /workflows 列出运行中和已完成的工作流,选中后查看每个阶段的 Agent 数、token 总量和耗时,也可以下钻到具体 Agent 看它的提示词、工具调用和结果。输入框下方任务面板也有一行进度摘要,按 ↓ 聚焦后 Enter 展开。

键操作
↑/↓选择阶段或 Agent
Enter / →下钻查看详情
Esc / ←返回上一级(v2.1.203–205 的 ← 无效,用 Esc)
j/k详情内滚动
f按状态过滤 Agent 列表
p暂停/恢复运行
x停止选中 Agent,或停止整个运行
r重启选中的运行中 Agent
s将该次运行的脚本保存为命令

暂停后可恢复:已完成的 Agent 直接返回缓存结果,其余的继续实时跑;退出 Claude Code 会话后,已保存结果留在会话目录,用 claude --resume 恢复会话后可以重放,全新会话则从头开始。

保存为命令、传参复用

某次工作流跑出了想要的结果,在 /workflows 里选中它按 s 保存为命令,之后用 /<name> 直接调用。两个保存位置:

  • .claude/workflows/(项目内):随仓库共享给所有协作者
  • ~/.claude/workflows/(用户目录):每个项目都能用,仅自己可见(若设置了 CLAUDE_CONFIG_DIR 则落在该路径下的 workflows/)

同名时项目工作流优先于个人工作流。monorepo 里,项目位置会写入工作目录到仓库根之间最近的已存在 .claude/workflows/;同名时运行离工作目录最近的那个。

保存的脚本可以通过 args 参数接收调用时传入的结构化输入(数组/对象),脚本内部作为全局变量 args 读取,例如 Run /triage-issues on issues 1024, 1025, and 1030,脚本可直接对 args 调用数组方法而无需自己解析。没传时 args 是 undefined。

分发与编辑脚本

  • 插件分发:把脚本放进插件根目录的 workflows/(或按 manifest 的 workflows 字段指定),按插件名命名空间调用,如 /acme-tools:release-audit
  • 编辑已保存脚本:直接改 .js 文件,或让 Claude 改。改之前先运行 /workflow-authoring 内置 skill 加载脚本编写参考(需 v2.1.248+);改完 /reload-skills 重新读取,再 /<name> 运行
  • 编辑单次运行的脚本:运行脚本写在 ~/.claude/projects/ 下的会话目录,可以让 Claude 用修改版重新启动

脚本结构与原函数(agent()/pipeline()/parallel()/phase()/log()/args)见 principles。

常用提示词形状

你不需要自己写脚本,描述任务即可:

use a workflow to audit every route handler under src/routes/ for missing authentication checks, and adversarially verify each finding before reporting it
use a workflow to run npx tsc --noEmit and keep fixing the reported errors until the type check passes or two rounds in a row make no progress
use a workflow to migrate every component under src/components/ from JavaScript to TypeScript, working on each file in its own isolated copy
use a workflow to review every file changed in this PR for correctness issues, then merge the per-file findings into one ranked summary
use a workflow to find flaky tests in this repo: run the suite repeatedly, record which tests fail intermittently, and stop once two rounds in a row find nothing new

成本与规模控制

单次运行可能比逐轮处理同一任务消耗更多 token,且计入套餐用量和速率限制。建议先在小范围(一个目录而非整仓库)试跑摸清开销。当调度超过 25 个 Agent 或预计 token 总量超过 150 万时,任务面板会显示 Large workflow 警告(仅提示不拦截;自己设了 size guideline 时阈值替换为对应的 Agent 数;ultracode 会话不显示)。

/config 里的 Dynamic workflow size 给 Claude 写脚本时一个目标 Agent 数:

值目标 Agent 数
unrestricted不设限,按任务定
small少于 5
medium(默认)少于 15
large少于 50

这是建议而非硬上限,调用时的提示词仍可覆盖。也可以 workflowSizeGuideline 设置项指定,优先级高于 /config。

每个 Agent 默认用会话模型,除非脚本显式给某阶段指定模型。组织级 availableModels 白名单挡住请求的模型时,会按子 Agent 替换规则换模型,/workflows 里会显示请求与实际模型的警告。

关闭方式

  • /config 关闭 Dynamic workflows(跨会话持久)
  • ~/.claude/settings.json 设 "disableWorkflows": true
  • 环境变量 CLAUDE_CODE_DISABLE_WORKFLOWS=1(启动时读取)
  • 组织级:托管设置或管理员页面统一关闭

关闭后捆绑命令和 /workflow-authoring skill 不可用,ultracode 关键字不再触发,且从 /effort 菜单移除。

适用场景与实际踩坑(来自社区实测)

适合:全仓库 bug 排查、跨数百文件的框架迁移、需要多角度对抗验证的高风险决策、间歇性失败的竞态复现、上千条记录的大规模分拣/根因分析、大批量简历筛选、事实核查。

不适合:写一个函数、改一个 bug、解释一段代码——token 消耗得不偿失。

实测成本提示:社区反馈 token 消耗显著高于普通会话;一个大型测试用例迁移项目半小时跑完,但预估 token 消耗不低。建议先在限定范围试用摸清用量,再扩大范围。

相关

  • principles — Workflow 引擎原理、脚本原函数、执行语义与运行时约束
  • recovery — 中断恢复、429/402 排障、resumeFromRunId 续跑
  • vs-lowcode — 与 Dify/扣子等低代码工作流平台的对照与选型
  • landscape — 与 OpenAI Symphony、Cursor Agents Window 的横向对比
  • claude-code-permissions — Claude Code 权限配置,工作流子 Agent 的权限模式与此关联
  • claude-code-subagents — Subagents/Agent view/Agent teams/Dynamic Workflows 四方定位对照
  • building-effective-agents — Orchestrator-Workers 与 Evaluator-Optimizer 理论原型

参考