教程2026-11-01 · 智涌AI

Claude Code effort 档位怎么设:子 Agent 与 ultrathink

Claude Code effort 档位教程头图:终端展示 CLAUDE_CODE_SUBAGENT_EFFORT 环境变量、/effort status 命令、子 Agent 定义里的 effort: low 与 maxEffortLevel 上限配置

Claude Code 的 effort 档位决定模型每一步想多深:档位低,回得快、费的 token 少;档位高,会多测边界情况、多验证几遍再交活。10 月 31 日发布的 2.1.316 加了 CLAUDE_CODE_SUBAGENT_EFFORT 和 CLAUDE_CODE_DISABLE_ULTRATHINK 两个环境变量,子 Agent 从这一版起可以不再跟着主会话的档位走。下面按 Anthropic 官方文档和 CHANGELOG(2026-11-01 北京时间查阅)把主会话、子 Agent、Skill 和 ultrathink 四处的档位设置理一遍,每一步都附了可以直接改的配置。

前置条件

第一步:先看清现在跑在哪一档

在会话里输入 /effort status,会打印当前档位。默认值按模型不同:Opus 5.5、Sonnet 5.5、Haiku 5.5 默认 medium,Opus 4.7 默认 xhigh,其余支持 effort 的模型默认 high。

从 Opus 5 换到 Opus 5.5 的人要留意:官方说 Opus 5.5 在 medium 下的编码和知识类评测,已经追平或超过 Opus 5 在 high 下的成绩,而且同一档位下 Opus 5.5 每轮想得更多。所以别把原来的 high 原样搬过去,先从 medium 起步。

档位官方建议的场景
low每步你都会看结果的短交互:头脑风暴、出草稿、改个变量名
medium范围清楚的日常开发,比如实现一个新功能
high需要验证、边界情况多的活,比如在老代码里修 bug
xhigh更深的推理,token 花得更多
max想让它自己啃的难题,比如找安全漏洞;官方提醒容易想过头,先小范围试

第二步:给主会话定档

最常用的是 /effort:不带参数会弹出滑块,左右键选档;直接写 /effort high 也行。确认方式决定它管多久:在滑块里按 Enter,或者直接敲 /effort 档位,会按模型存进用户设置的 modelSettings,以后的会话都用这一档;按 s 只管当前会话(2.1.257 起)。max 例外,除非用环境变量设,否则只在当前会话生效。想清掉某个模型存下的档位,用 /effort auto。

几处来源同时设了档位时,Claude Code 按下面的顺序取第一个:

顺序来源管多久
1环境变量 CLAUDE_CODE_EFFORT_LEVEL从这个 shell 启动的所有会话
2会话里选的档位(/effort、/model 滑块)按 Enter 存盘,按 s 只管本次
3启动参数 --effort这一次启动
4设置文件里的 modelSettings 或 effortLevel长期
5模型自己的默认档什么都没设时

还有一种情况:想让 API 用它自己的默认档,可以在启动前 export CLAUDE_CODE_EFFORT_LEVEL=auto(写 unset 效果相同),这时 Claude Code 不发送档位,/effort status 显示 Effort level: auto。如果后面还跟着「currently 某档」,说明仍在发送档位,多半是设了低于 max 的 maxEffortLevel。

改档位不会打断正在跑的回合,新档位从你下一条消息开始算。Claude 还在干活时,可以发一句 keep going 排进队列,等手上的工具调用结束,后面的活就按新档位跑。

第三步:给子 Agent 和 Skill 单独定档

派出去搜代码、跑测试的子 Agent,多数用不着主会话那么高的档位。最省事的做法是在定义文件的 frontmatter 里写 effort:

---
name: test-runner
description: 跑测试并汇总失败用例
tools: Read, Grep, Glob, Bash
model: haiku
effort: low
---

只运行测试命令,汇总失败的用例和报错位置,不要修改代码。

这个字段在子 Agent 运行期间覆盖会话档位。你在对话里让 Claude「用 high 跑这个子 Agent」时,它会在这次调用里传 effort 参数,覆盖 frontmatter,子 Agent 被恢复后也保持这一档(2.1.292 起;fork 出来的子 Agent 不支持)。/tasks 里每个子 Agent 那一行会写出它的模型和单独设的档位。

2.1.316 新加的 CLAUDE_CODE_SUBAGENT_EFFORT 是兜底:调用和定义文件都没写档位时,子 Agent 按它跑,不再继承主会话。主会话常开 high 的人,可以这样启动:

export CLAUDE_CODE_SUBAGENT_EFFORT=low
claude

Skill 也有 effort 字段,作用范围是触发它的这一回合剩下的部分;Skill 写了 context: fork 时,这个值改成设定 fork 出来的子 Agent 的档位。Skill 正文里还能用 ${CLAUDE_EFFORT} 读到当前档位,按档位调整给模型的指令。

检索、跑测试这类子 Agent 开 low,主会话保留原档位,省下的额度留给需要推理的那几步。

第四步:封顶,以及关掉 ultrathink

在提示词里写 ultrathink,只把这一回合往深里想,不改会话档位。2.1.311 起,终端里这个词显示成彩虹色时,说明这一回合会升到 xhigh。如果脚本或模板里会带上这个词,又不希望它改变档位,可以设 CLAUDE_CODE_DISABLE_ULTRATHINK=1 把关键词关掉(2.1.316)。

想给所有档位设个上限,用 maxEffortLevel。下面的写法把所有模型封在 medium,Sonnet 4.6 单独放开:

{
  "maxEffortLevel": "medium",
  "modelSettings": {
    "claude-sonnet-4-6": { "maxEffortLevel": "max" }
  }
}

超过上限的档位一律按上限跑,/effort、--effort、环境变量、Skill 和子 Agent 的 frontmatter 都管得住。这个限制由 Claude Code 在每次请求前自己执行,Bedrock、Agent Platform、Foundry 上同样有效。企业版管理员还能按角色给每个模型设上限,两层都存在时取更低的那个。

常见坑

完成标准

最后

先把 /effort status 跑一遍,再给最常用的那个子 Agent 加一行 effort: low。子 Agent 的 tools、model 和作用域还没配过的,看站内这篇 Claude Code 子 Agent 配置教程。

关注公众号「智涌AI速递」

每天的 AI 快讯、实用教程和 AI项目实测,也会同步发到微信公众号。在微信里搜索「智涌AI速递」就能关注;不用微信的话,可以用 RSS 订阅本站。