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 恢复可用,/effort的xhigh、max与 Grok 4.6 的推理强度都按所选档位发送。Claude Desktop 的第三方配置现在也支持 Linux。本版含数据库迁移(v18 → v19),建议升级前手动备份一次数据库,见升级提醒。
重点内容:你现在可以
- 用 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.yaml 中 custom_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_type 为 mcode)的终端版与桌面版共用一个数据目录,默认是 ~/.minimax,可以用 MINIMAX_DATA_DIR(或旧的 MAVIS_DATA_DIR)改到别处。(#7383、#7578)
- 供应商:累加模式,与 OpenCode、Hermes、Pi 相同。每个供应商是
~/.minimax/config.yaml中custom_provider下的一项,卡片算不算「已添加」只看文件里有没有它的键。表单沿用 OpenCode 风格的结构化编辑器,另有 JSON 编辑器,支持anthropic-messages、openai-completions、openai-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双向同步。编辑只替换传输字段(command、args、env、url、headers、type),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.7、glm-5.3-flashx、hy4-preview(混元 Hy4 Preview)、qwen3.8-2.4t-a95b与qwen3.8-27b此前没有定价行,请求一律按 $0 入账。升级后启动时的回填会给这些 id 下历史的 $0 请求补上费用。Grok 4.7 按 20 万 token 以下的基础档计价。 - 关于卡片的 Star 提示:「设置 → 关于」卡片在标题和按钮之间加了一行 GitHub Star 提示,点击打开仓库;GitHub 按钮移到按钮行最前面。
变更
国内 Codex 预设按各家 Responses 文档对齐
- Kimi For Coding:
kimi-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-flash;deepseek-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.com、stepfun.ai、qianfan.baidubce.com 与 xf-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 降为 auto(auto、low、high 原样保留),所以已经坏掉的会话,以及不会自行修正历史的 Codex 0.155.0 之前的版本,升级后立即恢复;为 Chat 转换生成的 Codex 目录一律写 supports_image_detail_original: false,从源头让 Codex 不再发 original。直接贴进对话的图片从来没有受影响。(#7476,修复 #6495、#7458)
编辑或切走 Codex 供应商不再清空已保存的 API Key
有些 Codex 供应商在 [model_providers.*] 表里自带凭据来源(env_key、auth / 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 的描述会直接省略,其他值原样透传;字段仍按 name → description → parameters 的顺序写入,带描述的工具序列化结果与之前逐字节相同,不影响 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.6与grok-4.6-*。 - 显式的
max总被降成xhigh。现在对支持独立 max 档的gpt-5.6、gpt-5.6-sol、gpt-5.6-terra、gpt-5.6-luna与gpt-6-astra原样发送max,其他模型仍回落到xhigh。
low、medium、high 的请求不变。(#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-flash、deepseek-flash 等 Flash 系列 id 仍按 V4.1 Flash 档计价。
提示词列表会读回外部对 live 文件的修改
在 CC Switch 之外改了全局 CLAUDE.md、AGENTS.md 或其他应用的 live 提示词文件后,提示词列表一直显示数据库里的旧内容,直到重启。现在加载提示词列表时会读回 live 文件,内容不同就更新当前启用的提示词;窗口重新获得焦点时,打开着的提示词面板也会刷新(正在编辑、确认或写入时会等待)。只刷新启用中的提示词,其他模板不动;文件缺失、读不出、为空或只有空白时保留已存内容;同步或恢复正在进行时跳过刷新。Pi 仍使用它自己基于 AGENTS.md 的启用机制,不在此列。(#7194)
Skills 安装:id 与目录名不一致、仓库文件过多
- skills.sh 把技能的
skillId当作目录名传过来,但 id 不一定等于仓库里的目录名。例如tencent/WeChatReading在skills/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.jsonc 或 omo.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 控制,只清空 commit 和 pr 已经藏不住全部署名。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_servers 与 skills 表各新增一列 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.dbWindows 上默认在 %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_DIR、MAVIS_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.md、AGENTS.md 等)与启用中的提示词内容不同且不为空,打开提示词列表时会用文件内容覆盖数据库里保存的内容。非启用的模板不受影响,Pi 不在此列。(#7194)
推理强度按你选的档位发送
gpt-5.6、gpt-5.6-sol、gpt-5.6-terra、gpt-5.6-luna 与 gpt-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/Claude 与 xdg-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.com、stepfun.ai、qianfan.baidubce.com、xf-yun.com 与 minimax.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 提交过同一功能,其中测试门控与手册支持范围表两处改进已并入本版。
- 感谢 @SailingLoong:
additional_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),首次投稿。
问题反馈
- 感谢 @zhanghuihubei 与 @BigStrongSun 报告 Codex 0.154 的
additional_tools在 Chat 转换中变成空 system 消息(#7451、#6158)。 - 感谢 @ywy0 与 @BAOfanTing 报告 Codex 截图经方舟/豆包与日日新返回 400(#6495、#7458)。
- 感谢 @paiguFK 报告编辑 Codex 供应商后 API Key 被清空(#7433)。
- 感谢 @phjzs 报告删除并重新登录 ChatGPT 账号后绑定悬空(#7392)。
- 感谢 @Syuryuuki 报告无描述工具生成
null导致 400(#7303)。 - 感谢 @JoaquinHJ 报告 GitHub Copilot 下 auto mode 分类器不可用(#5175)。
- 感谢 @NorthDream-Y 与 @xiaodream551-a11y 报告 Grok 4.6 推理强度丢失与 GPT-5.6 的
max被降档(#7314、#5367),以及 @bowendeng286-cmd 与 @icannotwait 报告xhigh等推理强度在路由到 OpenAI 协议时失效(#6197、#3389)。 - 感谢 @xngch 提出 Claude Desktop 的 Linux 支持(#4855)。
- 感谢 @Morganwan90 与 @CrazyFigure 报告 Skills 安装失败(#6365、#7013、#7475),以及 @jambo200 请求放宽 ZIP 条目上限(#7513)。
- 感谢 @liushilongpku 报告 WSL 下的 OMO 统一配置无法识别(#7363)。
- 感谢 @netszzy 报告版本探测下载完整 npm 元数据且没有超时(#7339)。
- 感谢 @sberry007 提出在请求日志里显示输出速率(#5936)。
- 感谢 @Zingsun 提出获取模型后可以直接添加到 OpenCode 配置(#7423)。
下载与安装
访问 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-switchLinux
Linux 资产同时提供 x86_64 和 ARM64(aarch64)两种架构。资产文件名中包含架构标识,请按你机器的 uname -m 输出选择对应版本:
CC-Switch-v3.20.4-Linux-x86_64.AppImage/.deb/.rpmCC-Switch-v3.20.4-Linux-arm64.AppImage/.deb/.rpm
| 发行版 | 推荐格式 | 安装方式 |
|---|---|---|
| Ubuntu / Debian / Linux Mint / Pop!_OS | .deb
| sudo dpkg -i CC-Switch-*.deb 或 sudo apt install ./CC-Switch-*.deb
|
| Fedora / RHEL / CentOS / Rocky Linux | .rpm
| sudo rpm -i CC-Switch-*.rpm 或 sudo 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
|