编排 Claude Code 的三种方式——以及差异为什么重要
如果你用过一段时间 Claude Code,大概会发现:让它处理复杂任务的方式不止一种。你可以让 Claude 自己生成一套并行调度脚本来大规模处理任务,可以扔给它一个高层目标然后撒手不管,也可以开一支互相通信的 Claude 实例团队。这三种方式是真的不一样——不只是风格上的差别,而是在成本、可靠性、复杂度,以及「到底擅长解决哪类问题」上都不同。
本文会从最关键的几个维度——自主性、并行度、成本结构、失败处理、实际使用场景——把这三种模式(动态工作流、/goal 命令、智能体团队)摆在一起对比。读完你会清楚地知道哪种模式适合哪种情形。
这个选择并不是纸上谈兵。选错了,你要么把一个简单任务过度工程化,要么给一个复杂任务配了不够用的武器。
三种模式分别是什么
在对比之前,有必要先把每种模式在实践中的含义说清楚。这些术语经常被混用,但其中的区别很重要。
动态工作流(Dynamic Workflows)
动态工作流的核心思想是:把「计划」放进代码里,让代码而非 Claude 的上下文窗口来决定下一步做什么。
通常,Claude Code 处理任务时是逐轮决策的——Claude 在自己的上下文里思考「下一步做什么」,中间结果也留在上下文中。Dynamic Workflows 则不同:你描述任务,Claude Code 使用当前会话中支持工作流的模型实时为这个任务生成一段定制的 JavaScript 编排脚本,然后由运行时在后台执行这段脚本,你的主会话始终保持响应。
「动态」的精髓在于:不是你预先写好流程,而是 Claude 根据当前任务实时生成最合适的编排代码,任务不同、脚本就不同。这比事先写死的静态工作流灵活得多。
可以通过在提示词中使用 ultracode 关键词、直接要求 Claude Code 使用 workflow,或通过 /effort ultracode 命令触发。官方文档还内置了 /deep-research 这类基于 workflow 的命令。
/goal 命令
/goal 是 Claude Code 原生的目标驱动持续执行机制。你描述想要达成的东西——一个高层目标和完成条件——然后由 Claude 负责规划、排序、执行抵达目标所需的步骤。
你不是在编写工作流,而是在陈述意图、委派执行。Claude 自己决定用什么工具、按什么顺序推进;每轮结束后,系统会评估完成条件是否满足,若未满足就继续下一轮。
这是 Claude Code 上「告诉我你想要什么,而不是怎么做」的路子。
智能体团队(Agent Teams)
智能体团队是 Claude Code 里多个完整的 Claude Code 会话作为一支团队协同工作。其中一个会话担任 team lead(队长),负责建团队、派任务、汇总结果;其余 **teammate(队友)**各自在独立上下文里工作。
它和动态工作流里的子 Agent、以及普通 subagent 最大的不同在于通信方式:teammate 之间通过共享任务列表(shared task list)和信箱(mailbox)直接对话、互相质疑、自行认领任务,而不是只能向主 agent 单向汇报。换句话说,协调不是你写代码写出来的,而是团队自己跑出来的——你用自然语言告诉 Claude 想要怎样一支团队,Claude 自己 spawn 队友并组织协作。
这跟人类团队的运作方式很像——队长把项目拆开,队员们认领、推进、互相讨论。它最适合那种「多个视角并行探索、再彼此碰撞」的任务。
注:Agent Teams 是实验性功能,默认关闭,需通过
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS开启(要求 Claude Code v2.1.32+)。
动态工作流:Claude 生成脚本、并行调度、规模化执行
Dynamic Workflows 的真正威力在于规模:Claude 不是一步一步地思考,而是先为你的任务写好一套并行调度程序,再由这段程序批量驱动大量子 Agent。
它是怎么运作的
流程大致如下:
- 你告诉 Claude 你的任务(比如「审计所有 API 路由是否有鉴权漏洞」)
- Claude Code 使用当前会话中支持工作流的模型实时为这个任务生成一段定制的 JavaScript 编排脚本
- 运行时在后台并行启动数十乃至上百个子 Agent
- 子 Agent 的中间结果存在脚本变量里,不占用 Claude 主上下文窗口
- 全部完成后,最终结果汇总给你
截至当前官方文档限制,每次运行最多可调度 1000 个子 Agent,同时并发最多 16 个。你的主会话在整个过程中始终保持响应。
| 对比项 | 普通逐轮执行 | Dynamic Workflows |
|---|---|---|
| 谁来决定下一步 | Claude,逐轮决策 | 脚本代码 |
| 中间结果存在哪 | Claude 的上下文窗口 | 脚本变量 |
| 并行能力 | 单会话逐轮对话本身无大规模并行 | 原生,最多 16 路并发 |
优势
真正的大规模并行。 脚本可以同时驱动数十个子 Agent,几分钟内完成单实例需要数小时的任务。全代码库 Bug 搜寻、安全审计、性能优化扫描——这类需要大面积覆盖的任务是它的主场。
脚本为任务量身定制。 Claude 根据你的具体需求生成脚本,而不是套用通用模板。同一类任务、不同侧重,生成的脚本就不同,比预先写死的静态流程灵活得多。
上下文窗口不是瓶颈。 中间结果存在脚本变量里,不会堆积在 Claude 的上下文中,可以处理远超单实例上下文限制的工作量。
搭建成本低。 你只需描述任务,不需要自己设计编排逻辑。
劣势
需要任务可分解。 对那些步骤高度串行依赖、无法并行的任务,并行调度的优势发挥不出来。
成本上限较高。 大量子 Agent 并发意味着 token 消耗也成倍增长,不适合对成本极度敏感的简单任务。
生成的脚本不透明。 你不是自己写的脚本,调试时需要额外查看 Claude 生成的编排代码。
最佳场景
- 全代码库的 Bug 搜寻、安全审计、性能优化扫描
- 需要对每个发现独立验证的任务(并行搜索 + 并行核实)
- 大量同类文件的批量处理(提取 → 分析 → 汇总)
- 任何「覆盖面广、可并行」的规模化任务
/goal 命令:自主执行
/goal 把规划和持续推进的责任转移给了 Claude。你描述目标和完成条件,Claude 自己找路径。
它是怎么运作的
当你在 Claude Code 里调用 /goal,本质上是把一个目标和完成条件交给 Claude,并让它持续推进。Claude 会:
- 在内部把目标拆成子任务
- 按它自己判断的顺序使用可用工具(bash、文件访问、搜索等)
- 根据中途的发现调整方法
- 持续推进,直到完成条件被评估为满足、或撞上明确的障碍
没有死板的脚本。Claude 边推进边重新评估、调整。如果一个方法不奏效,它可以换一个。
优势
搭建成本低。 你不用设计工作流,只需描述想要什么。对于那些事先不完全清楚步骤的新颖或探索性任务,这尤其有用。
自适应执行。 因为 Claude 在动态规划,它能应对意外。文件不在它以为的位置、API 返回了预期之外的数据、代码库结构和假设不一样——它都能调整。
像在委派。 对于想专注「做什么」而非「怎么做」的知识工作者和开发者,/goal 是最自然的接口,就像把活儿交给一位能干的同事。
适合探索。 调研任务、代码库勘察、调试陌生系统——这些都受益于 Claude「顺着线索一路追下去」的能力。
劣势
token 用量不可预测。 Claude 的跨回合执行循环要消耗 token。子任务很多的长目标会迅速变贵,且成本难以提前预估。
难以审计。 你拿到一个结果,但除非你深挖工具调用日志,否则 Claude 抵达结果的路径未必完全透明。
多次运行不一致。 同一个目标 prompt,不同次运行可能产生不同的执行路径。这对探索是优点,但对任何需要可复现性的场景就是问题。
可能卡死或提前收敛。 目标条件如果写得含糊,系统可能过早判断目标完成;也可能在没有外部干预时陷入无效循环。
最佳场景
- 探索、理解一个陌生代码库
- 开放式的研究与总结任务
- 根因未知的调试任务
- 范围需要边做边摸清的重构项目
- 任何你能描述「成功长什么样」、却说不清步骤的任务
智能体团队:多个会话并行协作、互相质疑
智能体团队是最适合「多视角并行探索 + 彼此碰撞」的模式。它不是让 Claude 写脚本去调度无状态的子 Agent,而是开起多个完整、独立、能互相对话的 Claude Code 会话。
它是怎么运作的
一支团队由这几部分组成:
- team lead(队长):你正在用的这个主会话,负责建团队、spawn 队友、派任务、汇总结果
- teammate(队友):若干独立的 Claude Code 实例,各自有独立上下文,认领并完成任务
- 共享任务列表(task list):所有成员都能看到任务状态、认领可做的任务;任务支持依赖关系,前置任务完成后被阻塞的任务自动解锁
- 信箱(mailbox):成员之间直接收发消息的通信系统,消息自动送达,无需轮询
你不需要写任何协调代码——用自然语言告诉 Claude 你想要怎样一支团队(比如「建一支团队从 UX、架构、唱反调三个角度探索这个问题」),Claude 就会建团队、spawn 对应队友、组织他们协作并最后汇总。队友之间用文件锁认领任务以避免冲突。
显示上有两种模式:in-process(所有队友跑在主终端里,用 Shift+Down 循环切换、直接给某个队友发消息)和 split panes(每个队友独占一个窗格,能同时看到所有人的输出——需要 tmux 或 iTerm2)。
优势
真正的并行 + 互相质疑。 多个队友可以同时从不同角度调查同一个问题,然后分享、挑战彼此的结论。官方招牌例子就是派 5 个队友各持一个 bug 假设、像科学辩论一样互相证伪——存活下来的假设更可能是真正的根因。
直接通信,不靠主 agent 中转。 队友之间能直接对话、共享发现,这是它和普通 subagent(只能单向汇报)的本质区别。
角色专精。 每个队友可以用不同的模型、不同的工具集;还能复用已有的 subagent 定义(比如 security-reviewer)作为某个队友的角色。
你可以直接介入任一队友。 不必经过队长,可以直接给某个队友发指令、追问、纠偏。
劣势
还是实验性能力。 Agent Teams 默认关闭,需开 CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS,且官方明确列了已知限制:恢复会话(/resume、/rewind 不会恢复 in-process 队友)、任务状态可能滞后(队友有时忘了把任务标完成,阻塞后续任务)、关闭较慢(队友会先做完当前请求再退出)。
成本上限更高。 每个队友都是一个独立的 Claude 实例、独立上下文,token 用量随队友数量线性增长。对日常小任务,单会话更划算。
协调开销与冲突风险。 队友数量越多,沟通和协调成本越高;两个队友改同一个文件会互相覆盖。官方建议大多数场景 3–5 个队友起步,并按文件边界拆分工作。
一次只能管一支团队、不支持嵌套。 队友不能再开自己的团队;队长身份在团队生命周期内固定,不能转交。
最佳场景
- 并行代码审查(一个看安全、一个看性能、一个看测试覆盖)
- 竞争性假设调试(多个队友各查一个理论、互相证伪)
- 跨层改动(前端、后端、测试各由一个队友负责)
- 新模块 / 新功能(每个队友独占一块、互不踩脚)
- 任何「多视角并行探索、再彼此碰撞」、且偏读多写少的任务
横向对比
下面是三种模式在通常驱动决策的各个维度上的对比:
| 维度 | 动态工作流 | /goal |
智能体团队 |
|---|---|---|---|
| 自主性 | 中—高(Claude 写脚本并调度) | 高(Claude 全程规划) | 中—高(队长协调,队友自行认领) |
| 并行度 | 原生并行(最多 16 路并发) | 串行 | 原生并行(多会话) |
| 成本可预测性 | 中 | 低—中 | 低 |
| 搭建复杂度 | 低(描述任务即可) | 低 | 低(自然语言建团队,但属实验性功能) |
| 调试难易 | 中(可查看生成的脚本) | 难 | 难(可直接介入任一队友) |
| 适应性 | 中(脚本针对任务定制) | 高 | 高(队友互相讨论、纠偏) |
| 适配的上下文规模 | 极大(脚本变量存中间结果) | 中 | 大(每个队友独立上下文) |
| 通信方式 | 脚本变量传递 | 单会话 | 队友互相直接通信 |
| 理想任务类型 | 覆盖面广、可并行的规模化任务 | 开放式探索目标 | 多视角并行探索、互相碰撞(读多写少) |
怎么选:一套决策框架
与其规定一个唯一「最好」的方案,不如用一套框架,把模式和问题对上号。
先看任务的形状
任务覆盖面广、可以并行拆解? 用动态工作流。全代码库扫描、批量分析、大规模审计——这类「横向铺开」的任务最能发挥它并行调度的威力。只需描述任务,Claude 生成脚本,后台并行跑。
任务是探索性的、开放式的?
用 /goal。你不完全清楚要走哪些步骤,需要 Claude 边做边决策。让它去问题空间里自己导航。
任务需要多个视角并行探索、再彼此碰撞验证? 用智能体团队。代码审查(安全 / 性能 / 测试各派一人)、竞争性假设调试(多人各查一个理论、互相证伪)、跨层改动——这类「读多写少、靠讨论收敛」的任务最能发挥队友间直接通信的价值。注意它是实验性功能,且 token 开销显著。
再考虑成本约束
三种模式里,短目标用 /goal 处理时成本相对可控,但一旦目标跨很多轮,token 用量仍然会变得难预测。动态工作流的并行子 Agent 数量和 token 消耗随任务规模浮动;智能体团队最贵——每个队友都是独立实例、独立上下文,用量随队友数量线性增长。如果预算敏感,优先用 /goal 或单会话,团队留给真正值得的任务。
还要看出结果的时间要求
覆盖面广、可脚本化的大型任务,动态工作流靠 16 路并发最快。需要多视角讨论的探索 / 审查任务,智能体团队的并行能压缩墙钟时间。步骤说不清的开放任务,/goal 搭起来最省事。
你有多信任输出
动态工作流的编排脚本由 Claude 生成、你可以审查;/goal 的推理路径不完全透明,且评估器只看对话里暴露的内容,条件写得含糊可能被提前判定完成;智能体团队透明度居中——你能直接介入任一队友查看其会话,但多会话的系统级调试仍然复杂,且目前任务状态可能滞后。对输出要求可审计、可复现的生产场景,仔细检查 Dynamic Workflows 生成的脚本,或盯紧团队的任务列表与各队友输出,都是合理做法。
混合用法
实践中,成熟的用法常常组合这些模式。比如先用动态工作流对全代码库做大规模初筛,再用 /goal 或智能体团队对筛出的结果做深度分析与讨论。它们不是互斥的——按任务的不同阶段挑顺手的那个。
常见问题
Claude Code 里的 /goal 命令是什么?
/goal 是 Claude Code 用于目标驱动持续执行的机制。你提供一个高层目标和完成条件,Claude 规划并执行达成它所需的步骤;每轮结束后系统评估完成条件是否满足,无需你编写流程。它最适合事先不完全清楚步骤的开放式或探索性任务。
什么时候该用多智能体团队,而不是单个 Claude 实例?
当你的任务真正受益于并行执行或角色专精时——大型代码库分析、全面研究、复杂内容流水线——才用智能体团队。对大多数任务,单个 Claude 实例(用动态工作流或 /goal)更简单也更省钱。多智能体的开销,只有任务大到值得时才划算。
动态工作流和传统脚本自动化有什么区别?
传统脚本自动化(如 Zapier、Make)是人预先写死的「触发-动作」规则。Claude Code 的 Dynamic Workflows 则是 Claude 根据你的具体任务实时生成一段 JavaScript 编排脚本,脚本内容随任务变化——同样的功能类型、不同侧重,生成的脚本就不同。这让它比静态流程灵活,同时又比纯自主执行的 /goal 结构化。
智能体团队比单智能体方案更贵吗? 通常是的。跑多个 Claude 实例会成倍放大 token 用量。话虽如此,对真正大型的任务,智能体团队可能反而比逼单个实例处理巨大上下文窗口更划算。关键是让方案匹配任务规模——对单实例就能搞定的任务,智能体团队不值那个开销。
能在 Claude Code 里把 /goal 和智能体团队结合吗?
能。一种可行模式是给队长设一个 /goal 完成条件,让它持续协调团队直到条件满足。这些模式天然可以组合,但要记得 Agent Teams 仍属于实验性能力。
subagent(子代理)和 Agent Teams 有什么区别? 两者都能并行,但通信方式不同:subagent 在单个会话内被主 agent 派生,干完活把结果汇报回来,彼此之间不通信;Agent Teams 的队友是各自独立的完整会话,共享任务列表、互相直接发消息。所以 subagent 适合「只要结果」的聚焦任务(成本更低,结果会被压缩回主上下文),Agent Teams 适合「需要讨论和协作」的复杂任务(成本更高)。
多智能体 Claude Code 系统里的失败该怎么处理?
失败处理策略取决于模式。动态工作流里,由 Claude 生成的脚本带重试和兜底,必要时检查脚本逻辑。/goal 里,把完成条件写成可验证的、并加 or stop after N turns 之类的上限子句,避免空转。智能体团队里,盯紧共享任务列表(队友偶尔会忘记标记任务完成、阻塞后续),并直接介入卡住的队友。
关键要点
- 动态工作流最适合覆盖面广、可大规模并行的任务——Claude 实时生成脚本、驱动上百个子 Agent,适合全代码库扫描、批量分析、安全审计等场景。可用
ultracode、直接要求使用 workflow,或/effort ultracode触发。 /goal最适合开放式、探索性或新颖的任务——你想把规划和跨回合推进委派给 Claude,由它边做边决策,并用完成条件约束何时停止。- 智能体团队最适合多视角并行探索、再彼此碰撞的任务——多个独立会话共享任务列表、互相通信,适合并行代码审查、竞争性假设调试、跨层改动等「读多写少、靠讨论收敛」的场景。属实验性功能、成本最高。
- 大多数实际用法会组合这些模式——比如用 Dynamic Workflows 做大规模初筛、再用
/goal或智能体团队对结果做深度分析与讨论。
正确的选择不在于哪种模式「最先进」,而在于让工具匹配任务。先想清楚任务的形状——是要大面积覆盖、还是深度探索、还是多视角讨论——再选对应的模式。
关于
关注我获取更多资讯