mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-04-08 07:03:22 +08:00
Add optional `nameKey` field to all preset interfaces for localized display names. The preset selector and form now resolve `nameKey` via i18next, falling back to `name` when unset. - zh: 优云智算 / en+ja: Compshare - Update model ID prefix ucloud/ → compshare/ in OpenClaw presets - Update partner promotion copy and README sponsor descriptions
474 lines
30 KiB
Markdown
474 lines
30 KiB
Markdown
<div align="center">
|
||
|
||
# CC Switch
|
||
|
||
### Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw のオールインワン管理ツール
|
||
|
||
[](https://github.com/farion1231/cc-switch/releases)
|
||
[](https://github.com/farion1231/cc-switch/releases)
|
||
[](https://tauri.app/)
|
||
[](https://github.com/farion1231/cc-switch/releases/latest)
|
||
|
||
<a href="https://trendshift.io/repositories/15372" target="_blank"><img src="https://trendshift.io/api/badge/repositories/15372" alt="farion1231%2Fcc-switch | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
|
||
|
||
[English](README.md) | [中文](README_ZH.md) | 日本語 | [Changelog](CHANGELOG.md)
|
||
|
||
</div>
|
||
|
||
## ❤️スポンサー
|
||
|
||
<details open>
|
||
<summary>クリックで折りたたむ</summary>
|
||
|
||
[](https://platform.minimax.io/subscribe/coding-plan?code=ClLhgxr2je&source=link)
|
||
|
||
MiniMax-M2.5 は、実際の生産性向上のために設計された最先端の大規模言語モデルです。多様で複雑な実環境のデジタルワークスペースでトレーニングされた M2.5 は、M2.1 のコーディング能力をベースに一般的なオフィス業務へと拡張し、Word・Excel・PowerPoint ファイルの生成と操作、多様なソフトウェア環境間のコンテキスト切り替え、異なるエージェントや人間チーム間での協働を流暢にこなします。SWE-Bench Verified で 80.2%、Multi-SWE-Bench で 51.3%、BrowseComp で 76.3% を達成し、計画的な行動と出力の最適化トレーニングにより、前世代よりもトークン効率に優れています。
|
||
|
||
[こちら](https://platform.minimax.io/subscribe/coding-plan?code=ClLhgxr2je&source=link)から MiniMax Coding Plan の限定 12% オフを入手!
|
||
|
||
---
|
||
|
||
<table>
|
||
<tr>
|
||
<td width="180"><a href="https://www.packyapi.com/register?aff=cc-switch"><img src="assets/partners/logos/packycode.png" alt="PackyCode" width="150"></a></td>
|
||
<td>PackyCode のご支援に感謝します!PackyCode は Claude Code、Codex、Gemini などのリレーサービスを提供する信頼性の高い API 中継プラットフォームです。本ソフト利用者向けに特別割引があります:<a href="https://www.packyapi.com/register?aff=cc-switch">このリンク</a>で登録し、チャージ時に「cc-switch」クーポンを入力すると 10% オフになります。</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td width="180"><a href="https://aigocode.com/invite/CC-SWITCH"><img src="assets/partners/logos/aigocode.png" alt="AIGoCode" width="150"></a></td>
|
||
<td>本プロジェクトは AIGoCode のスポンサー提供でお届けしています。AIGoCode は、Claude Code・Codex・最新の Gemini モデルを統合したオールインワンのAIコーディングプラットフォームで、安定性・高速性・コストパフォーマンスに優れた開発サービスを提供します。柔軟なサブスクリプションプランを備え、レスポンスも非常に高速です。さらに、CC Switch ユーザー向けの特典として、<a href="https://aigocode.com/invite/CC-SWITCH">このリンク</a>から登録すると、初回チャージ時に10%分のボーナスクレジットが付与されます!</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td width="180"><a href="https://www.aicodemirror.com/register?invitecode=9915W3"><img src="assets/partners/logos/aicodemirror.jpg" alt="AICodeMirror" width="150"></a></td>
|
||
<td>AICodeMirror のご支援に感謝します!AICodeMirror は Claude Code / Codex / Gemini CLI の公式高安定リレーサービスを提供しており、エンタープライズ級の同時接続、迅速な請求書発行、24時間年中無休の専用テクニカルサポートを備えています。
|
||
Claude Code / Codex / Gemini 公式チャンネルが最安で元価格の 38% / 2% / 9%、チャージ時にはさらに割引!AICodeMirror は CC Switch ユーザー向けに特別特典を用意:<a href="https://www.aicodemirror.com/register?invitecode=9915W3">このリンク</a>から登録すると初回チャージ 20% オフ、法人のお客様は最大 25% オフ!</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td width="180"><a href="https://cubence.com/signup?code=CCSWITCH&source=ccs"><img src="assets/partners/logos/cubence.png" alt="Cubence" width="150"></a></td>
|
||
<td>Cubence のご支援に感謝します!Cubence は Claude Code、Codex、Gemini などのリレーサービスを提供する信頼性の高い API 中継プラットフォームで、従量課金や月額プランなど柔軟な料金体系を提供しています。CC Switch ユーザー向けの特別割引:<a href="https://cubence.com/signup?code=CCSWITCH&source=ccs">このリンク</a>で登録し、チャージ時に「CCSWITCH」クーポンを入力すると、毎回 10% オフになります!</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td width="180"><a href="https://www.dmxapi.cn/register?aff=bUHu"><img src="assets/partners/logos/dmx-en.jpg" alt="DMXAPI" width="150"></a></td>
|
||
<td>DMXAPI のご支援に感謝します!DMXAPI は 200 社以上の企業ユーザーにグローバル大規模モデル API サービスを提供しています。1 つの API キーで全世界のモデルにアクセス可能。即時請求書発行、同時接続数無制限、最低 $0.15 から、24 時間年中無休のテクニカルサポート。GPT/Claude/Gemini が全て 32% オフ、国内モデルは 20〜50% オフ、Claude Code 専用モデルは 66% オフ実施中!<a href="https://www.dmxapi.cn/register?aff=bUHu">登録はこちら</a></td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td width="180"><a href="https://www.compshare.cn/coding-plan?ytag=GPU_YY_YX_git_cc-switch"><img src="assets/partners/logos/ucloud.png" alt="Compshare" width="150"></a></td>
|
||
<td>Compshare のご支援に感謝します!Compshare は UCloud 傘下の AI クラウドプラットフォームで、国内外の安定した包括的なモデル API を 1 つのキーだけで利用可能。月額・従量課金のコストパフォーマンスに優れた Coding Plan パッケージを提供し、公式価格の 60〜80% オフで利用できます。Claude Code、Codex および API アクセスに対応。エンタープライズ級の高同時接続、24 時間年中無休のテクニカルサポート、セルフサービス請求書発行に対応。<a href="https://www.compshare.cn/?ytag=GPU_YY_YX_git_cc-switch">こちらのリンク</a>から登録すると、無料で 5 元分のプラットフォーム体験クレジットがもらえます!</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td width="180"><a href="https://www.right.codes/register?aff=CCSWITCH"><img src="assets/partners/logos/rightcode.jpg" alt="RightCode" width="150"></a></td>
|
||
<td>本プロジェクトへのご支援として、Right Code にご協賛いただき誠にありがとうございます。Right Code は、Claude Code、Codex、Gemini などのモデルに対応した中継(プロキシ)サービスを安定して提供しています。特に高いコストパフォーマンスを誇る Codex の月額プランを主力としており、<strong>未使用分の利用枠を翌日に繰り越して利用できる(繰越対応)</strong>点が特長です。チャージ(入金)後に請求書の発行が可能で、企業・チーム向けには専任担当による個別対応も行っています。さらに CC Switch ユーザー向けの特別優待として、<a href="https://www.right.codes/register?aff=CCSWITCH">こちらのリンク</a>からご登録いただくと、チャージのたびに実支払額の 25% 相当の従量課金クレジットが付与されます。</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td width="180"><a href="https://aicoding.sh/i/CCSWITCH"><img src="assets/partners/logos/aicoding.jpg" alt="AICoding" width="150"></a></td>
|
||
<td>AICoding.sh のご支援に感謝します!AICoding.sh —— グローバル AI モデル API 超お得な中継サービス!Claude Code 81% オフ、GPT 99% オフ!数百社の企業に高コストパフォーマンスの AI サービスを提供。Claude Code、GPT、Gemini および国内主要モデルに対応、エンタープライズ級の高同時接続、迅速な請求書発行、24 時間年中無休の専属テクニカルサポート。<a href="https://aicoding.sh/i/CCSWITCH">こちらのリンク</a>から登録した CC Switch ユーザーは、初回チャージ 10% オフ!</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td width="180"><a href="https://crazyrouter.com/register?aff=OZcm&ref=cc-switch"><img src="assets/partners/logos/crazyrouter.jpg" alt="AICoding" width="150"></a></td>
|
||
<td>Crazyrouter のご支援に感謝します!Crazyrouter は高性能 AI API アグリゲーションプラットフォームです。1 つの API キーで Claude Code、Codex、Gemini CLI など 300 以上のモデルにアクセス可能。全モデルが公式価格の 55% で利用でき、自動フェイルオーバー、スマートルーティング、無制限同時接続に対応。CC Switch ユーザー向けの限定特典:<a href="https://crazyrouter.com/register?aff=OZcm&ref=cc-switch">こちらのリンク</a>から登録すると <strong>$2 の無料クレジット</strong> を即時進呈。さらに初回チャージ時にプロモコード `CCSWITCH` を入力すると <strong>30% のボーナスクレジット</strong> が追加されます!</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td width="180"><a href="https://www.sssaicode.com/register?ref=DCP0SM"><img src="assets/partners/logos/sssaicode.png" alt="SSSAiCode" width="150"></a></td>
|
||
<td>SSSAiCode のご支援に感謝します!SSSAiCode は安定性と信頼性に優れた API 中継サービスで、安定的で信頼性が高く、手頃な価格の Claude・Codex モデルサービスを提供しています。<strong>高コストパフォーマンスの公式 Claude サービスを 0.5¥/$ 換算で提供</strong>、月額制・Paygo など多様な課金方式に対応し、当日の迅速な請求書発行をサポート。CC Switch ユーザー向けの特別特典:<a href="https://www.sssaicode.com/register?ref=DCP0SM">こちらのリンク</a>から登録すると、毎回のチャージで $10 の追加ボーナスを受けられます!</td>
|
||
</tr>
|
||
|
||
</table>
|
||
|
||
</details>
|
||
|
||
## CC Switch を選ぶ理由
|
||
|
||
最新の AI コーディングは Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw などの CLI ツールに依存していますが、各ツールの設定形式はバラバラです。API プロバイダを切り替えるたびに JSON、TOML、`.env` ファイルを手動で編集する必要があり、複数ツール間で MCP や Skills を統一的に管理する手段もありません。
|
||
|
||
**CC Switch** は、5 つの CLI ツールを 1 つのデスクトップアプリで一元管理できます。設定ファイルを手作業で編集する代わりに、ワンクリックでプロバイダをインポートし、瞬時に切り替えられるビジュアルインターフェースを提供します。50 以上の組み込みプリセット、統一 MCP・Skills 管理、システムトレイからの即時切り替え機能を搭載。すべてはアトミック書き込みによる信頼性の高い SQLite データベースに支えられており、設定の破損を防ぎます。
|
||
|
||
- **1 つのアプリで 5 つの CLI ツール** -- Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw を単一インターフェースで管理
|
||
- **手動編集は不要** -- AWS Bedrock、NVIDIA NIM、コミュニティリレーなど 50 以上のプロバイダプリセットを内蔵。選んで切り替えるだけ
|
||
- **統一 MCP・Skills 管理** -- 1 つのパネルで 4 つのアプリの MCP サーバーと Skills を双方向同期で管理
|
||
- **システムトレイでクイック切り替え** -- トレイメニューから即座にプロバイダを切り替え。アプリを開く必要なし
|
||
- **クラウド同期** -- Dropbox、OneDrive、iCloud、または WebDAV サーバー経由でデバイス間のプロバイダデータを同期
|
||
- **クロスプラットフォーム** -- Tauri 2 で構築された Windows、macOS、Linux 対応のネイティブデスクトップアプリ
|
||
- **便利ツール内蔵** -- 初回起動時のログイン確認、署名バイパス、プラグイン拡張の同期など、さまざまなユーティリティを搭載
|
||
|
||
## スクリーンショット
|
||
|
||
| メイン画面 | プロバイダ追加 |
|
||
| :-------------------------------------------: | :----------------------------------------------: |
|
||
|  |  |
|
||
|
||
## 特長
|
||
|
||
[完全な更新履歴](CHANGELOG.md) | [リリースノート](docs/release-notes/v3.12.0-ja.md)
|
||
|
||
### プロバイダ管理
|
||
|
||
- **5 つの CLI ツール、50 以上のプリセット** -- Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw。キーをコピーしてワンクリックでインポート
|
||
- **ユニバーサルプロバイダ** -- 1 つの設定を複数アプリに同期(OpenCode、OpenClaw)
|
||
- ワンクリック切り替え、システムトレイクイックアクセス、ドラッグ&ドロップ並び替え、インポート/エクスポート
|
||
|
||
### プロキシ & フェイルオーバー
|
||
|
||
- **ローカルプロキシのホットスイッチ** -- フォーマット変換、自動フェイルオーバー、サーキットブレーカー、プロバイダヘルスモニタリング、リクエストレクティファイア
|
||
- **アプリレベルのテイクオーバー** -- Claude、Codex、Gemini を個別にプロキシ経由でルーティング、プロバイダ単位で設定可能
|
||
|
||
### MCP、Prompts & Skills
|
||
|
||
- **統一 MCP パネル** -- 4 つのアプリの MCP サーバーを管理、双方向同期、Deep Link インポート対応
|
||
- **Prompts** -- Markdown エディタ、クロスアプリ同期(CLAUDE.md / AGENTS.md / GEMINI.md)、バックフィル保護
|
||
- **Skills** -- GitHub リポジトリまたは ZIP ファイルからワンクリックインストール、カスタムリポジトリ管理、シンボリックリンクとファイルコピーに対応
|
||
|
||
### 使用量 & コストトラッキング
|
||
|
||
- **使用量ダッシュボード** -- プロバイダ横断で支出・リクエスト数・トークン使用量を追跡、トレンドチャート、詳細リクエストログ、カスタムモデル価格設定
|
||
|
||
### Session Manager & ワークスペース
|
||
|
||
- すべてのアプリの会話履歴を閲覧・検索・復元
|
||
- **ワークスペースエディタ**(OpenClaw)-- エージェントファイル(AGENTS.md、SOUL.md など)を Markdown プレビュー付きで編集
|
||
|
||
### システム & プラットフォーム
|
||
|
||
- **クラウド同期** -- カスタム設定ディレクトリ(Dropbox、OneDrive、iCloud、NAS)および WebDAV サーバー同期
|
||
- **Deep Link** (`ccswitch://`) -- URL 経由でプロバイダ、MCP サーバー、Prompts、Skills をワンクリックインポート
|
||
- ダーク / ライト / システムテーマ、自動起動、自動アップデーター、アトミック書き込み、自動バックアップ、多言語対応(中/英/日)
|
||
|
||
## よくある質問
|
||
|
||
<details>
|
||
<summary><strong>CC Switch はどの AI CLI ツールに対応していますか?</strong></summary>
|
||
|
||
CC Switch は **Claude Code**、**Codex**、**Gemini CLI**、**OpenCode**、**OpenClaw** の 5 つのツールに対応しています。各ツールに専用のプロバイダプリセットと設定管理が用意されています。
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><strong>プロバイダを切り替えた後、ターミナルの再起動は必要ですか?</strong></summary>
|
||
|
||
ほとんどのツールでは、はい。変更を反映するにはターミナルまたは CLI ツールを再起動してください。ただし **Claude Code** は例外で、現在プロバイダデータのホットスイッチに対応しており、再起動は不要です。
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><strong>プロバイダを切り替えた後、プラグイン設定が消えてしまいました。どうすればよいですか?</strong></summary>
|
||
|
||
CC Switch には「共有設定スニペット」機能があり、APIキーやエンドポイント以外の共通データをプロバイダ間で引き継ぐことができます。「プロバイダ編集」→「共有設定パネル」→「現在のプロバイダから抽出」をクリックして、すべての共通データを保存してください。新しいプロバイダを作成する際に「共有設定を書き込む」にチェック(デフォルトで有効)を入れれば、プラグインなどのデータが新しいプロバイダ設定に含まれます。すべての設定項目は、アプリ初回起動時にインポートされたデフォルトプロバイダに保存されており、失われることはありません。
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><strong>macOS で「開発元を確認できません」と表示されます。どうすればよいですか?</strong></summary>
|
||
|
||
開発者が Apple Developer アカウントをまだ取得していないためです(登録手続き中)。警告を閉じてから、**システム設定 → プライバシーとセキュリティ → このまま開く**をクリックしてください。以降は通常通り起動できます。
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><strong>現在アクティブなプロバイダを削除できないのはなぜですか?</strong></summary>
|
||
|
||
CC Switch は「最小限の介入」という設計原則に従っています。アプリをアンインストールしても、CLI ツールは正常に動作し続けます。すべての設定を削除すると対応する CLI ツールが使用できなくなるため、システムは常にアクティブな設定を 1 つ保持します。特定の CLI ツールをあまり使用しない場合は、設定で非表示にできます。公式ログインに戻す方法は、次の質問をご覧ください。
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><strong>公式ログインに戻すにはどうすればよいですか?</strong></summary>
|
||
|
||
プリセットリストから公式プロバイダを追加してください。切り替え後、ログアウト/ログインのフローを実行すれば、以降は公式プロバイダとサードパーティプロバイダを自由に切り替えられます。Codex では異なる公式プロバイダ間の切り替えに対応しており、複数の Plus アカウントや Team アカウントの切り替えに便利です。
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><strong>データはどこに保存されますか?</strong></summary>
|
||
|
||
- **データベース**: `~/.cc-switch/cc-switch.db`(SQLite -- プロバイダ、MCP、Prompts、Skills)
|
||
- **ローカル設定**: `~/.cc-switch/settings.json`(デバイスレベルの UI 設定)
|
||
- **バックアップ**: `~/.cc-switch/backups/`(自動ローテーション、最新 10 件を保持)
|
||
- **Skills**: `~/.cc-switch/skills/`(デフォルトでシンボリックリンクにより対応アプリに接続)
|
||
|
||
</details>
|
||
|
||
## ドキュメント
|
||
|
||
各機能の詳しい使い方については、**[ユーザーマニュアル](docs/user-manual/ja/README.md)** をご覧ください。プロバイダ管理、MCP/Prompts/Skills、プロキシとフェイルオーバーなど、すべての機能を網羅しています。
|
||
|
||
## クイックスタート
|
||
|
||
### 基本的な使い方
|
||
|
||
1. **プロバイダ追加**: 「Add Provider」をクリック → プリセットを選ぶかカスタム設定を作成
|
||
2. **プロバイダ切り替え**:
|
||
- メイン UI: プロバイダを選択 → 「Enable」をクリック
|
||
- システムトレイ: プロバイダ名をクリック(即時反映)
|
||
3. **反映**: ターミナルまたは対応する CLI ツールを再起動して適用(Claude Code は再起動不要)
|
||
4. **公式設定に戻す**: 「Official Login」プリセットを追加し、CLI ツールを再起動してログイン/OAuth フローを実行
|
||
|
||
### MCP、Prompts、Skills & Sessions
|
||
|
||
- **MCP**: 「MCP」ボタンをクリック → テンプレートまたはカスタム設定でサーバーを追加 → アプリごとの同期をトグルで切り替え
|
||
- **Prompts**: 「Prompts」をクリック → Markdown エディタでプリセットを作成 → 有効化してライブファイルに同期
|
||
- **Skills**: 「Skills」をクリック → GitHub リポジトリを閲覧 → ワンクリックですべてのアプリにインストール
|
||
- **Sessions**: 「Sessions」をクリック → すべてのアプリの会話履歴を閲覧・検索・復元
|
||
|
||
> **補足**: 初回起動時に、既存の CLI ツール設定を手動でインポートしてデフォルトプロバイダとして使用できます。
|
||
|
||
## ダウンロード & インストール
|
||
|
||
### システム要件
|
||
|
||
- **Windows**: Windows 10 以上
|
||
- **macOS**: macOS 10.15 (Catalina) 以上
|
||
- **Linux**: Ubuntu 22.04+ / Debian 11+ / Fedora 34+ など主要ディストリビューション
|
||
|
||
### Windows ユーザー
|
||
|
||
[Releases](../../releases) ページから最新版の `CC-Switch-v{version}-Windows.msi` インストーラー、またはポータブル版 `CC-Switch-v{version}-Windows-Portable.zip` をダウンロード。
|
||
|
||
### macOS ユーザー
|
||
|
||
**方法 1: Homebrew でインストール(推奨)**
|
||
|
||
```bash
|
||
brew tap farion1231/ccswitch
|
||
brew install --cask cc-switch
|
||
```
|
||
|
||
アップデート:
|
||
|
||
```bash
|
||
brew upgrade --cask cc-switch
|
||
```
|
||
|
||
**方法 2: 手動ダウンロード**
|
||
|
||
[Releases](../../releases) から `CC-Switch-v{version}-macOS.zip` をダウンロードして展開。
|
||
|
||
> **注意**: 開発者アカウント未登録のため、初回起動時に「開発元を確認できません」と表示される場合があります。一度閉じてから「システム設定」→「プライバシーとセキュリティ」→「このまま開く」をクリックしてください。以降は通常通り起動できます。
|
||
|
||
### Arch Linux ユーザー
|
||
|
||
**paru でインストール(推奨)**
|
||
|
||
```bash
|
||
paru -S cc-switch-bin
|
||
```
|
||
|
||
### Linux ユーザー
|
||
|
||
[Releases](../../releases) から最新版の Linux ビルドをダウンロード:
|
||
|
||
- `CC-Switch-v{version}-Linux.deb`(Debian/Ubuntu)
|
||
- `CC-Switch-v{version}-Linux.rpm`(Fedora/RHEL/openSUSE)
|
||
- `CC-Switch-v{version}-Linux.AppImage`(汎用)
|
||
- `CC-Switch-v{version}-Linux.flatpak`(Flatpak)
|
||
|
||
Flatpak のインストールと起動:
|
||
|
||
```bash
|
||
flatpak install --user ./CC-Switch-v{version}-Linux.flatpak
|
||
flatpak run com.ccswitch.desktop
|
||
```
|
||
|
||
<details>
|
||
<summary><strong>アーキテクチャ概要</strong></summary>
|
||
|
||
### 設計原則
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ Frontend (React + TS) │
|
||
│ ┌─────────────┐ ┌──────────────┐ ┌──────────────────┐ │
|
||
│ │ Components │ │ Hooks │ │ TanStack Query │ │
|
||
│ │ (UI) │──│ (Bus. Logic) │──│ (Cache/Sync) │ │
|
||
│ └─────────────┘ └──────────────┘ └──────────────────┘ │
|
||
└────────────────────────┬────────────────────────────────────┘
|
||
│ Tauri IPC
|
||
┌────────────────────────▼────────────────────────────────────┐
|
||
│ Backend (Tauri + Rust) │
|
||
│ ┌─────────────┐ ┌──────────────┐ ┌──────────────────┐ │
|
||
│ │ Commands │ │ Services │ │ Models/Config │ │
|
||
│ │ (API Layer) │──│ (Bus. Layer) │──│ (Data) │ │
|
||
│ └─────────────┘ └──────────────┘ └──────────────────┘ │
|
||
└─────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
**コア設計パターン**
|
||
|
||
- **SSOT** (Single Source of Truth): すべてのデータを `~/.cc-switch/cc-switch.db`(SQLite)に集約
|
||
- **二層ストレージ**: 同期データは SQLite、デバイスデータは JSON
|
||
- **双方向同期**: 切り替え時はライブファイルへ書き込み、編集時はアクティブプロバイダから逆同期
|
||
- **アトミック書き込み**: 一時ファイル + rename パターンで設定破損を防止
|
||
- **並行安全**: Mutex で保護された DB 接続でレースコンディションを防止
|
||
- **レイヤードアーキテクチャ**: Commands → Services → DAO → Database を明確に分離
|
||
|
||
**主要コンポーネント**
|
||
|
||
- **ProviderService**: プロバイダの CRUD、切り替え、バックフィル、ソート
|
||
- **McpService**: MCP サーバー管理、インポート/エクスポート、ライブファイル同期
|
||
- **ProxyService**: ローカル Proxy モードのホットスイッチとフォーマット変換
|
||
- **SessionManager**: Claude Code の会話履歴閲覧
|
||
- **ConfigService**: 設定のインポート/エクスポート、バックアップローテーション
|
||
- **SpeedtestService**: API エンドポイントの遅延計測
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><strong>開発ガイド</strong></summary>
|
||
|
||
### 開発環境
|
||
|
||
- Node.js 18+
|
||
- pnpm 8+
|
||
- Rust 1.85+
|
||
- Tauri CLI 2.8+
|
||
|
||
### 開発コマンド
|
||
|
||
```bash
|
||
# 依存関係をインストール
|
||
pnpm install
|
||
|
||
# ホットリロード付き開発モード
|
||
pnpm dev
|
||
|
||
# 型チェック
|
||
pnpm typecheck
|
||
|
||
# コード整形
|
||
pnpm format
|
||
|
||
# フォーマット検証
|
||
pnpm format:check
|
||
|
||
# フロントエンド単体テスト
|
||
pnpm test:unit
|
||
|
||
# ウォッチモード(開発に推奨)
|
||
pnpm test:unit:watch
|
||
|
||
# アプリをビルド
|
||
pnpm build
|
||
|
||
# デバッグビルド
|
||
pnpm tauri build --debug
|
||
```
|
||
|
||
### Rust バックエンド開発
|
||
|
||
```bash
|
||
cd src-tauri
|
||
|
||
# Rust コード整形
|
||
cargo fmt
|
||
|
||
# clippy チェック
|
||
cargo clippy
|
||
|
||
# バックエンドテスト
|
||
cargo test
|
||
|
||
# 特定テストのみ実行
|
||
cargo test test_name
|
||
|
||
# test-hooks フィーチャー付きでテスト
|
||
cargo test --features test-hooks
|
||
```
|
||
|
||
### テストガイド
|
||
|
||
**フロントエンドテスト**:
|
||
|
||
- テストフレームワークに **vitest** を使用
|
||
- **MSW (Mock Service Worker)** で Tauri API 呼び出しをモック
|
||
- コンポーネントテストに **@testing-library/react** を採用
|
||
|
||
**テスト実行**:
|
||
|
||
```bash
|
||
# 全テストを実行
|
||
pnpm test:unit
|
||
|
||
# ウォッチモード(自動再実行)
|
||
pnpm test:unit:watch
|
||
|
||
# カバレッジレポート付き
|
||
pnpm test:unit --coverage
|
||
```
|
||
|
||
### 技術スタック
|
||
|
||
**フロントエンド**: React 18 · TypeScript · Vite · TailwindCSS 3.4 · TanStack Query v5 · react-i18next · react-hook-form · zod · shadcn/ui · @dnd-kit
|
||
|
||
**バックエンド**: Tauri 2.8 · Rust · serde · tokio · thiserror · tauri-plugin-updater/process/dialog/store/log
|
||
|
||
**テスト**: vitest · MSW · @testing-library/react
|
||
|
||
</details>
|
||
|
||
<details>
|
||
<summary><strong>プロジェクト構成</strong></summary>
|
||
|
||
```
|
||
├── src/ # フロントエンド (React + TypeScript)
|
||
│ ├── components/
|
||
│ │ ├── providers/ # プロバイダ管理
|
||
│ │ ├── mcp/ # MCP パネル
|
||
│ │ ├── prompts/ # Prompts 管理
|
||
│ │ ├── skills/ # Skills 管理
|
||
│ │ ├── sessions/ # Session Manager
|
||
│ │ ├── proxy/ # Proxy モードパネル
|
||
│ │ ├── openclaw/ # OpenClaw 設定パネル
|
||
│ │ ├── settings/ # 設定 (Terminal/Backup/About)
|
||
│ │ ├── deeplink/ # Deep Link インポート
|
||
│ │ ├── env/ # 環境変数管理
|
||
│ │ ├── universal/ # クロスアプリ設定
|
||
│ │ ├── usage/ # 使用量統計
|
||
│ │ └── ui/ # shadcn/ui コンポーネントライブラリ
|
||
│ ├── hooks/ # カスタムフック(ビジネスロジック)
|
||
│ ├── lib/
|
||
│ │ ├── api/ # Tauri API ラッパー(型安全)
|
||
│ │ └── query/ # TanStack Query 設定
|
||
│ ├── locales/ # 翻訳 (zh/en/ja)
|
||
│ ├── config/ # プリセット (providers/mcp)
|
||
│ └── types/ # TypeScript 型定義
|
||
├── src-tauri/ # バックエンド (Rust)
|
||
│ └── src/
|
||
│ ├── commands/ # Tauri コマンド層(ドメイン別)
|
||
│ ├── services/ # ビジネスロジック層
|
||
│ ├── database/ # SQLite DAO 層
|
||
│ ├── proxy/ # Proxy モジュール
|
||
│ ├── session_manager/ # セッション管理
|
||
│ ├── deeplink/ # Deep Link 処理
|
||
│ └── mcp/ # MCP 同期モジュール
|
||
├── tests/ # フロントエンドテスト
|
||
└── assets/ # スクリーンショット & パートナーリソース
|
||
```
|
||
|
||
</details>
|
||
|
||
## 貢献
|
||
|
||
Issue や提案を歓迎します!
|
||
|
||
PR を送る前に以下をご確認ください:
|
||
|
||
- 型チェック: `pnpm typecheck`
|
||
- フォーマットチェック: `pnpm format:check`
|
||
- 単体テスト: `pnpm test:unit`
|
||
|
||
新機能の場合は、PR を送る前に Issue でディスカッションしてください。プロジェクトに合わない機能の PR はクローズされる場合があります。
|
||
|
||
## Star History
|
||
|
||
[](https://www.star-history.com/#farion1231/cc-switch&Date)
|
||
|
||
## ライセンス
|
||
|
||
MIT © Jason Young
|