Files
Jason 1f786dadd0 docs(release): expand the Codex session compression section in v4.0.7 notes
Explain how the switch maps to config.toml, when Codex actually compresses
sessions, how resuming and CC Switch's session list and usage handle
compressed rollouts, and what to watch out for (Codex version, startup
notice, turning it off, other tools that read .jsonl). Move it to the top
of the new features.
2026-10-10 18:44:33 +08:00

18 KiB
Raw Permalink Blame History

CC Switch v4.0.7

4.0 正式版の 3 回目の修正リリース

同じ OpenAI アカウントの Plus と Team のワークスペースを 4.0 で切り替えられなかった問題を修正しました。利用枠は 3.x と同じく「使用済み」で表示することもでき、「設定 → 一般 → 外観」で切り替えられます。Codex の古いセッションを CC Switch から圧縮できるようになり、セッション管理と使用量統計も圧縮後のセッションを読み込めます。直接接続とルーティングを切り替えた後にも CC Switch が Codex の再起動を案内するようになり、Windows ではこの案内が初めて表示されるようになりました。使用量統計では、Claude の 1 時間キャッシュ書き込みの料金や一部の中継サービスのキャッシュヒットなど、計算を誤っていた箇所をいくつか修正しました。4.0 の更新内容の全体は v4.0 リリースノート をご覧ください。


新機能

Codex の古いセッションを圧縮できるように。 Codex は各セッションを ~/.codex/sessions の下にすべて記録しており、よく使うとこのディレクトリが数十 GB まで膨らみます。Codex 自身には開発中の圧縮機能があり、デフォルトではオフです。今回 CC Switch にそのスイッチを追加し、圧縮後のセッションも読み込めるようにしました。

  • 有効にする方法: 「設定 → アプリ設定 → Codex」で「Codex の古いセッションを圧縮」をオンにします。その横に sessions と archived_sessions の 2 つのディレクトリが現在合計でどれだけの容量を使っているかが表示されます。このスイッチは Codex の config.toml を直接変更します。オンにすると [features] の下に local_thread_store_compression = true を書き込み、オフにするとこの行を削除します。CC Switch がこの設定を別に保存することはありません。
  • 圧縮されるタイミング: オンにしてもすぐには圧縮されません。Codex は起動するたびに、7 日以上更新のないセッションファイルをバックグラウンドで同じ名前の .jsonl.zst に圧縮し、元のファイルを削除します。実測では、圧縮後のサイズは元のおよそ 6 分の 1 です。
  • 古いセッションを続けるには: これまでどおり Codex で続けるだけです。Codex がまずそのセッションを元の形式に展開します。
  • CC Switch での扱い: 圧縮されたセッションもこれまでどおりセッション一覧に表示され、閲覧や削除ができます。使用量も通常どおり集計され、圧縮の前後で二重に計算されることもありません。セッションが多くても一覧をすばやく開けるよう、CC Switch は圧縮ファイルの先頭だけを読み込むため、これらのセッションには最後の返信のプレビューが表示されず、最終アクティブ時刻にはファイルの更新日時を使います。
  • 注意点: 新しめのバージョンの Codex が必要で、変更後は Codex を再起動すると有効になります。Codex でまだ開発中の機能のため、オンにすると Codex は起動するたびに通知を表示します。スイッチをオフにすると新しいセッションは圧縮されなくなりますが、圧縮済みのセッションはそのまま残り、Codex で続けたときにだけ展開されます。.jsonl のセッションファイルを直接読み込むほかのツールでは、圧縮後のセッションを読み込めないことがあります。

このスイッチをオンにしなくても、Codex のバックグラウンドサービスが自分でセッションを圧縮することがあります。これまで CC Switch は圧縮されていないセッションファイルしか認識しなかったため、こうしたセッションはセッション一覧から消え、使用量も取り込まれませんでしたが、現在はどちらも正常に読み込めます。

利用枠を「使用済み」で表示できるように。 4.0 では各枠の利用枠を「残り x%」の表示に変えましたが、3.x の「使用済み x%」に慣れている方や、Codex 自身の表記に合わせたい方もいるため、設定で選べるようにしました。「設定 → 一般 → 外観 → 残量の表示」で「残り」(デフォルト)または「使用済み」を選ぶと、プロバイダーカード、「アカウント」ページ、トレイの表示がそれに合わせて変わります。切り替わるのは各枠のパーセンテージだけで、残高、Codex Credits、リセット回数は常に残りを表示し、使い切った枠はこれまでどおり「使い切り」と表示します。色と「残りわずか」の通知は引き続き残りで判断するため、使用済み 94% は残り 6% と同じくオレンジ色です。展開後のプログレスバーの長さは表示している数字に合わせ、使用済み 30% なら 30% 分を描きます。

直接接続とルーティングを切り替えた後にも、Codex の再起動を案内するように。 すでに開いている Codex は、起動時に読み込んだモデル一覧を使い続けています。これまでは集約モードでしか確認しておらず、直接接続とルーティングを切り替えた後は、モデル一覧が変わっても案内しませんでした。現在は 3 つのモードすべてで確認します。案内を閉じた後にモデル一覧がまた変わると、案内が再び表示されます。

Windows でも Codex の再起動の案内が表示されるように。 これまでは Codex が動いているかどうかをシステムのプロセス一覧を読んで判断していましたが、この方法は Windows では使えず、モデル一覧とアカウントの案内はどちらも表示されず、再起動ボタンも常にバックグラウンドサービスが動いていないと表示していました。現在 Windows では、Codex のバックグラウンドサービス自身が記録しているプロセス ID で動作中かどうかを判断し、動作中と確認できたときだけ再起動ボタンを表示します。CC Switch は Windows では Codex のデスクトップ版やエディター拡張機能を検出できないため、モデル一覧やログイン中のアカウントが前回案内を閉じたときと異なっていれば、「切り替え前から開いている Codex は、以前のアカウントやモデル一覧を使い続けている可能性があります」と案内します。これらのクライアントを開いていなければ、そのまま案内を閉じてかまいません。アップグレード直後にこの案内が表示されることはありません。

各アプリのページのメニューから「設定ディレクトリ」を開くと、設定ページがそのアプリの項目までスクロールするようになりました。項目の枠線が 2 回点滅します。スクロール中にご自身でスクロールしたりクリックしたりするとすぐに止まり、システムで動きを減らす設定がオンのときはアニメーションなしで直接移動します。

修正

  • 同じ OpenAI アカウントの Plus と Team のワークスペースを、Codex で切り替えられなかった問題。 4.0 では Codex の公式ログインをユーザー単位でしか識別していなかったため、同じ人の別のワークスペースが「このアカウントにはすでにログインしている」とみなされ、auth.json が書き換えられず、再起動の案内も表示されませんでした。ログイン情報を一時保存するときもユーザー単位で記録していたため、同じ人の複数のワークスペースは 1 つ分しか残りませんでした。現在は「ユーザー + ワークスペース」で識別し、Codex 自身がアカウントの変更を判断する方法と同じになりました。アップグレード後、一時保存したログイン情報は自動で整理され、まとめられてしまったワークスペースは公式カードから取り戻せます。ログアウト済みのアカウントは復元されません。
  • Codex プロバイダーのアドレスが config.toml の最上位に書かれていると、編集して保存したときにアドレスが削除されていた問題。 こうした設定ではエディターの「API エンドポイント」が空で表示され、保存するとアドレスが削除されて、ルーティングで「Codex Provider 缺少 base_url 配置」(base_url の設定がない)というエラーになっていました。直接接続モードでは、このプロバイダーに切り替えると OpenAI 公式のアドレスにつながっていました。現在は最上位のアドレスを [model_providers.custom] に移すため、エディターに表示され、保存しても残ります。フォームもこの書き方を生成しなくなりました。
  • Windows のユーザー名に日本語や中国語などの非 ASCII 文字が含まれていると、「アプリ」ページでツールのアップグレードに失敗していた問題。「指定されたパスが見つかりません」と表示されていました。Claude Code のプロバイダーカードの「ターミナルを開く」も一時的な設定を読み込めず、Claude Code はエラーを出さずにデフォルトの設定で起動していました。プロジェクトのディレクトリに日本語や中国語が含まれる場合も同様です。原因は、CC Switch が生成するバッチファイルを UTF-8 で書き込んでいたのに、cmd.exe はコンソールのコードページで読み込んでいたことです。現在はアップグレードスクリプトが最初に UTF-8 に切り替えます。この切り替えはスクリプト自身の非表示ウィンドウの中でだけ有効です。「ターミナルを開く」ではコードページを切り替えず(切り替えるとご自身のターミナルの設定が変わってしまうため)、これらのパスをバッチファイルに直接書き込まないようにしました。
  • Codex で公式プロバイダーのまま古いサードパーティのセッションを続けると、再起動を求めるエラーが表示されていた問題。 Codex はセッションを続けるとき、セッション作成時のプロバイダーを引き継ぐため、サードパーティのセッションは常にローカルルーティングを指したままで、Codex を再起動しても解決しません。現在はエラーで、これが古いサードパーティのセッションであり、新しいセッションを始める必要があることを説明します。Codex が実際に設定を読み直していない場合にだけ、再起動を案内します。
  • Claude の 1 時間キャッシュ書き込みが 5 分の料金で計算されていた問題。 1 時間キャッシュ書き込みの単価は入力料金の 2 倍、5 分は 1.25 倍ですが、これまではすべて 5 分として計算していたため、かなり少なく計上されていました。現在はルーティングのリクエストログと Claude Code のセッションの取り込みのどちらでも、分けて計算します。
  • 一部の OpenAI 互換の中継サービスで、キャッシュヒットが 0 と表示されていた問題。 中継サービスによっては cache_read_input_tokens を常に 0 にして、実際のヒット数を prompt_cache_hit_tokens に入れています。これまでは 0 を読んだ時点で探すのをやめていたため、キャッシュヒットが 0 と表示され、ヒットしなかった入力も多めに計上されていました。現在は 0 のときは次のフィールドも確認します。Claude Code をルーティング経由で OpenAI Chat 形式に変換する場合と、Codex、Grok Build で Chat 形式の上流を使う場合は、いずれもこのルールで読み取ります。
  • Codex のセッションから取り込んだ使用量に、キャッシュ書き込みが含まれていなかった問題。 GPT-5.6 と GPT-6 のキャッシュ書き込みが通常の入力として計算されていましたが、現在は別に記録します。
  • Claude Sonnet 5.5 と Haiku 5.5 の費用が 0 と記録されていた問題。 内蔵の料金表にこの 2 つのモデルを追加しました。
  • 「使用量」の「Claude」ページで、同じプロバイダーを Claude Code と Claude Desktop の両方で設定していると、同じ記録が 2 行表示されていた問題。アプリを切り替えた後も古い行が残っていました。
  • OpenCode と MiniMax Code の追加オプションで、1 つを編集すると、変更していないほかの値の型が変わっていた問題。 たとえば文字列の "123"、"false" が数値や真偽値として保存されていました。現在は変更していない値はそのまま残り、名前を既存の名前に変更することもできなくなりました。
  • OpenClaw で「User-Agent を送信」をオン・オフすると、ほかのカスタムリクエストヘッダーがすべて削除されていた問題。 現在は User-Agent の 1 項目だけを変更します。
  • Pi と MiniMax Code の「火山 Agent Plan」プリセットが Coding Plan のアドレスを使っていた問題。そのため Agent Plan の Key が使えませんでした。現在は Agent Plan 専用のアドレスを使い、新たに「火山 Coding Plan」プリセットも追加しました。

その他:

  • 中国語版の集約モードガイドと 3 言語のユーザーマニュアルに、Codex のよくある質問を 2 つ追加しました。サブエージェントが別のプロバイダーに切り替わるとタスクを読めない問題と、公式の 5 時間枠を使い切った後に /model が Luna Reserve に固定される問題です。後者はサードパーティのプロバイダーを一時的にデフォルトにすると回避できます。
  • 「Codex セッション履歴を統一」の説明を、Codex CLI だけを対象とする内容に変更しました。Codex のデスクトップ版は更新後、すべてのプロバイダーのセッションを表示できるようになったため、デスクトップ版だけを使う場合はオンにする必要はありません。

アップグレードに関する注意

データベースの構造は変わっていません。 バージョンは 20 のままです。

アップグレード後、Claude のキャッシュ書き込みの費用が高くなります。 1 時間キャッシュを使っている場合(Claude Code のメインセッションは通常これに当たります)、新しい記録のキャッシュ書き込みは正しい料金で計算されるため、1 日あたりの費用がアップグレード前より一段高くなります。これは以前の計上が少なすぎたためで、値上げではありません。アップグレード前の記録は再計算しません。

Claude Sonnet 5.5 と Haiku 5.5 でこれまで 0 と記録されていた費用は、起動時に新しい料金で再計算されます。Haiku 5.5 は 10 万トークン以内の料金だけで計算するため、それより長いプロンプトは少なめに計上されます。

追加済みの「火山 Agent Plan」プロバイダー(Pi、MiniMax Code)は自動では変更されません。「API エンドポイント」の /api/coding/v3 を /api/plan/v3 に変更するか、削除して新しいプリセットで追加し直してください。


謝辞

@ggbdpq(中継サービスのキャッシュヒットが 0 と表示される問題、OpenCode の追加オプションの型が変わる問題、直接接続とルーティングの切り替え後の再起動の案内)、@Chaoqi31(Claude の 1 時間キャッシュ書き込みの料金計算と、Codex のセッション取り込みでのキャッシュ書き込みの報告と修正)、@Yanxcyan(Claude Sonnet 5.5 / Haiku 5.5 の料金、火山 Agent Plan プリセット)、@hulkbig(OpenClaw のカスタムリクエストヘッダーが削除される問題の報告と修正)、@Railgun-wiki(使用量統計の重複行の報告と修正)、@funkpopo(設定ページでアプリ設定の項目までスクロール)の貢献に感謝します。

問題の報告や提案をしてくださった @yleo888、@harvey500、@friendlzw、@burningimlam、@JinLin-Yu、@winter-maple、@SamPheng、@cjmarklll、@LeenixP、@EMnian にも感謝します。

技術的な詳細は CHANGELOG をご覧ください。