来源:Anthropic Blog — Introducing dynamic workflows in Claude Code 分析完成时间:2026-05-29 09:00 CST
这篇文章回答的问题: Claude Code 的 Dynamic Workflows 是什么,运行时模型是怎样的,代码长什么样,手搓版怎么做,什么时候该用什么不该用?
这篇文章应该回答但没回答的问题: 编排脚本的安全性如何保证?对抗性审查用同一个 LLM 是否存在系统性盲点?脚本被注入恶意逻辑的防御机制在哪?
第一层:它到底是什么,在哪跑
2026 年 5 月 28 日,Anthropic 为 Claude Code 引入 Dynamic Workflows。核心变化:Claude 改为动态编写一段 JavaScript 编排脚本,交给内置运行时执行。
这段脚本是普通的 JS 代码,有变量、循环、条件分支。编排逻辑从此脱离 LLM 的上下文窗口,存储在脚本变量中。LLM 只在脚本调用 agent() 时被唤起。
有些问题对单个 agent 的一次执行来说太大了——跨越整个服务的 bug 搜索、涉及数百个文件的迁移、一个你想从每个角度压力测试的计划。
Some problems are too big for one pass by a single agent, especially in complex, legacy codebases. Dynamic workflows can handle all of these end-to-end.
Subagent vs Skills vs Dynamic Workflow
| 维度 | Subagent(旧) | Skills | Dynamic Workflow(新) |
|---|---|---|---|
| 谁在协调 | Claude 逐轮对话决定 | Claude 遵循指令 | JS 编排脚本,运行时执行 |
| 中间状态 | 存在 Claude 上下文窗口 | 同 subagent | 存在脚本变量/文件 |
| 规模 | 每轮几个 | 同 subagent | 每次运行数十到数百个 agent |
| 上限 | 受上下文窗口限制 | 同 subagent | 16 并发,1,000 agent/工作流 |
| 中断恢复 | 重置当前轮次 | 重新开始 | 同一会话内可恢复 |
| 可复用 | 无 | 保存为 skill 文件 | 保存为 .claude/workflows/ 命令 |
| 权限 | 继承会话模式 | 同会话 | 子 agent 始终 acceptEdits |
第二层:运行时模型
JS 运行时是指挥官,LLM 是士兵。脚本定义"谁做什么、什么时候做"。
指挥层(JS 运行时):脚本拥有完整的 JS 执行环境。编排逻辑是确定性的代码。关键约束:脚本自身没有文件系统或 shell 访问权限,所有 I/O 由 agent 执行。
执行层(LLM Agent):每个 agent() 调用创建一个独立的 Claude 实例,继承 acceptEdits 模式,拥有自己的上下文窗口。Agent 之间互不感知。
阶段屏障语义——最容易被误解的区分
- 阶段间 = 顺序屏障:阶段 1 的所有 agent 完成后,阶段 2 才开始。阶段是同步点——前一个阶段的结果是下一个阶段的输入
- 阶段内 = 并发执行:同一阶段内的 agent 同时运行,互不等待,最多 16 并发
- 陷阱:无依赖的任务放同一阶段并行;有依赖的任务必须分阶段。放错 = 浪费时间或拿不到中间结果
- 图灵完备 vs DAG:脚本可写循环(图灵完备),但单次执行轨迹隐含 DAG 结构——节点是 agent 调用,边是数据依赖。循环多次 = DAG 多次展开
第三层:核心架构拆解
六个阶段
- Plan(动态规划):Claude 分析任务结构,生成 JS 脚本
- Fan-out(并行展开):脚本执行,任务分发给并行 agent(最多 16 并发)
- Check(独立验证):结果被独立检查,对抗性 agent 试图推翻
- Fold-in(合并收敛):验证后结果合并为单一回答
- Checkpoint(断点续跑):进度实时保存,同一会话内可恢复
- Save(可复用):保存到 .claude/workflows/ 变为 /command
TUI 进度面板
- ↑/↓ 导航阶段,Enter 展开 agent 列表
- p 暂停/恢复,x 停止,r 重启失败 agent,s 保存脚本
Ultracode 模式
设置开关,非模型/effort level。发送 xhigh 推理强度 + 自动判断是否启动 workflow。仅限 Opus 4.7/4.8,仅当次会话有效。
第四层:代码级细节
关键事实:官方文档未公开脚本级 API。agent()、pipeline()、parallel()、phase()、log()、workflow()、args() 是内部运行时原语——Claude 在生成 workflow 脚本时使用它们,但它们不是开发者可调用的公共 API。文档原话:“A dynamic workflow is a JavaScript script that orchestrates subagents at scale.” Claude 写脚本,用户不手写。
市面上有些文章将这些内部函数当作公共 API 详细解读参数和返回值——这是不准确的。以下基于官方文档描述的行为推断:
- 脚本结构:脚本拥有循环、分支和中间结果——是图灵完备的。但执行轨迹隐含 DAG 结构(阶段=顺序屏障,阶段内=并发)
- 阶段屏障语义:阶段按顺序执行,每个阶段内的 agent 并发运行,所有 agent 完成后才进入下一阶段
- Agent 隔离性:每个 agent = 独立 Claude Code 会话,拥有自己的上下文窗口,agent 之间互不感知
- 权限模型:子 agent 始终 acceptEdits 模式,继承会话工具白名单,Shell/web/MCP 不在白名单的工具仍会触发权限提示
- Checkpoint 机制:每个 agent 完成后结果被缓存在内存中(非文件系统),恢复时已完成的返回缓存,缓存是会话范围的
- 编排脚本无 I/O:脚本无文件系统或 shell 访问权限,所有 I/O 由 agent 执行
- 触发方式:prompt 中包含 “workflow” 关键词 /
/effort ultracode/ 保存后的命令(/deep-research或自定义) - 禁用方式:
/config切换 /settings.json中"disableWorkflows": true/ 环境变量CLAUDE_CODE_DISABLE_WORKFLOWS=1 - 保存位置:
.claude/workflows/(项目级)或~/.claude/workflows/(个人级),同名时项目级优先
与 Anthropic “Building Effective Agents” 框架的五种模式(Prompt Chaining、Routing、Parallelization、Orchestrator-Worker、Evaluator-Optimizer)全部在 workflow 中实现。内置的 /deep-research 就是完整示例:“在多个角度上对问题进行 Web 搜索,获取并交叉检查找到的来源,对每个主张进行投票,并返回一份经过筛选的报告”。
第五层:DIY 对比
手动用 shell + claude -p --output-format json --allowedTools "Read,Glob,Grep" 可以实现简单并行。但缺少:对抗性验证、断点续跑、TUI 进度面板、可复用命令、自动任务分解。
第六层:选型决策框架
适合:全代码库扫描、大规模迁移、高置信度任务、可复用团队流程
不适合:单文件编辑、需频繁人工确认、token 成本敏感、需跨会话持久化
旗舰案例:Bun Zig→Rust 移植
- ~750K 行 Rust(最终合并约 966K 行)
- 11 天,99.8% 测试通过率
- 四阶段:生命周期映射 → 逐文件移植(每文件双审查)→ 修复循环 → 优化扫描
- Jarred Sumner:“这段代码被完全丢弃的可能性非常高”
- GitHub 被标记为 “AI slop”,社区争议激烈
竞品格局
与 OpenAI Codex Goals(持久自主循环)、GitHub Copilot Agent Mode、Cursor、Google Jules、Windsurf Cascade、n8n/Dify/Coze 对比。Codex Goals 是"一个很能干的人不间断地做一个大项目",Dynamic Workflows 是"一个项目经理指挥 100 个专家并行工作"。
Anthropic 内部实战数据
Claude Code 团队成员 Boris 在 HN 分享:用 workflow 自主实施 20+ 项优化,token 使用量减少约 15%。tree-sitter 移植使 CPU/内存提升 2-10 倍,bash 静态分析迁移使误报减少 45%,Agent SDK 启动时间减少 61%,69 个代码简化 PR 删除 10,000+ 行代码。
诚实限制
- 16 并发上限(CPU 核心限制)
- 同会话恢复(退出 = 从头来)
- Token 消耗极高(90 agent 跑一个小包就触发 Max 限制)
- Issue #9553:复杂 workflow 灾难性故障
- “Slop debt"问题
- 合并冲突率 3.1%
苏格拉底对话
老师:Dynamic Workflows 的核心创新是什么?
学生:并行 agent 数量从几个变成几百个。
老师:数量只是表象。真正的创新是编排逻辑从 Claude 的上下文窗口移到了脚本里。AI 的协调能力不再受限于它自己的"思考空间”。
学生:那对抗性审查呢?
老师:最被低估的部分。对抗性审查是"让一个 agent 专门找另一个 agent 的茬"。但对抗的有效性取决于对抗者的能力——如果对抗者自己也是 Claude,可能存在系统性盲点。
学生:Codex Goals 和 Workflow 哪个更好?
老师:锤子和螺丝刀。Codex Goals 是深度——一个 agent 不间断迭代。Workflow 是广度——100 个 agent 并行扫描。
学生:Bun 案例的"很可能被丢掉"说明什么?
老师:能力 ≠ 判断力。Dynamic Workflows 给了你 750K 行 Rust,但它没有告诉你"该不该做这个移植"。
个性化洞察
- Claude Code 重度用户:从 dead code 扫描开始体验,感受 token 消耗后再扩大规模
- QA 背景:对抗性审查 = 自动化测试新维度,但不能替代安全专家
- AI 产品开发:确定性编排 + 模糊执行的混合模式是 Anthropic 的 multi-agent 答案
- 内容选题:写"Codex Goals vs Dynamic Workflows 实战对比"——市面无深度对比
- 美股关注:$1B ARR + 收购 Bun,Anthropic 从"编码助手"升级为"工程编排平台"
- 全栈开发:积累 3-5 个可复用 workflow 形成"AI 工程工具箱"