Orchestrate subagents at scale with dynamic workflows - Claude Code Docs
Introducing dynamic workflows | Claude
Claude Opus 4.8,随之而来还带来了一个新功能——Dynamic Workflows(动态工作流)
这是 Bun 作者 Jarred Sumner 把整个 Bun 运行时从 Zig 迁移到 Rust ,11 天、约 75 万行 Rust 代码、99.8% 的原有测试通过,而做到这个的,正是这个 Dynamic Workflows。
注:Bun是Node.js替代品,用的不一样的引擎,Node.js用的是Google弄的v8。A社收了Bun作为claude code的包管理、执行环境。Bun之前是用Zig语言写的。
它作为研究预览(research preview)放出,瞄准的是那一类单个 Agent 一次跑不完的活,官方博客的原话是这样描述的:
<aside> 🤔
Some problems are too big for one pass by a single agent, especially in complex, legacy codebases: a bug hunt across an entire service, a migration that touches hundreds of files, a plan you want stress-tested from every angle before you commit to it.
</aside>
整个服务范围的 bug 排查、动辄上百个文件的迁移、一个需要从各个角度反复推敲才敢拍板的方案——这些任务的共同点是规模超出了一轮对话能协调的范围。Dynamic Workflows 给出的答案,是让 Claude 把这套编排过程写成一段可执行的脚本。
要理解 Workflow 的位置,得先把 Claude Code 已有的几层协作能力捋一遍。
最底层是单个 session,一个 Agent 实例从头干到尾,串行处理。另一种是 subagent——主 Agent 派生出若干小弟去搜文件、读代码、跑命令,干完把结果汇报回来。再往上是今年早些时候推出的 Agent Teams,多个独立的 Claude Code 实例像团队一样并行协作,队员之间还能互相通信。
这几层有一个共同的瓶颈:编排者始终是 Claude 本身。它逐轮决策下一步派谁去干什么,而每一个 subagent 的返回结果,都要先回到 Claude 的上下文窗口里,它读完才能决定接下来怎么走。这套机制在任务规模不大时很灵活,可一旦要协调几十上百个并行任务,问题就来了:上下文窗口装不下那么多中间结果,Claude 的注意力也会被海量的过程信息稀释。
Workflow 换了个思路。这一次 Claude 不再亲自逐轮调度,它先把整个编排过程写成一段 JavaScript 脚本——循环、分支、中间结果的收集全都固化在代码里——再交给一个独立的运行时去执行。官方文档把这个转变概括得很精炼:

Workflow 到底在哪运行
Workflow 工具本身不请求任何服务端。它是 Claude Code 在你本机跑的一段 JavaScript 编排脚本——agent()、parallel()、pipeline() 这些都是在你电脑上执行的控制流。真正去”请求服务端”的,是脚本里 agent() 调用 spawn 出来的每个 subagent,而subagent 调用模型的方式,和你主对话窗口完全一样。
PS:如果你用第三方 API 中转,Workflow 跑挂了,那跟 Workflow 没关系——它用的就是 Claude Code 平时调模型一直在用的那套接口,即 Anthropic 原生的 Messages API(不是 OpenAI 的 /v1/chat/completions)
Headers:
x-api-key: <key> # 或第三方常用的 Authorization: Bearer <key>
anthropic-version: 2023-06-01
anthropic-beta: context-1m-2025-08-07 # 1M context 会带这个 beta flag
content-type: application/json
Body:
{
"model": "claude-opus-4-8", # 裸 model id,[1m] 只是本地标识,不会进 body
"system": [ {... cache_control ...} ], # system 是数组,带 prompt caching
"messages": [...],
"tools": [...], # Claude Code 会塞几十个 tool 定义
"stream": true # 默认流式
}