1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【小ネタ】VS Code の Copilot Chat モデルを左手ショートカットで直接切り替える Tips

1
Last updated at Posted at 2026-09-30

こんにちは、モデル選択も左手で済ませたいアーキテクトのやまぱん!です。

補足コメントや質問、いいね、拡散、ぜひお願いします!
間違っていたら 優しく 教えてください!

GitHub Copilot app や Microsoft Scout などもありますが、私は今も Visual Studio Code(以下、VS Code)をよく使っています。

軽い質問には軽量モデル、じっくり考えてほしいときには別のモデル。使い分けたいけれど、そのたびに一覧を開いて選ぶのはちょっと面倒です。

今回は、そんな面倒を少し減らす小ネタ Tips です。よく使う 4 モデルを選んで、VS Code の GitHub Copilot Chat(以下、Copilot Chat)に左手だけで押せるモデル切替キーを設定してもらいました。この記事では、実際にどう頼んだかと、設定内容、調べてわかった注意点をまとめます。

TL;DR

  • keybindings.json に workbench.action.chat.changeModel とモデル情報を登録する方法を紹介します。
  • Alt+Q/W/A/S を 4 モデルに割り当て、チャット入力中だけ有効にしました。
  • 自分で設定を書く代わりに、この記事と希望のキーを渡してコーディングエージェントに調査・設定を頼む方法もあります。
  • 確認した実装では、開いている複数のチャットが切替対象になります。 今の会話だけを変える設定ではありません。
  • 内部コマンドを使います。私の環境では、設定した 4 キーすべてでモデルが切り替わることを確認しました。

Alt+Q/W/A/S に 4 つのモデルを割り当てた設定の概要図

図は筆者が作成しました(元データ:本記事の設定例、2026/09/30 時点)。

一覧を開かず、決まったモデルを選びたい

Copilot Chat は、チャット入力欄のモデル選択からモデルを変更できます。公式ドキュメントには、よく使うモデルのピン留めも紹介されています。

最初はピン留めモデルの巡回を考えました。調べた環境には workbench.action.chat.switchToNextPinnedModel というコマンドがあります。

ただ、4 モデルを巡回する場合、目的のモデルに着くまでの回数が現在位置によって変わります。「このキーならこのモデル」と固定したほうが、自分の希望には合っていました。

今回は次の配置にしました。モデルの優劣を比較した結果ではなく、使い分けたいモデルにキーを割り当てたものです。

キー 今回割り当てたモデル
Alt+Q GPT-6 Luna
Alt+W Claude Sonnet 5.5
Alt+A GPT-6.1 Sol
Alt+S Claude Opus 5.5

Q・W・A・S はキーボード左側にまとまっています。数字キーまで手を伸ばさず選べる配置にしたかった、という小さな工夫です。

実際には Copilot に相談して設定してもらった

今回、最初から自分でコマンド名を調べて設定を書いたわけではありません。Copilot Chat で「モデルを素早く切り替える方法はある?」と相談するところから始めました。

このセッションで実際に送った言葉を、一部そのまま抜き出すとこんな感じです。

モデル選択を開くのも面倒なんだよねえピン留めモデル巡回か直接切り替えがいいかも・・?

左手だけで推しやすいのがいいなあ

最初は巡回案を考え、その後に「軽量ペアと重量ペアで分けられる?」とも相談しました。最後は Copilot が提案した Alt+Q/W/A/S の直接指定を選び、「これいいね設定しておいて」と依頼しました。

Copilot は、利用中のプロファイル、既存のユーザー設定、モデル ID を確認してから、キーバインドを追加しました。私は希望を伝え、調査とファイルの編集は Copilot に任せた、という流れです。設定例の検証まで依頼でき、実際のキー操作で 4 キーとも切り替わることは自分で確認しました。

読者向けにまとめるなら、こんな依頼

上のやり取りを一度の依頼にまとめると、次のようになります。これは実ログの引用ではなく、読者が自分の環境で頼むために整理した依頼文です。

VS Code の GitHub Copilot Chat で、よく使うモデルを左手だけで直接切り替えたいです。
希望は Alt+Q = GPT-6 Luna、Alt+W = Claude Sonnet 5.5、
Alt+A = GPT-6.1 Sol、Alt+S = Claude Opus 5.5 です。

利用中の VS Code とプロファイル、選択可能なモデル、既存キーの競合を確認してください。
モデル ID は推測せず、私の環境で確認できる情報を使ってください。
希望のモデルがなければ、勝手に別モデルへ置き換えず相談してください。
内部コマンドの制約と、他のチャットへの影響も説明してください。

設定ファイルにアクセスできる場合は、既存設定を保持してキーバインドを追加してください。
キーはチャット入力中だけ有効にしてください。
編集権限がなければ、必要な設定と適用手順を示してください。
設定の検証と実際のキー操作の確認を分けて、未確認事項を報告してください。

モデル名やキーは、自分の好みに置き換えれば大丈夫です。この記事を読めるコーディングエージェントに「この方法で、自分の環境に合わせて設定して」と頼むのもよさそうです。ローカルの設定ファイルへアクセスできるか、編集が許可されているかによって、実際に任せられる範囲は変わります。

以下は、自分で設定したい人や、エージェントが何を変更したか確認したい人向けの説明です。

前提と確認した範囲

対象は Windows 11 / VS Code 1.139.1 のローカル Copilot Chat。確認日は 2026/09/30 です。Copilot CLI や別のエージェント実行環境で同じように使えることは確認していません。

Copilot に調査と設定を依頼し、次の点を確認しました。

  • インストール済み VS Code 本体に changeModel コマンドがあること。
  • 引数の vendor・id・family でモデルを検索する実装になっていること。
  • この環境のモデル一覧で、設定した 4 モデルが選択可能になっていること。
  • キーバインドの構文、追加した 4 キーの重複、モデル情報との一致に問題がないこと。
  • 実際にチャット入力欄で 4 キーを押し、モデルが切り替わること。

複数チャットを開いた状態で他の会話も切り替わるか、IME や拡張機能との競合は未確認です。他のチャットへの影響は、実装の確認結果として書いています。

上のモデル名は私の環境で確認したものです。読者の環境で同じモデルが提供されるとは限りません。自分のモデル一覧にあるモデルの ID に置き換えてください。

キーバインドを設定する

キーバインドは、押したキーに実行するコマンドを対応させる設定です。VS Code は args でコマンドの引数、when で有効になる条件を指定できます。キーボードショートカットの公式説明も参考になります。

  1. Ctrl+K、続けて Ctrl+S を押して、キーボードショートカット画面を開きます。
  2. 画面の「キーボード ショートカットを開く (JSON)」を選びます。
  3. 次の 4 オブジェクトを、既存の keybindings.json の配列内に追加します。

既存設定を丸ごと置き換えないでください。 下のコードは空のファイルでも使える配列形式です。すでに項目がある場合は、外側の [ と ] は追加せず、既存の最後の項目との間にカンマを入れます。

[
  {
    "key": "alt+q",
    "command": "workbench.action.chat.changeModel",
    "when": "inChatInput",
    "args": {
      "vendor": "copilot",
      "id": "gpt-6-luna",
      "family": "gpt-6-luna"
    }
  },
  {
    "key": "alt+w",
    "command": "workbench.action.chat.changeModel",
    "when": "inChatInput",
    "args": {
      "vendor": "copilot",
      "id": "claude-sonnet-5.5",
      "family": "claude-sonnet-5.5"
    }
  },
  {
    "key": "alt+a",
    "command": "workbench.action.chat.changeModel",
    "when": "inChatInput",
    "args": {
      "vendor": "copilot",
      "id": "gpt-6.1-sol",
      "family": "gpt-6.1-sol"
    }
  },
  {
    "key": "alt+s",
    "command": "workbench.action.chat.changeModel",
    "when": "inChatInput",
    "args": {
      "vendor": "copilot",
      "id": "claude-opus-5.5",
      "family": "claude-opus-5.5"
    }
  }
]

vendor: copilot は、VS Code にモデルを提供する側の識別子です。モデル開発元の OpenAI や Anthropic を入れる欄ではありません。ここでは Copilot が登録したモデルを対象にしています。

when: inChatInput は、チャット入力中にだけキーを有効にする条件です。ただし、キーが有効になる場所と、切替対象のチャットの範囲は別です。この条件を付けても、コマンド自体が全チャットを対象にする挙動は変わりません。

設定を保存したら、チャット入力欄にカーソルを置いてキーを押し、入力欄のモデル名が対応する名前へ変わるか確認します。メッセージを送らなくても表示で確認できます。

自分のモデル ID を調べる

画面の表示名と、設定に使う ID は別です。今回の実装は vendor・id・family が一致するモデルを探すため、表示名から ID を推測しないのがポイントでした。

今回は Copilot Chat の debug log に残っていた models.json から、id と capabilities.family を取得しました。調べた Windows 環境では、次の場所にありました。

%APPDATA%\Code\User\workspaceStorage\<workspace-hash>\GitHub.copilot-chat\debug-logs\<sessionId>\models.json

<workspace-hash> と <sessionId> は環境・セッションごとに異なります。ファイルが手元にある場合は、PowerShell で次のように必要な列だけ確認できます。

$modelsPath = Read-Host 'models.json のフルパス(引用符なし)'
$models = Get-Content -LiteralPath $modelsPath -Raw -Encoding UTF8 | ConvertFrom-Json
$models | Where-Object { $_.model_picker_enabled -and $_.policy.state -eq 'enabled' } |
  ForEach-Object {
    [pscustomobject]@{
      Name = $_.name
      Id = $_.id
      Family = $_.capabilities.family
    }
  } | Format-Table -AutoSize

今回は ID と family が同じ文字列でしたが、常に同じとは決めつけず、取得した値をそれぞれ使います。モデル一覧は取得時点の情報なので、現在のモデル選択画面にも出ることを確認してください。

ログの保存形式は内部実装です。同じファイルが見つからない環境で、適当な ID を入れて再現する方法ではありません。また、周辺の会話ログには入力した内容が含まれ得るので、ディレクトリごと外部へ共有しないようにします。

注意点

今のチャットだけが変わるわけではない

VS Code 1.139.1 の本体実装を確認したところ、changeModel は getAllWidgets() で取得したチャットそれぞれにモデル変更を適用していました。対象モデルを持つウィジェットが変更対象になります。

複数の会話を「こちらは軽量モデル、あちらは別モデル」と分けている人は注意してください。これは実装の確認結果で、複数チャットの画面での再現は確認していません。

内部コマンドなので、更新で変わる可能性がある

公式ドキュメントで説明されている args や when の仕組みと、今回見つけた changeModel の引数形式は分けて考える必要があります。モデルの直接指定は、公式に案内された安定 API として紹介するものではありません。

VS Code 更新後に反応しなくなったら、同じコマンドや引数が今のバージョンでも使えるかを再確認します。

キーの競合を確認する

私の既存ユーザー設定に同じ 4 キーはありませんでした。ただし、拡張機能や OS 側も含めて「必ず空いているキー」とは言えません。

反応しない場合は、キーボードショートカット画面の Show Same Keybindings で同じキーへの割り当てを確認できます。さらに Developer: Toggle Keyboard Shortcuts Troubleshooting を実行すると、検出されたキーと実行コマンドをログで確認できます。手順は公式のトラブルシューティングにあります。

なお、プロファイルを使い分けている場合は、利用中のプロファイルのキーバインドを編集します。今回は既定プロファイルに設定しました。

2 モデルならピン留め巡回という選択肢も

「軽量モデルと重量モデルの 2 つだけでよい」なら、2 モデルをピン留めして、次のコマンドにキーを割り当てる案もあります。

{
  "key": "alt+q",
  "command": "workbench.action.chat.switchToNextPinnedModel",
  "when": "inChatInput"
}

上の直接指定設定と同時に追加する例ではありません。同じ Alt+Q を使うので、どちらかを選びます。

確認した実装では、巡回コマンドは最後にフォーカスしたチャットを対象にし、利用可能なピン留めモデルを順に選びます。4 キーを覚えるより、2 モデルを交互に使いたい場合はこちらが候補になります。ピン留めの操作は公式の説明を参照してください。

参考・出典

  • AI language models in VS Code:モデル選択とピン留めの公式説明。
  • Keyboard shortcuts for Visual Studio Code:キーバインドの引数、条件、競合確認の公式説明。
  • GitHub Copilot app:導入で触れたアプリの公式紹介。
  • Microsoft Scout の配布入口:導入で触れたアプリの案内リンク。取得時はサインイン画面へ遷移しました。
  • 筆者環境での実装確認(2026/09/30、VS Code 1.139.1):インストール済み本体の workbench.desktop.main.js、Copilot 拡張機能のモデル登録処理、およびセッションの models.json。直接指定コマンドの引数と対象範囲の根拠はこちらであり、上の公式ドキュメントによる保証ではありません。
  • 筆者と Copilot Chat の今回のセッション(2026/09/30):相談の流れと本文の発言引用の出典。引用と、読者向けに整理した依頼文は区別しています。

あとがき

今回やったのは、大きなアプリ開発ではなく、モデル切替のキーを 4 つ設定することです。こういう「ちょっと面倒だけど、そのままにしている操作」の改善も、コーディングエージェントに頼めます。

やりたいことを伝えて、候補を出してもらい、自分に合うものを選んで設定を任せる。この記事を渡して依頼するのも、その入口になると思います。もちろん、変更内容と実際の動作は確認が必要です。

大きな自動化だけでなく、こうした小さな省力化も、まず一つ取り入れてみてください。いつも使う VS Code の「ちょっと面倒」を減らす用途にも、Copilot を使ってよいと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?