20 KiB
CC Switch v4.0.12
今回のリリースでは、「アプリ」ページでコーディングツールのインストール、アップグレード、アンインストール、インストールの競合の検出まで、ひととおり管理できるようになりました。同じツールが複数の場所にインストールされている場合、不要なほうを選んでアンインストールでき、競合を CC Switch の中で解消できます。アップグレードの前に Node のバージョンを確認し、新しいバージョンがより新しい Node を必要とする場合は、失敗するとわかっているアップグレードボタンを表示しなくなりました。Grok Build の新しいインストール方法でもアンインストールできるようになりました。また「ローカル」グループを追加し、このマシンで動いている Ollama、LM Studio、llama.cpp、vLLM を直接追加できるようになったほか、Ollama Cloud、Groq、Hugging Face、Vercel AI Gateway など 14 のクラウドプラットフォームのプリセットも追加しました。セッションログのバックグラウンドスキャンは 60 秒ごとから 10 分ごとに変わり、普段のリソース消費が減りました。使用量ページを開いているときは選んだ間隔でスキャンするため、新しい使用量はむしろ早く表示されます。インターフェースにトルコ語(コミュニティ翻訳)を追加し、システムの言語がサポート対象外の場合は初回起動時に英語を使うようになりました。ほかにも、クラウド同期での Skills の復元に一度失敗するとそれ以降ずっと復元できなくなる問題や、Claude Code がルーティング経由で Responses のアップストリームに接続したときに応答の終了後にエラーが出る問題などを修正しました。4.0 の更新内容の全体は v4.0 リリースノート をご覧ください。
新機能
「アプリ」ページで、インストール、アップグレード、アンインストール、インストールの競合の検出がそろいました。 v4.0.11 でアンインストールを追加したのに続き、このバージョンで残りの部分を補いました。ひとつのツールが複数の場所にインストールされている場合、「インストールを診断」がそれぞれを一覧表示し、コマンドラインで実際に使われる「既定」のものに印を付けます。アンインストール時にそのうちどれでも選べるようになったので、使いたいものを残し、競合を CC Switch の中で直接解消できます。アップグレードの前に Node のバージョンを照合し、インストールできない、またはインストールしても動かないアップグレードを提示しなくなりました。
アンインストール時に、どのインストールをアンインストールするか選べるようになりました。 これまで確認ダイアログでは現在使われている 1 つしか選べませんでしたが、複数インストールしているユーザーがアンインストールしたいのは、別のほうであることがよくありました。また、インストールが複数あってどれが既定か判別できないと、アンインストールはそのまま失敗していました。現在は確認ダイアログに、検出したすべてのインストールをインストール元、パス、バージョン、「既定」の印とともに一覧表示します。アンインストールできるのが 1 つだけならそれを自動で選択し、2 つ以上あるときはあらかじめ選択しません。自動でアンインストールできないものは理由を表示し、選べないようにします。実行前に選んだパスでもう一度確認し、プレビューと一致しなければ実行しません。
- Grok Build 0.2.112 以降のインストール方法(
~/.grok/bin/grok-<version>)に対応しました。これまでは「自動でアンインストールできません」と表示されていました。アンインストールではこのインストールのプログラムファイルをすべて削除しますが、削除するのはファイルだけでディレクトリは削除せず、config.tomlとセッションは残ります。 - 公式スクリプトでインストールしたツールをアンインストールするとき、同じプログラムを指す起動リンク(例:
~/.local/bin/grok)も一緒に削除し、使えないコマンドが残らないようにしました。 - 公式のインストールがあり、さらに
~/.grok/config.tomlで npm による更新を設定している場合、npm のほうはgrok updateによって再びインストールされます。確認ダイアログでこの点をお知らせします。 - Windows で Hermes をアンインストールするとき、実行中の Python がロックされてファイルが残る可能性があることを確認ダイアログで案内します。アンインストールコマンドは成功したのに、その後の状態確認に失敗した場合は「アンインストールコマンドが完了しました。結果を確認してください」と表示するようになり、アンインストールの失敗と誤って表示することはなくなりました。
アップグレード前に Node のバージョンを確認します。 OpenClaw 2026.9.3 以降は Node 24.16 以上が必要で、古い Node ではアップグレードが必ず失敗するのに、「アプリ」ページにはアップグレードボタンが表示されたままでした。独自のチェックを持たない npm パッケージはさらに厄介で、npm は警告を出すだけでインストールしてしまい、インストール後に動きません。現在は新しいバージョンを見つけると、まずそのバージョンが必要とする Node のバージョンを読み取り、そのインストールが実際に使っている Node と比較します。条件を満たさない場合、その行には先に Node をアップグレードする必要があると表示し、アップグレードボタンは表示せず、「すべて更新」でもスキップします。アップグレードの実行前にももう一度確認します。判別できないバージョン指定や確認の失敗でアップグレードを止めることはなく、ネイティブのプログラム・Homebrew・Bun のインストールと WSL 内のインストールはそもそも確認しません。
「アプリ」ページの表示が整いました。 アンインストールは各行の赤いボタンから、行末の「…」メニューに移しました。ヘッダーと各行で同じ列幅を使うようにし、バージョン列がそろいました。バージョンの読み込み、更新の検出、更新の確認の間に、ヘッダーや各列が左右に動くこともなくなりました(#8293)。非表示にしたアプリの説明をよりはっきり書き直しました。表示しないだけで、プロバイダーや MCP などの設定は残っており、そのアプリ自身の設定ファイルも変更されません。
ローカル推論サービス:Ollama、LM Studio、llama.cpp、vLLM。 プロバイダーを追加するときの「クラウド事業者」の後ろに「ローカル」グループが加わりました。中身はこのマシンの推論サービスに接続するプリセットで、デフォルトのアドレスは各サービスの既定のポート(Ollama 11434、LM Studio 1234、llama.cpp 9931、vLLM 8000)です。llama.cpp の旧バージョン、Homebrew、Docker でよく使われる 8080 ポートは予備のアドレスとして入っています。これらのサービスはデフォルトでは Key を検証しないため、プリセットには各サービスのドキュメントで使われているプレースホルダーの値を入れています。使う前にサービスを起動し、モデルをダウンロードしておく必要があります。プリセットのデフォルトのモデルは手元にあるモデルに変更でき、「モデル一覧を取得」を押してサービスから読み込むこともできます。コンテキストウィンドウは、サービスを起動したときに設定した長さが基準になります。
- Claude Code と Codex はローカルサービスの Anthropic Messages と Responses のインターフェースに直接接続し、Claude Desktop はルーティング経由で接続します。OpenCode、OpenClaw、Hermes、Pi では、それぞれの組み込みプロバイダーの状況に応じて提供します(アプリに組み込まれているものは重複して追加しません)。
- このマシンのアドレス(localhost、127.0.0.1 など)宛てのリクエストは、CC Switch で設定したプロキシやシステムプロキシを経由しなくなりました。これまではプロキシを設定していると、ルーティングの転送、速度テスト、モデル一覧の取得といったリクエストがプロキシに送られ、ローカルサービスに接続できませんでした。
プリセット: Ollama Cloud、Baseten、Meta Model API、DeepInfra、Vercel AI Gateway、Nebius Token Factory、Groq、SambaNova、DigitalOcean、Hugging Face、Microsoft Foundry、Fireworks AI、Mistral AI、Cloudflare AI Gateway を追加しました。OpenCode に SiliconFlow の中国版とグローバル版を追加しました(#4500)。StreamLake に Codex のプリセットを追加し、すべての StreamLake プリセットを公開の KAT-Coder エンドポイントに切り替えたため、エンドポイント ID を自分で作成する必要はなくなりました。
改善
セッションログのスキャン:バックグラウンドの負荷が減り、使用量ページへの反映が早くなりました。 これまでは必要かどうかにかかわらず、バックグラウンドで 60 秒ごとにセッションログをスキャンしていたため、CC Switch を長時間開いていると、その分のディスク読み込みと CPU を消費し続けていました。一方、使用量ページの「自動更新間隔」はデータベースを読み直すだけで、セッションの使用量は結局この 60 秒を待つ必要があり、5 秒を選んでも意味がありませんでした(#8301)。現在、この設定は「セッションログのスキャン間隔」に名前が変わりました。使用量ページを開くとすぐに 1 回スキャンし、ウィンドウが再び表示されたときにももう 1 回スキャンし、その後は選んだ間隔(5、10、30、60 秒、デフォルト 60 秒)でスキャンします。バックグラウンドのスキャンは 10 分ごとになり、取りこぼしを防ぐためだけのものになったので、普段のバックグラウンドの消費は大きく減りました。「オフ」の選択肢はなくなり、「セッションログを自動スキャン」をオフにしているときはこの設定を表示しません。ルーティング経由の使用量はもともとリアルタイムで記録されているため、影響はありません。
プロバイダーの検索ボックスが、カードを隠したり押し下げたりしなくなりました。 検索ボックスはこれまでリストの上に浮かんで表示され、最初のカードの編集ボタンやその他の操作ボタンを隠していました(#8100)。現在はカードのすぐ上の行の右端に置かれます。Claude Code、Codex、Gemini CLI、Grok Build ではモードの行、ほかのアプリでは「追加済み」の見出しの行です。検索を開いても、カードが隠れることも、下に押し下げられることもありません。
インターフェースの言語。 コミュニティ翻訳によるトルコ語を追加しました。まだ翻訳されていない文言は英語で表示されます(#8208)。初回起動時、システムの言語がインターフェースでサポートしていない言語(ドイツ語、フランス語、韓国語など)の場合、インターフェースとトレイは英語を使うようになり、デフォルトで簡体字中国語になることはなくなりました。すでに選んだ言語には影響しません。
修正
- クラウド同期で Skills の復元に一度失敗すると、それ以降ずっと復元できなくなっていた問題(#8153)。Windows でクラウド同期のダウンロード中にファイルが使用中(os error 5)だと
skills.bakが残り、その後は復元のたびにその処理で失敗していました。現在は復元時にクラウドの Skills を別のディレクトリにまるごとコピーしてから全体を置き換え、skills.bakを再利用しなくなりました。置き換えとロールバックの両方に失敗した場合は、元の完全なコピーを残し、その場所をエラーメッセージに示します。 - Claude Code がルーティング経由で OpenAI Responses のアップストリームに接続しているとき、応答が終わった後にエラーを受け取っていた問題(#8138)。アップストリームが終了イベントを送り終えてから接続を切ると、CC Switch は正常に終了した後にさらにストリームエラーを送っていたため、クライアントが完全な応答を失敗として扱うことがありました。現在は終了後の接続エラーは転送しません。
- MCP、プロンプト、料金の編集ページでサイドバーの現在のページをもう一度クリックすると、「未保存の変更があります」による保護が失われていた問題(#7900)。これまでは変更を破棄するかの確認が表示され、確認した後も編集ページは開いたままでしたが、その後ページを離れても警告が出なくなり、変更がそのまま失われていました。現在は現在のページをクリックしても何も起きません。
- アップストリームが空のエラー内容を返したとき、エラーメッセージの末尾にコロンだけが残っていた問題(#6910)。CC Switch がアップストリームの説明を握りつぶしたように見えていました。現在は「アップストリームからエラー内容が返されませんでした」と明記します。
- Pi のセッション履歴の速度が常に「—」と表示されていた問題(#8278)。Pi のセッションを取り込むとき、所要時間を常に 0 として記録していました。現在は各応答のリクエスト開始時刻と書き込み時刻から所要時間を推定し、条件を満たすレコードでは推定速度を表示できます。
- Pi の設定ディレクトリが WSL を指しているとき、書き込みのたびに WSL が対応していないシステムコールをまず試していた問題(#8245)。Skills の有効化や AGENTS.md の保存では、WSL のパスで使える書き込み方法を直接使うようになりました。自動モードでの Skills の同期はコピーになり、手動でシンボリックリンクを選んでいる場合は引き続きはっきりとエラーを表示します。
- Windows で自動更新による再起動後、OpenCode や Codex に組み込まれたモデル一覧を読み込むときに、まだツールが見つからないことがあった問題(#8262)。v4.0.11 でインストールとアップグレードを修正しましたが、今回は補った PATH をこの 2 か所でも使うようにしました。PATH 内の
%PNPM_HOME%のような変数参照も、ユーザーとシステムの環境変数に従って展開します。
アップグレードに関する注意
データベースの構造は変わっていません。 バージョンは 20 のままです。
- 使用量ページを開いていないとき、バックグラウンドでのセッションログのスキャンは 10 分ごと(以前は 60 秒)になるため、ルーティングを経由しない使用量は統計に反映されるまで最大 10 分遅れます。使用量ページを開くとすぐにスキャンします。以前「オフ」を選んでいた場合は 60 秒になります。
- Pi の速度の推定は、アップグレード後に新しく取り込んだレコードにだけ適用されます。取り込み済みのレコードは引き続き「—」と表示されます。
- 新しいプリセットと StreamLake の変更は、新しく追加するプロバイダーにだけ影響します。追加済みの StreamLake プロバイダーは引き続き元のエンドポイント ID を使います。
- Claude Desktop でローカルのプリセットを選ぶと、フォームの Key が空になるため、プレースホルダーの値を手動で入力してください。Ollama は
ollama、LM Studio はlmstudio、llama.cpp はno-key、vLLM はdummyです。サービスの起動時に Key を設定した場合は、設定した値を入力してください。
謝辞
@funkpopo(使用量ページのセッションスキャン間隔、「アプリ」ページの列の整列、アンインストール時の通知と Windows の PATH のフォローアップ、Pi のセッション速度の推定)、@xue-ding-e(Skills の復元失敗、Responses の応答終了後のストリームエラー、検索ボックスがカードを隠す問題)、@alkank(トルコ語のインターフェースとトレイ)、@AristurtleHu(Pi の設定ディレクトリが WSL にあるときの書き込み)、@Owlbay(未保存の変更の保護)、@loulanyue(アップストリームの空のエラー内容)、@xwil1(OpenCode の SiliconFlow プリセット)、@Lingbou(Windows CI のテストのタイムアウト)の貢献に感謝します。
問題の報告、再現情報や修正のアイデアの提供に協力してくださった @HessianZ、@bubblevv、@JimMoen、@chufeng、@Wikian233 に感謝します。
技術的な詳細は CHANGELOG をご覧ください。