Anthropic 在上周给 Claude Code 推送了一个新能力:Dynamic Workflows。简单说,Claude 现在能在执行任务时,现场写一份专用的 JavaScript harness,然后用这份 harness 编排多个 subagent、reviewer、verifier 一起干活。这不是流程引擎升级,是 Agent 编排范式的一次跃迁。Thariq Shihipar(Anthropic 工程师)写了一篇长文讲清楚了这套机制的来龙去脉和使用方法。
为什么要做 Dynamic Workflows
Claude Code 的默认 harness 是为"写代码"设计的,但很多任务(数据工程、研究、triage、调研、post-mortem)本质上也像写代码——有输入输出、有失败模式、可以拆解。之前要做这类任务,得用 Claude Agent SDK 或者 claude -p 自己手写一套静态 harness 把多个 Claude Code 实例串起来。
但静态 harness 有一个根本问题:它必须能覆盖所有边界情况,所以设计得很通用、很粗。当模型本身够强的时候,应该让模型针对当前任务写一份量身定制的 harness——这就是 dynamic workflow 的核心想法。
一个动态 workflow 就是一个 JavaScript 文件,里面有几个特殊函数可以 spawn 和协调 subagent,并且可以使用标准的 JSON、Math、Array 等函数处理数据。模型写完这个文件,Claude Code 就会执行它。
关键的灵活性:模型可以自己决定每个 subagent 用什么模型、用不用独立的 worktree(隔离)。换句话说,模型可以针对任务性质选择智能等级和隔离等级。
三个真正致命的失败模式
Thariq 点出了默认 harness 在长任务、并行任务、对抗性任务下的三个具体失败模式——这是 dynamic workflows 真正要解决的问题:
Agentic laziness(偷懒):任务太复杂时,Claude 做完一半就宣布完成。比如 50 项 security review 做到第 20 项就停了。
Self-preferential bias(自利偏差):让 Claude 验证自己产出时,它倾向于给自己打高分、找理由说"我已经做得很好了"。
Goal drift(目标漂移):跨多轮对话后,原任务的细节(边界条件、不要做 X)会被丢失,尤其是经过压缩(compaction)之后。每次摘要都是有损的。
这三个失败模式如果用静态方式修补——加 prompt 约束、加评分机制——都治标不治本。Thariq 提出的解法是结构性的:让每个子任务跑在独立的 context window 里,让 verifier、refuter 跟生成者分人。
六种基础 Pattern
文章里给了 6 种常见的 dynamic workflow 组合方式,可以单独用、可以叠加:
Classify-and-act:一个分类器 agent 先判断任务类型,再路由给不同的 agent 或行为。也可以放在最后做输出分类。
Fan-out-and-synthesize:把任务拆成多个小步骤,每个步骤 spawn 一个 agent 独立跑,最后由一个 synthesis 阶段把所有结果合并成一份。适合"步骤多、互相不污染"的场景。Synthesis 阶段是 barrier——等所有 fan-out agent 都跑完才合并。
Adversarial verification:每个产出的 agent 旁边再 spawn 一个独立的 agent,按 rubric 对抗性检验它的输出。
Generate-and-filter:一次性生成一堆候选,再按 rubric 过滤、去重、只留最高质量且经过验证的。
Tournament:让 N 个 agent 同一个任务不同方法各跑一遍,再用 judging agent 配对比较,直到决出胜者。适合"品味"类判断(设计、命名)。
Loop until done:固定轮数不知道的情况下,循环 spawn agent 直到满足停止条件(没有新发现、log 没新错误)。适合 triage、reconnaissance 这类工作。
实战场景:六个值得记住的用法
文章给了大量真实用例,浓缩成六个:
重写大型项目。Zig → Rust 那种规模的重写就是用 dynamic workflow 做的:拆出 callsite、module、failing test,每个 fix spin 一个 agent 在 worktree 里改,再来一个 agent 对抗性 review,最后合并。关键是让 agent 别用资源密集型命令,否则机器扛不住并发。
Deep research。Claude Code 内置的 /deep-research skill 就是基于 dynamic workflow:fan-out 多个 web search agent,分别 fetch source,再 adversarial verify claim,最后合成带引用的报告。完全可以拓展到 Slack 调研、代码库深挖。
声明核查。一份报告里每个事实声明由一个 agent 识别,再 spin 一个 subagent 去详细核查,再加一个 verification agent 验证核查 agent 引用的 source 质量。三层隔离。
大批量排序。1000+ 行工单按严重度排序不能在一个 prompt 里做——质量会崩,也不一定塞得下 context。改用 tournament 流水线,每对比较是独立 agent,bracket 状态由 deterministic loop 持有,只把当前对阵放回 context。
规则挖掘。从最近的 sessions 和 code review 评论里挖出你反复犯的错,parallel agents 聚类,adversarial verify 每个候选规则(这条规则真的能避免过去的错误吗?),存活的规则沉淀到 CLAUDE.md。
Debugging 假设生成。调试时如果只有一个 context window,Claude 会陷入 self-preferential bias——它只看得见自己的证据。dynamic workflow 可以让 logs、files、data 三类 agent 从 disjoint evidence 分别生成假设,再交给 verifier 和 refuter 团队对擂。
不只是代码
文章特意强调:dynamic workflow 同样适用于非技术任务。Sales(为什么三月销量掉了?)、Data Engineering(这个 pipeline 为什么挂了?)、各种 post-mortem 都可以套用同一套机制。
一个特别值得记住的模式是 triage workflow:分类 → 去重(对已存在的票/工单)→ 行动(要么自己修,要么升级到人)。配合 /loop 可以持续跑。再加上"quarantine"模式:读不可信公开内容的 agent 不能执行高权限操作,高权限操作只能由"基于信息采取行动"的 agent 来做。这是一个非常实用的安全模式。
什么时候不用 Dynamic Workflow
Thariq 的提醒很直白:dynamic workflow 经常消耗更多 token,不是所有任务都需要它。文章里给的判断标准是——
"best to use workflows creatively to push Claude Code in ways that you haven't previously. For regular coding tasks, try and ask yourself does it really need more compute? For example, most traditional coding tasks do not need a panel of 5 reviewers."
普通编码任务上 5 个 reviewer 是浪费。要的是能 push 边界的新场景——深度研究、对抗验证、triage、tournament 排序——这些场景单 context window 必崩,dynamic workflow 才能稳稳接住。
使用建议
触发词:"ultracode"。在 prompt 里加上这个词可以确保 Claude Code 创建一个 workflow。直接说"用 workflow"也行。
Token 预算:可以在 prompt 里写"用 10k tokens"来限制动态 workflow 的消耗上限。
复用和分享:在 workflow 菜单按 s 保存到 ~/.claude/workflows,或者打包成 skill 分享。分享时把 workflow 描述成"模板"而不是"必须逐字执行的脚本"——保留 Claude 根据上下文调整的空间。
配套指令:dynamic workflow 跟 /goal(硬性完成条件)、/loop(周期性执行)配合最好。比如 triage 任务用 /loop 周期跑,用 /goal 强制要求"直到 backlog 清空"。
范式意义
回到更大的图景。Dynamic Workflows 不是 Claude Code 的一个小功能升级,它是 Agent 编排范式的一次根本跳跃。之前所有 multi-agent 框架(LangGraph、AgentScope、CrewAI)都是人写工作流、模型填槽位。现在是模型自己写工作流、人只在 prompt 层定义目标。
这个区别比看起来大得多。静态工作流的天花板由设计者决定,dynamic workflow 的天花板由模型决定。当模型能力跃迁时,dynamic workflow 的能力曲线会自动跟着上去——不需要人去重新设计每一种编排。
这也是为什么 Thariq 在文末说:"Workflows are a helpful new way to extend Claude Code. I encourage you to think of this as a starting point, there's still much to discover in how to use them best."
这是起点。Anthropic 把"Agent 怎么组织自己"这件事的能力正式开放给用户了。剩下的事,交给用的人去试。