チーム全体をhighまでに制限したい。どう設定する?
managedまたはプロジェクト設定でmaxEffortLevelをhighにする。ドキュメントによれば、--effortやCLAUDE_CODE_EFFORT_LEVELによるものを含め、それより高いレベルは上限で実行される。v2.1.267以降が必要。
/effortで設定した値はどこに保存される?
自分のマシンの対話型セッションでは、現在のモデルのmodelSettings配下に保存される(v2.1.251より前は最上位のeffortLevelに書いていた)。-p、Agent SDK、リモートワーカーではそのセッションのみに適用される。/effort autoで消去できる。
ultrathinkはmaxEffortLevelに制限される?
私が読んだ公式の内容はこれに答えていない。リリースノートはultrathinkがターンをxhighで実行するとしか述べていない。両者の相互作用は仮定せず、自分で試すこと。
エンジニアではありません。一言でいうと?
Effortは助手に「どれだけ考えさせるか」を頼むことだ。メモで指定する人もいれば、社内規定で上限を決める人もいる。ルールは、上限が最優先で、その次に最も近く具体的な指示が勝つ、ということだ。
Claude Codeのeffort設定は複数の場所に散らばっている。effortLevel、modelSettings、maxEffortLevel、--effort、環境変数CLAUDE_CODE_EFFORT_LEVEL、/effortコマンド、ultrathinkキーワードだ。複数が同時にあるとき、どれが優先されるのか。本稿は公式の設定リファレンスから優先順位を整理する。私が読んだページは一部が途切れていたため、読めた部分だけを書き、読めなかった部分はそう記した。どの組み合わせも検証していない。
CLAUDE_CODE_EFFORT_LEVEL:ドキュメントによれば--effortとeffortLevelの両方より優先される。受け付ける値は読めなかった。--effort:1セッションのみで、effortLevelキーより優先される。modelSettings配下のモデルのeffortLevelが、最上位のeffortLevelより優先される。effortLevel:文字列で、読めた値はlow、medium、high、xhigh、既定は未設定。レベルを保存していないモデルの既定値を設定する。これらすべての上に上限がある。maxEffortLevel(v2.1.267以降)だ。ドキュメントによれば、セッションが使えるeffortに上限をかけ、/effort、/modelピッカー、--effort、CLAUDE_CODE_EFFORT_LEVELからのものを含め、それより高いレベルは上限で実行される。値はlowからmaxで、maxは上限なしを意味する。modelSettings配下でモデルごとの上限も設定できる。
/effort low、medium、high、xhighを実行すると、Claude Codeは最上位のeffortLevelではなく、現在のモデルのmodelSettings配下にレベルを保存する。v2.1.251より前は、/effortが最上位のキーに書いていた。-p実行、Agent SDKでは、/effortはそのセッションのみに適用される。/effort autoは、使用中のモデルに保存したレベルを消去する。effortLevelは新しいモデルに効かない:ドキュメントによれば、~/.claude/settings.jsonではこのキーは、/effortがモデルごとにレベルを保存する前に書いていた旧形式で、Opus 5、Fable 5.1、それ以前のモデルには引き続き適用される。Opus 5.5とそれ以降のモデルはこれを無視し、レベルを保存するまで自身の既定値で始まる。プロジェクト、ローカル、managed設定、--settingsでは、このキーはすべてのモデルに適用される。これで「ユーザー設定にxhighと書いたのに、なぜOpus 5.5で使われないのか」に明確な答えが出る。maxEffortLevel: "medium"を設定すると、--effort xhighでもmediumで実行される。highを送る。常に考えるモデル(Opus 5.5、Sonnet 5.5、Haiku 5.5、Fableモデル)では、thinkingをfalseにしても効果がない。混同しやすい2つだ。ultracode(設定ページにあるキー)は、Claudeが実質的なタスクごとに指示なしでワークフローを計画する機能で、ドキュメントによれば、動的ワークフローが有効で、モデルがxhighに対応している場合にのみ計画する。セッションのeffortは変えず、セッションの現在のレベルで動く。/effort ultracodeは現在のセッションのみ、--effort ultracodeも1セッションのみでxhighで有効になる。v2.1.284より前はultracode: trueでセッションがxhighで動き、xhigh未満の上限ではultracodeがオフになっていた。ultrathinkはプロンプト内のキーワードで、v2.1.311のリリースノートによれば、対話型ターミナルでAnthropic API経由のOpus 5.5、Sonnet 5.5、Haiku 5.5、Fable 5.1を使うとき、そのターンがxhigh effortで実行され、Claudeの作業中に入力するとターンの残りが引き上げられる。私が読んだ設定ページにはultrathinkの語がないので、ここでの挙動はリリースノートのみが根拠だ。またmaxEffortLevelの上限がultrathinkも制限するかは、読んだ範囲では見つからなかったので、仮定しないこと。
以下は私の整理で、公式の助言ではない。個人の好みには/effortを使う(モデルごとの枠に保存される)。チーム全体の上限はmanagedまたはプロジェクト設定のmaxEffortLevelに置く。明示的な指定さえ上書きするからだ。CIや定期タスクには最優先のCLAUDE_CODE_EFFORT_LEVELか--effortを使う。ユーザー設定に最上位のeffortLevelを手書きして新しいモデルにも効くと期待するのは避ける。コストについて、ドキュメントが述べるのは、低いレベルは単純なタスクでより速く安く、高いレベルは複雑な問題でより深く推論するということだけで、公式ページにレベルごとのコスト比はなく、私も数字を持っていない。