Claude Code难度等级Low/Medium/High/Max完整对比与使用指南

Claude Code有五个难度等级,默认并非都如文档所说。难度控制思考深度和工具调用,但好上下文比高难度更重要。Opus和Sonnet默认值不同,选错反而降级。


前言:我也被“难度”坑了三个月

这事儿说来特别打脸。我一直以为把Claude Code调到最高难度Max,它就会像开了挂一样帮我解决所有复杂问题。结果有次我花了一整个下午让它在Max模式下重构一个模块,它给了我三千行代码,其中一半是重复的备选方案,另一半是它自己推翻自己的注释。

后来我实在受不了,把项目清理了一下,写了个特别清楚的CLAUDE.md,然后随手调到Medium。你猜怎么着?同样的任务,二十分钟搞定,代码干净得像刚洗过的盘子。

那一刻我才明白,难度等级不是智商开关,它更像一个“瞎折腾系数”。调高了,模型不一定更聪明,只是更爱折腾。

今天我就把Claude Code这五个难度等级的真实情况给你扒干净。社区里很多人还在用三月份那个被悄悄降级的默认值,文档里也没写清楚,我踩过的坑你就别踩了。

太长不看版先放这

先给你五个最核心的事实,后面再慢慢拆。

第一个事实是,Claude Code实际有五个难度等级,不是四个。官方界面只显示Low、Medium、High、Max四个选项,但配置文件里还能设一个xhigh,介于High和Max之间。

第二个事实是,难度本质上是一个行为信号,不是硬性的token预算。你把难度调到Low,遇到特别难的问题模型照样会思考,只是思考得少一些。它不会像个傻子一样完全不动脑子。

第三个事实是,Sonnet 4.6的默认难度是High,Opus 4.7的默认难度是xhigh。但Claude Code在Pro和Max套餐里的默认难度是Medium——这一点是今年三月份悄悄改的,从High降下来的,很多人到现在还不知道。

第四个事实是,难度等级同时控制四个东西:思考深度、调用工具的积极性、回复长度、以及模型自己推进多步任务的主动性。

第五个事实是,上下文质量往往比难度等级更重要。Low难度配上一份清晰的好上下文,经常能打败Max难度配上一团糟的烂上下文。这不是玄学,我后面给你讲道理。

难度到底控制什么

很多人以为难度只控制模型花多少时间思考,但这个理解太窄了。难度控制的是一个叫自适应推理的东西——模型根据任务复杂度自己决定每一步要不要思考、思考多少。难度等级的作用是调整这个决策的上限和倾向。

具体来说,难度同时影响四个方面。

第一是思考深度。这是最直观的部分。难度越高,模型在回答之前进行的内部推理就越多。Low模式下模型可能看了问题就直接给答案,Max模式下它会先在脑子里推演好几遍。

第二是工具调用积极性。这一点特别容易被忽略。难度高的模型会更主动地去读额外的文件、执行更多的命令、在动手之前先探索一下项目结构。难度低的模型则尽量少用工具,能问你就问你。

第三是回复长度。高难度模式下,模型倾向于给出更长、更详细的回答,会解释推理过程、列出备选方案、补充注意事项。低难度模式下,回复很简洁,有时候简洁到让你觉得它有点敷衍。

第四是自主推进的持久性。这是最体现行为信号本质的地方。在Low模式下,模型遇到不确定的情况就停下来,反过来问你澄清问题。但从Medium开始,模型会提前规划,然后自己持续推进,遇到小障碍也不轻易停下来问你。

每个模型对难度等级的响应尺度是不一样的。同一个名称的难度,在不同模型上不代表相同的底层行为强度。这一点很重要,我后面讲各模型差异的时候会展开。

五个难度等级逐个拆解

先说Low。这是最快的一个等级。遇到简单问题基本不思考,工具使用降到最低,回复非常简短。遇到模糊的地方就停下来等你给更多信息。Low模式适合什么场景?适合那些你全程在手动引导的快速交互式查询。比如你让模型查一下某个变量的引用位置,或者执行一个简单的grep命令,或者跑一下构建脚本。这种任务不需要深度推理,Low完全够用,而且响应速度飞快。

然后是Medium。这是平衡模式。该思考的时候就思考,没必要思考的时候就跳过。前面说了,Claude Code在Pro和Max套餐里的默认值就是Medium。很多人的代码助手其实一直跑在Medium上,但他们以为自己用的是High。Medium适合什么?适合日常的通用编程任务、小规模的重构、写单元测试、以及那些需要模型自主跑一段时间的会话。我自己大部分日常工作其实就在Medium上完成的,只要项目上下文准备得好,Medium完全够用。

接下来是High。Sonnet 4.6的默认难度就是High。在High模式下,模型几乎每次都会进入思考状态,会主动去读相关文件——即使你没明确要求它读,它也会自己去翻。回复内容很详尽,会给出完整的推理过程和代码示例。High是我个人推荐的默认选项,适合大多数真正的编码工作。比如多文件重构、复杂的调试、需要理解既有代码逻辑然后写新功能的任务。如果你不知道选什么,选High基本不会错。

然后是xhigh。这个等级在界面上没有直接显示,但可以通过配置文件或者命令行设置。xhigh比High再高一个台阶——推理更彻底,更愿意主动探索代码库,而且能跨会话保持推理状态。Opus 4.7的默认难度就是xhigh。xhigh是Opus模型做自主代理任务时的甜点位置。什么叫自主代理任务?就是那种你扔给模型一个目标,然后让它自己规划步骤、自己调用工具、自己处理中间结果,最后给你输出最终成果的任务。这种场景下,xhigh比High更稳,又不会像Max那样容易过度思考。

最后是Max。这是绝对的最高能力等级,没有token限制。但这里有个巨大的坑——Max模式只在当前会话中生效,除非你通过环境变量来设置。如果你只在settings.json里配了Max,然后你在界面上点了任何东西,系统会悄悄把它降级。这是一个已知的bug。Max只适合最难的那些问题——架构决策、特别隐蔽的bug排查、安全审查。对于日常任务,用Max反而会坏事。模型会过度思考,把简单问题复杂化,浪费大量token,输出质量还不一定比High好。

各模型对难度的响应差异

不同的模型对难度等级的反应完全不同。这一点官方文档没有强调,但实测下来差异非常明显。

Haiku 4.5是最便宜、最快的模型。它压根就不像Sonnet和Opus那样支持难度参数。或者说支持的逻辑不一样。Haiku适合什么?适合简单的查表操作、快速的小范围编辑、生成样板代码。你要是给Haiku一个复杂的重构任务,调成什么难度都没用。

Sonnet 4.6默认难度是High。这个模型有一个特别好的特性——它会紧密跟随指令,不会自己跑偏。所以你可以做一个很扎实的前期规划,写一个清晰的CLAUDE.md,然后把难度降到Medium来执行,这样既能省token,又不会损失太多效果。Sonnet在Medium模式下依然能完成多文件修改和测试编写,只是推理深度比High浅一些。如果你用的是Sonnet,我建议日常任务先用Medium试试,不行再切High。

Opus 4.7默认难度是xhigh。这个模型对难度参数的响应比之前的Opus 4.6更严格。什么叫更严格?就是Opus 4.7在低难度模式下会把工作范围收得很紧,不会自作主张去多做事。Opus 4.6有时候你给它设Low,它还会偷偷多做一些;但Opus 4.7很守规矩,说Low就真的只做最低限度。所以用Opus 4.7的时候,如果你发现它处理复杂问题时推理太浅,不要试图通过调整提示词来引导它,直接把难度调高就行。

不同任务该怎么选

说了这么多理论,我给你一个可以直接抄作业的表格,不对,咱们不能用表格,我改成文字列表。

文件重命名、简单的grep搜索、执行构建命令这类琐碎任务,用Sonnet加Low难度就够了。这些任务不需要推理,模型只需要准确执行指令。

日常通用编码、小规模重构、写测试用例,用Sonnet加Medium难度。这是最经济实惠的组合,token消耗不高,但完成率很好。

多文件重构、复杂的调试任务,用Sonnet加High难度。这个组合能覆盖绝大多数开发者的日常工作。

长时间的自主代理会话,用Opus加xhigh难度。xhigh是Opus做自主任务的甜点,比High更彻底,又不会像Max那样浪费。

架构决策、特别微妙的bug定位、安全审查,用Opus加Max难度。这些任务要么一次做对很重要,要么失败成本很高,值得多花token。

难度不等于智力:上下文质量陷阱

这是整篇文章最重要的一个观点。难度等级在一定程度上是上下文质量的替代指标。一个跑在Low模式但拥有极好上下文的模型,经常能打败跑在Max模式但上下文一团糟的同一个模型。因为Max模式下多出来的思考预算,大部分都被模型用来重建会话本应该已经拥有的状态了。

我举个真实例子。有一次我让Claude Code在Max难度下分析一个仓库的架构,但我没有给任何上下文。模型花了大量token去读各种文件、猜测目录结构、推断模块关系,最后给了一个充满猜测的分析,一半都是错的。

后来我把同样的任务调到Low难度,但事先写了一份清晰的CLAUDE.md,里面说明了各个模块的职责、关键文件的位置、以及我想解决的具体问题。结果Low模式下的输出又快又准。

这背后的道理很简单。模型在高难度下会“想更多”,但如果它缺乏必要的信息,想再多也是瞎想。就像一个侦探,你给他无限的时间去推理,但只给他三条线索,他再怎么想也破不了案。相反,你给一个普通侦探十条关键线索,他很快就能把事情理清楚。

我总结了一个实用经验:如果你发现一个任务在High模式下跑得很好,但降到Medium就崩了,这件事告诉你的不是模型不行,而是你的上下文设置有问题。因为一个真正清晰的任务描述和项目说明,不应该让Medium和High之间产生巨大差距。如果你需要靠High或Max才能让模型正常工作,说明你的CLAUDE.md写得太潦草了。

同样的道理,如果你发现自己总是要切到Max才能完成某个感觉上不应该那么难的任务,百分之八十的情况,问题出在上游——你应该去完善CLAUDE.md、写更清晰的计划、把任务拆成原子化的步骤、消除所有歧义,而不是指望着模型用更多的思考来替你补上这些漏洞。

如何修改难度等级

修改难度有好几种方式,我按持久化程度从低到高给你列出来。

第一种是按次修改。你在提示词里加上ultrathink这个词,就能把当次对话的难度设成High。但注意一个已知bug——如果你当前已经在xhigh或者Max模式下了,加ultrathink反而会把你降级到High,因为它不会从High往上升。

第二种是按会话修改。你在聊天窗口输入/effort后面跟等级名称,比如/effort high。或者在启动Claude Code的时候加上参数claude --effort high。

第三种是跨会话持久化。对于Low、Medium、High、xhigh这四个等级,你可以在~/.claude/settings.json文件里加上一行"effortLevel": "high"。之后每次启动都会默认用这个难度。

第四种是专门给Max用的。Max只能通过环境变量来持久化设置,命令是CLAUDE_CODE_EFFORT_LEVEL=max。如果你在settings.json里设Max,然后在界面上进行了任何交互,系统会悄悄把它降级,这是一个已知bug。

另外有两个实用命令。输入/effort不带任何参数会打开一个交互式滑块,你可以拖动选择难度。输入/effort auto会把难度重置为当前模型的默认值。

最后说几句大实话

这篇内容我对照了Anthropic的官方文档、GitHub上的issue讨论、以及社区里几篇写得不错的实践总结。自己也跑了不少实测。但我承认,Claude Code内部对难度等级的精确响应机制,官方并没有完全公开。我给出的这些判断是基于行为观察和社区共识。

如果你发现哪个细节跟我说的不一样,欢迎指正。这个领域变化很快,文档经常追不上代码的更新速度。

但有一点我很确定——别迷信Max。好上下文加合适难度,永远比烂上下文加最高难度更靠谱。先从Medium或High开始,把项目说明写清楚,把任务拆细,大概率你会发现根本不需要那些更高级的难度。