1 line
15 KiB
JSON
1 line
15 KiB
JSON
{"repo": "alhza/cc-switch", "files": {"README.md": {"5b903b7bc43a238110d6449775f18b124e710b57": {"t": 1785596024.6800594, "n": 5834, "h": "51799dae961c5be0", "c": "# Claude Code & Codex 供应商切换器\n\n[](https://github.com/farion1231/cc-switch/releases)\n[](https://github.com/farion1231/cc-switch/releases)\n[](https://tauri.app/)\n\n一个用于管理和切换 Claude Code 与 Codex 不同供应商配置的桌面应用。\n\n> **📢 重要通知**:CC Switch 即将进行大规模重构,请暂缓提交新的 PR,感谢理解与配合!\n\n> v3.5.0 :新增 **MCP 管理**、**配置导入/导出**、**端点速度测试**功能,完善国际化覆盖,新增 Longcat、kat-coder 预设,标准化发布文件命名规范。\n\n> v3.4.0 :新增 i18next 国际化(还有部分未完成)、对新模型(qwen-3-max, GLM-4.6, DeepSeek-V3.2-Exp)的支持、Claude 插件、单实例守护、托盘最小化及安装器优化等。\n\n> v3.3.0 :VS Code Codex 插件一键配置/移除(默认自动同步)、Codex 通用配置片段与自定义向导增强、WSL 环境支持、跨平台托盘与 UI 优化。(该 VS Code 写入功能已在 v3.4.x 停用)\n\n> v3.2.0 :全新 UI、macOS系统托盘、内置更新器、原子写入与回滚、改进暗色样式、单一事实源(SSOT)与一次性迁移/归档。\n\n> v3.1.0 :新增 Codex 供应商管理与一键切换,支持导入当前 Codex 配置为默认供应商,并在内部配置从 v1 → v2 迁移前自动备份(详见下文“迁移与归档”)。\n\n> v3.0.0 重大更新:从 Electron 完全迁移到 Tauri 2.0,应用体积显著降低、启动性能大幅提升。\n\n## 功能特性(v3.5.0)\n\n- **MCP (Model Context Protocol) 管理**:完整的 MCP 服务器配置管理系统\n - 支持 stdio 和 http 服务器类型,并提供命令校验\n - 内置常用 MCP 服务器模板(如 mcp-fetch 等)\n - 实时启用/禁用 MCP 服务器,原子文件写入防止配置损坏\n- **配置导入/导出**:备份和恢复你的供应商配置\n - 一键导出所有配置到 JSON 文件\n - 导入配置时自动验证并备份,自动轮换备份(保留最近 10 个)\n - 带有详细状态反馈的进度模态框\n- **端点速度测试**:测试 API 端点响应时间\n - 测量不同供应商端点的延迟,可视化连接质量指示器\n - 帮助用户选择最快的供应商\n- **国际化与语言切换**:完整的 i18next 国际化覆盖,默认显示中文,可在设置中快速切换到英文,界面文案自动实时刷新。\n- **Claude 插件同步**:内置按钮可一键应用或恢复 Claude 插件配置,切换供应商后立即生效。\n- **供应商预设扩展**:新增 Longcat、kat-coder 等预设,更新 GLM 供应商配置至最新模型。\n- **系统托盘与窗口行为**:窗口关闭可最小化到托盘,macOS 支持托盘模式下隐藏/显示 Dock,托盘切换时同步 Claude/Codex/插件状态。\n- **单实例**:保证同一时间仅运行一个实例,避免多开冲突。\n- **标准化发布命名**:所有平台发布文件使用一致的版本标签命名(macOS: `.tar.gz` / `.zip`,Windows: `.msi` / `-Portable.zip`,Linux: `.AppImage` / `.deb`)。\n\n## 界面预览\n\n### 主界面\n\n\n\n### 添加供应商\n\n\n\n## 下载安装\n\n### 系统要求\n\n- **Windows**: Windows 10 及以上\n- **macOS**: macOS 10.15 (Catalina) 及以上\n- **Linux**: Ubuntu 22.04+ / Debian 11+ / Fedora 34+ 等主流发行版\n\n### Windows 用户\n\n从 [Releases](../../releases) 页面下载最新版本的 `CC-Switch-v{版本号}-Windows.msi` 安装包或者 `CC-Switch-v{版本号}-Windows-Portable.zip` 绿色版。\n\n### macOS 用户\n\n**方式一:通过 Homebrew 安装(推荐)**\n\n```bash\nbrew tap farion1231/ccswitch\nbrew install --cask cc-switch\n```\n\n更新:\n\n```bash\nbrew upgrade --cask cc-switch\n```\n\n**方式二:手动下载**\n\n从 [Releases](../../releases) 页面下载 `CC-Switch-v{版本号}-macOS.zip` 解压使用。\n\n> **注意**:由于作者没有苹果开发者账号,首次打开可能出现\"未知开发者\"警告,请先关闭,然后前往\"系统设置\" → \"隐私与安全性\" → 点击\"仍要打开\",之后便可以正常打开\n\n### Linux 用户\n\n从 [Releases](../../releases) 页面下载最新版本的 `CC-Switch-v{版本号}-Linux.deb` 包或者 `CC-Switch-v{版本号}-Linux.AppImage` 安装包。\n\n## 使用说明\n\n1. 点击\"添加供应商\"添加你的 API 配置\n2. 切换方式:\n - 在主界面选择供应商后点击切换\n - 或通过“系统托盘(菜单栏)”直接选择目标供应商,立即生效\n3. 切换会写入对应应用的“live 配置文件”(Claude:`settings.json`;Codex:`auth.json` + `config.toml`)\n4. 重启或新开终端以确保生效\n5. 若需切回官方登录,在预设中选择“官方登录”并切换即可;重启终端后按官方流程登录\n\n### 检查更新\n\n- 在“设置”中点击“检查更新”,若内置 Updater 配置可用将直接检测与下载;否则会回退打开 Releases 页面\n\n### Codex 说明(SSOT)\n\n- 配置目录:`~/.codex/`\n - live 主配置:`auth.json`(必需)、`config.toml`(可为空)\n- API Key 字段:`auth.json` 中使用 `OPENAI_API_KEY`\n- 切换行为(不再写“副本文件”):\n - 供应商配置统一保存在 `~/.cc-switch/config.json`\n - 切换时将目标供应商写回 live 文件(`auth.json` + `config.toml`)\n - 采用“原子写入 + 失败回滚”,避免半写状态;`config.toml` 可为空\n- 导入默认:当该应用无任何供应商时,从现有 live 主配置创建一条默认项并设为当前\n- 官方登录:可切换到预设“Codex 官方登录”,重启终端后按官方流程登录\n\n### Claude Code 说明(SSOT)\n\n- 配置目录:`~/.claude/`\n - live 主配置:`settings.json`(优先)或历史兼容 `claude.json`\n- API Key 字段:`env.ANTHROPIC_AUTH_TOKEN`\n- 切换行为(不再写“副本文件”):\n - 供应商配置统一保存在 `~/.cc-switch/config.json`\n - 切换时将目标供应商 JSON 直接写入 live 文件(优先 `settings.json`)\n - 编辑当前供应商时,先写 live 成功,再更新应用主配置,保证一致性\n- 导入默认:当该应用无任何供应商时,从现有 live 主配置创建一条默认项并设为当前\n- 官方登录:可切换到预设“Claude 官方登录”,重启终端后可使用 `/login` 完成登录\n\n### 迁移与归档(自 v3.2.0 起)\n\n- 一次性迁移:首次启动 3.2.0 及以上版本会扫描旧的“副本文件”并合并到 `~/.cc-switch/config.json`\n - Claude:`~/.claude/settings-*.json`(排除 `settings.json` / 历史 `claude.json`)\n - Codex:`~/.codex/auth-*.json` 与 `config-*.toml`(按名称成对合并)\n- 去重与当前项:按“名称(忽略大小写)+ API Key”去重;若当前为空,将 live 合并项设为当前\n- 归档与清理:\n - 归档目录:`~/.cc-switch/archive/<timestamp>/<category>/...`\n - 归档成功后删除原副本;失败则保留原文件(保守策略)\n- v1 → v2 结构升级:会额外生成 `~/.cc-switch/config.v1.backup.<timestamp>.json` 以便回滚\n- 注意:迁移后不再持续归档日常切换/编辑操作,如需长期审计请自备备份方案\n\n## 开发\n\n### 环境要求\n\n- Node.js 18+\n- pnpm 8+\n- Rust 1.75+\n- Tauri CLI 2.0+\n\n### 开发命令\n\n```bash\n# 安装依赖\npnpm install\n\n# 开发模式(热重载)\npnpm dev\n\n# 类型检查\npnpm typecheck\n\n# 代码格式化\npnpm format\n\n# 检查代码格式\npnpm format:check\n\n# 构建应用\npnpm build\n\n# 构建调试版本\npnpm tauri build --debug\n```\n\n### Rust 后端开发\n\n```bash\ncd src-tauri\n\n# 格式化 Rust 代码\ncargo fmt\n\n# 运行 clippy 检查\ncargo clippy\n\n# 运行测试\ncargo test\n```\n\n## 技术栈\n\n- **[Tauri 2](https://tauri.app/)** - 跨平台桌面应用框架(集成 updater/process/opener/log/tray-icon)\n- **[React 18](https://react.dev/)** - 用户界面库\n- **[TypeScript](https://www.typescriptlang.org/)** - 类型安全的 JavaScript\n- **[Vite](https://vitejs.dev/)** - 极速的前端构建工具\n- **[Rust](https://www.rust-lang.org/)** - 系统级编程语言(后端)\n\n## 项目结构\n\n```\n├── src/ # 前端代码 (React + TypeScript)\n│ ├── components/ # React 组件\n│ ├── config/ # 预设供应商配置\n│ ├── lib/ # Tauri API 封装\n│ └── utils/ # 工具函数\n├── src-tauri/ # 后端代码 (Rust)\n│ ├── src/ # Rust 源代码\n│ │ ├── commands.rs # Tauri 命令定义\n│ │ ├── config.rs # 配置文件管理\n│ │ ├── provider.rs # 供应商管理逻辑\n│ │ └── store.rs # 状态管理\n│ ├── capabilities/ # 权限配置\n│ └── icons/ # 应用图标资源\n└── screenshots/ # 界面截图\n```\n\n## 更新日志\n\n查看 [CHANGELOG.md](CHANGELOG.md) 了解版本更新详情。\n\n## Electron 旧版\n\n[Releases](../../releases) 里保留 v2.0.3 Electron 旧版\n\n如果需要旧版 Electron 代码,可以拉取 electron-legacy 分支\n\n## 贡献\n\n欢迎提交 Issue 反馈问题和建议!\n\n## Star History\n\n[](https://www.star-history.com/#farion1231/cc-switch&Date)\n\n## License\n\nMIT © Jason Young\n"}}, "src/config/providerPresets.ts": {"5b903b7bc43a238110d6449775f18b124e710b57": {"t": 1785596030.7736027, "n": 4750, "h": "2312e19b96cbf9ea", "c": "/**\n * 预设供应商配置模板\n */\nimport { ProviderCategory } from \"../types\";\n\nexport interface TemplateValueConfig {\n label: string;\n placeholder: string;\n defaultValue?: string;\n editorValue: string;\n}\n\nexport interface ProviderPreset {\n name: string;\n websiteUrl: string;\n // 新增:第三方/聚合等可单独配置获取 API Key 的链接\n apiKeyUrl?: string;\n settingsConfig: object;\n isOfficial?: boolean; // 标识是否为官方预设\n category?: ProviderCategory; // 新增:分类\n // 新增:模板变量定义,用于动态替换配置中的值\n templateValues?: Record<string, TemplateValueConfig>; // editorValue 存储编辑器中的实时输入值\n // 新增:请求地址候选列表(用于地址管理/测速)\n endpointCandidates?: string[];\n}\n\nexport const providerPresets: ProviderPreset[] = [\n {\n name: \"Claude Official\",\n websiteUrl: \"https://www.anthropic.com/claude-code\",\n settingsConfig: {\n env: {},\n },\n isOfficial: true, // 明确标识为官方预设\n category: \"official\",\n },\n {\n name: \"DeepSeek\",\n websiteUrl: \"https://platform.deepseek.com\",\n settingsConfig: {\n env: {\n ANTHROPIC_BASE_URL: \"https://api.deepseek.com/anthropic\",\n ANTHROPIC_AUTH_TOKEN: \"\",\n ANTHROPIC_MODEL: \"DeepSeek-V3.2-Exp\",\n ANTHROPIC_SMALL_FAST_MODEL: \"DeepSeek-V3.2-Exp\",\n },\n },\n category: \"cn_official\",\n },\n {\n name: \"Zhipu GLM\",\n websiteUrl: \"https://open.bigmodel.cn\",\n settingsConfig: {\n env: {\n ANTHROPIC_BASE_URL: \"https://open.bigmodel.cn/api/anthropic\",\n ANTHROPIC_AUTH_TOKEN: \"\",\n // 兼容旧键名,保持前端读取一致\n ANTHROPIC_MODEL: \"GLM-4.6\",\n ANTHROPIC_SMALL_FAST_MODEL: \"glm-4.5-air\",\n ANTHROPIC_DEFAULT_HAIKU_MODEL: \"glm-4.5-air\",\n ANTHROPIC_DEFAULT_SONNET_MODEL: \"glm-4.6\",\n ANTHROPIC_DEFAULT_OPUS_MODEL: \"glm-4.6\",\n },\n },\n category: \"cn_official\",\n },\n {\n name: \"Qwen Coder\",\n websiteUrl: \"https://bailian.console.aliyun.com\",\n settingsConfig: {\n env: {\n ANTHROPIC_BASE_URL:\n \"https://dashscope.aliyuncs.com/api/v2/apps/claude-code-proxy\",\n ANTHROPIC_AUTH_TOKEN: \"\",\n ANTHROPIC_MODEL: \"qwen3-max\",\n ANTHROPIC_SMALL_FAST_MODEL: \"qwen3-max\",\n },\n },\n category: \"cn_official\",\n },\n {\n name: \"Kimi k2\",\n websiteUrl: \"https://platform.moonshot.cn/console\",\n settingsConfig: {\n env: {\n ANTHROPIC_BASE_URL: \"https://api.moonshot.cn/anthropic\",\n ANTHROPIC_AUTH_TOKEN: \"\",\n ANTHROPIC_MODEL: \"kimi-k2-turbo-preview\",\n ANTHROPIC_SMALL_FAST_MODEL: \"kimi-k2-turbo-preview\",\n },\n },\n category: \"cn_official\",\n },\n {\n name: \"ModelScope\",\n websiteUrl: \"https://modelscope.cn\",\n settingsConfig: {\n env: {\n ANTHROPIC_BASE_URL: \"https://api-inference.modelscope.cn\",\n ANTHROPIC_AUTH_TOKEN: \"\",\n ANTHROPIC_MODEL: \"ZhipuAI/GLM-4.6\",\n ANTHROPIC_SMALL_FAST_MODEL: \"ZhipuAI/GLM-4.6\",\n },\n },\n category: \"aggregator\",\n },\n {\n name: \"KAT-Coder\",\n websiteUrl: \"https://console.streamlake.ai/wanqing/\",\n apiKeyUrl: \"https://console.streamlake.ai/console/wanqing/api-key\",\n settingsConfig: {\n env: {\n ANTHROPIC_BASE_URL:\n \"https://vanchin.streamlake.ai/api/gateway/v1/endpoints/${ENDPOINT_ID}/claude-code-proxy\",\n ANTHROPIC_AUTH_TOKEN: \"\",\n ANTHROPIC_MODEL: \"KAT-Coder\",\n ANTHROPIC_SMALL_FAST_MODEL: \"KAT-Coder\",\n },\n },\n category: \"cn_official\",\n templateValues: {\n ENDPOINT_ID: {\n label: \"Vanchin Endpoint ID\",\n placeholder: \"ep-xxx-xxx\",\n defaultValue: \"\",\n editorValue: \"\",\n },\n },\n },\n {\n name: \"Longcat\",\n websiteUrl: \"https://longcat.chat/platform\",\n apiKeyUrl: \"https://longcat.chat/platform/api_keys\",\n settingsConfig: {\n env: {\n ANTHROPIC_BASE_URL: \"https://api.longcat.chat/anthropic\",\n ANTHROPIC_AUTH_TOKEN: \"\",\n ANTHROPIC_MODEL: \"LongCat-Flash-Chat\",\n ANTHROPIC_SMALL_FAST_MODEL: \"LongCat-Flash-Chat\",\n ANTHROPIC_DEFAULT_SONNET_MODEL: \"LongCat-Flash-Chat\",\n ANTHROPIC_DEFAULT_OPUS_MODEL: \"LongCat-Flash-Chat\",\n CLAUDE_CODE_MAX_OUTPUT_TOKENS: \"6000\",\n CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: 1,\n },\n },\n category: \"cn_official\",\n },\n {\n name: \"PackyCode\",\n websiteUrl: \"https://www.packycode.com\",\n apiKeyUrl: \"https://www.packycode.com/?aff=rlo54mgz\",\n settingsConfig: {\n env: {\n ANTHROPIC_BASE_URL: \"https://api.packycode.com\",\n ANTHROPIC_AUTH_TOKEN: \"\",\n },\n },\n // 请求地址候选(用于地址管理/测速)\n endpointCandidates: [\n \"https://api.packycode.com\",\n \"https://api-hk-cn2.packycode.com\",\n \"https://api-hk-g.packycode.com\",\n \"https://api-us-cn2.packycode.com\",\n \"https://api-cf-pro.packycode.com\",\n ],\n category: \"third_party\",\n },\n];\n"}}}} |