Claude Code 隐藏新功能 -workflows:确定性多 Agent 编排引擎深度拆解
公众号名称:程叙架构与AI.
作者名称:AI兴观点
发布时间:2026-05-27 19:45
✅点击上方🔺公众号🔺关注我✅
你有没有想过一个问题——Claude Code 的 agent 替你干活时,它下一步要做什么,你知道吗?
不知道。因为流程是模型自己决定的,你只管给目标,它自己琢磨怎么做。大多数时候这没问题,但复杂任务上你就开始心里打鼓了——它会不会跑偏?会不会漏掉关键步骤?
Anthropic 显然也在想这个问题。他们的答案不是让模型更强,而是换了一条路:把流程控制权从模型手里拿回来,写成代码。
这个答案被做成了一个叫 /workflows 的命令,你描述一个目标,它先生成一段 JavaScript 脚本定义完整的执行路径,然后才按脚本执行。
先给一句话定义:Workflows 是在 Claude Code 内部用一段 JavaScript 脚本调度多个 Subagent 的工具。
你过去用 Claude Code 跑复杂任务,是这么干的——给主 agent 一段 prompt,让它「先调研 A 公司,再让另一个 agent 起草分析,最后让第三个 agent 评分」。主 agent 临场决定该叫哪个 subagent、按什么顺序、什么时候停。每次开新会话,模型都要重新猜一遍这个流程。
Workflows 干的事正好相反——它把这套编排冻结成一个文件。这个文件你能看、能改、能存到 git、能分享给同事、能断点续跑、能版本化。
先搞清楚它怎么启动
Workflows 当前是隐藏功能,需要两步才能开:
export CLAUDE_CODE_WORKFLOWS=1
然后在对话中带上 ultrawork 关键字:
ultrawork 帮我审查这个分支的代码质量
它不会立刻执行。它会先:
- 生成 context.md 分析任务
- 现场写一段 JavaScript 脚本——定义了完整的执行流程
- 保存到本地临时目录
- 启动 Node.js 按脚本执行


注意第二点。它不是在脑子里规划,是写了一段真实的代码。这段代码你能看、能改、能存到 Git、能分享给同事。
Anthropic 还给了一个防呆设计:生成的脚本默认只保留 3 天,到期静默删除。如果你觉得这套流程值得保留,需要通过自然语言告诉 Claude 把它复制到全局配置下。
/workflows 的 6 个 JS 原语
这是 Workflow 最值得先搞懂的部分。它提供了 6 个 JavaScript 函数,用来编排 Agent。
// 1. agent() - 派一个 Subagent 干一件事
const result = await agent('find-bugs', {
schema: BUGS_SCHEMA, // 强制输出结构化 JSON
phase: 'Review', // 归属阶段
label: 'review:bugs' // 日志标签
})
// 2. parallel() - 多个 Agent 并发跑
const findings = await parallel([
agent('find-bugs', { schema: BUGS_SCHEMA }),
agent('find-perf', { schema: PERF_SCHEMA }),
agent('find-security', { schema: SEC_SCHEMA }),
])
// 3. pipeline() - 流水线执行
// item1 进 stage2 时,item2 还在 stage1
// wall-clock 时间 ≈ 最慢阶段的耗时
await pipeline(items, stage1, stage2, stage3)
// 4. phase() - 把流水线切成阶段
phase('Review') // 第一阶段
phase('Verify') // 第二阶段
phase('Synthesize') // 第三阶段
// 5. log() - 写日志
log('开始扫描 30 个文件...')
log('发现 5 个疑似 bug')
// 6. workflow() - 嵌套调用另一个 workflow
await workflow({ scriptPath: './audit.workflow.js' })
这 6 个原语不是拍脑袋想出来的。2024 年 12 月 Anthropic 发过一篇白皮书叫《Building Effective Agents》,里面定义了 5 种 agent 协作模式:Prompt Chaining(一个 agent 的输出喂给下一个)、Routing(分类器分流)、Parallelization(多 agent 各自跑再合并)、Orchestrator-Workers(中央调度拆任务)、Evaluator-Optimizer(生成+评分循环)。Workflow 的 6 个原语,就是把这 5 种模式变成了可执行的 JS 代码。

官方文档里有一条铁规:默认用 pipeline(),需要全员同步再切 parallel()。并发不是免费的,多一个并行 Agent,就多一份 Token 开销、多一份调度复杂度。
Schema:让模型输出不再”随缘”
用过 Agent 的人都有这个经验:你让模型输出一段结构化数据,它给你一段格式不稳定的 JSON——字段名偶尔被翻译了、嵌套层级变了、该是数组的返回了对象。
Workflow 的解法是在每个 agent() 调用上挂一个 Schema:
const BUGS_SCHEMA = {
type: 'array',
items: {
type: 'object',
properties: {
file: { type: 'string' },
line: { type: 'number' },
severity: { type: 'string', enum: ['low', 'medium', 'high', 'critical'] },
description: { type: 'string' }
},
required: ['file', 'line', 'severity', 'description']
}
}
const bugs = await agent('find-bugs', { schema: BUGS_SCHEMA })

这个 Schema 在传统 agent 调用里是个老大难问题。Workflow 把它变成了内置能力——每个 agent 节点的输出都会被 Schema 校验,不合规的让模型重试。
Budget:控制 Token 不失控
多 Agent 编排最怕什么?Token 烧完了活还没干完。
据社区分析和反向工程的代码来看,Workflow 提供了一套 budget 机制:
while (budget.remaining() > 50000) {
const result = await agent('find-bugs', { schema: BUGS_SCHEMA })
bugs.push(...result.bugs)
}
功能逻辑是:在每次调用 agent() 之前检查剩余 Token 预算,快不够了就停止调用,防止无限消耗。
⚠️ 补充说明:由于 /workflows 尚未正式发布,budget API 的具体实现以官方正式版为准。以上信息来自社区分析。
缓存与恢复:断了不从头跑
据社区分析的代码来看,Workflow 可能还有缓存机制:
// 相同脚本 + 相同参数 → 直接返回缓存结果
// 如果中途断了,不需要从头重来
await Workflow({ scriptPath, resumeFromRunId })
逻辑是:如果执行中断,下次可以从断点继续,不用重跑已完成的部分。
⚠️ 补充说明:由于 /workflows 尚未正式发布,缓存和恢复的具体实现以官方正式版为准。以上信息来自社区分析。
Workflow 在 Claude Code 的能力栈里排在哪
说到这,有一个问题绕不开:Workflow 跟 Claude Code 已有的 Subagent、Agent Teams、Skills 这些能力到底是什么关系?
你可以把 Claude Code 想象成一辆车。模型是发动机。MCP、Skill、Subagent、Agent Teams 这些工具是底盘、悬挂、刹车——每个部件管一摊事。但在此之前,没有一个部件管「这些工具按什么顺序配合工作」。以前这个活靠司机(模型)临场判断,今天挂几档、先踩离合还是先给油,全靠模型自己琢磨。

Workflow 就是这个部件。它不管具体的工具怎么实现,它只管「先做什么、再做什么、哪些可以并行」。这个活从模型脑子里搬到了代码里。
与这些已有能力的边界在哪里,对照着看更清楚:
- Workflow 跟 Agent Teams 是并列关系。Agent Teams 让模型自己协调多个 agent(涌现式),Workflow 让脚本协调(确定性)。两条路线,不是替代,是你选哪条。
- Workflow 跟 Subagent 是编排层和被编排层的关系。Workflow 内部调用 agent() 实际上就是派 Subagent 出去干活。Workflow 是导演,Subagent 是演员。
- Workflow 跟 Skill 是互补关系。Skill 装在 Subagent 里告诉它「代码 review 应该按什么标准来」;Workflow 决定派几个 Subagent 跑、谁先谁后、出错怎么处理。
Workflow 不是替代这些已有工具,它是在这些工具之上加了一层:编排层。以前靠模型临场发挥的活儿,现在可以写成代码了。
Workflow 比传统 Agent 好在哪
一张表说清楚区别:
| 维度 | 传统 Agent 调用 | Workflow |
|---|---|---|
| 流程控制 | 模型临场决定 | 代码写死 |
| 并行能力 | 手动管理 | 内置 parallel/pipeline |
| 输出格式 | 靠 prompt 引导 | Schema 强制校验 |
| 缓存 | 无 | 自动缓存 + 断点续跑 |
| Token 预算 | 无内置控制 | budget.remaining() |
| 可观测性 | 无 | phase/log + TUI 仪表盘 |

核心区别不是”Workflow 更强”,而是Workflow 把控制权从模型手里还给了代码。
生成好的脚本怎么管理
Workflow 生成的脚本存在本地 .claude/workflows/ 目录下。你可以:
- 手动编辑:想调流程顺序,直接改 JS
- 存到 Git:团队共享,新人 clone 即用
- 设置触发条件:支持 Cron 定时跑、API 触发、GitHub Webhook 触发
- 嵌套调用:一个 workflow 里调用另一个 workflow

一个真实的代码审查任务,生成的脚本大概 300 行。拆成三个阶段:Review → Verify → Synthesize,调动 6 个专业审查器,跑了 97 个 Agent 轮次。整个过程在后台自动完成,终端上可以用 workflows 命令调出仪表盘查看进度。

这个仪表盘类似 htop——上下键选 Agent,Enter 看详情,ESC 回退。能看每个 Agent 在干什么、跑了多久、花了多少 Token、正在调用哪个 MCP 工具。
一些值得注意的地方
Workflow 不是万能的。简单任务上用它是浪费——Termdock 的复盘数据:简单任务(改 typo、加注释)用 Subagent,Token 消耗会膨胀到单 Session 的 4 倍。Workflow 的威力在复杂、多视角、需要审查的任务上。
当前它是双道门控:环境变量 CLAUDE_CODE_WORKFLOWS=1 + 后端 GrowthBook flag tengu_workflows_enabled 按账号灰度。设了 env 发现还没反应,不是你的问题,是账号还没进灰度。
VS Code 插件端目前冻在 2.1.145,因为 Workflow 引入的改动带出了几个回归 bug(Windows 文件锁、Bash exit code 127),Anthropic 为了不波及插件端用户,主动冻结了发布线。CLI 端在 2.1.147 到 2.1.150 之间快速迭代修补,等修完这些回归,才会推送到插件端。
这个功能目前也没有正式文档,GitHub 上 claude-code 仓库中有 13 次提交引用了这个变量,核心贡献者 ray-amjad 放出了 workflow-creator 预览仓库。
最后
Anthropic 在 Claude Code 里选择了用 JS 代码来编排 Agent——这个选择本身就是一种表态。
现在的 AI agent 主流方向是给模型更强的能力、更大的上下文窗口、更多的工具。Workflow 的方向不太一样:不是让模型更强,而是用代码把它框进一个可预期的执行框架里。模型只能在每个 agent() 节点里发挥,跳不出代码画好的跑道。
这两种思路不矛盾,但它们说明了同一个问题正在被行业认真对待:纯 prompt 驱动的 agent 不够可靠,我们需要给 AI 画跑道。
如果你想先看看 Workflow 生成的脚本长什么样,可以去看 OneRedOak/claude-code-workflows(GitHub 3.8k stars),那里有很多社区提交的 workflow 模板。
如果觉得这篇文章有帮助,欢迎点赞、在看、转发!

Original AI兴观点 程叙架构与AI.
内容效果不满意?点此反馈