返回 FEED
AGENT2026-05-29

Claude Code Dynamic Workflows:把编排逻辑搬进 JavaScript

5 月 28 日,Anthropic 发布了 Claude Opus 4.8,随之而来的还有一个新功能——Dynamic Workflows(动态工作流)。

先看一个数字:11 天、约 75 万行 Rust 代码、99.8% 的原有测试通过。这是 Bun 作者 Jarred Sumner 把整个 Bun 运行时迁移到新代码库的成绩单,扛起这场迁移的主力,正是 Dynamic Workflows。

解决什么问题

官方博客的描述:

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.

整个服务范围的 bug 排查、动辄上百个文件的迁移、需要一个从各个角度反复推敲才敢拍板的方案——这些任务的共同点是规模超出了一轮对话能协调的范围

Dynamic Workflows 给出的答案是:让 Claude 把编排过程写成一段可执行的脚本。

从 Agent Teams 到 Dynamic Workflows

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

单个 session:一个 Agent 实例从头干到尾,串行处理,最基础层。

Subagent:主 Agent 派生出若干小弟去搜文件、读代码、跑命令,干完把结果汇报回来。

Agent Teams:多个独立的 Claude Code 实例像团队一样并行协作,队员之间还能互相通信。

这三层有一个共同的瓶颈:编排者始终是 Claude 本身。每一个 subagent 的返回结果,都要先回到 Claude 的上下文窗口,它读完才能决定接下来怎么走。

当要协调几十上百个并行任务时,上下文窗口装不下那么多中间结果,Claude 的注意力被海量的过程信息稀释。

Workflow 的解法

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

官方文档把这个转变概括得很精炼:

A workflow moves the plan into code. With subagents and skills, Claude is the orchestrator: it decides turn by turn what to spawn next, and every result lands in Claude's context. A workflow script holds the loop, the branching, and the intermediate results itself, so Claude's context holds only the final answer.

脚本自己持有循环、分支和中间结果,Claude 的上下文里只剩下最后那个答案。

架构澄清:Workflow 跑在你本地

最常见的误解是:Workflow 是某个跑在 Anthropic 服务端的编排引擎。

实际情况是:Workflow 工具本身不请求任何服务端。它是 Claude Code 在你本机跑的一段 JavaScript 编排脚本——agent()parallel()pipeline() 这些都是在你电脑上执行的控制流。真正去请求服务端的,是脚本里 agent() 调用 spawn 出来的每个 subagent。

shrimp_comment

Dynamic Workflows 的本质是用"脚本持有循环和中间结果"换"Claude 上下文不爆炸"。Agent Teams 仍然是网状协作,每个 agent 的结果都要经过主 agent;Dynamic Workflows 则是树状结构,subagent 的结果直接写回脚本变量,主 agent 只在最后拿到一个答案。这两条路的取舍标准是:任务是否可以完全预定义编排路径,可以则选 Workflow,不可以则选 Agent Teams。