ultracode 出现在 Claude Code 的 /effort 滑块里,和各个 effort 档位放在一起,但 Claude Code 文档把它描述成另一回事。Model configuration 页面写道:「Ultracode is a Claude Code setting rather than a model effort level: with it on, Claude orchestrates dynamic workflows for substantive tasks, at whichever effort level the session runs at.」(ultracode 是 Claude Code 的一个设置,而不是模型的 effort 档位:打开后,无论会话处在哪个 effort 档位,Claude 都会为实质性任务编排动态工作流。)

ultracode 打开了什么

按 Dynamic workflows 页面的说法,动态工作流是「a JavaScript script that orchestrates many subagents at once」(一个同时调度许多子代理的 JavaScript 脚本)。Claude 根据任务写出脚本,由运行时在后台执行,会话在此期间仍然可以正常使用。

文档说,打开 ultracode 后,Claude 不再等你开口,会为每个实质性任务规划工作流,并由 Claude 判断哪些任务需要工作流。一个请求可能连着变成好几个工作流:一个用来理解代码,一个用来改代码,一个用来验证。

要用工作流,不一定非得打开 ultracode。文档说,如果只想让某一个任务以工作流方式运行、又不改动会话设置,可以在提示词里加上 ultracode 这个关键词,或者直接用自己的话说,比如「use a workflow」。

怎么打开

文档列了这几种打开方式:

  • 运行 /effort ultracode,在当前会话里打开;运行 /effort ultracode off 关闭。在 /effort 滑块里按 Tab 切换 Ultracode 开关,再按 Enter 确认。
  • 用 claude --effort ultracode 启动,会话会以 xhigh 档位启动,同时打开 ultracode。
  • 在设置文件里写 "ultracode": true,之后每个会话启动时都会打开。

给 --effort 参数传 ultracode 需要 Claude Code v2.1.203 及以上。/effort ultracode off 的写法、滑块开关,以及在 xhigh 以外的档位上保持 ultracode 打开,需要 v2.1.284 及以上。工作流被关闭,或者模型不支持 xhigh 档位时,ultracode 不可用。

ultracode 和 xhigh、max 是什么关系

Claude Code 的 effort 档位有 low、medium、high、xhigh、max 五档。文档对 xhigh 的描述是「Deeper reasoning at higher token spend」(花更多 token 做更深的推理),对 max 的描述是「the deepest reasoning level」(最深的推理档位)。ultracode 也列在同一张表里,但描述是「A Claude Code setting rather than a level: plans a dynamic workflow for each substantive task at any effort level」(是 Claude Code 的设置而不是档位:在任何 effort 档位下都为每个实质性任务规划动态工作流)。也就是说,effort 档位和 ultracode 是分开设置的:用 /effort 或 ultracode 设置打开、关闭 ultracode,不会改动 effort 档位;选一个档位,ultracode 也保持原样。只有 --effort ultracode 参数和 Agent SDK 的 effortLevel: "ultracode" 会同时把档位设成 xhigh。

文档还说,在 v2.1.284 之前,打开 ultracode 会把会话设成 xhigh,选别的档位则会把它关掉。effortLevel 设置和环境变量 CLAUDE_CODE_EFFORT_LEVEL 都不接受 ultracode。文档另外介绍了一个关键词 ultrathink:它只在当前这一轮要求更深的推理,不改会话的 effort 设置,发给 API 的 effort 档位也不变。

为什么这么费额度

Dynamic workflows 页面直接写了成本:「This applies to every task in the session, so each request uses more tokens and takes longer than the same request without a workflow. On a subscription plan those tokens draw on your usage limits, so a session with ultracode on reaches a session or weekly limit sooner than the same work with it off.」(这适用于会话里的每个任务,所以每个请求都比不用工作流的同一请求用掉更多 token、花更长时间。在订阅套餐上,这些 token 会计入你的用量额度,因此打开 ultracode 的会话,会比关掉时做同样的工作更快碰到会话或每周上限。)

这些 token 花在哪里,文档的其他部分也写到了。首先是许多代理同时运行:工作流默认最多同时运行 16 个代理,Claude Code 可用的 CPU 较少时会更少。用环境变量 CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS 可以把这个上限改成 1 到 256 之间的任意值(需要 v2.1.269 及以上),一次运行总共最多 1,000 个代理。其次,这些代理用的是会话的模型。如果没有其他地方给工作流里的代理指定模型,它就用会话当前的模型,所以会话用的是大模型,工作流里的代理也会用这个大模型。

另外,有几项检查会被跳过。文档说,打开 ultracode 就等于「already opts you in to large runs」(已经同意大规模运行),所以打开期间有三项检查不再生效:平时工作流计划启动超过 25 个代理、或者预计 token 总量超过 150 万时会出现的 Large workflow 提醒不再显示;对 Claude 用 Agent 工具启动的子代理,不再执行会话的并发子代理上限;在 auto 权限模式下,第一次启动工作流时不再请你确认。文档列出的这几项里,不包括工作流同时运行 16 个代理的上限。

怎么控制用量

文档建议,回到日常工作时用 /effort ultracode off 关掉 ultracode;或者不在整个会话里打开,只在单个任务的提示词里用 ultracode 关键词。跑大任务之前,文档建议先看一下 /model,并请 Claude 在不需要最强模型的阶段改用较小的模型。

文档还建议先在一小块范围上试,比如一个目录而不是整个仓库。/workflows 视图会实时显示每个代理的 token 用量,也可以在那里停止运行。想让运行少用一些代理,可以把 size guideline 设成 small。