github farion1231/cc-switch v3.20.4
CC Switch v3.20.4

4 hours ago

CC Switch v3.20.4

这一版以修复为主,另有一项新接入:MiniMax Code 成为第十个受管应用,供应商、MCP、Skills、提示词、会话浏览与用量统计一并接入,默认模型、登录和会话删除仍由 MiniMax Code 自己管。修复主要集中在经本地代理使用 Codex 的场景,四个会让 Codex 用不下去的问题在本版关闭:Codex 0.154 起放进 additional_tools 的工具让严格的 Chat 网关直接 400;一张 detail: "original" 的截图让整段会话此后每轮都 400;编辑或切走部分 Codex 供应商会悄悄清空已保存的 API Key;绑定到已删除 ChatGPT 账号的卡片既切不走,也改不了绑定。Claude Code 这边,GitHub Copilot 下的 auto mode 恢复可用,/effortxhighmax 与 Grok 4.6 的推理强度都按所选档位发送。Claude Desktop 的第三方配置现在也支持 Linux。本版含数据库迁移(v18 → v19),建议升级前手动备份一次数据库,见升级提醒。

English → | 日本語版 →


重点内容:你现在可以

  • 用 CC Switch 管理 MiniMax Code#7383#7578):第十个受管应用。供应商写进 ~/.minimax/config.yaml,与 MiniMax Code 自己的设置共存,多个供应商可以同时存在;MCP 与 ~/.minimax/mcp.json 双向同步;Skills 与 AGENTS.md 提示词库一并接入;预设来自 Pi 的预设目录,共 41 个。默认模型、登录与会话删除仍由 MiniMax Code 自己管,CC Switch 不碰。
  • 在看板里看到 MiniMax Code 的会话与用量:只读浏览会话、复制 resume 命令;用量以独立的「MiniMax Code (Session)」来源增量导入,首次同步会补齐历史。
  • 在 Linux 上给 Claude Desktop 切第三方供应商#7331,修复 #4855):配置路径与 macOS、Windows 一致,Flatpak 版也能用。
  • Codex 0.154 及以后版本经 Chat 网关不再 400#7454,修复 #7451#6158):additional_tools 里的工具正确并入请求,不再变成一条 content: null 的 system 消息。
  • 一张截图不再毁掉整段 Codex 会话#7476,修复 #6495#7458):已经坏掉的会话升级后直接恢复,不用手动改历史。
  • 编辑或切走 Codex 供应商不再清空已保存的 API Key#7434,修复 #7433)。
  • 删掉 ChatGPT 账号后,绑着它的 Codex 卡片能重新绑定或切走#7395,修复 #7392)。
  • 在 GitHub Copilot 下用 Claude Code 的 auto mode#5404,修复 #5175)。
  • /effort 选哪档就发哪档#7318#7531,修复 #7314#5367):xhigh 不再被丢,映射到 Grok 4.6 的模型重新带上推理强度,GPT-5.6 与 GPT-6 Astra 的 max 不再降成 xhigh
  • 没写描述的工具不再让整轮请求 400#7319#7378,修复 #7303)。
  • 在请求日志里看到每秒输出 token 数#3369,修复 #5936)。
  • 在 OpenCode 供应商表单里搜索并批量添加模型#7515,修复 #7423)。

使用攻略

  • Claude Desktop:本版新增的 Linux 配置路径、Flatpak 的边界,以及更新后的支持范围表。
  • 添加供应商:Codex 原生 Responses 直连与 Chat 路由转换的区别(「仅 Chat」示例改为点名百度千帆 Coding Plan 与阶跃 Step Plan),以及「隐藏 AI 署名」开关现在写入的三个字段。

Warning

唯一官方渠道声明(请务必阅读)

CC Switch 是完全免费、开源的桌面应用,不会向用户收取任何费用。请仅通过下列官方渠道获取本软件:

类别 唯一官方
官网 ccswitch.io
源码 github.com/farion1231/cc-switch
下载 GitHub Releases
作者 @farion1231
举报山寨 GitHub Issues

任何向你收费、要求充值、或索取登录凭据的"CC Switch"网站或客户端均为假冒。如果你被诱导支付了费用,请立即停止操作并通过 GitHub Issues 反馈。


概览

MiniMax Code 是 MiniMax 的编程智能体,终端版 mcode 与桌面版共用 ~/.minimax 数据目录。CC Switch 以累加模式管理它,与 OpenCode、Hermes、Pi 相同:每个供应商是 ~/.minimax/config.yamlcustom_provider 下的一项,多个供应商共存,写入时保留 MiniMax Code 自己的其他设置,并遵守它的配置文件锁。MCP 与 ~/.minimax/mcp.json 双向同步,Skills 部署到 ~/.minimax/skills/,提示词库写入 ~/.minimax/AGENTS.md;会话浏览是只读的,用量从 MiniMax Code 自己的数据库增量导入。接入范围刻意收得很紧:默认模型、登录、云端功能与会话删除都留给 MiniMax Code,本地代理接管、故障转移、托盘、通用配置片段与 Profiles 也不覆盖它。(#7383#7578

修复里分量最重的是经本地代理使用 Codex 的一组。Codex 0.154 起把插件、执行命名空间等额外工具放进一个 additional_tools 输入项,转换器把它当成消息,生成一条 content: null 的 system 消息,严格的 Chat 网关直接 400,里面的工具也被丢掉(#7454)。Codex 给截图标 detail: "original",这个值只在 Responses API 里合法,被原样搬进 Chat 请求后,方舟/豆包、日日新、GLM、vLLM 一类网关对整条请求返回 400;Codex 每轮都会重放完整历史,一张图就让这个会话从此每轮失败(#7476)。另外两个是账号数据问题:自带凭据来源的 Codex 供应商在编辑保存或切走时,已保存的 API Key 被 live 里的空 auth 覆盖(#7434);在认证中心删掉并重新登录 ChatGPT 账号后,绑着旧账号的卡片每次切换、接管和启动恢复都报「账号不存在」(#7395)。

Claude Code 经转换的请求也有几处修正:没写描述的工具不再以 "description": null 发出(#7319#7378);GitHub Copilot 下 auto mode 的分类器不再因 stop 参数 400(#5404);/effort xhigh 不再被丢,映射到 Grok 4.6 的模型重新带上推理强度,GPT-5.6 与 GPT-6 Astra 的 max 不再降成 xhigh#7318#7531)。其余修复覆盖 Skills 安装(skills.sh 的 id 与目录名不一致、超过 1 万个文件的仓库,#6381#7489)、提示词读回外部修改(#7194)、WSL 上的 OMO 统一配置(#7550)、关于页的版本探测(#7346#7348)与 Windows 任务栏(#6348)。新功能方面,Claude Desktop 第三方配置支持 Linux(#7331),请求日志显示每秒输出 token 数(#3369),OpenCode 供应商表单可以搜索并批量添加获取到的模型(#7515)。

预设做了一轮维护:国内 Codex 预设按各家 Responses 文档对齐(Kimi For Coding 升到 K2.8 Preview、1M 窗口,DeepSeek 默认 deepseek-flash),MiniMax 国内站与百灵迁到当前官方域名,AICodeWith 的 Codex 族端点改正为 /v1,另新增几个预设。DeepSeek 在 2026-09-12 撤回了 V4 Pro 改按 V4.1 Flash 计价的公告,v3.20.3 提前执行的调价在本版改回高峰档。本版含数据库迁移:SCHEMA_VERSION 18 → 19,为 MCP 与 Skills 表加上 MiniMax Code 的启用列。

发布日期:2026-09-22

更新规模:46 commits | 156 files changed | +8,673 / -684 lines


新功能

MiniMax Code 成为第十个受管应用

MiniMax Code(app_typemcode)的终端版与桌面版共用一个数据目录,默认是 ~/.minimax,可以用 MINIMAX_DATA_DIR(或旧的 MAVIS_DATA_DIR)改到别处。(#7383#7578

  • 供应商:累加模式,与 OpenCode、Hermes、Pi 相同。每个供应商是 ~/.minimax/config.yamlcustom_provider 下的一项,卡片算不算「已添加」只看文件里有没有它的键。表单沿用 OpenCode 风格的结构化编辑器,另有 JSON 编辑器,支持 anthropic-messagesopenai-completionsopenai-responses 三种 API 格式;预设从 Pi 的预设目录派生,发版时共 41 个。在 MiniMax Code 里新建的自定义供应商会在列表加载时导入,在那边做的修改也会同步回来;账号类供应商(kind 不是 custom 的)既不导入也不覆盖。写入时保留 config.yaml 里其他所有键,遵守 MiniMax Code 自己的 config.yaml.lock 目录锁(超过 10 秒的锁会被回收,否则保存失败并提示重试),原生文件写入失败时数据库改动回滚。在 config.yaml 里删掉某个供应商后,它的卡片会立即刷新为未添加,可以再次添加(#7578)。
  • 默认模型归 MiniMax Code 管:CC Switch 从不写 defaultModel / defaultLightModel。某个供应商或模型正被这两项引用时,CC Switch 拒绝删除或停用它,需要先在 MiniMax Code 里换一个默认模型。
  • MCP:与 ~/.minimax/mcp.json 双向同步。编辑只替换传输字段(commandargsenvurlheaderstype),timeout 这类原生选项会保留;同 id 但传输方式不同的服务器会跳过并提示,不会覆盖;全量重新同步不会删除开关关闭的条目,只有显式停用或删除才会移除。数据库提交失败时原生文件会还原。
  • Skills 与提示词:Skills 部署到 ~/.minimax/skills/,沿用 Pi 的归属检查,同名但不是 CC Switch 部署的 Skill 一律不动。提示词库把启用的提示词写进 ~/.minimax/AGENTS.md:切换前先把文件里的外部修改写回当前提示词;还没有启用任何 MiniMax Code 提示词时,文件里对不上的内容先存成一条备份提示词。停用最后一个提示词时清空文件;单个提示词上限 32 KiB(按 UTF-8 字节计)。
  • Deep link:MCP deep link 的 apps 支持 mcode;MiniMax Code 的供应商 deep link 会被拒绝。
  • 不在本版范围内:MiniMax Code 的原生登录与云端功能、本地代理接管与故障转移、托盘入口、通用配置片段、统一供应商、Profiles(MiniMax Code 页面隐藏 Profile 切换器)、单卡供应商检测、设置里的目录覆盖,以及在「设置 → 关于」里安装或升级。

MiniMax Code 的会话与用量进入看板

会话浏览器以只读方式打开 ~/.minimax/v2/sqlite/runtime-state.sqlite,列出 MiniMax Code 的对话(隐藏、归档、子会话以及 peek/channel/cron 会话不列),每个会话提供 resume 命令 env MINIMAX_DATA_DIR=<dir> mcode --session <id>(Windows 上是 PowerShell 写法)。会话与 MiniMax Code 的运行状态绑定,所以界面上不能删除,后端也会拒绝。

用量从同一个数据库的 local_runtime_token_usage 表增量导入,来源为「MiniMax Code (Session)」,看板有独立的应用筛选。推理 token 计入输出;模型 id 取第一个 / 之后的部分(custom_provider:router/vendor/model 记为 vendor/model)。MiniMax Code 自己算出的 cost_usd 是有限的非负数时直接采用,缺失、为负或非有限值时改按 CC Switch 的定价表计算;原生费用恰好为 $0 的行按 $0 入库,但和其他有 token 的 $0 行一样,一旦该模型在定价表里有了价格,就会被共享的费用回填重新计价。与 Pi 一样,含 MiniMax Code 的合计带「缓存写入数据不完整」的提示。(#7383

Claude Desktop 第三方配置支持 Linux

此前在 Linux 上写 Claude Desktop 第三方配置会直接报平台不支持。现在 Linux 与 macOS、Windows 使用同一套文件布局:配置根目录是 $XDG_CONFIG_HOME(必须是绝对路径),没有设置时是 ~/.config,CC Switch 在其下维护 Claude/Claude-3p/ 两个目录里的配置文件。CC Switch 以 Flatpak 运行时(通过 /.flatpak-info 识别)总是写宿主机的 ~/.config,不写沙盒私有的 XDG_CONFIG_HOME;如果你的 Claude Desktop 用的是自定义 XDG 目录,请改用原生安装包。自带的 Flatpak 清单已经授予家目录访问权限。macOS 与 Windows 的路径不变;手册(中/英/日)补上了 Linux 路径与支持范围表。(#7331,修复 #4855

请求日志显示每秒输出 token 数

请求日志表的输出 token 旁显示生成速率(如 1,234/56 tps),请求详情面板在输出 token 后用括号显示。流式请求记录了首 token 时间时,速率 = 输出 token ÷(总延迟 − 首 token 时间),只算首 token 之后的生成;非流式请求用完整延迟,所以包含了首 token 的等待时间。速率不小于 1 时取整,小于 1 时保留一位小数。没有输出 token 或没有有效时间窗的行不显示,包括从 Claude Code、Codex、Gemini 会话日志导入的行,它们没有延迟数据。速率在显示时用已存字段计算,不涉及 schema 或日志改动。(#3369,修复 #5936

OpenCode 供应商表单:搜索并批量添加模型

点「获取模型列表」后,表单上方会出现一个可搜索的多选列表:按模型 ID 或所有者过滤,勾选想要的模型(换搜索词时勾选会保留),再点「添加所选模型(N)」一次加入,模型 ID 同时作为配置键和初始显示名。已配置的模型显示为勾选、不可选并标注「已添加」,已有条目的名称、限制与选项保持不变。修改 Base URL 或 API Key 会清空候选列表,并丢弃上一个端点迟到的响应;在搜索框里按回车不会提交表单。每一行原有的下拉选择保留;复用 OpenCode 字段的 MiniMax Code 供应商表单也有同样的选择器。(#7515,修复 #7423

新增预设

Kimi Global 与 Kimi For Coding Global(#7526)、FluxA Token Plan 与 Soshow 加入 Claude Code、Claude Desktop、Codex、Hermes、OpenClaw、OpenCode 与 Pi 七个应用,其中两条 Kimi Global 预设对应 Kimi 国际站(kimi.ai)。Codex 另新增 StepFun API(国内与国际)、百度千帆(按量付费)与讯飞 Astron Coding Plan 的原生 Responses 预设。存量供应商不受影响。

其他新增

  • 五个模型补上定价grok-4.7glm-5.3-flashxhy4-preview(混元 Hy4 Preview)、qwen3.8-2.4t-a95bqwen3.8-27b 此前没有定价行,请求一律按 $0 入账。升级后启动时的回填会给这些 id 下历史的 $0 请求补上费用。Grok 4.7 按 20 万 token 以下的基础档计价。
  • 关于卡片的 Star 提示:「设置 → 关于」卡片在标题和按钮之间加了一行 GitHub Star 提示,点击打开仓库;GitHub 按钮移到按钮行最前面。

变更

国内 Codex 预设按各家 Responses 文档对齐

  • Kimi For Codingkimi-for-coding 现在由 K2.8 Preview 提供服务,目录行改名为「Kimi For Coding (K2.8 Preview)」,上下文窗口从 262144 升到 1048576,声明文本+图片输入,推理档位从只有 high 扩为 low / high / max(默认 high)。kimi-for-coding-highspeed 仍是 262144、只有 high
  • DeepSeek:预设默认改用 deepseek-flash(V4.1 Flash,文本+图片),不再用旧别名 deepseek-v4-flashdeepseek-v4-pro 行声明为纯文本,两行都与内置的 DeepSeek 官方目录一致。还在用 deepseek-v4-flash 的卡片照常可用,厂商会把这个别名路由到 deepseek-flash
  • 腾讯混元:新增 hy4-preview(96 万输入、纯文本),默认模型仍是 hy3
  • 千问AI平台与 QwenCloud 按量付费:新增开源权重的 qwen3.8-2.4t-a95b(纯文本)与 qwen3.8-27b(文本+图片)。
  • 没有预设更换协议:腾讯 Token Plan 企业版的四条预设仍走 Chat,因为 TokenHub 标明 Kimi K2.7 Code 不支持 Responses,DeepSeek V4 与 GLM-5.2 在那里也只是服务端转换成 Chat。

MiniMax 国内站与百灵迁到当前官方域名

MiniMax 国内预设在七个应用里从 api.minimaxi.com 改到 api.minimax.cn(Claude Code 与 Claude Desktop 用 /anthropic,Codex、Hermes、OpenClaw、OpenCode、Pi 用 /v1),官网与密钥链接改到 platform.minimax.cn。Coding Plan 用量检测同时认新旧两个域名,并改为按主机名逐段匹配,api.minimax.cn.example.com 这类仿冒主机不再误触发。在 Codex 里,minimax.cn 与旧域名一样按原生 Responses 处理、一样关闭 web_search

百灵在同样七个应用里从 api.tbox.cn 迁到 api.ant-ling.com。仍停在 Ling-2.5-1T(厂商文档已不再列出)的六个应用改为默认 Ling-2.6-1T,与 Codex 一致;Ling-2.6-1T 同时登记为纯文本模型,见升级提醒。

StepFun、百度千帆与讯飞 Astron 的 Responses 端点关闭 Codex 的 web_search

Codex 默认会带上托管的 web_search 工具,但 StepFun 的 Responses API 只接受 function 工具,千帆按量付费与 Astron 的 Responses 文档里也没有托管工具。stepfun.comstepfun.aiqianfan.baidubce.comxf-yun.com 上的原生 Responses 卡片现在会在 ~/.codex/config.toml 写入 web_search = "disabled"(千帆与 Astron 是预防性处理,尚未确认会拒收)。这些域名上也有 Chat 产品(StepFun Step Plan、千帆 Coding Plan / Token Plan、Astron Chat),所以不会把整个域名当成原生 Responses,Chat 卡片的 web_search 设置不受影响。

其他预设维护

  • SudoCode.chat 的 Claude Code、Claude Desktop、Codex 与 Grok Build 预设新增备用端点 api.sudorelay.com,会出现在端点测速里;默认地址仍是 api.sudocode.chat
  • APIKEY.FUN 在九个应用里的官网、注册链接与 Base URL 从 apikey.fun 迁到 apikey.fan;Claude Code、Claude Desktop、Codex、Gemini 与 Grok Build 保留旧地址作为备用端点。

修复

Codex 0.154 起带 additional_tools 的请求不再被 Chat 网关 400

Codex 0.154 起把请求的额外工具(functions / collaboration 执行命名空间、插件)放在一个 additional_tools 输入项里:{"type":"additional_tools","role":"developer","tools":[…]},有 role 但没有 content。Codex 的 Responses→Chat 转换器把所有带 role 的项当成消息,在 messages[1] 生成 {"role":"system","content":null},严格的 Chat 网关报 messages[1]: missing field "content" 后拒绝整条请求;这些工具在 Chat 与 Anthropic 两条转换路径上也都被悄悄丢掉。现在消息遍历会跳过这个载体,其中的工具与顶层 tools 去重合并(同名以顶层声明为准),命名空间展开(functions 下的 exec_command 变成 functions__exec_command),响应侧再把名字还原成 Codex 认识的形式。不带载体的请求,转换结果与之前逐字节相同。(#7454,修复 #7451#6158

一张 detail: "original" 的图片不再让 Codex 会话永久失败

模型的 Codex 目录条目声明了 supports_image_detail_original 时,Codex 会把工具返回的图片(例如 view_image 截图)标成 detail: "original",这个值只在 Responses API 里合法。转换到 Chat 上游时,它被原样拷进 image_url.detail,严格的 OpenAI 兼容网关(方舟/豆包、日日新、GLM、vLLM 等)对整条请求返回 400。Codex 每轮都会重放完整历史,所以一张图就让这个会话此后每轮都失败,纯文本回合也不例外。

修复分两层:代理在 Chat 图片里把 original 降为 autoautolowhigh 原样保留),所以已经坏掉的会话,以及不会自行修正历史的 Codex 0.155.0 之前的版本,升级后立即恢复;为 Chat 转换生成的 Codex 目录一律写 supports_image_detail_original: false,从源头让 Codex 不再发 original。直接贴进对话的图片从来没有受影响。(#7476,修复 #6495#7458

编辑或切走 Codex 供应商不再清空已保存的 API Key

有些 Codex 供应商在 [model_providers.*] 表里自带凭据来源(env_keyauth / aws 表,或 http_headers 里的 Authorization)。这类供应商不会往 config.toml 注入 token,而默认模式每次切到第三方时都会删掉共享的 ~/.codex/auth.json,所以 live 快照里的 auth 永远是空的,数据库里的 OPENAI_API_KEY 是密钥唯一的副本。有两条路径把这个空 auth 当成了权威:当前供应商的编辑对话框用 live 快照填表单,切走时的回填又把 live 快照写回数据库。结果是打开编辑器原样保存,或者只是切走,密钥就被悄悄抹掉;随后用量脚本对话框把这张没有密钥的卡当成官方订阅,重置了保存的脚本。

现在两处都把「没有凭据的 live auth」(auth.json 不存在,或只剩 auth_mode 登出标记)视为字段缺失:保留已存的 auth,同时照常采集 live 的 config.toml。live auth 里有实际凭据时仍以它为准,手动修改 ~/.codex/auth.json 依然有效。(#7434,修复 #7433

删掉 ChatGPT 账号后,绑着它的 Codex 卡片可以重新绑定或切走

在认证中心删掉托管的 ChatGPT 账号再重新登录,即使是同一个 ChatGPT 用户和工作区,也会生成新的本地账号 id。还绑着旧 id 的 Codex 卡片此后每次切换路由、开关接管、启动恢复和重新绑定都报 账号不存在: <id>,用户既换不了供应商,也没法在这张卡上选新账号。

现在切走时能区分「账号已删除」和「账号还在、只是 live 里没有对应的 token」:已删除的账号只释放 cc-switch 的归属标记,不动 ~/.codex/auth.json,这样之后用原生 Codex CLI 登录的同一用户不会被当成 cc-switch 管理的登录删掉。只有持久化的 codex_oauth_auth.json 校验通过后,才认定账号已删除;文件读不出、格式不对,或账号其实还在磁盘上时,切换中止、live 文件保持不变,不做猜测。卡片自己的绑定失效时,报错会提示在供应商卡片上点「选择账号」重新绑定。不会自动重绑。(#7395,修复 #7392

没写描述的工具不再以 null 发出

Claude→OpenAI Chat 与 Claude→Responses 转换器会把每个工具的 description 原样拷进请求,没有描述的工具就变成 "description": null,严格的 OpenAI 兼容上游以 400 expected string, received null 拒绝整轮。Anthropic 的托管工具(如 web_search)按定义就没有描述,没写描述的自定义工具和 MCP 工具也会触发,坏掉的是整条请求,不只是那一个工具。现在缺失或显式为 null 的描述会直接省略,其他值原样透传;字段仍按 namedescriptionparameters 的顺序写入,带描述的工具序列化结果与之前逐字节相同,不影响 prompt cache。Codex 的 Responses→Chat 转换器对函数工具有同样的问题,一并修复(#7378)。(#7319,修复 #7303

Claude Code 的 auto mode 经 GitHub Copilot 可用

Claude Code 的 auto mode 分类器每次安全检查都会发 stop_sequences。经 GitHub Copilot 时,Anthropic→OpenAI Chat 转换把它映射成 stop,而 Copilot 为 Claude 模型提供的 Chat Completions 路由遇到这个参数就返回 400,于是分类器每次都失败,普通对话却正常。现在只在供应商是 GitHub Copilot 时去掉转换出的 stop,其他 OpenAI 兼容上游(如 OpenRouter)照常保留。(#5404,修复 #5175

/effort 的档位原样送达 OpenAI 与 Grok 上游

Claude Code 的推理强度转换成 OpenAI 格式(Chat 的 reasoning_effort、Responses 的 reasoning.effort)时有三处缺口,现在都补上了:

  • /effort xhigh 发的是 output_config.effort: "xhigh",解析器不认识这个值;又因为显式的 output_config.effort 会屏蔽 thinking 回退,结果一个档位都没发。现在 xhigh 一一对应。
  • 支持推理的模型名单里只有 grok-4.5 系列和 grok-build-*,映射到 grok-4.6 / grok-4.6-build 的 Claude 模型丢掉了所有档位,包括 max。现在名单加入了 grok-4.6grok-4.6-*
  • 显式的 max 总被降成 xhigh。现在对支持独立 max 档的 gpt-5.6gpt-5.6-solgpt-5.6-terragpt-5.6-lunagpt-6-astra 原样发送 max,其他模型仍回落到 xhigh

lowmediumhigh 的请求不变。(#7318#7531,修复 #7314#6197#3389#5367

DeepSeek V4 Pro 恢复高峰档定价

v3.20.3 根据 DeepSeek「2026-09-14 起 V4 Pro 路由到 V4.1 Flash」的公告,提前把 deepseek-v4-pro 改成 Flash 档价格(每百万 token $0.30 / $1.20,缓存读 $0.006)。DeepSeek 在 2026-09-12 撤回了这份公告,V4 Pro 照旧按原价计费,于是 V4 Pro 的请求一直被算得远低于实际费用。本版把定价改回每百万 token 输入 $1.32、输出 $3.96、缓存读 $0.044(高峰档,即人民币 9 / 27 / 0.3 元)。修复只改写四个价格列仍是 v3.20.3 写入值(0.3 / 1.2 / 0.006 / 0)的行,自定义过的行不动。deepseek-v4-flashdeepseek-flash 等 Flash 系列 id 仍按 V4.1 Flash 档计价。

提示词列表会读回外部对 live 文件的修改

在 CC Switch 之外改了全局 CLAUDE.mdAGENTS.md 或其他应用的 live 提示词文件后,提示词列表一直显示数据库里的旧内容,直到重启。现在加载提示词列表时会读回 live 文件,内容不同就更新当前启用的提示词;窗口重新获得焦点时,打开着的提示词面板也会刷新(正在编辑、确认或写入时会等待)。只刷新启用中的提示词,其他模板不动;文件缺失、读不出、为空或只有空白时保留已存内容;同步或恢复正在进行时跳过刷新。Pi 仍使用它自己基于 AGENTS.md 的启用机制,不在此列。(#7194

Skills 安装:id 与目录名不一致、仓库文件过多

  • skills.sh 把技能的 skillId 当作目录名传过来,但 id 不一定等于仓库里的目录名。例如 tencent/WeChatReadingskills/SKILL.md 发布 name: weread-skills,于是安装失败;就算装上了,更新检查也只按目录名匹配,找不到它。现在查找时先试显式路径和同名目录,再接受元数据 name 与 id 相同的 SKILL.md(必须唯一;有多个目录声明同一个名字时拒绝安装,不会随便挑一个)。更新检查优先使用保存的源路径,技能在仓库里挪了位置或改了名也能继续更新。(#6381,修复 #6365
  • 安装技能会下载整个 GitHub 仓库的压缩包,hugohe3/ppt-master 这种有 13,248 个条目的仓库会撞上 1 万个条目的上限,报 ARCHIVE_TOO_MANY_ENTRIES。远程压缩包、本地 ZIP 安装与 WebDAV 恢复的条目上限都提高到 3 万;真正的限制仍是 512 MiB 的解压预算。(#7489,修复 #7475

WSL 上的 OpenCode 目录也能找到 OMO 统一配置

OpenCode 配置目录指向 WSL(\\wsl.localhost\<distro>\home\<user>\.config\opencode\\wsl$\…)时,OMO 4.19.3 及以后的版本把统一配置放在 WSL 一侧的家目录(~/.omo/omo.jsoncomo.json)。CC Switch 只在 Windows 家目录里找,找不到就悄悄退回到 OMO 已经不读的旧插件文件(oh-my-opencode.jsonc),切换看似成功,实际没有生效。现在会根据 OpenCode 目录的 WSL 路径推出 WSL 家目录,读、写、删都优先检查那里;两边都没有统一配置时,仍退回旧文件。(#7550,修复 #7363

Windows 主窗口从其他入口打开时保留任务栏按钮

静默启动或关闭到托盘后,Windows 主窗口会以 skip_taskbar(true) 隐藏,而只有托盘的「打开主界面」会在 show() 之前重置这个标志。从别的入口唤回窗口时,它没有任务栏按钮,一点最小化就彻底找不到了。现在这些入口都会先调用 set_skip_taskbar(false):已在运行时再次从快捷方式或开始菜单启动、聚焦主窗口的 ccswitch:// deep link、URL 打开事件,以及版本不匹配时显示的数据库恢复界面。(#6348

「隐藏 AI 署名」也隐藏 Claude Code 的会话链接

Claude Code 为网页版与 Remote Control 会话创建的提交和 PR 会带上 claude.ai 的会话链接,这由单独的 attribution.sessionUrl 控制,只清空 commitpr 已经藏不住全部署名。Claude 编辑器的「隐藏 AI 署名」开关现在写入 attribution: {commit: "", pr: "", sessionUrl: false},三项都满足时才显示为已勾选。取消勾选仍会删除整个 attribution 对象。(#7053

关于页的版本探测:不再下载整份 npm 元数据,也不再把 Ubuntu 版本当成工具版本

  • 查询 npm 分发工具的最新版本时,之前下载的是完整的 npm packument(Codex、OpenCode、OpenClaw 这类发版频繁的包,解压后有 14–25 MB),只为读其中的 dist-tags;而且这是唯一没有设 15 秒超时的探测,会退回到共享客户端的 600 秒。慢网络下卡片会停在「加载中」好几分钟。现在改用专门的 /-/package/{package}/dist-tags 端点(响应只有几十字节到几 KB),并使用 15 秒超时;超时、网络错误或 404 时显示「未知」。(#7346,修复 #7339
  • Windows 上探测 WSL 里的工具时,会通过登录交互式 shell 执行 <tool> --version,并取 stdout 里的第一个 x.y.z。Ubuntu 每天第一次登录会打印 MOTD(「Welcome to Ubuntu 24.04.4 LTS …」),于是 Claude Code 卡片显示成 24.04.4。现在先打印一个哨兵字符串再运行工具,只解析最后一个哨兵之后的输出。(#7348,修复 #7347

智谱的 Responses 端点能获取模型列表

智谱的 OpenAI Responses 端点(https://open.bigmodel.cn/api/v1,智谱 GLM Codex 预设的 Base URL)返回的 /models 是 Codex 远程目录的格式(models[].slug),而不是 OpenAI / Anthropic 的 data[].id,所以在 Codex 供应商表单里获取模型总是空的。现在没有 data 字段时会回退读取 models[].slug,有 data 时行为不变。(#7330

AICodeWith 的 Codex 族端点改为 /v1

AICodeWith 的 Responses 端点是 https://api.aicodewith.ai/v1,厂商博客里写的 /chatgpt/v1 是文档错误(已与厂商确认)。Codex 预设以及复用同一端点的 Hermes、OpenClaw 与 Pi 预设都改到了 /v1。存量卡片需要手动修改,见升级提醒。

Claude Desktop 在 DeepSeek V4 路由上提供 1M 上下文

DeepSeek V4 家族是 1M 上下文,但固定使用这些模型的 Claude Desktop 预设没有开启 supports1m,所以 Claude Desktop 的模型列表里一直没有 1M 选项。DeepSeek(Sonnet / Opus 用 deepseek-v4-pro,Haiku 用 deepseek-v4-flash)、OpenCode Go(deepseek-v4-flash)与百度千帆 Token Plan(deepseek-v4-pro)预设现在都声明了 1M。[1m] 后缀只在 Claude Desktop 本地起作用,发给供应商的内容不变。

切换应用时供应商列表回到顶部

供应商视图在切换应用时复用滚动容器,只替换里面的动画列表,于是上一个应用的滚动位置会被带过来:从一个滚到底部的长列表切走,下一个应用看起来可能像空白页。现在切换应用时,页面主容器与供应商列表容器都会在绘制前回到左上角。(#5211

界面细节

  • 不再显示过期的用量档位:关掉用量脚本或切到官方订阅模板后,供应商卡片不再显示旧脚本结果里的多档位展开按钮;官方供应商卡片同理。
  • 单色预设图标:预设选择器里的单色图标改用前景色,与表单预览和供应商卡片一致(9527CODE 等图标之前显得偏灰)。
  • Pi 供应商图标:没有设置图标的 Pi 供应商不再存成 Pi 的应用 logo,卡片改为显示名称首字母,与其他应用的自定义供应商一致。(#6826
  • 繁体中文用词:Pi 表单的重复键提示改用与字段标签一致的「供應商識別碼」。(#7187

升级提醒

本版含数据库迁移

SCHEMA_VERSION 18 → 19:mcp_serversskills 表各新增一列 enabled_mcode,默认关闭。迁移在首次启动时自动运行。CC Switch 会先尝试备份数据库,备份放在 ~/.cc-switch/backups/(文件名以 db_backup_ 开头);但备份失败只会记日志,不会中止升级。运行过本版之后,v3.20.3 及更早的版本会以「数据库版本过新」为由拒绝打开,想降级只能恢复升级前的备份。稳妥起见,升级前先退出 CC Switch,手动复制一份:

cp ~/.cc-switch/cc-switch.db ~/cc-switch-before-v3.20.4.db

Windows 上默认在 %USERPROFILE%\.cc-switch\cc-switch.db。如果你在设置里改过配置目录,数据库和 backups/ 都在那个目录下。

应用切换栏默认出现 MiniMax Code

设置早于本版的安装也会出现。用不到的话,可以在「设置 → 主页面显示」里关掉。

已有的 MiniMax Code 数据会被自动接入

  • ~/.minimax/config.yaml 里已有的自定义供应商,会在第一次打开 MiniMax Code 页面时导入。
  • ~/.minimax/AGENTS.md 只有在所有应用的提示词库都还是空的(实际上就是全新安装),并且文件不超过 32 KiB 时,才会在启动时导入。已经有 Claude、Codex 等提示词的升级用户不会自动导入;第一次启用 MiniMax Code 提示词时,文件内容会先存成一条备份提示词,不会丢。
  • 第一次用量同步会导入 local_runtime_token_usage 里的全部历史,看板的 MiniMax Code 合计会立即包含过去的用量。
  • 已有的 MCP 服务器和 Skills 对 MiniMax Code 默认是关闭的,手动打开之前,CC Switch 不会往 ~/.minimax 写任何东西。

MiniMax Code 的数据目录只认环境变量

CC Switch 从自己的环境变量里依次读取 MINIMAX_DATA_DIRMAVIS_DATA_DIR,都没有时使用 ~/.minimax。设置里没有目录覆盖选项;如果 MiniMax Code 用的是自定义目录,启动 CC Switch 时也要带上同一个环境变量。

默认模型要在 MiniMax Code 里改

要删除或停用正被 defaultModel / defaultLightModel 引用的供应商或模型,请先在 MiniMax Code 里换一个默认模型。MiniMax Code 正持有配置锁时,保存会失败并提示重试,不会一直等待。

绑定已删除 ChatGPT 账号的 Codex 卡片需要手动重绑一次

不会自动重绑:在卡片上点「选择账号」,选新的登录即可。重绑之前,这张卡无法开启 Codex 接管;如果上次退出时接管是开着的,启动恢复会因绑定检查失败而关掉 Codex 接管,~/.codex/auth.json 不动。重绑后再重新开启接管。(#7395

已经被清空的 Codex API Key 不会自动恢复

修复只防止以后再被清空。如果某个 Codex 供应商的密钥已经在之前的编辑或切换中丢了,请重新填一次;用量脚本如果因此被重置,也需要重新配置。(#7434

「隐藏 AI 署名」需要重新勾选一次

开关现在要求 attribution.sessionUrl 也为 false 才算开启,按旧格式 {commit: "", pr: ""} 保存的配置升级后会显示为未勾选。重新勾选一次就会补上 sessionUrl: false,已有配置不会被自动改写。(#7053

打开提示词列表时会采用 live 文件的外部修改

如果某个应用的 live 提示词文件(CLAUDE.mdAGENTS.md 等)与启用中的提示词内容不同且不为空,打开提示词列表时会用文件内容覆盖数据库里保存的内容。非启用的模板不受影响,Pi 不在此列。(#7194

推理强度按你选的档位发送

gpt-5.6gpt-5.6-solgpt-5.6-terragpt-5.6-lunagpt-6-astra 上的 /effort max 现在真正请求 max 档(#7531);/effort xhigh,以及映射到 grok-4.6 / grok-4.6-* 的模型上的任何档位,现在都会发送推理强度,之前是什么都不发(#7318)。推理 token 用量和延迟可能随之上升。

部分经转换的请求升级后会有一次前缀缓存未命中

有两类请求在升级后字节会变一次,之后保持稳定:一是宽松的 Chat 或 Anthropic 上游上、带 additional_tools 载体的 Codex 请求(#7454),content: null 的 system 消息消失,载体里的工具并入 tools;二是此前接受 "description": null 的宽松上游上、含无描述工具的请求(#7319#7378)。带描述的工具序列化结果不变。

Ling-2.6-1T 现在按纯文本模型处理

这对所有使用这个 id 的供应商生效,不只是预设:开启代理的媒体回退时,发给它的图片会在请求上游之前替换成 [Unsupported Image] 标记。

Claude Desktop 在 Linux 上无需迁移

切到一个 Claude Desktop 供应商并重启 Claude Desktop 即可,与其他平台相同。如果你自己构建的 Flatpak 权限比自带清单更窄,需要授予 xdg-config/Claudexdg-config/Claude-3p 的读写权限,例如(把最后的 app id 换成你自己构建的):

flatpak override --user --filesystem=xdg-config/Claude --filesystem=xdg-config/Claude-3p com.ccswitch.desktop

旧的无图标 Pi 供应商仍显示 Pi 图标

只有从现在起保存的供应商才会改为显示名称首字母。想更新旧卡片,在表单里改一下图标即可。(#6826

预设改动只影响新建的供应商

存量卡片保存的是创建时的快照。本版涉及:

  • MiniMax 国内站:存量卡片仍在 api.minimaxi.com,用量检测、Codex 原生 Responses 目录与 web_search 开关都还认这个域名,可以继续使用。
  • 百灵:存量卡片保留 api.tbox.cn,Codex 以外的应用还停在 Ling-2.5-1T。编辑 Base URL 和模型,或重新添加预设。
  • AICodeWith:把存量的 Codex、Hermes、OpenClaw 与 Pi 卡片手动改成 https://api.aicodewith.ai/v1
  • APIKEY.FUN:存量卡片保留 api.apikey.fun
  • SudoCode.chat 的备用端点 api.sudorelay.com:只写进新建的 Claude Code、Claude Desktop、Codex 与 Grok Build 卡片;存量卡片可以在端点测速里把它添加为自定义端点。
  • Codex 模型目录:Kimi For Coding 的 K2.8 Preview 行(1M 窗口,low / high / max)、DeepSeek 的 deepseek-flash 默认值与纯文本的 deepseek-v4-pro 行、混元的 hy4-preview,以及千问的开源权重模型行。在卡片的模型目录里手动添加,或重新添加预设。
  • Claude Desktop 的 1M 选项(DeepSeek、OpenCode Go、百度千帆 Token Plan 预设):在供应商编辑器里给对应路由勾选「声明支持 1M」,或重新添加预设。
  • Kimi 国际站:存量 Kimi 卡片仍是国内域名(api.moonshot.cn / api.kimi.com),国际站 kimi.ai 的密钥请使用新的 Kimi Global / Kimi For Coding Global 预设。

Codex 目录类修复在下一次切换供应商时生效

config.toml 与目录文件在切换供应商时重新生成。本版涉及:Chat 上游的卡片不再声明 supports_image_detail_original#7476);stepfun.comstepfun.aiqianfan.baidubce.comxf-yun.comminimax.cn 上的原生 Responses 卡片写入 web_search = "disabled"minimax.cn 上的卡片使用原生 Responses 目录;Ling-2.6-1T 声明为纯文本。在受影响的卡片上切走再切回一次即可。代理侧把 original 降为 auto 是立即生效的,已经被截图弄坏的会话也不需要手动编辑历史。

定价

  • 五个新定价行以 INSERT OR IGNORE 写入(你自己已经加过的同名行会保留),启动时的回填会给这些 id 下此前按 $0 记录的历史请求补上费用;已有非零费用的行不变。
  • deepseek-v4-pro 的修复只在该行仍恰好是 v3.20.3 写入的 0.3 / 1.2 / 0.006 / 0 时,才改回 1.32 / 3.96 / 0.044;自定义过的行不动,但手动设成恰好这几个值的行无法区分,也会被重置。v3.20.3 期间记录的 V4 Pro 费用_不会_重算,因为回填只处理费用为 $0 或更低、且有 token 用量的行,所以只有升级之后的请求按恢复后的价格计费。
  • Grok 4.7 按 20 万 token 以下的基础档计价;xAI 对 20 万 token 及以上的提示按双倍($4 / $12)计费,定价表不区分这一档。

风险提示

沿用的提示

xAI Grok OAuth 登录:复用官方 Grok CLI 的公开 OAuth 客户端身份,使用可能导致账号被限制或封禁——详见 v3.18.0 release notes

Codex OAuth 反向代理:使用 ChatGPT 订阅的 Codex OAuth 反代可能违反 OpenAI 服务条款,详情见 v3.13.0 release notes

SuperGrok 配额查询:供应商卡片的配额展示依赖 grok.com 的非公开计费端点,xAI 调整接口后可能失效——详见 v3.19.0 release notes

第三方供应商路由:通过 CC Switch 本地代理把 Codex、Claude Desktop 或 Grok Build 的请求转换并转发到第三方供应商时,各供应商对计费、合规与数据留存的约束不同,请在使用前阅读目标供应商的服务条款。

用户启用上述功能即表示自行承担相关风险。CC Switch 不对因使用这些功能而导致的任何账号限制、警告或服务暂停承担责任。


致谢

本版 46 个提交里有 28 个来自 22 位外部贡献者,其中 11 位是首次投稿。

代码贡献

  • 感谢 @SaladDay:MiniMax Code 接入(#7383),以及绑定已删除 ChatGPT 账号的 Codex 卡片的恢复(#7395,修复 #7392)。
  • 感谢 @thisTom:MiniMax Code 删除供应商后的卡片刷新(#7578)。
  • 感谢 @Railgun-wiki:Claude Desktop 第三方配置的 Linux 支持(#7331,修复 #4855),首次投稿;@vianrina#7389 提交过同一功能,其中测试门控与手册支持范围表两处改进已并入本版。
  • 感谢 @SailingLoongadditional_tools 载体的处理(#7454,修复 #7451#6158)、无描述工具不再发 null#7319,修复 #7303;Codex 路径的同类修复 #7378)、Grok 4.6 推理强度与 xhigh 透传(#7318,修复 #7314#6197#3389);@BigStrongSun 报告了 #6158,并在 #6159 提交过修法。
  • 感谢 @nameserendipity:Codex detail: "original" 图片的双层修复(#7476,修复 #6495#7458),首次投稿;@szupzj18 更早在 #6515 针对方舟提出过修法,@somnifex#7104 也提出过另一种修法。
  • 感谢 @YUZHEthefool:Codex 已保存 API Key 被清空的修复(#7434,修复 #7433);@SailingLoong#7492 提交过相同的修法。
  • 感谢 @liuziyuan:GitHub Copilot 下 auto mode 分类器的修复(#5404,修复 #5175),首次投稿。
  • 感谢 @2doright:GPT-5.6 与 GPT-6 Astra 保留 max 档(#7531,修复 #5367),首次投稿。
  • 感谢 @juexe:请求日志的每秒输出 token 数(#3369,修复 #5936),首次投稿。
  • 感谢 @funkpopo:OpenCode 表单的模型搜索与批量添加(#7515,修复 #7423),首次投稿。
  • 感谢 @allenxu09:提示词读回 live 文件的外部修改(#7194)。
  • 感谢 @xwil1:skills.sh 的 id 与目录名不一致时的安装与更新(#6381,修复 #6365)。
  • 感谢 @yovinchen:大型技能仓库的安装(#7489,修复 #7475)。
  • 感谢 @fszcd:WSL 上的 OMO 统一配置识别(#7550,修复 #7363),接续自己此前的 #7367
  • 感谢 @misaka-myu:Windows 主窗口的任务栏按钮(#6348)。
  • 感谢 @sj817:「隐藏 AI 署名」覆盖会话链接(#7053),首次投稿。
  • 感谢 @lyfuci:npm dist-tags 探测(#7346,修复 #7339),以及 WSL 版本探测的 MOTD 干扰(#7348,自报自修 #7347),首次投稿;@NineSu 更早在 #7307 为同一探测补过超时。
  • 感谢 @xwwwb:智谱 Responses 端点的模型列表(#7330),首次投稿。
  • 感谢 @Muleizhang:切换应用时重置滚动位置(#5211),接续自己此前的 #4397
  • 感谢 @JackieJK:Pi 供应商图标回落到名称首字母(#6826),首次投稿。
  • 感谢 @ntdatt812:繁体中文 Pi 表单的用词统一(#7187)。
  • 感谢 @ysntony:Kimi 国际站预设(#7526)与 README 中 Kimi 链接的调整(#7522),首次投稿。

问题反馈


下载与安装

访问 Releases 下载对应版本,或从官网 ccswitch.io 获取(下载经 Cloudflare 边缘节点分发,不依赖 GitHub 可达)。

系统要求

系统 最低版本 架构
Windows Windows 10 及以上 x64 / ARM64
macOS macOS 12 (Monterey) 及以上 Intel (x64) / Apple Silicon (arm64)
Linux 见下表 x64 / ARM64

Windows

文件 说明
CC-Switch-v3.20.4-Windows.msi 推荐 - MSI 安装包,支持自动更新
CC-Switch-v3.20.4-Windows-Portable.zip 便携版,解压即用,不写入注册表

Windows ARM64 设备请选择文件名中带 arm64 标识的对应制品。

macOS

文件 说明
CC-Switch-v3.20.4-macOS.dmg 推荐 - DMG 安装包,拖入 Applications 即可
CC-Switch-v3.20.4-macOS.zip 解压后拖入 Applications,Universal Binary
CC-Switch-v3.20.4-macOS.tar.gz 用于 Homebrew 安装和自动更新

Homebrew 安装:

brew install --cask cc-switch

更新:

brew upgrade --cask cc-switch

Linux

Linux 资产同时提供 x86_64ARM64aarch64)两种架构。资产文件名中包含架构标识,请按你机器的 uname -m 输出选择对应版本:

  • CC-Switch-v3.20.4-Linux-x86_64.AppImage / .deb / .rpm
  • CC-Switch-v3.20.4-Linux-arm64.AppImage / .deb / .rpm
发行版 推荐格式 安装方式
Ubuntu / Debian / Linux Mint / Pop!_OS .deb sudo dpkg -i CC-Switch-*.debsudo apt install ./CC-Switch-*.deb
Fedora / RHEL / CentOS / Rocky Linux .rpm sudo rpm -i CC-Switch-*.rpmsudo dnf install ./CC-Switch-*.rpm
openSUSE .rpm sudo zypper install ./CC-Switch-*.rpm
Arch Linux / Manjaro .AppImage 添加执行权限后直接运行,或使用 AUR
其他发行版 / 不确定 .AppImage chmod +x CC-Switch-*.AppImage && ./CC-Switch-*.AppImage

Don't miss a new cc-switch release

NewReleases is sending notifications on new releases.