工具观察

Orchestrate subagents at scale with dynamic workflows - Claude Code Docs

Introducing dynamic workflows | Claude

Opus 4.8

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 把这套编排过程写成一段可执行的脚本。

从 Subagent 到 Workflow

要理解 Workflow 的位置,得先把 Claude Code 已有的几层协作能力捋一遍。

最底层是单个 session,一个 Agent 实例从头干到尾,串行处理。另一种是 subagent——主 Agent 派生出若干小弟去搜文件、读代码、跑命令,干完把结果汇报回来。再往上是今年早些时候推出的 Agent Teams,多个独立的 Claude Code 实例像团队一样并行协作,队员之间还能互相通信。

这几层有一个共同的瓶颈:编排者始终是 Claude 本身。它逐轮决策下一步派谁去干什么,而每一个 subagent 的返回结果,都要先回到 Claude 的上下文窗口里,它读完才能决定接下来怎么走。这套机制在任务规模不大时很灵活,可一旦要协调几十上百个并行任务,问题就来了:上下文窗口装不下那么多中间结果,Claude 的注意力也会被海量的过程信息稀释。

Workflow 换了个思路。这一次 Claude 不再亲自逐轮调度,它先把整个编排过程写成一段 JavaScript 脚本——循环、分支、中间结果的收集全都固化在代码里——再交给一个独立的运行时去执行。官方文档把这个转变概括得很精炼:

Screenshot 2026-06-03 at 12.22.20 PM.heic

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                # 默认流式
  }