Skip to content

统一 workflow 子代理模型:CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL ​

Workflow 让 Claude Code 能用脚本把一批代理编排起来:agent() 起单个任务,parallel() 并发跑,pipeline() 串成流水线。一个 workflow 里动辄十几、几十个 agent,它们各自跑在什么模型上,直接决定了结果的一致性和账单。

CLI 2.1.296 新增环境变量 CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL:设置后,每一个 workflow agent 都跑在同一个模型上;而 workflow 之外的其他子代理,仍然使用各自配置的模型,不受影响。

它解决什么问题 ​

没有这个变量时,workflow 里 agent 用什么模型,取决于脚本里写的选项、引用的子代理定义、以及会话默认模型等多层来源。常见的几个痛点:

  • 同一条链路模型不一致:前半段用大模型分析,后半段某个 agent 落到了另一个模型,输出风格和质量对不齐;
  • 想临时整体换模型很麻烦:比如想用更便宜的模型跑一遍试水,要改脚本里多处,或改子代理定义;
  • 改子代理定义会误伤:为了 workflow 去改某个子代理的 model,结果平时单独调用它的场景也变了。

CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL 的思路是:只给 workflow 这一层开一个总开关,其余保持原样。

怎么设置 ​

它是环境变量,值填模型名即可(别名或完整模型 ID,与平时指定模型的写法一致)。临时在一次会话里用:

bash
CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL=claude-sonnet-5-5 claude

想在项目里固定下来,可以写进 settings 的 env 字段:

json
{
  "env": {
    "CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL": "claude-sonnet-5-5"
  }
}

团队共享就放项目 .claude/settings.json,只想自己用就放本地设置。不设置时,行为和以前一样。

升级后用 claude --version 确认 ≥ 2.1.296。

影响范围:谁变、谁不变 ​

场景设置变量后
workflow 脚本里起的 agent(agent() / parallel() / pipeline() 等)统一跑在变量指定的模型上
主会话里直接调用的子代理(Agent / Task 工具)不变,仍用子代理定义或默认模型
主会话本身不变,仍由 /model、--model 等决定

所以它很适合这样的组合:主会话用最强的模型做规划和把关,workflow 里大批量的执行 agent 统一用性价比更高的模型——而你平时手动调用的 code-reviewer 之类子代理,仍保留自己那套配置。

和 Agent effort、autoCompactWindow 的边界 ​

近几个版本围绕子代理加了不少开关,容易混在一起:

  • 模型(本文):决定 agent 用哪个模型;CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL 只管 workflow 这一层;
  • Agent effort:决定 agent 思考投入多少,和用哪个模型是两个维度;
  • autoCompactWindow:决定子代理多早触发自动压缩,管的是上下文窗口。

三者可以叠加:例如 workflow 统一用一个中等模型,同时对其中的检索类 agent 降低 effort、提前压缩。

使用建议 ​

  • 先小规模试:统一换模型前,挑一个 workflow 跑一遍,对比输出质量和耗时;
  • 注意费用:workflow 的 agent 数量多,模型单价差一点,乘起来就很明显,跑完用 /cost 看一眼;
  • 别用它绕过限制:如果组织通过托管设置限制了可用模型,填一个不可用的模型并不会生效,以管理员策略为准;
  • 排查时记得它的存在:workflow 结果「突然变了」,先查环境里是不是设了这个变量。

小结 ​

  • 2.1.296 新增 CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL,让所有 workflow agent 统一跑在一个模型上。
  • 只影响 workflow 层,主会话和其他子代理保持原有模型。
  • 适合「主会话强模型把关 + workflow 批量执行统一模型」的分工,也方便整体切模型试水。

Claude-cn.org,专注于 Claude Code 中文教程