feat(sponsor): add PackyCode as official partner

- Add PackyCode to sponsor section in README (both EN/ZH)
- Add PackyCode logo to assets/partners/logos/
- Mark PackyCode as partner in provider presets (Claude & Codex)
- Add promotion message to i18n files with 10% discount info
This commit is contained in:
Jason
2025-11-10 18:44:19 +08:00
parent be155c857e
commit b1abdf95aa
7 changed files with 262 additions and 621 deletions

View File

@@ -12,105 +12,59 @@
</div>
## ❤️ 赞助商
## ❤️赞助商
![智谱 GLM](assets/partners/banners/glm-zh.jpg)
感谢智谱AI的 GLM CODING PLAN 赞助了本项目!
GLM CODING PLAN 是专为AI编码打造的订阅套餐每月最低仅需20元即可在十余款主流AI编码工具如 Claude Code、Cline 中畅享智谱旗舰模型 GLM-4.6,为开发者提供顶尖、高速、稳定的编码体验。
GLM CODING PLAN 是专为AI编码打造的订阅套餐,每月最低仅需20元即可在十余款主流AI编码工具如 Claude Code、Cline 中畅享智谱旗舰模型 GLM-4.6,为开发者提供顶尖、高速、稳定的编码体验。
CC Switch 已经预设了智谱GLM只需要填写 key 即可一键导入编程工具。智谱AI为本软件的用户提供了特别优惠使用[此链接](https://www.bigmodel.cn/claude-code?ic=RRVJPB5SII)购买可以享受九折优惠。
## 更新记录
---
> **v3.6.0** 新增编辑模式供应商复制、手动排序、自定义端点管理、使用量查询等功能优化配置目录切换体验WSL 环境完美支持新增多个供应商预设DMXAPI、Azure Codex、AnyRouter、AiHubMix、MiniMax完成全栈架构重构和测试体系建设。
> v3.5.0 :新增 MCP 管理、配置导入/导出、端点速度测试功能,完善国际化覆盖,新增 Longcat、kat-coder 预设,标准化发布文件命名规范。
> v3.4.0 :新增 i18next 国际化、对新模型qwen-3-max, GLM-4.6, DeepSeek-V3.2-Exp的支持、Claude 插件、单实例守护、托盘最小化及安装器优化等。
> v3.3.0 VS Code Codex 插件一键配置/移除默认自动同步、Codex 通用配置片段与自定义向导增强、WSL 环境支持、跨平台托盘与 UI 优化。(该 VS Code 写入功能已在 v3.4.x 停用)
> v3.2.0 :全新 UI、macOS系统托盘、内置更新器、原子写入与回滚、改进暗色样式、单一事实源SSOT与一次性迁移/归档。
> v3.1.0 :新增 Codex 供应商管理与一键切换,支持导入当前 Codex 配置为默认供应商,并在内部配置从 v1 → v2 迁移前自动备份(详见下文“迁移与归档”)。
> v3.0.0 重大更新:从 Electron 完全迁移到 Tauri 2.0,应用体积显著降低、启动性能大幅提升。
## 功能特性v3.6.0
### 核心功能
- **MCP (Model Context Protocol) 管理**:完整的 MCP 服务器配置管理系统
- 支持 stdio 和 http 服务器类型,并提供命令校验
- 内置常用 MCP 服务器模板(如 mcp-fetch 等)
- 实时启用/禁用 MCP 服务器,原子文件写入防止配置损坏
- **配置导入/导出**:备份和恢复你的供应商配置
- 一键导出所有配置到 JSON 文件
- 导入配置时自动验证并备份,自动轮换备份(保留最近 10 个)
- 导入后自动同步到 live 配置文件,确保立即生效
- **端点速度测试**:测试 API 端点响应时间
- 测量不同供应商端点的延迟,可视化连接质量指示器
- 帮助用户选择最快的供应商
- **国际化与语言切换**:完整的 i18next 国际化覆盖(包含错误消息、托盘菜单、所有 UI 组件)
- **Claude 插件同步**:内置按钮可一键应用或恢复 Claude 插件配置,切换供应商后立即生效。
### v3.6 新增功能
- **供应商复制功能**:快速复制现有供应商配置,轻松创建变体配置
- **手动排序功能**:通过拖拽来对供应商进行手动排序
- **自定义端点管理**:支持聚合类供应商的多端点配置
- **自定义配置目录(云同步支持)**
- 自定义 CC Switch 的配置存储位置
- 指定到云同步文件夹Dropbox、OneDrive、iCloud、坚果云等即可实现跨设备配置自动同步
- 通过 Tauri Store 独立管理
- **Claude 配置数据结构增强**
- **细粒度模型配置**:从双键系统升级到四键系统,以匹配官方最新数据结构
- 新增字段:`ANTHROPIC_DEFAULT_HAIKU_MODEL``ANTHROPIC_DEFAULT_SONNET_MODEL``ANTHROPIC_DEFAULT_OPUS_MODEL``ANTHROPIC_MODEL`
- 替换旧版 `ANTHROPIC_SMALL_FAST_MODEL`,支持自动迁移
- 后端在首次读写时自动规范化旧配置,带有智能回退链
- UI 从 2 个模型输入字段扩展到 4 个,具有智能默认值
- 支持 `ANTHROPIC_API_KEY` 字段(除 `ANTHROPIC_AUTH_TOKEN` 外)
- 模板变量系统,支持动态配置替换(如 KAT-Coder 的 ENDPOINT_ID
- 端点候选列表,用于速度测试和端点管理
- 视觉主题配置(供应商卡片自定义图标和颜色)
- 合作伙伴推广机制与国际化支持
- **供应商模型更新**
- Kimi更新到最新的 `kimi-k2-thinking`
- **使用量查询功能**
- 自动刷新间隔:支持定时自动查询使用量
- 测试脚本 API测试 JavaScript 脚本是否正确
- 模板系统扩展:自定义空白模板、支持 access token 和 user ID 参数
- **配置编辑器改进**
- 新增 JSON 格式化按钮
- 实时 TOML 语法验证Codex 配置)
- **配置目录切换自动同步**:切换 Claude/Codex 配置目录(如切换到 WSL 环境)时,自动同步当前供应商到新目录,避免冲突导致配置文件混乱
- **编辑当前供应商时加载 live 配置**:编辑正在使用的供应商时,优先显示实际生效的配置,保护用户手动修改
- **新增供应商预设**DMXAPI、Azure Codex、AnyRouter、AiHubMix、MiniMax
- **合作伙伴推广机制**:支持生态合作伙伴推广(如智谱 GLM Z.ai
### v3.6 架构改进
- **后端重构**:完成 5 阶段重构(统一错误处理 → 命令层拆分 → 集成测试 → Service 层提取 → 并发优化)
- **前端重构**:完成 4 阶段重构(测试基础设施 → Hooks 提取 → 组件拆分 → 代码清理)
- **测试体系**Hooks 单元测试 100% 覆盖集成测试覆盖关键流程vitest + MSW + @testing-library/react
### 系统功能
- **系统托盘与窗口行为**窗口关闭可最小化到托盘macOS 支持托盘模式下隐藏/显示 Dock托盘切换时同步 Claude/Codex/插件状态。
- **单实例**:保证同一时间仅运行一个实例,避免多开冲突。
- **标准化发布命名**所有平台发布文件使用一致的版本标签命名macOS: `.tar.gz` / `.zip`Windows: `.msi` / `-Portable.zip`Linux: `.AppImage` / `.deb`)。
<table>
<tr>
<td width="120"><img src="assets/partners/logos/packycode.png" alt="PackyCode" width="100"></td>
<td>感谢 PackyCode 赞助了本项目PackyCode 是一家稳定、高效的API中转服务商提供 Claude Code、Codex、Gemini 等多种中转服务。PackyCode 为本软件的用户提供了特别优惠,使用<a href="https://www.packyapi.com/register?aff=cc-switch">此链接</a>注册并在充值时填写"cc-switch"优惠码可以享受9折优惠。</td>
</tr>
</table>
## 界面预览
### 主界面
| 主界面 | 添加供应商 |
| :---------------------------------------: | :------------------------------------------: |
| ![主界面](assets/screenshots/main-zh.png) | ![添加供应商](assets/screenshots/add-zh.png) |
![主界面](assets/screenshots/main-zh.png)
## 功能特性
### 添加供应商
### 当前版本v3.6.0 | [完整更新日志](CHANGELOG.md)
![添加供应商](assets/screenshots/add-zh.png)
**核心功能**
- **供应商管理**:一键切换 Claude Code 与 Codex 的 API 配置
- **MCP 集成**:集中管理 MCP 服务器,支持 stdio/http 类型和实时同步
- **速度测试**:测量 API 端点延迟,可视化连接质量指示器
- **导入导出**:备份和恢复配置,自动轮换(保留最近 10 个)
- **国际化支持**完整的中英文本地化UI、错误、托盘
- **Claude 插件同步**:一键应用或恢复 Claude 插件配置
**v3.6 亮点**
- 供应商复制 & 拖拽排序
- 多端点管理 & 自定义配置目录(支持云同步)
- 细粒度模型配置四层Haiku/Sonnet/Opus/自定义)
- WSL 环境支持,配置目录切换自动同步
- 100% hooks 测试覆盖 & 完整架构重构
- 新增预设DMXAPI、Azure Codex、AnyRouter、AiHubMix、MiniMax
**系统功能**
- 系统托盘快速切换
- 单实例守护
- 内置自动更新器
- 原子写入与回滚保护
## 下载安装
@@ -149,148 +103,95 @@ brew upgrade --cask cc-switch
从 [Releases](../../releases) 页面下载最新版本的 `CC-Switch-v{版本号}-Linux.deb` 包或者 `CC-Switch-v{版本号}-Linux.AppImage` 安装包。
## 使用说明
## 快速开始
1. 点击"添加供应商"添加你的 API 配置
2. 切换方式:
- 在主界面选择供应商后点击切换
- 或通过“系统托盘(菜单栏)”直接选择目标供应商,立即生效
3. 切换会写入对应应用的“live 配置文件”Claude`settings.json`Codex`auth.json` + `config.toml`
4. 重启或新开终端以确保生效
5. 若需切回官方登录,在预设中选择“官方登录”并切换即可;重启终端后按官方流程登录
### 基本使用
### MCP 配置说明v3.5.x
1. **添加供应商**:点击"添加供应商" → 选择预设或创建自定义配置
2. **切换供应商**
- 主界面:选择供应商 → 点击"启用"
- 系统托盘:直接点击供应商名称(立即生效)
3. **生效方式**:重启终端或 Claude Code/Codex 以应用更改
4. **恢复官方登录**:选择"官方登录"预设,重启终端后使用 `/login`Claude或官方登录流程Codex
- 管理位置:所有 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`,不覆盖其他字段
### MCP 管理
### 检查更新
- **位置**:点击右上角"MCP"按钮
- **添加服务器**使用内置模板mcp-fetch、mcp-filesystem或自定义配置
- **启用/禁用**:切换开关以控制哪些服务器同步到 live 配置
- **同步**:启用的服务器自动同步到 `~/.claude.json`Claude`~/.codex/config.toml`Codex
- 在“设置”中点击“检查更新”,若内置 Updater 配置可用将直接检测与下载;否则会回退打开 Releases 页面
### 配置文件
### Codex 说明SSOT
**Claude Code**
- 配置目录:`~/.codex/`
- live 主配置:`auth.json`(必需)、`config.toml`(可为空)
- API Key 字段:`auth.json` 中使用 `OPENAI_API_KEY`
- 切换行为(不再写“副本文件”):
- 供应商配置统一保存在 `~/.cc-switch/config.json`
- 切换时将目标供应商写回 live 文件(`auth.json` + `config.toml`
- 采用“原子写入 + 失败回滚”,避免半写状态;`config.toml` 可为空
- 导入默认:当该应用无任何供应商时,从现有 live 主配置创建一条默认项并设为当前
- 官方登录可切换到预设“Codex 官方登录”,重启终端后按官方流程登录
- Live 配置:`~/.claude/settings.json`(或 `claude.json`
- API key 字段:`env.ANTHROPIC_AUTH_TOKEN``env.ANTHROPIC_API_KEY`
- MCP 服务器:`~/.claude.json``mcpServers`
### Claude Code 说明SSOT
**Codex**
- 配置目录:`~/.claude/`
- live 主配置:`settings.json`(优先)或历史兼容 `claude.json`
- API Key 字段:`env.ANTHROPIC_AUTH_TOKEN`
- 切换行为(不再写“副本文件”):
- 供应商配置统一保存在 `~/.cc-switch/config.json`
- 切换时将目标供应商 JSON 直接写入 live 文件(优先 `settings.json`
- 编辑当前供应商时,先写 live 成功,再更新应用主配置,保证一致性
- 导入默认:当该应用无任何供应商时,从现有 live 主配置创建一条默认项并设为当前
- 官方登录可切换到预设“Claude 官方登录”,重启终端后可使用 `/login` 完成登录
- Live 配置:`~/.codex/auth.json`(必需)+ `config.toml`(可选)
- API key 字段:`auth.json` 中的 `OPENAI_API_KEY`
- MCP 服务器:`~/.codex/config.toml``[mcp.servers]`
### 迁移与归档
**CC Switch 存储**
#### v3.6 技术改进
- 主配置SSOT`~/.cc-switch/config.json`
- 设置:`~/.cc-switch/settings.json`
- 备份:`~/.cc-switch/backups/`(自动轮换,保留 10 个)
**内部优化(用户无感知)**
### 云同步设置
- **移除遗留迁移逻辑**v3.6 移除了 v1 配置自动迁移和副本文件扫描逻辑
- **影响**:启动性能提升,代码更简洁
- **兼容性**v2 格式配置完全兼容,无需任何操作
- ⚠️ **注意**:从 v3.1.0 或更早版本升级的用户,请先升级到 v3.2.x 或 v3.5.x 完成一次性迁移,再升级到 v3.6
1. 前往设置 → "自定义配置目录"
2. 选择您的云同步文件夹Dropbox、OneDrive、iCloud、坚果云等
3. 重启应用以应用
4. 在其他设备上重复操作以启用跨设备同步
- **命令参数标准化**:后端统一使用 `app` 参数(取值:`claude``codex`
- **影响**:代码更规范,错误提示更友好
- **兼容性**:前端已完全适配,用户无需关心此变更
> **注意**:首次启动会自动导入现有 Claude/Codex 配置作为默认供应商。
#### 启动失败与恢复
## 架构总览
- 触发条件:`~/.cc-switch/config.json` 不存在、损坏或解析失败时触发。
- 用户动作:根据弹窗提示检查 JSON 语法,或从备份文件恢复。
- 备份位置与轮换:`~/.cc-switch/backups/backup_YYYYMMDD_HHMMSS.json`(最多保留 10 个,参见 `src-tauri/src/services/config.rs`)。
- 退出策略:为保护数据安全,出现上述错误时应用会弹窗提示并强制退出;修复后重新启动即可。
### 设计原则
#### v3.2.0 起的迁移机制
```
┌─────────────────────────────────────────────────────────────┐
│ 前端 (React + TS) │
│ ┌─────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ Components │ │ Hooks │ │ TanStack Query │ │
│ │ (UI) │──│ (业务逻辑) │──│ (缓存/同步) │ │
│ └─────────────┘ └──────────────┘ └──────────────────┘ │
└────────────────────────┬────────────────────────────────────┘
│ Tauri IPC
┌────────────────────────▼────────────────────────────────────┐
│ 后端 (Tauri + Rust) │
│ ┌─────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ Commands │ │ Services │ │ Models/Config │ │
│ │ (API 层) │──│ (业务层) │──│ (数据) │ │
│ └─────────────┘ └──────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────────────────┘
```
- 一次性迁移:首次启动 3.2.0 及以上版本会扫描旧的"副本文件"并合并到 `~/.cc-switch/config.json`
- Claude`~/.claude/settings-*.json`(排除 `settings.json` / 历史 `claude.json`
- Codex`~/.codex/auth-*.json``config-*.toml`(按名称成对合并)
- 去重与当前项:按"名称(忽略大小写)+ API Key"去重;若当前为空,将 live 合并项设为当前
- 归档与清理:
- 归档目录:`~/.cc-switch/archive/<timestamp>/<category>/...`
- 归档成功后删除原副本;失败则保留原文件(保守策略)
- v1 → v2 结构升级:会额外生成 `~/.cc-switch/config.v1.backup.<timestamp>.json` 以便回滚
- 注意:迁移后不再持续归档日常切换/编辑操作,如需长期审计请自备备份方案
**核心设计模式**
## 架构总览v3.6
- **SSOT**(单一事实源):所有供应商配置存储在 `~/.cc-switch/config.json`
- **双向同步**:切换时写入 live 文件,编辑当前供应商时从 live 回填
- **原子写入**:临时文件 + 重命名模式防止配置损坏
- **并发安全**RwLock 与作用域守卫避免死锁
- **分层架构**清晰分离Commands → Services → Models
### 架构重构亮点v3.6
**核心组件**
**后端重构Rust**:完成 5 阶段重构
- **ProviderService**:供应商增删改查、切换、回填、排序
- **McpService**MCP 服务器管理、导入导出、live 文件同步
- **ConfigService**:配置导入导出、备份轮换
- **SpeedtestService**API 端点延迟测量
- **Phase 1**:统一错误处理(`AppError` + 国际化错误消息)
- **Phase 2**:命令层按领域拆分(`commands/{provider,mcp,config,settings,plugin,misc}.rs`
- **Phase 3**:引入集成测试和事务机制(配置快照 + 失败回滚)
- **Phase 4**:提取 Service 层(`services/{provider,mcp,config,speedtest}.rs`
- **Phase 5**:并发优化(`RwLock` 替代 `Mutex`,作用域 guard 避免死锁)
**v3.6 重构**
**前端重构React + TypeScript**:完成 4 阶段重构
- **Stage 1**建立测试基础设施vitest + MSW + @testing-library/react
- **Stage 2**:提取自定义 hooks`useProviderActions`, `useMcpActions`, `useSettings`, `useImportExport` 等)
- **Stage 3**:组件拆分和业务逻辑提取
- **Stage 4**:代码清理和格式化统一
**测试覆盖**
- Hooks 单元测试 100% 覆盖
- 集成测试覆盖关键流程App、SettingsDialog、MCP 面板)
- MSW 模拟后端 API确保测试独立性
### 分层架构
- **前端Renderer**
- 技术栈TypeScript + React 18 + Vite + TailwindCSS 4
- 数据层TanStack React Query 统一查询与变更(`@/lib/query`Tauri API 统一封装(`@/lib/api`
- 业务逻辑层:自定义 Hooks`@/hooks`)承载领域逻辑,组件保持简洁
- 事件流:监听后端 `provider-switched` 事件,驱动 UI 刷新与托盘状态一致
- 组织结构:按领域拆分组件(`providers/settings/mcp/ui`
- **后端Tauri + Rust**
- **Commands 层**(接口层):`src-tauri/src/commands/*` 按领域拆分,仅负责参数解析和权限校验
- **Services 层**(业务层):`src-tauri/src/services/*` 承载核心逻辑,可复用和测试
- `ProviderService`:供应商增删改查、切换、回填、排序
- `McpService`MCP 服务器管理、导入导出、同步
- `ConfigService`:配置文件导入导出、备份恢复
- `SpeedtestService`API 端点延迟测试
- **模型与状态**
- `provider.rs`:领域模型(`Provider`, `ProviderManager`, `ProviderMeta`
- `app_config.rs`:多应用配置(`MultiAppConfig`, `AppId`, `McpRoot`
- `store.rs`:全局状态(`AppState` + `RwLock<MultiAppConfig>`
- **可靠性**
- 统一错误类型 `AppError`(包含本地化消息)
- 事务式变更(配置快照 + 失败回滚)
- 原子写入(临时文件 + 重命名,避免半写入)
- 托盘菜单与事件:切换后重建菜单并向前端发射 `provider-switched` 事件
- **设计要点SSOT + 双向同步)**
- **单一事实源**:供应商配置集中存放于 `~/.cc-switch/config.json`
- **切换时写入**:将目标供应商配置写入 live 文件Claude: `settings.json`Codex: `auth.json` + `config.toml`
- **回填机制**:切换后立即读回 live 文件,更新 SSOT保护用户手动修改
- **目录切换同步**修改配置目录时自动同步当前供应商到新目录WSL 环境完美支持)
- **编辑时优先 live**:编辑当前供应商时,优先加载 live 配置,确保显示实际生效的配置
- **兼容性与变更**
- 命令参数统一Tauri 命令仅接受 `app`(值为 `claude` / `codex`
- 前端类型统一:使用 `AppId` 表达应用标识(替代历史 `AppType` 导出)
- 后端5 阶段重构(错误处理 → 命令拆分 → 测试 → 服务 → 并发)
- 前端4 阶段重构(测试基础 → hooks → 组件 → 清理)
- 测试100% hooks 覆盖 + 集成测试vitest + MSW
## 开发
@@ -363,12 +264,12 @@ cargo test --features test-hooks
**测试覆盖**
- Hooks 单元测试100% 覆盖)
- Hooks 单元测试100% 覆盖)
- `useProviderActions` - 供应商操作
- `useMcpActions` - MCP 管理
- `useSettings` 系列 - 设置管理
- `useImportExport` - 导入导出
- 集成测试
- 集成测试
- App 主应用流程
- SettingsDialog 完整交互
- MCP 面板功能
@@ -388,120 +289,36 @@ pnpm test:unit --coverage
## 技术栈
### 前端
**前端**React 18 · TypeScript · Vite · TailwindCSS 4 · TanStack Query v5 · react-i18next · react-hook-form · zod · shadcn/ui · @dnd-kit
- **[React 18](https://react.dev/)** - 用户界面库
- **[TypeScript](https://www.typescriptlang.org/)** - 类型安全的 JavaScript
- **[Vite](https://vitejs.dev/)** - 极速的前端构建工具
- **[TailwindCSS 4](https://tailwindcss.com/)** - 实用优先的 CSS 框架
- **[TanStack Query v5](https://tanstack.com/query/latest)** - 强大的数据获取与缓存
- **[react-i18next](https://react.i18next.com/)** - React 国际化框架
- **[react-hook-form](https://react-hook-form.com/)** - 高性能表单库
- **[zod](https://zod.dev/)** - TypeScript 优先的模式验证
- **[shadcn/ui](https://ui.shadcn.com/)** - 可复用的 React 组件
- **[@dnd-kit](https://dndkit.com/)** - 现代拖拽工具包
**后端**Tauri 2.8 · Rust · serde · tokio · thiserror · tauri-plugin-updater/process/dialog/store/log
### 后端
- **[Tauri 2.8](https://tauri.app/)** - 跨平台桌面应用框架
- tauri-plugin-updater - 自动更新
- tauri-plugin-process - 进程管理
- tauri-plugin-dialog - 文件对话框
- tauri-plugin-store - 持久化存储
- tauri-plugin-log - 日志记录
- **[Rust](https://www.rust-lang.org/)** - 系统级编程语言
- **[serde](https://serde.rs/)** - 序列化/反序列化框架
- **[tokio](https://tokio.rs/)** - 异步运行时
- **[thiserror](https://github.com/dtolnay/thiserror)** - 错误处理派生宏
### 测试工具
- **[vitest](https://vitest.dev/)** - 快速的单元测试框架
- **[MSW](https://mswjs.io/)** - API mock 工具
- **[@testing-library/react](https://testing-library.com/react)** - React 测试工具
**测试**vitest · MSW · @testing-library/react
## 项目结构
```
├── src/ # 前端代码 (React + TypeScript)
│ ├── components/ # React 组件
│ ├── providers/ # 供应商管理组件
│ │ │ ├── forms/ # 表单子组件Claude/Codex 字段)
│ │ │ ├── ProviderList.tsx
│ │ │ ├── ProviderForm.tsx
│ │ │ ├── AddProviderDialog.tsx
│ │ │ └── EditProviderDialog.tsx
│ │ ├── settings/ # 设置相关组件
│ │ │ ├── SettingsDialog.tsx
│ │ │ ├── DirectorySettings.tsx
│ │ │ └── ImportExportSection.tsx
│ │ ├── mcp/ # MCP 管理组件
│ │ │ ├── McpPanel.tsx
│ │ │ ├── McpFormModal.tsx
│ │ │ └── McpWizard.tsx
│ │ └── ui/ # shadcn/ui 基础组件
│ ├── hooks/ # 自定义 Hooks业务逻辑层
│ │ ├── useProviderActions.ts # 供应商操作
│ │ ├── useMcpActions.ts # MCP 操作
│ │ ├── useSettings.ts # 设置管理
│ │ ├── useImportExport.ts # 导入导出
│ │ └── useDirectorySettings.ts # 目录配置
├── src/ # 前端 (React + TypeScript)
│ ├── components/ # UI 组件 (providers/settings/mcp/ui)
│ ├── hooks/ # 自定义 hooks (业务逻辑)
│ ├── lib/
│ │ ├── api/ # Tauri API 封装(类型安全)
│ │ │ ├── providers.ts # 供应商 API
│ │ │ ├── settings.ts # 设置 API
│ │ │ ├── mcp.ts # MCP API
│ │ │ └── usage.ts # 用量查询 API
│ │ └── query/ # TanStack Query 配置
│ ├── queries.ts # 查询定义
│ ├── mutations.ts # 变更定义
│ │ └── queryClient.ts
│ ├── i18n/ # 国际化资源
│ │ └── locales/
│ │ ├── zh/ # 中文翻译
│ │ └── en/ # 英文翻译
│ ├── config/ # 配置与预设
│ │ ├── claudeProviderPresets.ts # Claude 供应商预设
│ │ ├── codexProviderPresets.ts # Codex 供应商预设
│ │ └── mcpPresets.ts # MCP 服务器模板
│ ├── utils/ # 工具函数
│ │ ├── postChangeSync.ts # 配置同步工具
│ │ └── ...
├── i18n/locales/ # 翻译 (zh/en)
├── config/ # 预设 (providers/mcp)
│ └── types/ # TypeScript 类型定义
├── src-tauri/ # 后端代码 (Rust)
── src/
├── commands/ # Tauri 命令层(按领域拆分
│ │ ├── provider.rs # 供应商命令
│ │ ├── mcp.rs # MCP 命令
│ │ ├── config.rs # 配置查询命令
│ │ ├── settings.rs # 设置命令
│ ├── plugin.rs # 插件命令
├── import_export.rs # 导入导出命令
└── misc.rs # 杂项命令
│ ├── services/ # Service 层(业务逻辑)
├── provider.rs # ProviderService
│ │ │ ├── mcp.rs # McpService
│ │ │ ├── config.rs # ConfigService
│ │ │ └── speedtest.rs # SpeedtestService
│ │ ├── app_config.rs # 配置数据模型
│ │ ├── provider.rs # 供应商领域模型
│ │ ├── store.rs # 全局状态管理
│ │ ├── mcp.rs # MCP 同步与校验
│ │ ├── error.rs # 统一错误类型
│ │ ├── usage_script.rs # 用量脚本执行
│ │ ├── claude_plugin.rs # Claude 插件管理
│ │ └── lib.rs # 应用入口
│ ├── capabilities/ # Tauri 权限配置
│ └── icons/ # 应用图标
├── tests/ # 前端测试v3.6 新增)
│ ├── hooks/ # Hooks 单元测试
│ ├── components/ # 组件集成测试
│ └── setup.ts # 测试配置
└── assets/ # 静态资源
├── screenshots/ # 界面截图
└── partners/ # 合作商资源
├── logos/ # 合作商 Logo
└── banners/ # 合作商横幅/宣传图
├── src-tauri/ # 后端 (Rust)
── src/
├── commands/ # Tauri 命令层(按领域)
├── services/ # 业务逻辑层
├── app_config.rs # 配置数据模型
├── provider.rs # 供应商领域模型
├── mcp.rs # MCP 同步与校验
└── lib.rs # 应用入口 & 托盘菜单
├── tests/ # 前端测试
├── hooks/ # 单元测试
└── components/ # 集成测试
└── assets/ # 截图 & 合作商资源
```
## 更新日志