docs: update README for v3.5.1 release

- Bump version badge to 3.5.1
- Remove project restructure notice
- Add MCP configuration documentation section
- Add architecture overview with SSOT design
- Enhance project structure and contribution guidelines
This commit is contained in:
Jason
2025-10-30 16:23:00 +08:00
parent 55223bdd46
commit 64f2220ad9

View File

@@ -1,13 +1,11 @@
# Claude Code & Codex 供应商切换器 # Claude Code & Codex 供应商切换器
[![Version](https://img.shields.io/badge/version-3.5.0-blue.svg)](https://github.com/farion1231/cc-switch/releases) [![Version](https://img.shields.io/badge/version-3.5.1-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) [![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/) [![Built with Tauri](https://img.shields.io/badge/built%20with-Tauri%202-orange.svg)](https://tauri.app/)
一个用于管理和切换 Claude Code 与 Codex 不同供应商配置的桌面应用。 一个用于管理和切换 Claude Code 与 Codex 不同供应商配置的桌面应用。
> **📢 重要通知**CC Switch 即将进行大规模重构,请暂缓提交新的 PR感谢理解与配合
> v3.5.0 :新增 **MCP 管理**、**配置导入/导出**、**端点速度测试**功能,完善国际化覆盖,新增 Longcat、kat-coder 预设,标准化发布文件命名规范。 > v3.5.0 :新增 **MCP 管理**、**配置导入/导出**、**端点速度测试**功能,完善国际化覆盖,新增 Longcat、kat-coder 预设,标准化发布文件命名规范。
> v3.4.0 :新增 i18next 国际化还有部分未完成、对新模型qwen-3-max, GLM-4.6, DeepSeek-V3.2-Exp的支持、Claude 插件、单实例守护、托盘最小化及安装器优化等。 > v3.4.0 :新增 i18next 国际化还有部分未完成、对新模型qwen-3-max, GLM-4.6, DeepSeek-V3.2-Exp的支持、Claude 插件、单实例守护、托盘最小化及安装器优化等。
@@ -97,6 +95,15 @@ brew upgrade --cask cc-switch
4. 重启或新开终端以确保生效 4. 重启或新开终端以确保生效
5. 若需切回官方登录,在预设中选择“官方登录”并切换即可;重启终端后按官方流程登录 5. 若需切回官方登录,在预设中选择“官方登录”并切换即可;重启终端后按官方流程登录
### MCP 配置说明v3.5.x
- 管理位置:所有 MCP 服务器定义集中保存在 `~/.cc-switch/config.json`(按客户端 `claude` / `codex` 分类)
- 同步机制:
- 启用的 Claude MCP 会投影到 `~/.claude.json`(路径可随覆盖目录而变化)
- 启用的 Codex MCP 会投影到 `~/.codex/config.toml`
- 校验与归一化:新增/导入时自动校验字段合法性stdio/http并自动修复/填充 `id` 等键名
- 导入来源:支持从 `~/.claude.json``~/.codex/config.toml` 导入;已存在条目只强制 `enabled=true`,不覆盖其他字段
### 检查更新 ### 检查更新
- 在“设置”中点击“检查更新”,若内置 Updater 配置可用将直接检测与下载;否则会回退打开 Releases 页面 - 在“设置”中点击“检查更新”,若内置 Updater 配置可用将直接检测与下载;否则会回退打开 Releases 页面
@@ -137,6 +144,32 @@ brew upgrade --cask cc-switch
- v1 → v2 结构升级:会额外生成 `~/.cc-switch/config.v1.backup.<timestamp>.json` 以便回滚 - v1 → v2 结构升级:会额外生成 `~/.cc-switch/config.v1.backup.<timestamp>.json` 以便回滚
- 注意:迁移后不再持续归档日常切换/编辑操作,如需长期审计请自备备份方案 - 注意:迁移后不再持续归档日常切换/编辑操作,如需长期审计请自备备份方案
## 架构总览v3.5.x
- 前端Renderer
- 技术栈TypeScript + React 18 + Vite + TailwindCSS
- 数据层TanStack React Query 统一查询与变更(`@/lib/query`Tauri API 统一封装(`@/lib/api`
- 事件流:监听后端 `provider-switched` 事件,驱动 UI 刷新与托盘状态一致
- 组织结构按领域拆分组件providers/settings/mcp动作逻辑下沉至 Hooks`useProviderActions`
- 后端Tauri + Rust
- Commands接口层`src-tauri/src/commands/*` 按领域拆分provider/config/mcp 等)
- Services业务层`src-tauri/src/services/*` 承载核心逻辑Provider/MCP/Config/Speedtest
- 模型与状态:`provider.rs`(领域模型)+ `app_config.rs`(多应用配置)+ `store.rs`(全局 RwLock
- 可靠性:
- 统一错误类型 `AppError`(包含本地化消息)
- 事务式变更(配置快照 + 失败回滚)与原子写入(避免半写入)
- 托盘菜单与事件:切换后重建菜单并向前端发射 `provider-switched` 事件
- 设计要点SSOT
- 单一事实源:供应商配置集中存放于 `~/.cc-switch/config.json`
- 切换时仅写 live 配置Claude: `settings.json`Codex: `auth.json` + `config.toml`
- 首次缺省导入:当某应用无任何供应商时,会从已有 live 配置生成默认项
- 兼容性与变更
- 命令参数统一Tauri 命令仅接受 `app`(值为 `claude` / `codex`
- 前端类型统一:使用 `AppId` 表达应用标识(替代历史 `AppType` 导出)
## 开发 ## 开发
### 环境要求 ### 环境要求
@@ -164,6 +197,12 @@ pnpm format
# 检查代码格式 # 检查代码格式
pnpm format:check pnpm format:check
# 运行前端单元测试
pnpm test:unit
# 监听模式运行测试
pnpm test:unit:watch
# 构建应用 # 构建应用
pnpm build pnpm build
@@ -193,15 +232,21 @@ cargo test
- **[TypeScript](https://www.typescriptlang.org/)** - 类型安全的 JavaScript - **[TypeScript](https://www.typescriptlang.org/)** - 类型安全的 JavaScript
- **[Vite](https://vitejs.dev/)** - 极速的前端构建工具 - **[Vite](https://vitejs.dev/)** - 极速的前端构建工具
- **[Rust](https://www.rust-lang.org/)** - 系统级编程语言(后端) - **[Rust](https://www.rust-lang.org/)** - 系统级编程语言(后端)
- **[TanStack Query](https://tanstack.com/query/latest)** - 前端数据获取与缓存
- **[i18next](https://www.i18next.com/)** - 国际化框架
## 项目结构 ## 项目结构
``` ```
├── src/ # 前端代码 (React + TypeScript) ├── src/ # 前端代码 (React + TypeScript)
│ ├── components/ # React 组件 │ ├── components/ # React 组件providers/settings/mcp/ui 等)
│ ├── config/ # 预设供应商配置 │ ├── hooks/ # 领域动作与状态(如 useProviderActions
│ ├── lib/ # Tauri API 封装 │ ├── lib/
└── utils/ # 工具函数 │ ├── api/ # Tauri API 封装providers/settings/mcp 等)
│ │ └── query/ # TanStack Query 查询/变更与 client
│ ├── i18n/ # 国际化资源
│ ├── config/ # 供应商/MCP 预设
│ └── utils/ # 工具函数
├── src-tauri/ # 后端代码 (Rust) ├── src-tauri/ # 后端代码 (Rust)
│ ├── src/ # Rust 源代码 │ ├── src/ # Rust 源代码
│ │ ├── commands/ # Tauri 命令定义(按域拆分) │ │ ├── commands/ # Tauri 命令定义(按域拆分)
@@ -230,6 +275,11 @@ cargo test
欢迎提交 Issue 反馈问题和建议! 欢迎提交 Issue 反馈问题和建议!
提交 PR 前请确保:
- 通过类型检查:`pnpm typecheck`
- 通过格式检查:`pnpm format:check`
- 通过单元测试:`pnpm test:unit`
## Star History ## Star History
[![Star History Chart](https://api.star-history.com/svg?repos=farion1231/cc-switch&type=Date)](https://www.star-history.com/#farion1231/cc-switch&Date) [![Star History Chart](https://api.star-history.com/svg?repos=farion1231/cc-switch&type=Date)](https://www.star-history.com/#farion1231/cc-switch&Date)