farion1231/cc-switch

GitHub: farion1231/cc-switch

跨平台桌面应用,统一管理 Claude Code、Codex、Gemini CLI 等多个 AI 编程助手的提供商配置、MCP 服务器和 Skills 插件。

Stars: 26179 | Forks: 1592

# CC Switch ### Claude Code、Codex、Gemini CLI、OpenCode 与 OpenClaw 的一站式管理器 [![Version](https://img.shields.io/badge/version-3.12.0-blue.svg)](https://github.com/farion1231/cc-switch/releases) [![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey.svg)](https://github.com/farion1231/cc-switch/releases) [![Built with Tauri](https://img.shields.io/badge/built%20with-Tauri%202-orange.svg)](https://tauri.app/) [![Downloads](https://img.shields.io/endpoint?url=https://api.pinstudios.net/api/badges/downloads/farion1231/cc-switch/total)](https://github.com/farion1231/cc-switch/releases/latest) farion1231%2Fcc-switch | Trendshift English | [中文](README_ZH.md) | [日本語](README_JA.md) | [更新日志](CHANGELOG.md)
## 为什么选择 CC Switch? 现代 AI 编程依赖于 CLI 工具,如 Claude Code、Codex、Gemini CLI、OpenCode 和 OpenClaw —— 但每个工具都有自己的配置格式。切换 API 提供商意味着需要手动编辑 JSON、TOML 或 `.env` 文件,而且没有统一的方法在多个工具之间管理 MCP 和 Skills。 **CC Switch** 为您提供一个单一的桌面应用程序来管理所有这五个 CLI 工具。您无需手动编辑配置文件,而是通过可视化界面一键导入提供商、即时切换,并拥有 50 多个内置提供商预设、统一的 MCP 和 Skills 管理,以及系统托盘快速切换功能 —— 所有这些都由可靠的 SQLite 数据库支持,通过原子写入保护您的配置免受损坏。 - **一个应用,五个 CLI 工具** —— 在单一界面中管理 Claude Code、Codex、Gemini CLI、OpenCode 和 OpenClaw - **告别手动编辑** —— 50 多个提供商预设,包括 AWS Bedrock、NVIDIA NIM 和社区中继;只需选择并切换 - **统一的 MCP & Skills 管理** —— 一个面板即可管理四个应用的 MCP 服务器和 Skills,支持双向同步 - **系统托盘快速切换** —— 从托盘菜单即时切换提供商,无需打开完整应用 - **云同步** —— 通过 Dropbox、OneDrive、iCloud 或 WebDAV 服务器跨设备同步提供商数据 - **跨平台** —— 使用 Tauri 2 构建的原生桌面应用,支持 Windows、macOS 和 Linux - **内置实用工具** —— 包含各种实用程序,用于首次启动登录确认、签名绕过、插件扩展同步等 ## 截图 | 主界面 | 添加提供商 | | :------------------------------------------: | :------------------------------------------: | | ![Main Interface](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/f9a68d3390200408.png) | ![Add Provider](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/60daf06c58200410.png) | ## 功能特性 [完整更新日志](CHANGELOG.md) | [发布说明](docs/release-notes/v3.12.0-en.md) ### 提供商管理 - **5 个 CLI 工具,50+ 预设** —— Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw;复制您的密钥并一键导入 - **通用提供商** —— 一个配置同步到多个应用(OpenCode、OpenClaw) - 一键切换、系统托盘快速访问、拖放排序、导入/导出 ### 代理与故障转移 - **支持热切换的本地代理** —— 格式转换、自动故障转移、熔断器、提供商健康监控和请求校正 - **应用级接管** —— 独立代理 Claude、Codex 或 Gemini,精确到个别提供商 ### MCP、Prompts 与 Skills - **统一的 MCP 面板** —— 跨 4 个应用管理 MCP 服务器,支持双向同步和 Deep Link 导入 - **Prompts** —— Markdown 编辑器,支持跨应用同步(CLAUDE.md / AGENTS.md / GEMINI.md)和回填保护 - **Skills** —— 从 GitHub 仓库或 ZIP 文件一键安装,自定义仓库管理,支持符号链接和文件复制 ### 用量与成本追踪 - **用量仪表盘** —— 通过趋势图追踪支出、请求数和 Token,详细的请求日志以及自定义单模型定价 ### 会话管理器与工作区 - 浏览、搜索和恢复所有应用的对话历史 - **工作区编辑器**(OpenClaw)—— 编辑代理文件(AGENTS.md、SOUL.md 等),支持 Markdown 预览 ### 系统与平台 - **云同步** —— 自定义配置目录(Dropbox、OneDrive、iCloud、NAS)和 WebDAV 服务器同步 - **Deep Link**(`ccswitch://`)—— 通过 URL 导入提供商、MCP 服务器、Prompts 和 Skills - 深色 / 浅色 / 系统主题、开机自启、自动更新、原子写入、自动备份、国际化(中/英/日) ## 常见问题
CC Switch 支持哪些 AI CLI 工具? CC Switch 支持五个工具:**Claude Code**、**Codex**、**Gemini CLI**、**OpenCode** 和 **OpenClaw**。每个工具都有专门的提供商预设和配置管理。
切换提供商后需要重启终端吗? 对于大多数工具,是的 —— 重启您的终端或 CLI 工具以使更改生效。例外是 **Claude Code**,它目前支持提供商数据的热切换,无需重启。
切换提供商后我的插件配置消失了 —— 发生了什么? CC Switch 提供了“共享配置片段”功能,用于在提供商之间传递通用数据(API 密钥和端点之外的数据)。进入“编辑提供商”→“共享配置面板”→点击“从当前提供商提取”以保存所有通用数据。创建新提供商时,勾选“写入共享配置”(默认启用)以将插件数据包含在新提供商中。您的所有配置项都保存在您首次启动应用时导入的默认提供商中。
macOS 显示“身份不明的开发者”警告 —— 如何解决? 作者目前还没有 Apple Developer 账户(正在注册中)。关闭警告,然后进入 **系统设置 → 隐私与安全性 → 仍要打开**。之后,应用将正常打开。
为什么我不能删除当前活动的提供商? CC Switch 遵循“最小侵入”设计原则 —— 即使您卸载应用程序,您的 CLI 工具也将继续正常工作。系统始终保持一个活动配置,因为删除所有配置会使相应的 CLI 工具无法使用。如果您很少使用特定的 CLI 工具,可以在设置中将其隐藏。要切换回官方登录,请参阅下一个问题。
如何切换回官方登录? 从预设列表中添加官方提供商。切换到它后,运行注销/登录流程,然后您就可以在官方提供商和第三方提供商之间自由切换。Codex 支持在不同官方提供商之间切换,便于在多个 Plus 或 Team 账户之间切换。
我的数据存储在哪里? - **数据库**:`~/.cc-switch/cc-switch.db`(SQLite — 提供商、MCP、Prompts、Skills) - **本地设置**:`~/.cc-switch/settings.json`(设备级 UI 偏好) - **备份**:`~/.cc-switch/backups/`(自动轮换,保留最近 10 个) - **Skills**:`~/.cc-switch/skills/`(默认符号链接到相应应用)
## 文档 有关每个功能的详细指南,请查看 **[用户手册](docs/user-manual/en/README.md)** —— 涵盖提供商管理、MCP/Prompts/Skills、代理与故障转移等内容。 ## 快速开始 ### 基本用法 1. **添加提供商**:点击“添加提供商” → 选择预设或创建自定义配置 2. **切换提供商**: - 主界面:选择提供商 → 点击“启用” - 系统托盘:直接点击提供商名称(即时生效) 3. **生效**:重启您的终端或相应的 CLI 工具以应用更改(Claude Code 不需要重启) 4. **回到官方**:添加“官方登录”预设,重启 CLI 工具,然后按照其登录/OAuth 流程操作 ### MCP、Prompts、Skills与会话 - **MCP**:点击“MCP”按钮 → 通过模板或自定义配置添加服务器 → 切换每应用的同步 - **Prompts**:点击“Prompts” → 使用 Markdown 编辑器创建预设 → 激活以同步到活动文件 - **Skills**:点击“Skills” → 浏览 GitHub 仓库 → 一键安装到所有应用 - **Sessions**:点击“Sessions” → 浏览、搜索和恢复所有应用的对话历史 ## 下载与安装 ### 系统要求 - **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 安装(推荐)** ``` brew tap farion1231/ccswitch brew install --cask cc-switch ``` 更新: ``` brew upgrade --cask cc-switch ``` **方法 2:手动下载** 从 [Releases](../../releases) 页面下载 `CC-Switch-v{version}-macOS.zip` 并解压使用。 ### Arch Linux 用户 **通过 paru 安装(推荐)** ``` 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 安装与运行: ``` flatpak install --user ./CC-Switch-v{version}-Linux.flatpak flatpak run com.ccswitch.desktop ```
架构概览 ### 设计原则 ``` ┌─────────────────────────────────────────────────────────────┐ │ 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**(单一数据源):所有数据存储在 `~/.cc-switch/cc-switch.db`(SQLite) - **双层存储**:SQLite 用于可同步数据,JSON 用于设备级设置 - **双向同步**:切换时写入活动文件,编辑活动提供商时从活动文件回填 - **原子写入**:临时文件 + 重命名模式防止配置损坏 - **并发安全**:互斥锁保护的数据库连接避免竞争条件 - **分层架构**:清晰的分离(命令 → 服务 → DAO → 数据库) **关键组件** - **ProviderService**:提供商增删改查、切换、回填、排序 - **McpService**:MCP 服务器管理、导入/导出、活动文件同步 - **ProxyService**:支持热切换和格式转换的本地代理模式 - **SessionManager**:Claude Code 对话历史浏览 - **ConfigService**:配置导入/导出、备份轮换 - **SpeedtestService**:API 端点延迟测量
开发指南 ### 环境要求 - Node.js 18+ - pnpm 8+ - Rust 1.85+ - Tauri CLI 2.8+ ### 开发命令 ``` # 安装依赖 pnpm install # 开发模式(热重载) pnpm dev # 类型检查 pnpm typecheck # 格式化代码 pnpm format # 检查代码格式 pnpm format:check # 运行前端单元测试 pnpm test:unit # 在 watch 模式下运行测试(推荐用于开发) pnpm test:unit:watch # 构建应用程序 pnpm build # 构建 debug 版本 pnpm tauri build --debug ``` ### Rust 后端开发 ``` cd src-tauri # 格式化 Rust 代码 cargo fmt # 运行 clippy 检查 cargo clippy # 运行后端测试 cargo test # 运行特定测试 cargo test test_name # 运行带 test-hooks feature 的测试 cargo test --features test-hooks ``` ### 测试指南 **前端测试**: - 使用 **vitest** 作为测试框架 - 使用 **MSW (Mock Service Worker)** 模拟 Tauri API 调用 - 使用 **@testing-library/react** 进行组件测试 **运行测试**: ``` # 运行所有测试 pnpm test:unit # Watch 模式(自动重新运行) 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
项目结构 ``` ├── src/ # Frontend (React + TypeScript) │ ├── components/ │ │ ├── providers/ # Provider management │ │ ├── mcp/ # MCP panel │ │ ├── prompts/ # Prompts management │ │ ├── skills/ # Skills management │ │ ├── sessions/ # Session Manager │ │ ├── proxy/ # Proxy mode panel │ │ ├── openclaw/ # OpenClaw config panels │ │ ├── settings/ # Settings (Terminal/Backup/About) │ │ ├── deeplink/ # Deep Link import │ │ ├── env/ # Environment variable management │ │ ├── universal/ # Cross-app configuration │ │ ├── usage/ # Usage statistics │ │ └── ui/ # shadcn/ui component library │ ├── hooks/ # Custom hooks (business logic) │ ├── lib/ │ │ ├── api/ # Tauri API wrapper (type-safe) │ │ └── query/ # TanStack Query config │ ├── locales/ # Translations (zh/en/ja) │ ├── config/ # Presets (providers/mcp) │ └── types/ # TypeScript definitions ├── src-tauri/ # Backend (Rust) │ └── src/ │ ├── commands/ # Tauri command layer (by domain) │ ├── services/ # Business logic layer │ ├── database/ # SQLite DAO layer │ ├── proxy/ # Proxy module │ ├── session_manager/ # Session management │ ├── deeplink/ # Deep Link handling │ └── mcp/ # MCP sync module ├── tests/ # Frontend tests └── assets/ # Screenshots & partner resources ```
## 贡献 欢迎提交问题和建议! 在提交 PR 之前,请确保: - 通过类型检查:`pnpm typecheck` - 通过格式检查:`pnpm format:check` - 通过单元测试:`pnpm test:unit` 对于新功能,请在提交 PR 之前开启 issue 进行讨论。不适合项目的功能 PR 可能会被关闭。 ## Star 历史 [![Star History Chart](https://api.star-history.com/svg?repos=farion1231/cc-switch&type=Date)](https://www-history.com/#farion1231/cc-switch&Date) ## 许可证 MIT © Jason Young
标签:AI编程助手, API密钥管理, Claude Code, Gemini CLI, GUI, JSON, LLM, MCP, OpenAI Codex, Rust, SOC Prime, SQLite, Tauri, TOML, Unmanaged PE, 代码生成, 前端, 可视化界面, 大模型, 开发工具, 开源, 效率工具, 桌面应用, 渗透测试工具, 系统托盘, 网络流量审计, 通知系统