返回 FEED
AGENT2026-05-29

Claude Code Dynamic Workflows:把编排逻辑搬进代码的新原语

5 月 28 日,Anthropic 发布 Claude Opus 4.8,随之带来了一个新功能——Dynamic Workflows。先看一个数字:11 天、约 75 万行 Rust 代码、99.8% 的原有测试通过。这是 Bun 作者 Jarred Sumner 把整个 Bun 运行时从 Zig 迁移到 Rust 的成绩单,扛起这场迁移的主力正是 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 把编排过程写成一段可执行的脚本。

和已有的协作原语有什么不同

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

  • 单个 session:一个 Agent 实例从头干到尾,串行处理
  • subagent:主 Agent 派生出若干小弟去搜文件、读代码、跑命令,干完汇报回来
  • Agent Teams:多个独立的 Claude Code 实例像团队一样并行协作,队员之间能互相通信

这几层的共同瓶颈:编排者始终是 Claude 本身。每一个 subagent 的返回结果都要先回到 Claude 的上下文窗口,它读完才能决定接下来怎么走。上下文窗口装不下那么多中间结果时,这套机制就会崩溃。

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.

运行模型:JavaScript 运行时当指挥,LLM 当临时工

把架构理解清楚需要破除一个最常见的误解:Workflow 不是某个跑在 Anthropic 服务端的编排引擎,它是你本机跑的一段 JavaScript 编排脚本——agent()parallel()pipeline() 这些都是在你电脑上执行的控制流。真正去请求服务端的,是脚本里 agent() 调用 spawn 出来的每个 subagent,而 subagent 调模型的方式和你主对话窗口完全一样。

运行时本身是"无脑的、确定性的 JavaScript 运行时",只会循环、拼字符串、await,本身不含任何 LLM。只有当脚本执行到 agent(...) 那一行,运行时才去临时雇一个 LLM subagent 干活。而"真正的 Agent"——你正在对话的主 Claude——在脚本执行期间根本没在运行:它发出 Workflow 调用后那一回合就结束了,脚本在后台独立跑,跑完用一条通知把它叫醒去读最后结果。

Bun 迁移案例:三个阶段跑完 75 万行 Rust

Jarred Sumner 把 Bun 从 Zig 迁移到 Rust,用了三个串联的 Workflow:

阶段一:生命周期映射。第一个 Workflow 专门给每个 struct field 算出对应的 Rust lifetime。这是后续所有移植工作的地基——Rust 的内存安全建立在生命周期标注之上,这层没算对,后面写的 .rs 文件根本过不了编译。

阶段二:并行文件移植。数百个 agent 同时开工,每个 .zig 文件移植成行为等价的 .rs 文件,每个文件还配两个 reviewer 做交叉审查。和 Agent Teams 对比:Agent Teams 同时跑三五个队员就到协调上限了,而这里是几百个 agent 并行外加双重 review。

阶段三:编译与测试的 fix loop。文件移植完只是半成品,第三个工作流驱动整个 build 和 test 套件,靠循环逻辑反复迭代修复,直到两者都干净跑过。

不是 DAG,但执行轨迹是 DAG

Workflow 的程序本身不一定是 DAG——你能写循环,比如"一直找 bug,直到连续两轮都没有新增"——但任何一次执行的轨迹,一定是 DAG。循环在"程序"里,展开成"轨迹"后就被拉直成链了。这正是它比传统 DAG 编排器更灵活的地方:传统工具的图在跑之前就定死了,而 Workflow 的拓扑是命令式脚本跑出来的,形状运行时才定。

什么时候用 Workflow、什么时候不用

适用场景:代码库范围的批量排查(安全审计、全库 bug 扫描)、大规模迁移(Bun 是最极致的例子)、需要对抗式验证的关键决策、长尾清理(夜里挂着扫描问题、逐个开 PR)。

杀鸡用牛刀的场景:一两步就能搞定的小修补、需要中途频繁拍板的探索性工作、涉及安全和支付的高风险代码改动。

和 n8n/Coze/Dify 的区别

表面看起来都是"把 LLM 和工具按流程编排",但 Workflow 多了一层:模型是"写编排脚本"的那个,而不是"在预设节点里填内容"的那个。这个区别带来两个实际后果:

  • 载体是图灵完备代码(可以有循环、动态扇出、数据决定的分支),而可视化 DAG 表达不了这些
  • 每个节点是个自主 agent(有工具调用能力),而非固定连接器

也正因为 Workflow 对前沿模型的能力依赖得这么深,它和 Opus 4.8 同天发布不是巧合:当你要让数百个 agent 并行干活、互相交叉验证时,每个节点的可靠性就被放大了。Opus 4.8 专门强化的"诚实度"(假进度报告、假完成状态的发生率比 4.7 低约一半),正是"数百 agent 交叉验证"这套打法能成立的前提。

Dynamic Workflows 目前是研究预览,需要 Claude Code v2.1.154+,在 Max、Team 计划和 API 使用场景默认开启,Pro 计划需手动打开。