一天一个开源项目(第234篇):CC Switch —— 一个 App 管理十款 AI 编程工具的 Provider、MCP、Skills 和 Prompts

0 阅读11分钟

引言

"一键切换 API Provider,MCP、Skills、Prompts 集中管理——不用再手动编辑 JSON/TOML/YAML 配置文件。"

这是"一天一个开源项目"系列的第 234 篇。今天的项目是 CC Switch。

现在同时用好几款 AI 编程工具已经是常态——Claude Code 跑一个项目,Codex 跑另一个,偶尔还要切到 Gemini CLI 或 Grok Build 对比效果。问题是这些工具各自有一套配置格式:Claude Code 用一种 JSON 结构,Codex 用 TOML,Gemini CLI 又是另一套 YAML——每次换 Provider、换 API Key、换模型,都要翻到对应工具的配置文件里手动改,MCP 服务器和 Skills 还得在每个工具里各配一份。

CC Switch 把这件事做成了一个统一的桌面应用:一款工具,管理十款 AI 编程工具(Claude Code、Claude Desktop、Codex、Gemini CLI、Grok Build、OpenCode、OpenClaw、Hermes、Pi、MiniMax Code)的 Provider 配置,支持一键切换、90+ Provider 预设,还能做本地请求的格式转换路由(Routing)和多 Provider 模型聚合(Aggregation)。

142.8k Stars,MIT 协议,基于 Tauri 2 + Rust + React 18 构建,目前是这个赛道里规模最大的开源项目之一。

你将学到什么

  • CC Switch 如何用 Switch/Coexist 两种模式统一十款工具的配置管理方式
  • Direct、Routing、Aggregation 三种连接模式的具体区别和适用场景
  • "最小侵入"设计理念:切换 Provider 为什么不会破坏你手动加的插件和 Hook
  • 本地请求路由的格式转换与故障转移(Failover)机制
  • 数据存储设计:~/.cc-switch 目录结构与云同步方案

前置知识

  • 使用过至少一款 AI 编程 CLI 工具(Claude Code、Codex、Gemini CLI 等)
  • 了解 API Provider、Base URL、API Key 这些基本概念
  • 可选:了解 MCP(Model Context Protocol)的基本用途会更容易理解集中管理部分

项目背景

项目简介

CC Switch 的官方定位是:"面向 Claude Code、Codex、OpenCode、OpenClaw、Grok Build 和 Hermes Agent 的跨平台桌面全能助手"。更完整的说法是"Claude Code、Claude Desktop、Codex、Gemini CLI、Grok Build、OpenCode、OpenClaw、Hermes Agent、Pi 和 MiniMax Code 的全能管理器"。核心价值主张:"一键切换 API Provider,MCP、Skills、Prompts 集中管理——不用再手动编辑 JSON/TOML/YAML 配置文件"。

团队与项目信息

  • 作者:Jason Young(farion1231)
  • 协议:MIT License
  • 技术栈:Tauri 2、Rust、React 18、TypeScript、SQLite
  • 官网:ccswitch.io

项目数据

  • ⭐ GitHub Stars:142,800+
  • 🍴 Forks:9,500+
  • 👀 Watchers:264
  • 📄 协议:MIT

主要功能

解决什么问题

没有 CC Switch 时的多工具管理:
  Claude Code → 配置文件是 JSON,Provider 信息藏在深层嵌套字段
  Codex       → 配置文件是 TOML,格式完全不同
  Gemini CLI  → 配置文件是 YAML,又是另一套结构
  ↑ 每换一次 Provider/API Key/模型,都要分别打开对应工具的配置文件手改
  ↑ MCP 服务器、Skills、Prompts 要在每个工具里各自配置一份,无法共享

CC Switch 的做法:
  一个桌面应用,统一管理十款工具的 Provider 配置
  ↓ 一键切换,90+ 预设 Provider(AWS Bedrock、NVIDIA NIM、社区中转等)
  ↓ MCP、Skills、Prompts 集中管理一次配置,多工具复用
  ↑ 切换只改动必要的连接字段(endpoint/key/model)
  ↑ 插件、Hook、自定义配置保持不变

使用场景

  1. 同时使用多款 AI 编程 CLI 的开发者

    • 想要统一管理 Provider 和 API Key,而不是在每个工具的配置文件之间来回切换
  2. 需要在多个 Provider 之间频繁切换测试的用户

    • 对比不同模型/Provider 的效果,一键切换而不用手动改配置文件
  3. 想要跨工具复用 MCP 服务器配置的团队

    • 不想在 Claude Code、Codex、Gemini CLI 里分别配置同一套 MCP 服务器
  4. 想在 Claude Code 里用 GPT,或者混用不同厂商模型的用户

    • 通过 Routing 模式做本地格式转换,实现跨 Provider 格式兼容
  5. 需要追踪多 Provider 使用量和费用的用户

    • 在 Provider 卡片和系统托盘上直接查看 Token 用量、花费、订阅额度,不需要分别打开每个厂商的后台

快速开始

安装:

# macOS
brew install --cask cc-switch

# macOS 升级
brew upgrade --cask cc-switch

# Arch Linux
paru -S cc-switch-bin

基本使用流程:

1. 在侧边栏通过预设或自定义配置添加一个 Provider
2. 通过主界面、系统托盘或项目切换器切换 Provider
3. 切换生效方式因工具而异:Claude Code 即时生效,其他工具可能需要重启
4. 可选:开启 Routing/Aggregation 标签页,实现跨格式转换或多 Provider 聚合
5. 通过"Apps"页面管理已安装 CLI 工具的版本

核心特性

1. 两种配置管理模式

模式含义
Switch同一时刻只有一个 Provider 处于激活状态
Coexist多个 Provider 同时写入该工具自己的配置文件

2. 工具支持能力矩阵

工具配置模式本地路由聚合托盘切换MCPSkillsPrompts会话用量统计
Claude CodeSwitch✓✓✓✓✓CLAUDE.md✓✓
Claude DesktopSwitch仅模型映射–✓––––仅模型映射
CodexSwitch✓✓✓✓✓AGENTS.md✓✓
Gemini CLISwitch✓–✓✓✓GEMINI.md✓✓
Grok BuildSwitch✓–✓✓✓AGENTS.md✓✓
OpenCodeCoexist–––✓✓AGENTS.md✓✓
OpenClawCoexist–––––工作区编辑器✓–
HermesCoexist–––✓✓Memory✓–
PiCoexist–––✓✓AGENTS.md/SYSTEM.md/提示模板✓✓
MiniMax CodeCoexist–––✓✓AGENTS.md✓✓

3. 三种连接模式

  • Direct(直连):工具直接连接到 Provider
  • Routing(路由):请求本地经过 CC Switch 转发,支持格式转换和故障转移,实现跨 Provider 兼容(比如在 Claude Code 里用 GPT)
  • Aggregation(聚合):把多个 Provider 的模型合并成一个选择列表,每次请求路由到对应模型的真实 Provider

4. 集中管理 MCP、Skills、Prompts

一次配置,多工具复用,不需要在每个工具里重复设置同一套 MCP 服务器或 Skills。

5. 会话阅读视图

把原始日志转换成可读的步骤/文件/失败摘要,不需要翻看原始日志文件。

6. 用量与额度追踪

Token 用量、花费、订阅额度直接显示在 Provider 卡片和系统托盘上。

7. 数据存储结构

默认存储在 ~/.cc-switch 目录:

文件/目录用途
cc-switch.dbSQLite 数据库(Provider、MCP、Prompts、Skills、项目、用量)
settings.json设备级设置
backups/自动备份,默认每 24 小时一次,保留最近 10 份
skills/Skills 目录(可迁移到 ~/.agents/skills)
backups/live-first-write/安装 CC Switch 前的原始配置快照

支持 Windows 上的 WSL 路径配置,以及通过 WebDAV 或 S3 兼容存储做云同步。


深入剖析

"最小侵入"设计:切换只改必要字段

CC Switch 有一条明确的设计原则值得关注:"即使卸载这个应用,你的工具依然能正常工作。"切换 Provider 时,只会改动"关键字段"(endpoint、key、model),而"插件、Hook、MCP,以及你自己添加的注释"保持不动。

如果切换 Provider 时整体覆盖配置文件:
  用户手动加的 Hook/插件/注释 → 被覆盖丢失
  ↑ 每次切换都有破坏现有配置的风险
  ↑ 用户不敢随意切换,因为代价不可预测

CC Switch 的"最小侵入"做法:
  只改动 endpoint/key/model 这几个连接字段
  ↓ 插件、Hook、MCP、自定义注释原样保留
  ↑ 卸载 CC Switch 后,工具配置文件依然是完整可用的
  ↑ 用户可以放心频繁切换,不用担心丢失自定义配置

这个设计选择的意义在于:它把 CC Switch 定位成一个"配置管理的外层工具",而不是"配置文件的唯一真相源"。即便某天不再使用 CC Switch,底层工具的配置依然完整、可独立工作——这降低了用户尝试这个工具的心理门槛,因为"退出成本"被显式地做到了接近零。

Routing 模式:本地格式转换加故障转移

Routing 模式的核心能力是在本地做协议格式转换——在 Anthropic Messages、OpenAI Chat Completions、OpenAI Responses 和 Gemini Native 这几种格式之间互相转换,从而实现"在 Claude Code 里用 GPT"这种跨厂商兼容场景。

没有 Routing 时:
  Claude Code 只认 Anthropic Messages 格式
  ↑ 想用 OpenAI 格式的 Provider,工具本身不支持

Routing 模式:
  请求先经过本地 CC Switch(默认 http://127.0.0.1:15721)
  ↓ 格式转换:Anthropic ↔ OpenAI Chat Completions ↔ OpenAI Responses ↔ Gemini Native
  ↓ 附带断路器(circuit breaker)和 Provider 健康监控做自动故障转移
  ↓ "Rectifier" 功能自动修复部分上游无法处理的请求
  ↑ Claude Code 不需要知道背后实际在用哪家 Provider

这个设计把"工具只认一种 API 格式"这个限制,转化成了一个本地代理层能解决的问题——用户不需要等待工具厂商官方支持某个 Provider,只要 CC Switch 支持格式转换,跨厂商组合就是可行的。

Aggregation 模式:致谢 opencodex 的设计借鉴

值得一提的是,CC Switch 的聚合模式设计明确致谢了开源项目 opencodex 的设计思路。这是一个值得肯定的开源协作细节——没有把借鉴来的设计思路据为己有,而是在文档里明确归功于原作者和贡献者。聚合模式本身有一个明确的能力边界:"聚合模式不提供故障转移"——这是文档主动说明的局限,而不是让用户自己踩坑后才发现。此外,Codex 在模型列表变化后需要完整重启才能生效,而 Claude Code 则是即时更新——这种工具间行为差异也被显式记录在文档里。

Switch vs Coexist:两种模式背后的工具差异

CC Switch 没有对所有工具用同一套配置管理策略,而是根据工具自身的能力边界分成 Switch(单一激活)和 Coexist(多 Provider 共存写入)两类。这个划分背后是对每个工具自身配置机制的尊重——像 Claude Code、Codex 这类支持显式切换激活 Provider 的工具用 Switch 模式;而 OpenCode、Hermes 等工具本身的配置机制允许多个 Provider 同时存在于配置文件里,CC Switch 就不强行套用"只能激活一个"的模型,而是采用 Coexist 模式写入。这种"按工具能力适配管理策略"而非"强行统一所有工具行为"的设计,体现了对底层工具差异的尊重,而不是用一套抽象硬套所有场景。

对于 Headless/服务器场景的态度

对于没有 GUI 的无头环境,CC Switch 没有自己做一个 CLI 版本,而是在文档里指向一个独立的社区项目 CC Switch CLI(SaladDay/cc-switch-cli),并明确说明它"与桌面应用共享 ~/.cc-switch 数据目录",但"版本发布是独立的,可能存在版本滞后"。这是一个坦诚的生态边界说明——没有把这个能力硬塞进自己的产品范围,也没有掩盖"两者版本可能不同步"这个潜在的使用风险。


项目地址与资源

官方资源

相关资源

  • opencodex —— CC Switch 聚合模式的设计灵感来源
  • CC Switch CLI —— 面向 Headless/服务器环境的社区 CLI 版本,共享同一数据目录

总结与展望

核心要点回顾

  1. 一个应用统一管理十款 AI 编程工具的 Provider 配置:告别手动编辑 JSON/TOML/YAML 的碎片化体验
  2. "最小侵入"设计把退出成本降到接近零:切换只改连接字段,插件/Hook/自定义配置原样保留,卸载后工具依然能独立工作
  3. 三种连接模式覆盖不同需求:Direct 直连、Routing 本地格式转换加故障转移、Aggregation 多 Provider 模型聚合
  4. 按工具能力差异化管理策略:Switch(单一激活)/Coexist(多 Provider 共存)分别适配不同工具自身的配置机制
  5. 坦诚的生态边界意识:聚合模式明确标注"不提供故障转移"、致谢 opencodex 的设计借鉴、Headless 场景指向独立社区 CLI 项目而非自己硬做

适合谁

  • 同时使用多款 AI 编程 CLI 的开发者:想要一个统一入口管理所有工具的 Provider 和配置
  • 需要频繁切换 Provider 对比效果的用户:一键切换比手动改配置文件效率高得多
  • 想要跨厂商混用模型的用户:通过 Routing 模式实现"在 Claude Code 里用 GPT"这类场景
  • 需要集中管理 MCP/Skills 的团队:避免在每个工具里重复配置同一套能力

一句话评价

CC Switch 解决的不是"哪个 AI 编程工具更好用"的问题,而是"用好几款工具时,配置管理本身不应该成为负担"这个更朴素但更真实的痛点。


欢迎访问 PrimeSkills —— 一个精心策划的 AI Agent 与技能市场,所有内容均经过真实企业级工作流验证。没有噱头,只有真正有效的东西。

更多实用知识和有趣产品,欢迎访问我的个人主页