同じ課題に実装方針が2つ浮かんで、どちらで進めるか決めきれない。VS Code 1.128は、その2案を1つのClaudeエージェントセッション内の別チャットで並走させ、生成結果を横に並べて見比べられる。筆者はこの機能を、方針を捨てる前の「試し打ち」の道具として使っている。
目次
何が起きたのか
VS Code 1.128が2026年7月8日に公開された。目玉は、1つのClaudeエージェントセッションの中で複数のチャットを同時に持てるようになったことだ。各チャットは独立した会話履歴・タイトル・モデル選択を持ち、親となるClaudeセッションの配下に「ピアチャット」としてグループ化される。
この設計が効くのは、比較検討と分岐の作業だ。過去のターンからbranch(分岐)して別解を試したり、複数の実装アプローチを並列で走らせたりできる。VS Codeを再起動してもセッションは復元されるので、昨日の3案を今朝そのまま開き直せる。
もう1つ、ワークスペースを開いていなくても使えるQuick Chatsが入った。Agentsウィンドウで ⌘K ⌘N を押すと専用のChatsセクションに軽いチャットが生える。リロード後も残る。プロジェクトを開くまでもない質問を、その場で投げて捨てられる。
Copilot Visionも正式版になった。画像やPDFの添付が標準化され、貼り付け・ドラッグ&ドロップ・コンテキストメニューのどれでも渡せる。エージェントはツール呼び出しの中で添付画像を読みにいく。エラー画面のスクショや設計PDFを、テキストに起こさず直接渡せるようになった。デザインカンプを1枚渡して「この画面をコンポーネントに落として」と頼む、といった使い方が手間なくできる。
2案並走のワークフローを実手順で
どちらの方針が良いかをコードを書く前に机上で決めようとすると、たいてい決めきれない。ReduxとZustandのどちらが今回の規模に合うかは、実際に同じ機能を組んで依存の増え方やテストの書きやすさを見るまで判断がつかない。頭の中の比較は、手を動かした比較にほぼ勝てない。並走はこの「書いてみないと分からない」を、両方書いてから選ぶ形に変える。
筆者が実際に回している手順はこうだ。まず親のClaudeエージェントセッションを開き、最初のチャットで方針Aを走らせる。たとえば「状態管理をReduxで実装して」と指示する。
次に同じセッション内で新しいピアチャットを立て、方針Bを投げる。「同じ機能をZustandで実装して」といった具合に、前提だけ揃えて別解を要求する。2つのチャットは履歴が分かれているので、Aの文脈がBに漏れない。
Chat 1(方針A): Reduxで状態管理を実装
Chat 2(方針B): Zustandで同じ機能を実装
→ 親セッション配下にピアチャットとして並ぶ
分岐が生きるのはこの後だ。方針Aの途中で「この設計ならミドルウェアの層を変えたらどうなるか」と気になったら、その手前のターンからbranchして枝を伸ばす。元のAは残したまま、A’を別履歴で育てられる。捨てる判断を後回しにできるのが、探索段階ではありがたい。
生成された2つの差分をエディタのdiffビューで並べ、命名・依存関係・テストの書きやすさを見る。ここで劣る方を閉じ、残った方に本実装を任せる。3案を試して2案を捨てる、という動きが1画面で完結する。
チャットのキーボードナビも改善され、複数チャット間の移動がキー操作だけで済むようになった。方針Aとその分岐A’、方針Bの3枚を行き来しながら差分を追う場面で、マウスに持ち替える回数が減る。ブラウザをどのタブ位置に開くかの設定も入ったので、生成物のプレビューを右端に固定して比較に集中する、といった画面の作り込みもできる。
サブエージェントのread-only監視とQuick Chatsの使いどころ
長めのタスクをワーカーに任せると、そのサブエージェントの読み取り専用トランスクリプトがAgentsウィンドウに「read-only peer chats」として並ぶ。ワークスペースを開き直さずに、ワーカーが今どのファイルを触っているか、どこで詰まっているかを覗ける。進捗に質問を投げることもできる。
数十分かかるリファクタを1つ走らせつつ、その進捗を横目で監視しながら別チャットで設計メモを詰める、といった並行作業がやりやすくなった。ワーカーが誤った前提で突き進んでいたら、トランスクリプトを見て早めに気づける。完了を待ってから修正指示を出すより、途中で軌道を直す方が手戻りが小さい。
例えば依存パッケージを一括で上げるリファクタをワーカーに任せると、途中でテストが赤いまま先へ進む場面がある。read-only peer chatでその赤を早めに見つければ、「そのテストは仕様変更で落ちているから無視して進めて」と一言足すだけで済む。完了報告を待ってから全部やり直すのに比べ、直しが1行の指示で終わる。
Quick Chatsの出番は、リポジトリを開くほどでもない相談だ。「この正規表現の意味を説明して」「gitのこのエラーの原因は」といった単発の問いを、Agentsウィンドウで ⌘K ⌘N から生やして処理する。ワークスペースの文脈に紐づかないぶん、頭の切り替えが軽い。
OS級のキーボードショートカットも入り、VS Codeがフォーカスを持っていなくてもチャットを呼び出せる。ブラウザで調べ物をしながら、手を止めずに質問を投げられる。
1.130 に入っている設定キーを数えた
この記事は 1.128 の時点で書いた。手元の VS Code は2つ先の 1.130.0 になっていたので、機能がどう残っているかを実体で確かめた。UI を触る代わりに、インストール済みのバンドルから設定キーを抜き出す方法を取っている。
# インストール先の workbench バンドルから chat.* の設定キーを抜く
grep -ohE '"chat\.[a-zA-Z]+(\.[a-zA-Z]+)*"' \
".../Microsoft VS Code/<hash>/resources/app/out/vs/workbench/workbench.desktop.main.js" \
| sort -u
chat. で始まる設定キーは400個あった。このうち複数セッションに関わるものを抜き出す。
| 設定キー | 関係する話 |
|---|---|
chat.viewSessions.enabled / .orientation並走の実体 |
セッションを並べて表示する。orientation で並べ方を切り替える |
chat.agentSessions.defaultConfiguration |
新しいセッションの既定設定 |
chat.newSession.defaultMode |
新規セッションの既定モード |
chat.sessions.confirmArchive |
セッションを畳むときの確認 |
chat.sessionSync.enabled / .excludeRepositories |
セッションの同期と、リポジトリ単位の除外 |
chat.subagents.allowInvocationsFromSubagents |
サブエージェントからさらにサブエージェントを呼べるか |
コマンド側にも workbench.action.chat.archiveAllAgentSessions、chatSessionPrimaryPicker、assignSelectedAgent が入っていた。2案を並走させて片方を畳む操作は、1.130 でもコマンドとして残っている。
数えていて目についたのは sandbox 系だった
探していたのは複数セッションのキーだが、量で目立ったのは別の系統だった。
chat.agent.sandbox.enabled
chat.agent.sandbox.enabledWindows
chat.agent.sandbox.allowAutoApprove
chat.agent.sandbox.allowNetwork
chat.agent.sandbox.allowedNetworkDomains
chat.agent.sandbox.deniedNetworkDomains
chat.agent.sandbox.allowUnsandboxedCommands
chat.agent.sandbox.fileSystem.windows / .mac / .linux
chat.agent.terminal.autoApprove
chat.agent.terminal.allowList
ファイルシステムとネットワークを別々に絞れて、Windows だけ有効化を切り替えられる。並走の話をするなら、並べたセッションが互いの作業領域を壊さないかのほうが先に効いてくる。設定キーの並びが、そこを想定した作りになっていた。
未検証: 設定キーとコマンドIDが存在することは確かめたが、UI を操作して2案並走のワークフローを実際に回してはいない。キーがあることと、期待どおり動くことは別になる。
CLI版Claude CodeとVS Code拡張の使い分け
マルチチャットが強くなったことで、CLI版Claude CodeとVS Code拡張の役割が前より分かれてきた。筆者の使い分けを表にする。
| 観点 | CLI版 Claude Code | VS Code 拡張(1.128) |
|---|---|---|
| 得意な作業 | 長時間の自動バッチ、スクリプト連携、ヘッドレス実行 | 対話的な比較検討、GUIでの進捗監視 |
| 複数エージェント | ログを追跡して把握 | ピアチャットを1画面に並べて監視 |
| 方針の比較 | ターミナル出力を読み比べる | 複数チャット+diffビューで横並び |
| 画像・PDF添付 | パス渡しが中心 | 貼付・ドラッグ&ドロップで直接(Vision GA) |
| 自動化との相性 | CI・cron・パイプに組み込みやすい | 手作業の探索・レビュー向き |
切り分けはシンプルだ。人手を介さず回したい定型処理はCLI、目で見比べて選ぶ探索はVS Code。両者は競合しない。夜間に走らせるテスト生成やドキュメント一括更新はCLIに任せ、翌朝その結果をVS Codeで開いてレビューする、といったリレーも組める。
開発者としての実践ポイント
- 迷った2案は、頭の中で優劣を決める前に別チャットで両方走らせる。生成結果のdiffを見てから捨てる。
- 気になった脇道は、元のチャットを止めずに過去ターンからbranchして枝で試す。本筋を汚さない。
- 数十分級のタスクはワーカーに投げ、read-only peer chatで進捗を監視しながら別チャットで手を動かす。
- リポジトリを開くまでもない単発の質問は
⌘K ⌘NのQuick Chatsに逃がす。文脈を汚さない。 - エラー画面や設計PDFはテキストに起こさず、Vision GAで画像のまま添付して読ませる。
複数のエージェントを1画面に集約する発想をさらに突き詰めたい人は、筆者がTauri+SvelteKit+Pythonで自作した複数AIエージェントを1画面に統合するMission Controlの設計記事も読んでみてほしい。統合UIで何が速くなるかを、実装の裏側から書いている。
よくある疑問
チャットごとに別のモデルを割り当てられるのか。割り当てられる。各チャットはモデル選択を独立して持つので、方針Aのチャットに推論の重いモデル、方針Bのチャットに軽量モデルを当て、速度と質のバランスを変えながら見比べられる。同じ課題に別モデルを二枚差して、出力の癖の違いを確かめる使い方もやりやすい。
branch(分岐)は具体的に何に使うのか。会話の途中で「この前提を変えたらどうなるか」を試したいときに使う。元のチャットを進めたまま、気になったターンから枝を伸ばして別の指示を与える。分岐前の履歴は共有され、分岐後だけが分かれる。失敗した枝は捨て、良かった枝を本筋に採る。仮説を潰す試行を、元の会話を壊さずに回せる。
CLI版Claude Codeと同時に使えるのか。使える。役割が別なので競合しない。筆者はCLIで夜間バッチを走らせ、VS Codeで日中の比較レビューをする形で並行させている。同じリポジトリを両方から触っても、作業の性質が分かれているぶん混ざりにくい。
まとめ
複数エージェントを1画面で回す作業は、CLIのログ追跡よりVS Codeのマルチチャットの方が比較と監視が速い。長時間の自動バッチはCLI、方針を見比べる探索はVS Code、と使い分けるのが今の筆者の結論だ。
1.128は、AIコーディングの単位を「1本の会話」から「並走する複数の会話」へと押し広げた。方針を1つに絞る前に、まず2案を並べて走らせる癖をつけたい。捨てた案の履歴も残るので、後から「あの時こっちを選んでいたら」を検証し直せるのも効いてくる。