Claude Code 的 Dynamic Workflow 能编排数十到数百个子 agent 并行工作。功能强大,但有几个坑需要提前知道。
目录
- 什么是 Dynamic Workflow
- 开启与关闭
- 触发方式
- 关键词高亮与取消
- 权限配置
- 费用与 Token 消耗
- Ultracode 模式
- 管理运行:/workflows
- 保存为命令复用
- 恢复与限制
- 完整速查表
什么是 Dynamic Workflow
Dynamic Workflow 是一段 JavaScript 脚本,由 Claude 编写,运行时在后台编排多个子 agent 执行任务。
| 对比 | Subagent | Skill | Workflow |
|---|---|---|---|
| 编排者 | Claude 逐轮决定 | Claude 跟随指令 | 脚本决定 |
| 中间结果存在哪 | Claude 上下文 | Claude 上下文 | 脚本变量 |
| 规模 | 几个 | 几个 | 几十~几百 agent |
| 可中断恢复 | 否 | 否 | 同 session 内可恢复 |
| 可复现 | 否 | 指令可复现 | 脚本可复现 + 可保存为命令 |
✅ 适合场景:大规模代码审计、500 文件迁移、多源交叉验证研究、多角度方案对比。
❌ 不适合:简单问答、几个子任务(直接用 subagent)、有固定指令的重复操作(用 skill)。
开启与关闭
检查是否开启
/config # 打开配置界面,查看 Dynamic Workflows 状态
关闭方式(三选一)
| 方式 | 持久性 | 操作 |
|---|---|---|
/config 切换 |
持久 | 打开配置 → 关闭 Dynamic Workflows |
settings.json |
持久 | 设置 "disableWorkflows": true |
| 环境变量 | 每次启动 | CLAUDE_CODE_DISABLE_WORKFLOWS=1 |
重新开启
反向操作即可。关掉后:
/deep-research等内置命令不可用workflow关键词不再触发/effort菜单移除 ultracode 选项
触发方式
方式一:关键词触发
在 prompt 中包含 workflow 关键词:
Run a workflow to audit every API endpoint for missing auth checks
Claude Code 会高亮 workflow 这个词,表示识别到触发意图。
方式二:Ultracode 自动触发
设置 /effort ultracode,Claude 自动为每个实质性任务规划 workflow。
方式三:保存的命令
保存过的 workflow 变成 /<name> 命令,直接调用。内置的有 /deep-research。
关键词高亮与取消
当你的 prompt 包含 workflow 时,Claude Code 高亮显示该词,表示即将触发 dynamic workflow。
不想触发怎么办?
按 Alt+W 取消高亮,该次 prompt 退回普通对话模式。
⚠️ 重点:部分终端会拦截 Alt 组合键,需要额外配置才能让
Alt+W生效。
终端配置
🟣 Ghostty
在 ~/.config/ghostty/config 中添加:
macos-option-as-alt = true
🔵 iTerm2
Preferences → Profiles → Keys → Left Option Key: 设为 Esc+
🟢 Kitty
一般默认支持,如不行在 kitty.conf 加:
macos_option_as_alt yes
🟠 WezTerm
在配置中:
config.keys = {
{ key = "w", mods = "ALT", action = wezterm.action.SendKey({ key = "w", mods = "ALT" }) },
}
改完重启终端生效。
权限配置
核心规则
| 操作类型 | 权限行为 |
|---|---|
文件编辑(Write/Edit) |
✅ 自动批准(子 agent 固定 acceptEdits 模式) |
| Shell 命令 | ⚠️ 未在 allowlist 中会弹窗暂停 |
| Web 搜索/抓取 | ⚠️ 未在 allowlist 中会弹窗暂停 |
| MCP 工具调用 | ⚠️ 未在 allowlist 中会弹窗暂停 |
启动确认(按权限模式)
| 权限模式 | 行为 |
|---|---|
Default / acceptEdits |
每次启动前弹窗确认,除非选过 "don't ask again" |
Auto |
仅首次确认;ultracode 下完全跳过 |
Bypass / claude -p |
从不弹窗 |
⚠️ 长运行前必须做的事
提前把需要的命令加到
allowlist,否则 workflow 中途弹窗卡住!
方式一:直接告诉 Claude:
允许 git 和 npm 命令不弹窗
方式二:手动编辑 settings.json:
{
"permissions": {
"allow": [
"Bash(git *)",
"Bash(npm *)",
"WebSearch",
"WebFetch"
]
}
}
配置文件位置:
| 文件 | 作用域 |
|---|---|
~/.claude/settings.json |
🌐 全局(所有项目) |
| `.claude/settings.json`` | 👥 项目级(团队共享,随 repo 提交) |
.claude/settings.local.json |
👤 项目级(仅自己,gitignore) |
费用与 Token 消耗
成本特点
- 单次 workflow spawn 大量 agent,token 消耗远大于普通对话
- 所有 agent 默认使用当前 session 模型
- 计入 plan 用量和速率限制
💰 省钱技巧
| 技巧 | 说明 |
|---|---|
| 检查模型 | 长运行前用 /model 确认,别用 Opus 跑简单任务 |
| 指定小模型 | 描述任务时说"简单阶段用 Haiku" |
| 提前停止 | /workflows → x 停止,已完成工作不丢 |
| 用 default 模型 | 日常用 Sonnet,复杂任务再切 Opus |
模型成本对比(粗略)
Haiku < Sonnet < Opus
💰便宜 💰💰中等 💰💰💰贵
workflow 脚本中可为不同阶段指定不同模型:
agent('简单分类任务', { model: 'haiku' })
agent('复杂推理任务', { model: 'opus' })
Ultracode 模式
是什么
Ultracode =
xhigh推理深度 + 自动 workflow 编排
开启
/effort ultracode
行为
- 每个实质性任务自动规划成 workflow
- 可能一个请求触发多个 workflow 串行:
understand→design→implement→verify auto权限模式下跳过启动确认
代价
- 🔴 token 消耗极大,每个任务可能 spawn 几十上百 agent
- 🟡 耗时更长,但结果更全面可信
- 🔵 仅当次 session 有效
退出
/effort high # 降回普通高档
/effort medium # 降回中档
适用判断
| 场景 | 推荐 |
|---|---|
| 大规模代码审计 | ✅ ultracode |
| 复杂重构需多角度验证 | ✅ ultracode |
| 研究任务需交叉核实 | ✅ ultracode |
| 日常开发、简单问答 | ❌ 别开 |
| 快速改个 bug | ❌ 别开 |
管理运行:/workflows
/workflows
打开 workflow 管理界面,查看运行中和已完成的 workflow。
⌨️ 操作快捷键
| 按键 | 功能 |
|---|---|
↑ / ↓ |
选择阶段或 agent |
Enter / → |
钻入查看详情(prompt、tool 调用、结果) |
Esc |
返回上一级 |
j / k |
详情内滚动 |
p |
⏸️ 暂停 / ▶️ 恢复运行 |
x |
🛑 停止选中 agent 或整个 workflow |
r |
🔄 重启选中的运行中 agent |
s |
💾 保存脚本为命令 |
进度信息
每个阶段显示:
- agent 数量
- token 消耗
- 已用时间
保存为命令复用
保存方法
/workflows→ 选中满意的运行- 按
s Tab切换保存位置Enter确认
保存位置
| 位置 | 路径 | 说明 |
|---|---|---|
| 📦 项目级 | .claude/workflows/ |
团队共享,随 repo 提交 |
| 👤 个人级 | ~/.claude/workflows/ |
所有项目可用,仅自己 |
使用
保存后变成 /<name> 命令:
/my-audit # 直接调用
出现在 / 自动补全列表中,与内置命令(如 /deep-research)并列。
优先级
同名时,📦 项目级 > 👤 个人级。
恢复与限制
恢复运行
- 暂停后可在同一 session 恢复
- 已完成的 agent 返回缓存结果,不重新跑
- 恢复方式:
/workflows→p,或让 Claude 用同一脚本重新启动
⚠️ 跨 session 不保留
退出 Claude Code 后 workflow 不保留。 下次 session 需重新运行。但保存过的命令脚本还在,可以重跑。
运行时限制
| 限制 | 值 | 原因 |
|---|---|---|
| 并发 agent 上限 | min(16, CPU-2) | 资源控制 |
| 单次运行 agent 总数 | 1000 | 防止无限循环 |
| 脚本内文件系统访问 | 无 | 只有 agent 能读写文件 |
| 脚本内 shell 访问 | 无 | 只有 agent 能执行命令 |
| 运行中用户输入 | 无 | 只有权限弹窗能暂停 |
需要阶段签字确认?
拆成多个独立 workflow,每个跑完审查后再跑下一个。
完整速查表
# 🔄 开启/关闭
/effort ultracode # 开启 ultracode(xhigh + 自动 workflow)
/effort high # 退出 ultracode
/config # 关闭 Dynamic Workflows 开关
# 🚀 触发
prompt 中包含 "workflow" # 关键词触发
/<saved-name> # 调用保存的命令
/deep-research <question> # 内置命令
# 📋 管理
/workflows # 打开管理界面
Alt+W # 取消关键词高亮(不触发 workflow)
# ⌨️ 管理界面内操作
p = 暂停/恢复
x = 停止
s = 保存为命令
Enter = 查看详情
Esc = 返回
# 🔐 权限
直接说 "允许 git 命令不弹窗" → Claude 帮你改 allowlist
或手动编辑 settings.json 的 permissions.allow 数组
# 💰 省钱
/model # 检查当前模型
简单阶段指定 haiku # 脚本内 { model: 'haiku' }
/workflows → x # 及时停止不需要的运行
基于 Claude Code 官方文档整理,最后更新:2026-05-30