Claude Media
Claude CodeのeffortSliderで/effortスライダーのキーを変える

Claude CodeのeffortSliderで/effortスライダーのキーを変える

v2.1.284で加わったeffortSliderコンテキストの3アクションを使い、/effortスライダーの左右キーとUltracodeトグルをkeybindings.jsonで再割り当てします。

effortSliderで変えられるキーは3つ

/effortを引数なしで実行すると開くスライダーの操作キーは、keybindings.jsonで再割り当てできます。対象はEffortSliderコンテキストの3アクションで、いずれもv2.1.284以降が必要です。

アクション既定のキー動作
effortSlider:decreaseEffort既定のキーLeft動作スライダーを一段低いeffortレベルへ動かす
effortSlider:increaseEffort既定のキーRight動作スライダーを一段高いeffortレベルへ動かす
effortSlider:toggleUltracode既定のキーTab動作このセッションのUltracodeをオン・オフする

同じコンテキストにはeffortSlider:thisSessionOnly(既定はs、v2.1.257以降)もあります。フォーカス中のレベルを、保存せずこのセッションだけに適用する操作です。EnterとEscapeは再割り当てできません。

toggleUltracodeは、スライダーがUltracodeを提示している場合にだけ働きます。ワークフローがオフのとき、またはモデルがxhigh effortに対応しないときは、そもそもトグルが出ません。

最小の設定例

~/.claude/keybindings.jsonにEffortSliderコンテキストのブロックを足します。Vim風に左右をh/lへ寄せる例です。

{
  "bindings": [
    {
      "context": "EffortSlider",
      "bindings": {
        "h": "effortSlider:decreaseEffort",
        "l": "effortSlider:increaseEffort",
        "u": "effortSlider:toggleUltracode"
      }
    }
  ]
}

キーの選び方は一例です。ファイルを保存すると変更は自動で検知され、再起動は要りません。動作は、Claude Codeで/effortを開いてhとlを押して確かめます。

/effort

/keybindingsを実行すると、keybindings.jsonが無ければ作成され、あれば開きます。ファイル全体の書式と既定のショートカットはClaude Codeショートカット一覧にあります。

既定のキーを外して置き換えるとどうなるか

上の例は、Left / Rightの既定割り当てを消していません。公式ドキュメントは、既定を外すには対象のキーにnullを指定すると説明しています。矢印キーを完全に無効にして、h / lだけで操作したい場合は次の形です。

{
  "bindings": [
    {
      "context": "EffortSlider",
      "bindings": {
        "left": null,
        "right": null,
        "h": "effortSlider:decreaseEffort",
        "l": "effortSlider:increaseEffort"
      }
    }
  ]
}

既定を外さず追加だけにする選択肢もあります。

Ultracodeのトグルを動かすキー

Tabの既定割り当ては、スライダー上のUltracodeトグルです。Tabを押してUltracodeを切り替え、Enterで適用する流れがドキュメントに書かれています。toggleUltracodeを別のキーに割り当てるのは、Tabを他の用途に取りたいときや、誤って押す事故を避けたいときに向きます。

UltracodeはeffortレベルではなくClaude Codeの設定です。オンにすると、Claudeは中身のあるタスクごとにワークフローを組みます。トークン消費は増え、サブスクリプションでは使用上限に早く届きます。オンオフはeffortレベルを動かしません。

くらべる

Ultracodeとeffortレベルの関係

1本の軸

v2.1.284より前

Ultracodeをオンにするとxhighに固定されます。別のレベルを選ぶとUltracodeはオフになります。/effort ultracode offの形は使えません(v2.1.284以降で使えます)。

2本の軸

v2.1.284以降

レベルを動かしてもUltracodeはそのままで、トグルを切り替えてもレベルは動きません。例外は--effort ultracodeとSDKのeffortLevel: "ultracode"で、オンにしつつxhighへ合わせます。

左右キーでレベルを調整し、Tabのトグルで別に切り替える2軸の操作なので、キー割り当ても2軸で考えます。変更の経緯はv2.1.284のリリースノートにあります。

環境変数CLAUDE_CODE_EFFORT_LEVELや組織のeffort上限でレベルが決まっているセッションでも、Ultracodeはそのレベルのままオンになります。永続化するのはスライダーではなくultracode設定の役割で、effortLevel設定とCLAUDE_CODE_EFFORT_LEVELにはultracodeを書けません。

キーワード起動側を止めたい場合は、スライダーではなく設定の話です。workflowKeywordTriggerEnabledでultracode起動を止めるで扱っています。

ModelPickerの左右キーは別コンテキスト

くらべる

同じ左右キーでも、コンテキストが別

EffortSlider

/effort のスライダー

effortSlider:decreaseEffort / increaseEffort(既定はLeft / Right)。Ultracodeのトグルと、s(このセッションだけ)も同じコンテキストにあります。

ModelPicker

/model のピッカー

modelPicker:decreaseEffort / increaseEffort(既定はLeft / Right)。このセッションだけに適用するmodelPicker:thisSessionOnly(既定はs)もあります。

EffortSliderのブロックに書いた割り当ては、ModelPickerには及びません。両方で同じ手の動きに揃えたいなら、2つのブロックを並べて書きます。

{
  "bindings": [
    {
      "context": "EffortSlider",
      "bindings": {
        "h": "effortSlider:decreaseEffort",
        "l": "effortSlider:increaseEffort"
      }
    },
    {
      "context": "ModelPicker",
      "bindings": {
        "h": "modelPicker:decreaseEffort",
        "l": "modelPicker:increaseEffort"
      }
    }
  ]
}

/modelのピッカーでは、モデルを選びながらこの左右キーでeffortも合わせられます。スライダーに集中して調整するなら/effort、モデルの切り替えと同時に済ませるなら/modelと、入口によって効くコンテキストが変わります。

左右キーで動くレベルの並びを知っておく

左右キーが動かすのはlow、medium、high、xhigh、maxの各レベルです。Opus 4.6とSonnet 4.6にはxhighがなく、low、medium、high、maxの4段です。スライダーが最初に指す位置は、次の順で決まります。

順番

スライダーの初期位置が決まる順番

  1. 1

    明示した指定

    CLAUDE_CODE_EFFORT_LEVEL、--effortでの起動、セッション内の/effortのいずれかです。

  2. 2

    settingsの値

    モデルごとに保存したレベルか、effortLevelキーです。

  3. 3

    モデルの既定

    Opus 5.5とSonnet 5.5はmedium、Opus 4.7はxhigh、それ以外はhighです。組織が組織既定モデルに既定のeffortを設定していれば、そのレベルになります。

Opus 5.5には落とし穴があります。ユーザー設定の最上位にあるeffortLevelは、Opus 5.5には効きません。このキーは、レベルをモデル別に保存する前の/effortが書いていた古い形で、Opus 5.5以降のモデルは、/effortか/modelのピッカーで選ぶまで自分の既定から始まります。プロジェクト・ローカル・管理設定の最上位effortLevelは全モデルに効きます。

レベルの名前は同じでも、内部の値はモデルごとに調整されています。Opus 5からOpus 5.5へ移るときは、前のレベルを持ち越さずmediumから試す、という説明がドキュメントにあります。

maxは最も深く推論するレベルです。CLAUDE_CODE_EFFORT_LEVEL環境変数で指定した場合を除き、現在のセッションだけに適用されます。過剰に考え込みやすいため、広く採用する前に試すよう書かれています。

スライダーを開かずに指定する方法

キーの再割り当ては、スライダーを開く前提の操作です。開かずに済ませる入口もあります。

入口

スライダーを開かない4つの入口

  • /effort <レベル名>

    スライダーなしで直接設定します。Enterで確定したときと同じく既定値として保存されます。/effort autoは、有効なモデルに保存したレベルを消します。

  • /effort ultracode

    Ultracodeを切り替えます。/effort ultracode offで止めます(v2.1.284以降)。

  • claude --effort ultracode

    起動時にxhighでUltracodeをオンにして始めます。

  • 環境変数・settings

    CLAUDE_CODE_EFFORT_LEVELか、modelSettingsのモデル別の値で決めます。maxはmodelSettingsとeffortLevelには書けず、続けて使うなら環境変数で指定します。

v2.1.289のclaude --helpでは、--effortは次のように表示されます。

  --effort <level>                      Effort level for the current session
                                        (low, medium, high, xhigh, max)

--helpの一覧にultracodeは出ませんが、v2.1.203以降は--effort ultracodeも受け付けます。それより前のバージョンではUnknown --effort value 'ultracode'と表示され、既定のeffortでセッションが始まります。

-pで動かす非対話実行では、/effortで決めたレベルはそのセッションだけに適用され、既定値としては保存されません。Remote Controlでつないだスマートフォンやブラウザーから選んだレベルも同様です。スライダー用のキー設定が効くのは、手元のターミナルで対話的に開いた場合に限られます。

キー名の書き方

bindingsのキーは+で修飾キーをつなぎます。ctrl、shift、alt(opt、option、metaも同じ)などがあり、大文字小文字は区別されません。Kとkは同じ割り当てで、Shiftと文字を組み合わせたいときはshift+kと書きます。

矢印はup、down、left、right、確定はenter、移動はtabとspaceなど、特殊キーにも名前があります。スペース区切りでctrl+k ctrl+sのように書くと、2打鍵の連続入力(コード)になります。次の打鍵は3秒以内に押す決まりです。

スライダーは左右と決定だけで足りるため、連続入力にするほどの理由は多くありません。1打鍵で済む文字キーか、ctrlと組み合わせた形が扱いやすいでしょう。

キリル文字など非ラテン配列で使うとき

Ctrl系の割り当ては、キー名を常にラテン文字で書きます。キリル文字のような非ラテン配列に切り替えていても、ctrl+wはctrl+wと書きます。

Kitty keyboard protocolに対応するターミナルでは、押した物理キーのUS配列上の位置で照合されます。位置を報告しないターミナルでは、送られてきた文字がそのまま照合されます。ASCIIの制御コードなら通り、キリル文字のまま届いたキー入力はどの割り当てにも当たりません。AZERTYのようにラテン文字を並べ替えた配列では、キーに刻印された文字で照合されます。

hとlのような素の文字キーでは、この差は出にくくなります。ctrl付きの割り当てを選ぶときに効いてきます。

つまずきやすい点

  • v2.1.284未満では効かない。3つのeffortSliderアクションはv2.1.284以降の機能です。claude --versionで確かめます
  • コンテキスト名の綴り。ブロックのcontextはEffortSlider、アクション名の接頭辞はeffortSlider:と、先頭の大文字小文字が違います
  • EnterとEscape。スライダーのこの2キーは再割り当てできません。確定とキャンセルは動かせない前提で設計します
  • 予約済みのキー。Ctrl+C、Ctrl+D、Ctrl+M、Ctrl+[、Ctrl+I、Ctrl+H、Caps Lockは再割り当てできません。Ctrl+Iは常にTabとして受け取られます
  • ターミナル側の衝突。Ctrl+Bはtmuxのプレフィックス、Ctrl+AはGNU screenのプレフィックス、Ctrl+ZはSIGTSTPに使われます。これらの近くのキーに割り当てるときは注意が要ります
  • cmd系の修飾キー。cmdやsuperは、Super修飾キーを報告できるターミナルでしか検出されません。どこでも動かしたいならctrlかmetaを使います

スライダー操作を変えるときの考え方

Enterで確定したレベルは既定値として保存され、以後のセッションにも適用されます。sで確定すると、このセッションだけに適用されます。レベルの意味と使い分けはClaude Code effortレベルの使い方と設定に、モデルごとの保存先はmodelSettingsのeffortをモデル別に直接編集するにあります。

キーを変える価値が出るのは、/effortを作業中に頻繁に開くときです。公式ドキュメントは、Claudeが作業している最中でも/effortを実行できると説明しています。新しいレベルはプロンプトキャッシュの警告を確認したあと、ターンの途中でも次のリクエストから適用されます。頻繁に上げ下げするなら、押しやすい位置に寄せる意味があります。

一方、たまにしか開かないなら既定のままで足ります。Left / Rightは矢印キーとして直感的で、再割り当てで得られるのは手の位置の調整だけです。

参照した一次ソース

この記事の記述は、次の一次ソースと照合しています。更新時に参照先が変わった場合は一覧も更新します。

  1. code.claude.com/docs/en/keybindings
  2. code.claude.com/docs/en/model-config
  3. code.claude.com/docs/en/workflows
この記事を共有:XはてブLinkedIn