手机端可长按上方图片保存到相册,或点击「下载/分享」分享到微信
使用 cc-switch,你可以:
这款跨平台桌面一站式助手支持 Claude Code、Codex、OpenCode、OpenClaw、Gemini CLI 以及 Hermes Agent 等多种工具 / 智能体,能够为开发者提供便捷、全面的操作体验,仅可通过官方网站 ccswitch.io 获取。
用户评论 (0)
2025年12月15日
2026年05月27日
2026年05月29日
2026年07月10日
2026年04月11日
2026年04月06日
2025年10月13日
2026年09月09日
2026年09月08日
2026年09月03日
2026年08月29日
2026年08月26日
2026年08月23日
v3.20.2
2026年09月07日
CC Switch v3.20.2
这一版仍以 Codex 为主线,但形态从上一版的「一次重设计」变成「一波兼容性修复」:Grok 终于能经 xAI 原生 Responses API 在 Codex 路由下跑通——xAI 拒收的工具 schema、Codex 拒收的整数浮点、多智能体注入的邮箱消息、xAI 不认识的 Codex 角色型号,四道坎逐一拆掉;围绕它的一族「一因一果」修复:Grok OAuth 卡不再被 v3.20.1 的切换闸误拦、接管不再把 Codex 卡在登录屏、GPT-6 走 Codex OAuth 不再报「需要更新 Codex」、Claude Code 在 Codex OAuth 上恢复并行工具调用、内置图片生成走通本地路由、四个 catalog 缺陷(旧版 Codex 拒载、DeepSeek 下 MCP 工具全隐身、视觉型号被判纯文本、Kimi 工具 schema 400)关闭,智谱 GLM 预设改指官方 Responses 端点。用量侧,Codex resume 后统计停摆与代理每轮打断前缀缓存两条硬修复落地。预设阵营新增腾讯云 Token Plan、QwenCloud、AICodeWith 与两家赞助商 9527CODE、SoleAPI,定价表补入七个新模型并做了一轮九月调价。本版不含数据库迁移。
重点内容:你现在可以
- 在 Codex 里经 xAI 原生 Responses 跑 Grok(#6917,修复 #6815):xAI 拒收的 Codex Desktop 工具 schema 被折叠、Grok 回传的整数浮点被改写、多智能体子任务的
agent_message被翻译成普通消息、gpt-5.6-sol一类角色型号被映射到你配置的 Grok 模型——子智能体不再 422,工具调用不再被拒。 - 正常切换 Grok OAuth 卡、正常接管:v3.20.1 的无密钥安全闸误拦了代理注入令牌的 OAuth 卡;接管在直接切换删除
auth.json之后不再把 Codex 困在登录屏。 - 用 GPT-6 走 Codex OAuth 接管(#7132):自报的 Codex 客户端版本升到 0.153.4,不再被 ChatGPT 后端以「需要更新 Codex」拒绝。
- 让 Claude Code 在 Codex OAuth 上并行调用工具(#7024,修复 #5719):
parallel_tool_calls默认改为 true,每轮不再只允许一个工具调用。 - 在 Codex 路由下使用内置图片生成与编辑(#7036,修复 #5429、#6745):
/images/generations与/images/edits两条路由经本地代理透传,用量按 token 记账。 - 在 DeepSeek 原生预设下看到 MCP 工具(#6653,修复 #6647):catalog 不再声明 DeepSeek 不支持的
tool_search,MCP 工具直接列出。 - Codex 桌面端经本地代理接 Kimi/Moonshot 不再必现 400(#6863,修复 #6867):带兄弟关键字的
$ref只对 Moonshot 域名改写成allOf,其他供应商的 schema 逐字节不变。 - 让智谱 GLM 在 Codex 直连(#6957,修复 #6944):预设改指官方 Responses 端点
/api/v1、默认 glm-5.3,存量卡需重新导入。 - resume 之后用量继续累计(#6905,修复 #6904):回退过的线程再 resume 时写入的双 UUID rollout 文件不再被永久搁置,积压用量自动回填到原日期。
- 在 OpenAI 格式上游重新命中前缀缓存(#6941,修复 #6789):Claude Code 每轮注入的中途 system 消息不再被合并到对话开头,DeepSeek、GLM、Kimi 一类端点的缓存命中率不再从 99% 掉到 20%。
- 一键添加新供应商:腾讯云 Token Plan(六应用,#7011)、QwenCloud(七应用,#6214)、AICodeWith(八应用)、赞助商 9527CODE 与 SoleAPI(九应用);Pi 补齐腾讯 TokenHub / Token Plan(#7159)与 PPIO(#6870)。
- 看到 Fable 5.1 / Mythos 5.1、GPT-6 Astra、GLM-5.3、Gemini 3.8 Flash 的真实成本:此前这些请求按 $0 记账;Sonnet 5 按 Anthropic 转正口径改回 $2/$10。
- 再次看到 Hermes 的升级按钮:最新版本改读 GitHub Releases,不再永远停在 PyPI 的 0.19.0。
使用攻略
- 添加供应商:新增预设的导入入口,以及「预设改动只影响新建供应商」的含义。
- 请求路由:Grok 经 xAI 原生 Responses、Codex 图片端点透传都走这条路径。
- 用量统计:定价表回填与 resume 积压用量的记账口径。
Warning
唯一官方渠道声明(请务必阅读)
CC Switch 是完全免费、开源的桌面应用,不会向用户收取任何费用。请仅通过下列官方渠道获取本软件:
| 类别 | 唯一官方 |
|---|---|
| 官网 | ccswitch.io |
| 源码 | github.com/farion1231/cc-switch |
| 下载 | GitHub Releases |
| 作者 | @farion1231 |
| 举报山寨 | GitHub Issues |
任何向你收费、要求充值、或索取登录凭据的"CC Switch"网站或客户端均为假冒。如果你被诱导支付了费用,请立即停止操作并通过 GitHub Issues 反馈。
概览
v3.20.1 之后的开发依旧由 Codex 领衔,但这一次是一波兼容性修复而不是一次重设计。最长的一条线是 Grok:xAI 的原生 Responses API 在几处与 Codex 的假设相左——它在采样前就拒收 Codex Desktop 的工具 schema、Grok 回传的 JSON 整数带小数点而 Codex 的解析器拒收、Codex 多智能体模式注入的 agent_message 邮箱项 xAI 无法反序列化、Codex 自己的角色型号(如 gpt-5.6-sol)xAI 直接 404。本版把这四道坎在同一个原生 Responses 闸门后逐一拆掉,Grok 终于能在 Codex 路由下完整工作,包括子智能体。
围绕它是一族「一因一果」的修复:v3.20.1 引入的无密钥安全闸误拦了代理注入令牌的 Grok OAuth 卡;直接切换删掉 auth.json 之后再开接管,Codex 会被过时的 requires_openai_auth = true 困在登录屏;GPT-6 走 Codex OAuth 接管被后端以客户端版本过旧拒绝;Claude Code 在 Codex OAuth 上被强制串行调用工具;内置图片生成在本地路由下 404;四个 catalog 缺陷——旧版 Codex 拒载 catalog、DeepSeek 预设下 MCP 工具全部隐身、DeepSeek 视觉型号被判纯文本、Kimi 工具 schema 必现 400——各自关闭;智谱 GLM 预设从 Chat 端点改指官方 Responses 端点。用量侧两条硬修复:Codex resume 之后统计静默停摆,以及代理把 Claude Code 每轮注入的中途 system 消息合并到开头、打断上游前缀缓存。
预设库新增腾讯云 Token Plan、QwenCloud、AICodeWith 与赞助商 9527CODE、SoleAPI,Pi 补齐腾讯与 PPIO;定价表补入七个新模型行并按各厂商九月官方价页做了一轮调价。本版不改数据库 schema。
发布日期:2026-09-07
更新规模:52 commits | 71 files changed | +10,483 / -573 lines
新功能
新增预设
腾讯云 Token Plan(六产品 × 六应用,#7011)、QwenCloud(三计划 × 七应用,#6214)、AICodeWith(八应用)与两家赞助商 9527CODE、SoleAPI(九应用)加入预设库;Pi 补齐腾讯 TokenHub / Token Plan(#7159)与 PPIO(#6870)。存量供应商不受影响;需要重新导入的情形见升级提醒。
七个新模型的定价行
Claude Fable 5.1 与 Mythos 5.1:$10/$50 每百万,缓存读 $0.25、缓存写 $12.50(#7051,修复 #7050)——此前没有行,这些请求一律按 $0 入账,因为前缀规则只找更长的带日期 id、无法回落到 claude-fable-5;GLM-5.3:$1.40/$4.40,缓存读 $0.26,与 Z.ai 官方价一致(#6591);GLM-5.3 Flash:$0.15/$0.50,缓存读 $0.03(#7163);GPT-6 Astra:$10/$50,缓存读 $1、缓存写 $12.50,low/medium/high/xhigh 后缀回落到基础行(#7162);Gemini 3.8 Flash:$0.75/$3.75,缓存读 $0.075,无缓存写费(#7164);Qwen3.8 Flash:$0.15/$0.47,1M 窗口内不分档,缓存读/写 $0.016/$0.20。全部只是 seed 行、不改 schema;存量安装下次启动即拿到,启动时的成本回填会把这些 id 此前按 $0 记录的历史行补上价格。
变更
2026 年 9 月定价刷新
Sonnet 5 改回 $2/$10——Anthropic 价页现已注明介绍价即标准价、9 月 1 日涨到 $3/$15 的计划不再执行——并带一条守卫修复:仍是 seed 值 3/15/0.30/3.75 的安装被纠正,用户自定义过的行不动(#7051)。GPT-5.6 Sol、裸名 gpt-5.6 及其五个档位后缀行同步从 $5/$30(缓存读 $0.50、写 $6.25)降到促销价 $4/$20(缓存读 $0.40、写 $5),至少持续到 2026-11-21。Gemini 3.6 Flash 从 $1.50/$7.50/$0.15 降到与 3.8 Flash 相同的介绍价 $0.75/$3.75/$0.075,至 2026-12-31。MiniMax M2、M2.1、M2.5 统一为官方按量价 $0.30/$1.20,缓存读 $0.03、缓存写 $0.375——后者此前记为零。每项调价都是 seed 加一条按旧值守卫的修复条目,追加在既有链条之后,老数据库会逐级经过中间价位。
修复
Grok 经 xAI 原生 Responses API 在 Codex 路由下跑通
一组贡献者提交关闭了原生 Responses 通往 xAI 路径上四个互相独立的故障。xAI 在采样前就拒收 Codex Desktop 的内置工具 schema,于是请求路径上折叠根级 oneOf/anyOf 函数参数(#6815),各分支的 required 取交集而不是并集,压平后的 oneOf 不会强求所选分支没有的字段。Grok 回传的 JSON 整数带小数点,Codex 的解析器拒收为整数,于是已完成 function_call 参数里的整数浮点被改写(恰好 2^64 现在直接拒绝而不是静默改写差一)。Codex 多智能体模式注入的 agent_message 邮箱项 xAI 无法反序列化,每个子任务在任何工具运行前就 422,于是这些项被改写成普通 user 消息、加密内容压平为文本。xAI 对 Codex 的角色型号(如 gpt-5.6-sol)直接 404,于是未知的请求模型被映射到供应商配置的模型(catalog 里的 grok-4.5 一类与任何 grok 前缀 id 原样放行),且映射先于清洗执行,落到 grok-4.5 上的子智能体也会被剥掉不支持的采样字段。全部逻辑收在一个原生 Responses 闸门后的独立模块里,便于在上游覆盖同样场景之前 rebase 或 cherry-pick。grok-4.5 的 xAI 预设现在声明 low/medium/high/xhigh:2026-08-30 实测该端点接受这四档、对 max 报 HTTP 400,而 Codex 不会把目录外的档位夹回范围。(#6917)
切换到 Grok OAuth 的 Codex 卡不再被拒绝
v3.20.1 的 config-only 切换重构把无密钥安全闸推广到所有写入路径,误伤了代理托管的 OAuth 卡(xAI Grok OAuth):它们本来就无密钥——本地代理逐请求注入真实令牌——但预设快照继承了 0.149 之前模板的 requires_openai_auth = true,安全闸把它当作「会回落到官方登录」而拒绝切换。修的是快照而不是给闸门开例外:对代理注入的 OAuth 供应商(xAI OAuth 与 GitHub Copilot;Codex OAuth 刻意排除,官方登录就是它的凭据)在活跃自定义表上把该标志强制为 false,挂在共享的有效供应商构建器里,预检、普通写入与代理备份/接管投影看到同一形状,Codex 0.149 无需读 auth.json 即判定为未鉴权。预设源头现在就输出 false,存量卡在下一次切换时自愈。
接管不再把 Codex 困在登录屏
「非接管切换时保留官方登录」关闭(默认)时,直接切换到第三方供应商会删除 ~/.codex/auth.json;此后再开启代理接管,config.toml 从存量卡重建,而卡上仍带 0.149 之前的 requires_openai_auth = true,于是 Codex ≥ 0.149 即使已有代理占位 bearer token 也停在登录屏——接管中执行 codex logout 后热切换也踩同一个坑。接管写入器现在按 Codex 自己会观察到的登录状态戳记活跃自定义表的标志,与直接切换的计划对齐:先按 Codex 的规则解析鉴权模式(显式 auth_mode 优先,其次个人访问令牌、Bedrock API 密钥、Bedrock 访问密钥、OPENAI_API_KEY、ChatGPT)再核对凭据,紧邻过期 API 密钥的 Bedrock 凭据永远不会被抬举为 OpenAI 登录;先判定凭据存储再碰 auth.json——keyring 与 auto 存储无法从磁盘判定、保留卡上原值,ephemeral 存储一律视为未登录,只有 file 存储才读文件,文件缺失、不可读或损坏都视为未登录且不再让接管写入失败。代理注入的 OAuth 卡无论磁盘上是什么都保持中和后的 false;官方透传与托管官方分支不动。
重复的托管 ChatGPT 账号会被拒绝
普通托管账号登录若 ChatGPT workspace 与 稳定用户身份(id_token 的 subject)同时匹配已有账号,会以本地化提示拒绝而不是新建第二行。检查在存储锁内执行,并发完成的登录无法漏进重复;刷新锁现在只在定向重鉴权时获取,被拒的添加不会留下锁条目。同一 workspace 的不同用户仍可并存。(#7061)
GPT-6 走 Codex OAuth 接管不再被拒为「需要更新 Codex」
Claude 转 Codex OAuth 路由上的 gpt-6-astra 请求自报 Codex 0.144.1,低于该模型 0.153.0 的最低客户端版本,ChatGPT 后端回 HTTP 400。自报版本升为 0.153.4,originator 与版本常量在生成与模型发现之间共享——后者此前发的是 cc-switch 自己的包版本与 originator。(#7132,关联 #7129)
Claude Code 在 Codex OAuth 上恢复并行工具调用
来自 Anthropic 的请求没有显式给值时,Codex OAuth 请求把 parallel_tool_calls 默认为 false,迫使 Claude Code 每轮只能调用一个工具。默认改为 true(与 codex-rs 一致),Anthropic 的 tool_choice.disable_parallel_tool_use 映射为 Responses 侧的反值,显式串行仍被保留。接力自 #5722。(#7024,修复 #5719)
Codex 内置图片生成在路由下可用
Codex 的 ImageGen 工具调用旧版 OpenAI Images API,而本地代理只注册了 Responses、Chat Completions、Compact 与 Alpha Search 路由,/v1/images/generations 返回空 404。generations 的别名(裸路径、/v1、/v1/v1、/codex/v1)现在作为与 Alpha Search 共用的 Codex 独立透传转发,Alpha Search 的完整 URL 改写被泛化为从完整的 Responses/Compact/Chat URL 推导兄弟 Images URL(已有 Images URL 原样保留,不透明的完整 URL 关闭失败),响应里的输入/输出 token 经 Codex 用量解析器记账。后续一笔补上 /images/edits——ImageGen 一旦引用已有图片(显式路径或最近生成的 N 张)就切换到它,此前仍打到空路由;两条路由共享一张后缀表,把任一条配成完整 URL 的供应商都能推导出另一条。(#7036,修复 #5429、#6745)
旧版 Codex 重新能加载 catalog
Codex 0.144.5 到 0.148.0-alpha.15 把 supports_parallel_tool_calls 声明为 catalog 必填字段,而上游 2026-08-14 已把它从模型信息里删除——新版刷新的 models_cache.json 没有该字段,从它克隆出的 ProxyChat catalog 被同机的旧版 Codex 以「missing field」拒载。该字段加入必填回填清单、从内置 gpt-5.5 模板取值(true);已有值绝不覆盖,新版对多余键视而不见。用真实二进制验证:旧 catalog 被 0.147.0 与 0.148.0-alpha.15 拒绝,新 catalog 在两者与 0.148.0 上都能加载。(#6666,修复 #6661、#6709)
DeepSeek 原生预设下 MCP 工具重新可见
内置的官方 catalog 为 deepseek-v4-pro 与 deepseek-v4-flash 声明了 supports_search_tool = true,而 Codex 用这个标志决定是否把 MCP 工具延迟到 tool_search 之后——DeepSeek 的 Responses API 根本不提供 tool_search,于是所有 MCP 工具被藏起来、一个都调不到。两个模型现在声明 false,Codex 直接列出 MCP 工具;托管 web search 由供应商能力门控而不是这个标志,不受影响,DeepSeek 服务端的联网搜索也照常工作。(#6653,修复 #6647)
DeepSeek 镜像 catalog 里的视觉型号不再被判纯文本
内置 DeepSeek catalog 里没有的型号会克隆旗舰条目、继承它的纯文本输入模态,deepseek-v4-flash-vision-exp 一类视觉型号因此失去图片输入。未匹配的型号现在与非厂商路径一样经注册表解析模态、失败即放行;用户显式设置的模态仍优先,匹配到的型号逐字保留厂商声明。另外 glm-5.3 加入已确认纯文本清单,其 [1M] 变体被识别、glm-5.3v 不受波及(#6851)。(#6750,修复 #6725)
Codex 桌面端经本地代理接 Kimi/Moonshot 不再因工具 schema 必现 400
Moonshot 的 Chat Completions 校验器(api.moonshot.cn、api.moonshot.ai 与 Kimi For Coding 端点 api.kimi.com)拒收带兄弟关键字的 $ref,而 Codex Desktop 的内置工具 schema 正是这种形状——经本地代理路由到 Kimi 的每一轮桌面请求都失败。解析出的上游域名是 Moonshot/Kimi 时,Responses 转 Chat 之后每个带兄弟键的 $ref 被移入 allOf、兄弟键留在原位;遍历只进入 schema 值的关键字,改写幂等。其他供应商的工具 schema 逐字节不变,Codex 转 Anthropic 路径不动——Moonshot 的 Anthropic 兼容端点接受原始形状。(#6863,修复 #6867)
智谱 GLM 的 Codex 预设改指官方 Responses 端点
智谱每个站点文档写明三个 Base URL——Anthropic /api/anthropic、Chat /api/coding/paas/v4、Responses /api/v1——并警告用错端点无法消耗 Coding Plan 额度;Codex 直连说的是 Responses,而 400 unknown variant custom 正来自 Chat 端点那个严格的旧网关。「Zhipu GLM」与「Zhipu GLM (en)」预设改为 /api/v1 上的原生 Responses(shell 命令式编辑、不发 freeform apply_patch),并镜像官方模型列表:glm-5.3(1M 窗口,low/high/max,默认 max),国内站另有 glm-5-turbo;glm-5.2 与 none 档被删。一条域名回退让「保存时还是 Chat 格式、但 Base URL 已是原生 Responses」的行无需重存即拿到 Responses catalog(Chat 端点路径排除在外);厂商域名按 DNS 标签边界匹配,z.ai 不再误捕 xyz.ai;bigmodel.cn、z.ai 与 glm 前缀加入 Codex 托管 web search 的拒绝清单。(#6957,修复 #6944)
Codex resume 之后用量不再停摆
线程被回退(revert)时,Codex 会新建一个带两个 UUID 的替换 rollout 文件(rollout-<ts>-<threadId>_<rolloutId>.jsonl),此后该线程的每次 resume 都追加到它;文件的根元数据保留原线程 id,而导入器的一致性校验只拿它对比文件名末尾的 UUID——这类文件被永久搁置,用户 resume 该线程起用量就静默停止累计(现场复现:152 条未导入的 token 计数事件,搁置警告每 60 秒一轮重复)。校验现在也接受与双段文件名前置 UUID 匹配的元数据 id;单 UUID 文件名维持严格校验,从未回退过的普通会话从来不受影响。这类文件存入的会话 id 改为前置的逻辑线程 id——会话列表以它为键——而不是末尾的 rollout id;末尾 id 继续充当 request id 前缀,避免同一线程多个分段的去重键碰撞。(#6905,修复 #6904)
前缀缓存不再每轮被打断
Anthropic 转 OpenAI 的转换把所有 system 消息合并到对话开头,而 Claude Code 每轮都把 <total_tokens> 元数据作为一条中途 system 消息注入——合并让前缀每轮都变,上游的 radix 前缀缓存形同虚设。顶层 system 块仍合并为一条开头的 system 消息(跨轮字节稳定),消息列表里的 system 消息现在留在原位、不合并不重排。报告者在 DeepSeek、GLM、Kimi 一类 OpenAI 格式端点上实测,命中率曾因此从 99% 掉到 20%。(#6941,修复 #6789)
Hermes「最新版本」改读 GitHub Releases
工具面板此前问的是 PyPI,而上游 0.19.0(2026-07-20)之后就停止在那里发布、只走 GitHub Releases——用户看到的「最新 0.19.0」永远不变、常常低于已装版本,升级按钮从不出现。PyPI 从来不是 cc-switch 安装或升级 Hermes 的渠道(官方安装脚本与 hermes update 都走 git),探测现在先查 GitHub Releases,仅在 GitHub 不可达或限流时回退 PyPI。语义化版本从发布名(Hermes Agent v0.21.0 (v2026.8.31))解析,因为 tag 是日历版本;两条路径都拒绝日历数字,2026.8.31 永远不会被报成一个永久的「有更新」;本地版本已领先时隐藏 PyPI 回退值;两个探测都加 15 秒超时,不再沿用共享客户端的 600 秒——那曾在 api.github.com 挂起时卡住 Hermes 卡片与刷新/全部升级按钮。(关联 #6475、#6618、#7033;取代 #6621)
接管模式下 Claude Code 的模型菜单出现 Opus 5 与 Sonnet 5
接管写给 Claude Code 的稳定角色别名从 claude-opus-4-8/claude-sonnet-4-6 换成 claude-opus-5/claude-sonnet-5,与早已迁移的 Claude Desktop 默认路由和预设默认值对齐。opus-5 加入自适应思考分类器,在模型映射之前按客户端别名运行的 Bedrock 思考优化器继续发自适应思考而不是已被移除的 budget_tokens。路由不受影响——代理按角色关键字映射客户端别名——别名在代理下次启动时自动改写。(#5882,修复 #5876)
PPIO、JieKou 与 Novita 的 Claude 预设能「获取模型」了
三家都在一个路径下提供 Anthropic 兼容 API、却把 OpenAI 兼容的模型列表挂在 /openai/v1,从 Base URL 推导的每个候选都 404,模型发现从未成功过。三张预设现在各钉一条显式的模型列表地址,表单在获取时按卡片的 Base URL 反查取用——仍在预设默认地址上的存量卡无需任何改动即生效;JieKou 一条把错误行为锁死的测试被删除。(#6870 及后续)
杂项修复
- Claude 会话列表不再出现幽灵「journal」会话:Claude Code 的 workflow 功能把
journal.jsonl写进会话目录,扫描器只排除了agent-*文件,每个 journal 都被解析成一条标题为「journal」的空会话。(#6043,修复 #6042) - 检查更新失败时显示真实原因:更新插件以纯字符串拒绝,
instanceof Error判断永远不成立,真正的失败原因(网络错误、限流、清单畸形)被通用兜底文案替换、还停在一个无人读取的状态里;恢复出的信息现在直达失败提示。(#6482) - 代理地址脱敏不再因多字节字符崩溃:代理 URL 解析失败时的回退分支在第 20 字节硬切,多字节 UTF-8 字符跨过该偏移就 panic——往全局代理地址里粘一段中文即可触发;切点现在对齐字符边界。(#6908)
- Pi 的重复键错误与折叠标签显示文案而不是原始 key:Pi 后端的重复键错误映射到的翻译键在四种语言里都不存在,思考映射折叠按钮的无障碍标签同样缺失;两者补齐 zh/en/ja/zh-TW 并由语言覆盖测试锁定。(#6768)
- 屏幕阅读器能读出纯图标控件的名称:仅图标的返回按钮、顶栏本地路由开关、项目切换弹层、Claude JSON 编辑器与已有 Skills 的导入复选框现在都带程序化名称,尽量复用既有文案,另加两条短标签。(#7049,修复 #7048)
- 用量趋势图 Token 轴改用本地化紧凑格式:刻度此前固定为「数值/1000 加 k」,大数据日显示成
1500k;现在按语言环境的紧凑记法(1.5M)显示,轴宽相应调整。(#7016) - 定价来源下拉框放得下本地化文案:用量成本设置表里的定价模型来源选择器只留约 70 px 给标签,英文与日文需要约 107 px;已加宽并与相邻输入框对齐高度。(#6980)
升级提醒
本版不含数据库迁移
schema 版本保持 18,不产生迁移备份。
预设改动只影响新建的供应商
存量卡片保存的是创建时的快照。本版涉及:智谱 GLM 预设(存量智谱 Codex 卡仍指向 Chat 端点、直连依旧失败——重新导入预设即可拿到 /api/v1)、腾讯 Pi 预设的思考控制(重新导入才有真正生效的「off」与修正后的 Kimi 档位)、grok-4.5 的 xhigh 档、以及腾讯预设里 minimax-m2.5 的移除。PPIO、JieKou 与 Novita 的模型列表地址是例外:表单按卡片的 Base URL 反查预设,仍在默认地址上的存量卡无需改动。
Codex catalog 类修复在下一次切换供应商时生效
catalog 文件在切换时重新生成:DeepSeek 的 MCP 可见性(#6653)、supports_parallel_tool_calls 回填(#6666)、视觉模态(#6750)与 glm-5.3 纯文本条目(#6851)都属此类。在受影响的卡上切走再切回一次即可。
Codex OAuth 接管现在自报 Codex 0.153.4
无需配置。若你绕过 cc-switch 直接使用 Codex CLI,GPT-6 需要你本机的 Codex ≥ 0.153.0。
认证中心里已存在的 ChatGPT 账号不能再重复添加
同一用户、同一 workspace 再次添加会被拒绝,请改用该账号行上的「重新登录」。同一 workspace 的不同用户仍可并存。
Grok OAuth 卡在下一次切换时自愈
requires_openai_auth 标志会被回填为 false,无需重新添加。
接管写入时 requires_openai_auth 按 Codex 的凭据存储覆盖
活跃第三方表上的该标志现在在每次接管写入时按 Codex 会观察到的登录状态覆盖:file 存储(默认)跟随 auth.json 是否持有官方登录;ephemeral 存储下 Codex 每次启动都是未登录,标志写为 false;keyring 与 auto 存储无法从磁盘读出登录状态,卡上原值保持不动。
被 resume 停摆的用量会在下一次扫描时补入
补入的条目按实际发生日期入账,那几天的看板总数可能跳升。回退过的线程从现在起会话 id 记录正确;此前按 rollout id 写入的行不做改写。
定价
Sonnet 5 的守卫只纠正仍是 seed 值 3/15/0.30/3.75 的行;自定义过的 Sonnet 5 行不动,历史 Sonnet 5 费用不会重算——费用在记录时冻结,回填只补按 $0 记录的行(Fable 5.1、GLM-5.3、GLM-5.3 Flash、GPT-6 Astra 与 Gemini 3.8 Flash 的历史因此会被补价)。MiniMax M2 系列新增此前为零的缓存写价格,这部分费用往后会上升。GPT-5.6 的促销价(至少到 2026-11-21)与 Gemini 3.6/3.8 Flash 的介绍价(到 2026-12-31,之后 $1.50/$7.50/$0.15)都有到期日,而定价表表达不了日期,后续版本会重新 seed。
经 Codex 路由的图片生成按 token 计数、暂无内置定价
图片模型还没有定价行,在补上之前其费用显示为 $0。
Hermes 版本探测降级时显示「未知」
GitHub 不可达且 PyPI 回退值低于你已安装的版本时,显示「未知」而不是误导性的「最新 0.19.0」。
中途 system 消息现在原位转发
发往 OpenAI 格式上游的中途 system 消息不再被合并到开头,这正是前缀缓存命中恢复的原因,也与 Claude Code 原生发送的形状一致。两点连带影响:升级后第一轮请求的前缀字节会变化,缓存一次性重冷后即恢复;而要求 system 消息必须全部位于开头的严格后端(#1881 里 Nvidia、Qwen 一类端点,报 System message must be at the beginning)在中途 system 消息出现时会重新 400——原来的合并逻辑正是为它们引入的,前缀稳定与严格后端校验在同一个全局行为里无法兼得。如果你的上游属于后者,请在 issue 里反馈。
风险提示
沿用的提示
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 不对因使用这些功能而导致的任何账号限制、警告或服务暂停承担责任。
致谢
本版 52 个提交里有 36 个来自 26 位外部贡献者。
代码贡献
- 感谢 @loocor:Grok 经 xAI 原生 Responses 的整条主线(#6917)——工具 schema 折叠与整数浮点改写、
agent_message邮箱项改写、子智能体未知型号映射、闸门收敛与 CI 清理,六个提交。 - 感谢 @szupzj18:三条 Codex catalog 修复——DeepSeek 的 MCP 可见性(#6653)、
supports_parallel_tool_calls回填(#6666)与未知型号的输入模态(#6750);Moonshot$ref兄弟键的修法他也更早在 #6627 尝试过。 - 感谢 @yovinchen:GPT-6 Astra、GLM-5.3 Flash 与 Gemini 3.8 Flash 三条定价(#7162、#7163、#7164)。
- 感谢 @thisTom:Codex 图片生成端点透传(#7036)与用量趋势图的紧凑轴标签(#7016);同一透传 @Komikawayi 更早在 #5484 提出过修法。
- 感谢 @zmq1121:腾讯云 Token Plan 六产品×六应用的预设(#7011),端点与思考开关全部真实密钥实测。
- 感谢 @2691176649-cloud:Pi 的腾讯 TokenHub / Token Plan 八条预设与思考控制声明(#7159)。
- 感谢 @SaladDay:重复托管账号的拒绝(#7061),拆自他自己报告的 #7055。
- 感谢 @RemindZ:Codex OAuth 客户端身份对齐 GPT-6(#7132),首次投稿。
- 感谢 @liqimore 与 @li-keli:Codex OAuth 并行工具调用(#7024,接力自 #5722;@li-keli 同时是 #5719 的报告者)。
- 感谢 @czhmartinez:Moonshot/Kimi 的
$ref兄弟键改写(#6863);同一问题 @jacker-son(#5125)与 loulanyue(#6869)也各自提出过修法。 - 感谢 loulanyue:智谱 GLM 预设改指官方 Responses 端点(#6957)。
- 感谢 @htyvista:中途 system 消息原位保留、前缀缓存修复(#6941,修复 #6789)。
- 感谢 @3351163616:Codex resume 后用量停摆的修复(#6905),自报自修 #6904。
- 感谢 @Eureka0w0v0:Fable 5.1 / Mythos 5.1 定价与 Sonnet 5 改回标准价(#7051),自报自修 #7050,首次投稿。
- 感谢 @nightcityblade:接管别名升级到 Opus 5 / Sonnet 5(#5882)。
- 感谢 @hu-miao:PPIO 扩展到 Pi 与 Claude 预设的模型列表地址(#6870),自报自修 #6868。
- 感谢 @arichyx:GLM-5.3 定价(#6591)。
- 感谢 @teddyli18000:glm-5.3 纯文本标记(#6851),首次投稿。
- 感谢 @jintonglu6688:无障碍名称补齐(#7049),自报自修 #7048,首次投稿。
- 感谢 @SailingLoong:检查更新失败显示真实原因(#6482),首次投稿;Hermes 版本源的问题也由他在 #6621 率先提出修法。
- 感谢 @nasymonk:幽灵「journal」会话(#6043),自报自修 #6042。
- 感谢 @xu-kai-quan:代理地址脱敏的多字节 panic(#6908)。
- 感谢 @ntdatt812:Pi 缺失的两条翻译键(#6768)。
- 感谢 @Chang-Yo:定价来源下拉框宽度(#6980)。
- 感谢 @wanwan-doudou:测试隔离
LOCALAPPDATA(#6078),自报自修 #6077。 - 感谢 @why19970628:README 目录树的翻译路径修正(#6100)。
问题反馈
- 感谢 @elizax 在 #6789 用实测数据(命中率 99% → 20%)定位到中途 system 消息被合并——本版前缀缓存修复的起点。
- 感谢 @jonneyz:xAI 拒收根级
oneOf/anyOf工具 schema(#6815)与 Moonshot$ref兄弟键 400(#6867)两份精确到字段的报告。 - 感谢 Moonshot 工具 schema 400 家族的其他报告者:@Cinnamanthus(#6614,附已验证的修法)、@IchenDEV(#6834)、@ghostman-git(#6861)、@dolami0(#6976)、@RN0817(#7000)与 @Lw2xy(#7028)。
- 感谢 @loveyang2012 报告智谱 Codex 直连的
unknown variant custom(#6944)。 - 感谢 @vdiskg 报告 DeepSeek 预设下 MCP 工具不可用(#6647),以及在评论里给出源码级根因与已验证修法的 @wqzhellohhwy。
- 感谢 @OhtoAi583 与 @dydydd 报告 catalog 缺
supports_parallel_tool_calls(#6661、#6709);@dydydd 还在 #6710 提交了同样的修法,@zmzwynzj 在 #6661 补充了 Windows 复现、证明问题不限于 Kimi 或 macOS。 - 感谢 @deadman49 报告 DeepSeek 视觉型号无法读图(#6725)。
- 感谢 @zhou0722jack 报告 GPT-6 无法使用(#7129),以及在同一 issue 里贴出 400 原文并验证修复的 @AiIsBetter。
- 感谢 @Hewitt-Qiao 与 @JerryChen001 报告本地路由下图片生成 404(#5429、#6745)。
- 感谢 @SHIZHENGYE 报告接管下无法选到 Opus 5(#5876)。
- 感谢 @matthewdm0816 与 @lagolas 在 #6904 同报 resume 后用量停摆——前者「切到 1M 上下文后 resume」是同一根因的另一形态。
- 感谢 @FlyinheartLee、@t5yhuangxing 与 @Tsuki-hash 报告 Hermes 最新版本停在 0.19.0(#6475、#6618、#7033)。
- 感谢 @QianWen-AI-Platform 提出 QwenCloud 预设需求(#6214)。
下载与安装
访问 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.2-Windows.msi |
推荐 - MSI 安装包,支持自动更新 |
CC-Switch-v3.20.2-Windows-Portable.zip |
便携版,解压即用,不写入注册表 |
Windows ARM64 设备请选择文件名中带 arm64 标识的对应制品。
macOS
| 文件 | 说明 |
|---|---|
CC-Switch-v3.20.2-macOS.dmg |
推荐 - DMG 安装包,拖入 Applications 即可 |
CC-Switch-v3.20.2-macOS.zip |
解压后拖入 Applications,Universal Binary |
CC-Switch-v3.20.2-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.2-Linux-x86_64.AppImage/.deb/.rpmCC-Switch-v3.20.2-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 |
v3.20.1
2026年08月28日
CC Switch v3.20.1
这一版围绕 Codex 补两笔硬账:适配 Codex CLI 0.149——第三方切换 401「Missing API key」的根治:切换改为 config-only,密钥随供应商表走、不再进
auth.json,一族让 0.149 拒绝启动的历史配置形态也在每次切换时自动修复;同一 ChatGPT Team workspace 的多个账号不再互相覆盖——存量托管账号需逐个重新登录一次(见升级提醒)。数据可靠性另有三条硬修复:供应商编辑必达 live 配置、Codex 编辑框不再串染别张卡的密钥、恢复备份不再清空手写的 prompt 文件。用量侧新增「自动扫描会话记录」开关,大会话文件的扫描从秒级降到毫秒级。本版包含数据库迁移(v17 → v18),升级前自动备份,降级需还原备份。
重点内容:你现在可以
- 在 Codex CLI ≥ 0.149 上正常切换第三方供应商(#6744):0.149 起自定义 provider 不再从
auth.json继承环境凭据,以旧默认方式(密钥只写auth.json)完成的第三方切换一律 401。切换现已整体改为 config-only——密钥写进供应商自己的[model_providers.*]表(experimental_bearer_token,Codex 0.48 起支持),auth.json回归纯粹的官方 ChatGPT 登录文件。 - 让同一 Team workspace 的多个 ChatGPT 账号安全共存(#6780,修复 #2245):此前账号以 workspace ID 为主键,同一 Team 两名成员会合并成一条记录、后登录者静默覆盖前者的令牌。现在同 workspace 登录并存为独立账号行,接管下的请求还会校验账号一致性——绝不把账单记到另一名成员头上。
- 相信「保存成功」四个字(#6779):崩溃残留的接管备份行曾让活跃供应商的编辑只更新数据库、真正的配置文件纹丝不动。所有权判定已重建,编辑必达 live 配置。
- 在编辑框里看到这张卡自己的密钥(#6534,修复 #6414):共享的
auth.json没有供应商身份,编辑活跃 Codex 供应商可能显示——保存后固化——另一张卡遗留的 key,同 base URL 的卡密钥互相趋同、报「model not found」。表单现在从config.toml里该卡自己的 bearer token 重建密钥。 - 放心恢复备份(#6810,修复 #6778):云端快照没有任何已启用 prompt 时,WebDAV/S3 下载或备份导入不再把本地手写的
CLAUDE.md/AGENTS.md/GEMINI.md/SOUL.md清成空文件。 - 关掉后台会话扫描:用量页新增「自动扫描会话记录」开关,关闭即手动模式——仅在点击「立即同步」时扫描本地会话记录;代理接管的请求记账实时落库、与会话文件无关,照常记录。
- 看到 OpenCode Go 的订阅额度:用量脚本的 Token Plan 查询现在识别 OpenCode Go,5 小时 / 周 / 月三个窗口的用量百分比与重置时间进入用量卡与托盘。
- 在 macOS 上把终端设为 Otty(#6620):会话恢复、供应商终端与工具命令三处入口都可选。
- 让大会话文件的扫描从秒级降到毫秒级:Claude 会话日志改为字节游标增量扫描,12 MB 活跃会话文件从整读 6.04 秒降到增量 9.3 毫秒。
使用攻略
Warning
唯一官方渠道声明(请务必阅读)
CC Switch 是完全免费、开源的桌面应用,不会向用户收取任何费用。请仅通过下列官方渠道获取本软件:
| 类别 | 唯一官方 |
|---|---|
| 官网 | ccswitch.io |
| 源码 | github.com/farion1231/cc-switch |
| 下载 | GitHub Releases |
| 作者 | @farion1231 |
| 举报山寨 | GitHub Issues |
任何向你收费、要求充值、或索取登录凭据的"CC Switch"网站或客户端均为假冒。如果你被诱导支付了费用,请立即停止操作并通过 GitHub Issues 反馈。
概览
这一版的主线在 Codex,起点是一次上游的兼容性断裂:Codex CLI 0.149 收紧了凭据继承,自定义 provider 不再读取 auth.json 里的环境凭据,以旧默认方式写入的第三方切换全部 401。CC Switch 的应对不是打补丁,而是把第三方切换整个改成 config-only——密钥随供应商自己的配置表走,auth.json 回归纯粹的官方 ChatGPT 登录文件;同时一族让 0.149 拒绝加载的历史配置形态(占用保留 id 的旧表、缺 name 的表、顶层 openai_base_url 旧式路由)在每次切换与接管投影时自动修复,并新增写前预检——0.149 无法加载的组合会被点名拒绝,而不是「切换成功」之后 Codex 起不来。
第二条主线是账号与数据安全:同一 ChatGPT Team workspace 的成员在认证中心不再互相覆盖(存量托管账号需重登一次);供应商编辑保证必达 live 配置;Codex 编辑框不再串染别张卡的密钥;恢复备份不再清空手写的 prompt 文件。用量侧,会话扫描获得自动/手动开关与字节游标增量扫描(6.04 秒 → 9.3 毫秒),并顺手修掉三个 Claude 会话记账的正确性缺陷——这也是本版唯一数据库迁移(v17 → v18)的由来。
发布日期:2026-08-28
更新规模:26 commits | 66 files changed | +7,474 / -1,000 lines
新功能
会话记录扫描:自动/手动模式
用量页新增「自动扫描会话记录」卡片与开关(默认开启,升级后行为不变)。关闭后停止一切后台会话扫描——包括启动时的首轮——并出现「立即同步」按钮作为手动入口,完成后以提示显示导入条数、扫描文件数与错误计数。代理接管的请求记账是实时落库、从不读会话文件,无论开关如何都照常记录;启动时的成本回填只修数据库既有行,手动模式下也照常执行。
OpenCode Go 订阅用量
用量脚本的 Token Plan 查询现在识别 OpenCode Go,在用量卡与托盘显示 5 小时 / 周 / 月三个窗口的用量百分比与重置时间,复用既有的配额层级展示。该端点只认 Bearer 认证(与推理侧只认 x-api-key 恰好相反);密钥有效但未订阅 Go 计划时显示明确的提示(HTTP 403)而不是笼统的认证失败,零用量窗口会丢弃上游的占位重置时间,无法识别的响应形状报错而不是空卡。在 Claude Code、Claude Desktop、Codex、OpenCode 与 Pi 新添加的 OpenCode Go 供应商自动启用查询;OpenCode Zen 按量付费刻意不覆盖——该计划上游没有用量 API。
Otty 终端支持(macOS)
「Otty」加入 macOS 终端选择器,覆盖会话恢复、供应商终端与工具命令三处入口。启动时先尝试经 Otty CLI 在既有窗口开新标签页,再退到新开 Otty 窗口;供应商终端与工具命令在失败时进一步回退到 Terminal.app,而会话恢复失败则直接报错——Otty CLI 缺失时附明确的安装提示——并把命令复制到剪贴板。CLI 探测覆盖应用包(系统与用户级)、Homebrew 路径与 PATH。用户手册的 macOS 终端表格也顺带修正——Kaku 与 Warp 早已支持却漏在表外。(#6620)
变更
Codex 第三方切换改为 config-only
切换到第三方 Codex 供应商时,密钥现在写进该供应商自己的 [model_providers.*] 表(experimental_bearer_token 字段,Codex 0.48 起支持),不再写进 auth.json——它回归纯粹的官方 ChatGPT 登录文件。背景是 Codex 0.149 停止让自定义 provider 从 auth.json 继承环境凭据,以旧默认方式(密钥只写 auth.json)完成的第三方切换从此 401。
「非接管切换时保留官方登录」开关随之只剩一个含义:开启时官方 ChatGPT 登录在第三方切换中完全不被触碰;关闭时删除 auth.json 而不是用 API 密钥覆盖它(删除失败会弹出警告,提示官方登录仍留在 Codex 配置目录中)。两道安全闸现在在每次第三方切换都执行、不再只限保留模式:有密钥却没有任何 provider 表可以承载,或没有密钥却会回退到官方登录(requires_openai_auth = true 且无自有凭据,或裸的顶层 openai_base_url 路由),都会被点名拒绝——包括配置为空的第三方卡,它们此前一直静默搭乘 auth.json。活跃的带密钥第三方表上的 requires_openai_auth 会在每次直接切换时按保留开关重新戳记,让 Codex 的登录界面与磁盘上的实际状态一致。(#6744、#6746)
TeamoRouter 预设迁至 teamorouter.cn
八个应用的预设全部指向 api.teamorouter.cn,旧 .com 端点在 Claude Code、Claude Desktop、Codex 与 Grok Build 上注册为可选择、可测速的后备端点。已保存的存量 TeamoRouter 供应商保持各自原有的 Base URL 不变。
修复
同一 workspace 的 ChatGPT 账号不再在认证中心合并
托管的 Codex OAuth 账号此前以 chatgpt_account_id 为主键——它标识的是 ChatGPT workspace 而不是人:同一 Team workspace 的两名成员会坍缩成一条记录,后登录者静默覆盖前者的令牌,供应商绑定跟着指向最后登录的人。账号现在以本地身份建键、保留 OIDC subject 作为用户身份凭证,同 workspace 登录并存为独立账号行。经接管路由的请求会额外对照绑定账号的 live 令牌校验:仍持有另一名成员登录态的 Codex 会话得到「请重启 Codex」的明确报错,而不是以错误身份被转发;外发的 workspace 请求头一律来自账号绑定而不是客户端自报。收养 CLI 轮转过的刷新令牌、以及移除账号时删除 auth.json,现在都要求可证明的所有权——CC Switch 不再可能收养或删除同 workspace 另一名成员的登录。每条账号行提供就地「重新登录」(绑定保留);取消或被取代的设备登录会在 CC Switch 内部丢弃等待中的流程——被放弃的浏览器授权无法在几分钟后被提交、悄悄覆盖账号。不是合法 JWT 形状的 id_token 不再产生任何身份——畸形或截断的令牌永远无法冒充用户。(#6780、#6831,修复 #2245)
Codex 0.149 兼容修复族:存量配置不再让 Codex 拒绝启动
一族让 Codex 0.149 拒绝加载的配置形态——用户侧表现为「CC Switch 显示切换成功,Codex 却起不来」——现在在每次供应商切换与接管投影时自动修复。具体包括:早期接管投影写下的 [model_providers.openai] / .ollama / .lmstudio 遗留表(覆盖保留 id 会导致校验失败)被无损改名为 CC Switch 自有 id 并归一为可加载形状;没有 name 的 provider 表被回填(0.149 会因任何一张缺名表拒绝整份配置——Bedrock 表刻意保持无名,命名会破坏其内置合并);携带可用密钥的旧式顶层 openai_base_url 路由被迁移成正规的自定义 provider 表(无密钥的这类路由会被切换时的安全闸拒绝);新的写前预检对 0.149 无法加载的字段组合点名拒绝,而不是写出去当作「切换成功」。接管路由指向内置 openai provider 的卡改用官方支持的顶层字段而不是制造保留表,指向 ollama / lmstudio 的卡接管时显式报错。保留 id 清单与上游完全一致(大小写敏感;补入 amazon-bedrock-runtime,旧的 oss / ollama-chat 按普通自定义 provider 对待——它们的密钥终于能到达自己的表),内联的 model_providers 表也能接到注入的令牌,而不是留下一个死的顶层字段。
被拒绝的切换不再腐坏被拒的那张卡
live 写入校验现在作为预检、在当前供应商指针移动之前执行。此前写入层的拒绝发生在 current 已提交之后——下一次切换会把旧的 live 配置回填进这张被拒供应商的已存设置。
供应商编辑必达 live 配置文件
崩溃或恢复失败残留的接管备份行,会让活跃供应商的保存(Claude Desktop 除外)走上接管路径——只更新数据库与备份行,真正的配置文件无限期保持旧端点旧密钥。所有权现在由单一谓词裁定,要求接管的实际证据(live 文件中有占位符,或代理已启用且运行中且有备份行,或切换过程持有 per-app 锁且有备份行);过期的备份行被刷新为与所编辑供应商一致,而不是劫持写入。统一供应商保存现在还会把每个生成的子配置重新投影到以它为活跃供应商的应用的 live 配置,逐应用报出失败名称而不是一律报成功。(#6779)
Codex 编辑框不再显示另一张卡的密钥
开启官方登录保留时,auth.json 是一个没有供应商身份的共享槽位,而编辑框播种表单时曾优先读它——编辑活跃的 Codex 供应商可能显示、并在保存时固化另一张卡遗留的密钥,让共享同一 Base URL 的卡密钥互相趋同(表现为「model not found」)。编辑框现在从 config.toml 里该供应商自己的 bearer token 重建密钥;官方类与纯 OAuth 供应商不受影响,而 config.toml 里没有自有 bearer token 的卡——旧版或手工维护的形态,本版起每次第三方切换都会写入——保持原有行为、继续读取 live auth.json(含手工修改)。(#6534,修复 #6414)
恢复不再清空非受管的 prompt 文件
WebDAV/S3 下载或备份导入时,若快照里某应用没有任何已启用的 prompt,该应用的 live prompt 文件(CLAUDE.md / AGENTS.md / GEMINI.md / SOUL.md)会被截断为空——摧毁从未进入同步载荷的本地手写内容。这样的恢复现在完全不碰该文件;从提示词面板里禁用最后一条 prompt 仍会照旧清空它。(#6810,修复 #6778)
恢复界面的退出按钮真的能退出了
process:allow-exit 权限缺失,v3.20.0 上「数据库版本过新」恢复界面的退出按钮、以及配置加载失败后的退出调用都被 IPC 层静默拒绝:退出按钮毫无反应(关闭窗口仍可退出),配置加载失败后应用径直进入正常界面而不是按设计退出。该问题由 @SaladDay 在 #6567 更早独立发现并率先修复。
Claude 会话记账正确性三修
随增量扫描器落地的三个数据准确性修复,均针对 Claude 会话日志路径。写到一半的日志行曾被旧的行号游标永久跳过(未完成的尾部推进了游标,补全后的消息再也不会被导入)——字节游标只在完整行之后提交,该消息下一轮即被拾取。被外部截断或改写的会话文件从不重放:重新导入明细行已被 30 天汇总清理的条目会让总数永久虚高,因此游标钉在新的文件末尾,被跳过的范围报告进同步结果的错误列表而不是静默丢弃(截断由游标越界发现,同尺寸改写由游标前字节的指纹发现)。文件中途的读取错误现在保留已提交的进度、下一轮从原处续读并上报,而不是返回一次干净的成功;游标预取失败会中止本轮,而不是表现得像首次扫描、把历史重复导入一遍。
性能
Claude 会话日志:字节游标增量扫描
每轮扫描现在直接定位到上次提交的字节偏移、只读新追加的部分,而不是把变更过的文件从头读到尾——按改动自带的基准测试,12 MB 的活跃会话文件从整读解析 6.04 秒降到增量读取 9.3 毫秒。Claude、Gemini、OpenCode、Grok Build 与 Pi 的逐文件游标改为每个导入器每轮一次整表预取,而不是逐文件查询;Claude 路径上每个文件的导入与游标推进在同一事务中提交。1,017 个会话文件(409 MB)的冻结快照回放产出与旧扫描器逐位一致的汇总。需要一次 schema 迁移(v17 → v18),新增两个可空列——字节游标与尾部指纹;既有的行号游标在首轮扫描时就地转换,不重复导入任何内容。
Pi 会话去重走上身份索引
合并的去重查询(跨两个身份列的 OR)只能约束数据源前缀,每条解析记录都要扫过账本里整个 Pi 区段——Pi 导入随用量历史增长越来越慢。现拆分为可走索引的点查询、结果完全一致,导入耗时不再随历史规模退化。(#6667)
升级提醒
本版包含数据库迁移,降级需还原备份
schema 从 v17 迁移到 v18(会话扫描游标表新增字节游标与尾部指纹两列),迁移前自动创建备份。本版运行过一次后,旧版 CC Switch 会拒绝打开数据库——降级需还原该备份。旧的半行缺陷已漏掉的用量条目不做追溯找回——重放它们与重复导入已汇总的历史无法区分。
Codex OAuth 存量账号需要重新登录一次
本版之前添加的每个托管 ChatGPT(Codex OAuth)账号都处于隔离状态,直到你在认证中心该账号行上点击「重新登录」——老记录以 ChatGPT workspace ID 为账号主键、没有单独记录的用户身份,普通的令牌刷新无法证明老记录属于哪个用户。供应商绑定会被保留,重新登录就地更新账号。请务必用账号行上的「重新登录」按钮:通过「添加账号」再登一次只会新建第二条记录(登录不再按 workspace 合并),老记录——以及绑定它的供应商——依然处于隔离状态。(#6780)
Codex 0.48 以前的版本失去第三方鉴权
config-only 切换写入的 provider 表令牌字段,0.48 以前的 Codex 从不读取。还在用旧版 Codex 的用户请升级 Codex。
保留开关关闭时,切换第三方会删除 auth.json
「非接管切换时保留官方登录」开关关闭(默认)时,切换到第三方 Codex 供应商现在会删除 auth.json,而不是用 API 密钥覆盖它。要找回 ChatGPT 登录:切换到绑定了认证中心账号的官方供应商即可(登录会从托管账号完整写回);跟随 Codex CLI 自身登录的未绑定官方卡则需要跑一次 codex login。想让官方登录跨第三方切换存活,把开关打开即可。
部分以前「能用」的 Codex 卡现在会在切换时被拒绝
配置为空的第三方卡(没有表可以承载密钥),以及依赖 requires_openai_auth = true 或裸 openai_base_url 路由去借用官方登录的无密钥卡,现在都会被点名拒绝。给这类卡补上正规的 [model_providers.<id>] 条目或 API 密钥即可。
存量 Codex 配置会在下次写入 live 时按 0.149 需要被重写
带可用密钥的旧式 openai_base_url 路由变成 [model_providers.cc-switch] 表、占用保留 id 的遗留表改名为 CC Switch 自有 id、缺失的 name 字段被回填;活跃带密钥第三方表上的 requires_openai_auth 在每次切换时按保留开关覆盖——你在该表上手工设置的值不会在切换后存活。
截断或被外部改写的 Claude 会话日志将被永久跳过(设计使然)
被改写的范围不重放(重放会与已清理的汇总重复计数),跳过的情况会报告在同步结果的错误列表里。
#6534 修复前已经串染的密钥不会自动修复
如果共享同一 Base URL 的 Codex 供应商已经趋同到同一个 key,请在每张受影响的卡上重新填一次正确的密钥。
恢复行为变化(#6810)
恢复一份某应用没有任何已启用 prompt 的快照,现在会保留该应用的 live prompt 文件——客户端继续加载旧内容,即使提示词面板显示全部禁用。想清空它,在面板里启用再禁用一条 prompt(或自行编辑文件)。
统一供应商保存现在可能明确报错
若某应用的活跃供应商是生成的子配置、而其 live 配置文件写入失败,保存会报出该应用名称;数据库记录仍已保存——重试同步或重新切换一次该应用的供应商即可。
TeamoRouter 存量供应商保持 api.teamorouter.com
从预设重新添加、或手动修改 Base URL,即可迁到 .cn。
OpenCode Go 用量查询只对本版之后新增的供应商自动启用
存量卡请打开其用量脚本设置,选择 Token Plan 模板 → OpenCode Go 一次。
风险提示
沿用的提示
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 不对因使用这些功能而导致的任何账号限制、警告或服务暂停承担责任。
致谢
本版 26 个提交里有 8 个来自 5 位外部贡献者。
代码贡献
- 感谢 @SaladDay:workspace 账号隔离整条主线(#6780)、JWT 身份解析对齐(#6831)与 Pi 会话去重索引(#6667);退出按钮的权限缺失也是他在 #6567 更早独立发现并率先修复的。
- 感谢 @YUZHEthefool:供应商编辑必达 live 配置(#6779,与 @BingZi-233 协作)与 Codex 编辑框密钥串染修复(#6534)——「修复」章节里两条数据正确性硬修复尽出于此。
- 感谢 @SailingLoong:恢复不再清空非受管 prompt 文件(#6810)。
- 感谢 @yovinchen:Otty 终端支持(#6620)。
- 感谢 @ISuuuu:WSL2 契约测试改走预编译产物(#6472)。
问题反馈
- 感谢 @hlwhl 在 #6744 对 Codex 0.149 凭据继承变化的精确报告——直接框定了本版最大主线的方向,并率先提出了修复 PR(#6746)。
- 感谢 Team workspace 账号互覆问题的各位报告者:@cp7553479(#2245)、@Smilenize(#5885)、@yingjiezhao0820(#6688)与 @buqi759(#6738)。
- 感谢密钥串染家族的报告者:@Joaging(#6414)、@KawaiiSh1zuku(#6594)与 @Michael-py001(#6827)。
- 感谢 @gyzerocc 报告 WebDAV 恢复清空 AGENTS.md(#6778)——精确指出了触发条件。
下载与安装
访问 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.1-Windows.msi |
推荐 - MSI 安装包,支持自动更新 |
CC-Switch-v3.20.1-Windows-Portable.zip |
便携版,解压即用,不写入注册表 |
Windows ARM64 设备请选择文件名中带 arm64 标识的对应制品。
macOS
| 文件 | 说明 |
|---|---|
CC-Switch-v3.20.1-macOS.dmg |
推荐 - DMG 安装包,拖入 Applications 即可 |
CC-Switch-v3.20.1-macOS.zip |
解压后拖入 Applications,Universal Binary |
CC-Switch-v3.20.1-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.1-Linux-x86_64.AppImage/.deb/.rpmCC-Switch-v3.20.1-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 |
v3.20.0
2026年08月18日
CC Switch v3.20.0
这一版由三条结构性主线撑起:Pi 成为第九个受管应用——供应商、提示词、Skills、会话浏览与用量统计一站接入;Codex 支持多个 ChatGPT 账号——认证中心随便登几个,每张官方卡各绑各的,切换永不串账;Claude Code 内置 WebSearch 在 GPT 路由下终于可用。紧急修复也有一条:v3.19.2 在 WSL 路径上已有配置无法更新或切换,受影响用户请直接升级本版。同一批 Windows 修复还包括版本检测大修(五个 issue 一次修)、启动闪屏与 MSI 注册表垃圾键。本版包含数据库迁移(v16 → v17),升级前自动备份,降级需还原备份。
重点内容:你现在可以
- 用 CC Switch 管理 Pi:第九个受管应用(#6064)。供应商表单是针对 Pi 原生 schema 的结构化编辑器,内置 58 个预设与 57 个模型的能力目录;提示词库、
SYSTEM.md/APPEND_SYSTEM.md编辑器、斜杠命令模板、Skills、会话浏览与安装升级一并接入。Pi 自己的登录、默认供应商与默认模型永远不被触碰。首启会导入models.json里已有的供应商,见升级提醒。 - 在看板里看到 Pi 的会话用量:逐模型的 token、成本、错误与中断轮次,独立的「Pi (Session)」来源与应用筛选;增量同步只解析文件新增部分(#6463)。
- 添加 Codex 官方供应商时直接选择已授权的 ChatGPT 账号:认证中心登录任意多个账号,新建官方卡时下拉直选其一完成绑定;也可以照旧添加一张不绑定的空官方卡,跟随 Codex CLI 本地登录、读取本地的 access token。切换到绑定卡会写入该账号完整的令牌包——裸
codexCLI 也以该账号运行、且能自行续期。接管下的请求会校验账号一致性,绝不静默把账单记到另一个账号头上(#3879、#6535)。 - 在 GPT 路由下使用 Claude Code 的内置 WebSearch:搜索在上游执行、结果带引用返回、次数进用量;Codex 新客户端的 Alpha Search 端点也不再 404(#5681)。
- 从 v3.19.2 的 WSL 故障中脱困:v3.19.2 在
\\wsl.localhost路径上无法更新或切换已有配置(#6188),该版本内无任何绕过手段——请直接升级本版,并且 CI 从此在真实 WSL2 文件系统上跑测试(#6233)。 - 让 Windows 版本检测和你的终端看到的一致:检测改为合并注册表 PATH(用户+机器)、扫描独立安装器目录、优先探测 PATH 默认项——应用内自更新后「未安装」、winget 装的 Claude Code 找不到、旧 npm shim 遮住新版本,五个 issue 一网打尽(#6284)。
- 给每个模型声明它真实支持的思考档位:Codex 模型目录支持逐模型多选八个标准档位并指定默认值,各家预设按厂商文档预填了真实档位(#6228)。
- 信任你的备份:SQL 备份逐值保真往返、截断文件导入前即被拒绝(#6146);备份文件原子发布、恢复先在暂存库整体校验、
.db恢复会把各应用 live 配置一并重建,所有同步/恢复路径严格串行(#6147)。 - 在几百个模型里直接搜:所有应用的模型下拉都换成了可输入过滤的组合框,按模型 id 和厂商名都能匹配(#6285)。
- 启动不再白/黑闪屏:主题在页面绘制前同步应用,Windows 上窗口加载完成前保持隐藏(#6252)。
使用攻略
本版改动集中在供应商管理与用量统计上,建议结合以下文档了解:
Warning
唯一官方渠道声明(请务必阅读)
CC Switch 是完全免费、开源的桌面应用,不会向用户收取任何费用。请仅通过下列官方渠道获取本软件:
| 类别 | 唯一官方 |
|---|---|
| 官网 | ccswitch.io |
| 源码 | github.com/farion1231/cc-switch |
| 下载 | GitHub Releases |
| 作者 | @farion1231 |
| 举报山寨 | GitHub Issues |
任何向你收费、要求充值、或索取登录凭据的"CC Switch"网站或客户端均为假冒。如果你被诱导支付了费用,请立即停止操作并通过 GitHub Issues 反馈。
概览
CC Switch v3.20.0 横跨了几乎每个子系统,主线有三条。第一条是接入面扩张:Pi 成为第九个受管应用,从供应商编辑到会话用量全链路接入,并带来本版唯一的数据库迁移(v16 → v17,Pi 用量去重账本);Codex 侧则补上了呼声已久的多 ChatGPT 账号管理,官方卡从此可以逐卡绑定账号,且刻意退出自动故障转移——重试永远不会把账单记到另一个账号。第二条是代理能力:Claude Code 内置 WebSearch 桥接到 OpenAI Responses 与 Codex OAuth 后端,Codex 的 Alpha Search 端点注册为语义透传,「GPT 路由下没有网页搜索」成为历史。
第三条是把 Windows 与数据可靠性欠的账还上:v3.19.2 的 WSL 写入回归热修(并新增真实 WSL2 CI 覆盖)、版本检测按注册表 PATH 大修、启动闪屏消除、MSI 自 v3.4.0 起写入的垃圾注册表键修正;备份/同步经外部贡献者审计后两波加固——SQL 逐值保真、原子发布、暂存校验、严格串行。此外还有 Codex 思考档位体系的整轮梳理(逐模型档位+各厂真实档位预填+聚合平台方言修正)、一轮供应商表单一致性打磨、macOS 中日文输入法修复,以及 DeepSeek V4 按厂商新牌价重定价。
发布日期:2026-08-18
更新规模:69 commits | 284 files changed | +53,108 / -6,678 lines
新功能
Pi 成为第九个受管应用
Pi 以累加模式接入(与 OpenCode、Hermes 同类):供应商的启用与否等于其键是否存在于 ~/.pi/agent/models.json,多个供应商共存。供应商表单是针对 Pi 原生 schema 的结构化编辑器——API 格式、逐模型的思考等级映射(Pi 的七个等级)、兼容键——内置 58 个预设(覆盖表单五种 API 格式中的四种)与一份人工复核过的 57 模型能力目录;原始 JSON 编辑器与「拉取模型」按钮兜底,既有节点里的未知字段原样保留。每次读改写都有内容版本校验,别的进程改过的文件会以冲突报错拒绝、绝不覆盖。
边界刻意划清并写进文档:CC Switch 绝不把 Pi 的内置供应商物化进 models.json、绝不读写 Pi 的 auth.json、绝不碰 defaultProvider / defaultModel——Pi 自己的登录与模型选择归 Pi。供应商之外:提示词库把选中的一条写入 Pi 全局 AGENTS.md(已有的不匹配内容先自动备份成库条目)、SYSTEM.md(替换 Pi 基础提示词)与 APPEND_SYSTEM.md 各有专属编辑器、~/.pi/agent/prompts/*.md 斜杠命令模板管理、Skills 按「存在即启用」规则接入(同名但非 CC Switch 所有的 Skill 拒绝覆盖或删除)、JSONL 会话浏览器,以及设置 → 关于里的 Pi 安装与升级。Pi 没有原生 MCP 注册表,因此刻意不参与 MCP 同步;也没有代理接管、故障转移与托盘存在——代理与故障转移命令现在对所有无本地网关的应用显式拒绝,而不是写下一堆死配置。(#6064)
Pi 会话用量进入看板
新导入器读取 Pi 的会话文件,在独立的「Pi (Session)」来源下逐模型记录 token、成本、错误与中断轮次,带专属应用筛选。Pi 每条记录自带成本,为正时优先采用;缺失或全零则回退 CC Switch 的价格表。增量同步对每个文件的尾部做指纹,只解析新追加的字节;被改写或分叉的会话通过新的持久去重账本识别——session_usage_dedup 表,本版 v16 → v17 迁移的由来——该账本在明细行清理后仍存活,且保持设备本地(云同步排除、导入保留)。由于一个 Pi 会话可能混用 Anthropic 系与 OpenAI 系 API,含 Pi 的汇总带「缓存写不完整」的口径标注而非一个未加限定的数字。(#6463)
Codex:多个 ChatGPT 账号,逐卡绑定
认证中心可以持有任意数量的 ChatGPT(Codex OAuth)登录。添加 Codex 官方供应商时,直接从已 OAuth 授权的账号里选一个完成绑定——不必先建卡再回头配置;也可以沿用旧方式添加一张不绑定账号的空官方卡,它跟随 Codex CLI 自己的登录、读取本地的 access token。官方卡数量不限,两种方式的卡可以共存,绑定与解绑保留卡的身份、端点与健康历史。切换到绑定卡会把该账号完整的令牌包写入 ~/.codex/auth.json——裸 codex CLI 也以该账号运行,且能在访问令牌过期后自行续期;CLI 轮转过的刷新令牌会在每次写入前被回采,重复切换绝不会用旧登录盖掉新登录。
账号选择器是带标签的下拉框,可直接跳转认证中心;账号状态加载失败时显示带重试的警告而不再冒充「未登录」,也不再在下次保存时静默解绑。登出与移除账号和供应商切换严格互斥;OAuth 请求超时从十分钟收紧到 30 秒;登出还会取消仍在网络往返中的设备登录——被放弃的登录流程无法再在后台悄悄完成并复活账号(#6506)。接管下的请求会对照绑定账号校验:仍以另一个 ChatGPT 账号认证的 Codex 会话会得到「请重启 Codex」的明确报错,而不是静默把账单记到错误账号。(#3879、#6535、#6506)
Codex 模型目录:逐模型思考档位
Codex 供应商表单里的每个模型行现在可以声明其上游真实接受的思考档位——在八个标准档位(none 到 ultra)上多选,外加可选的默认档——生成的目录把它们带进 Codex 的选择器,不再继承基础模板的档位。未知值会被丢弃(笔误永远到不了 Codex),显式默认值会对照声明集校验,覆盖在原生 Responses 与 Chat 转换两条路径上都生效。代理转换层同时学会了 ultra:此前在路由供应商上选最深档会静默关闭扩展思考(Anthropic 路径)或丢掉 effort 参数,现在映射到上游合法的最深档。(#6228、#6181)
各厂预设按官方文档预填真实思考档位
预设现在带上各厂商实际文档化的档位——火山方舟 low/medium/high、DouBaoSeed minimal 到 high、混元 low/high、DeepSeek low/high/max、xAI Grok low/medium/high(无 none:思考关不掉)、智谱 GLM none/high 等——新建供应商的 Codex 选择器从此以事实起步;对智谱 GLM 来说,「关闭思考」终于能在 Codex 里选到。两个 Kimi 预设按 Moonshot 自家接入指南启用推理强度(顶层 reasoning_effort,只列网关接受的档位),Kimi For Coding 从一个模型扩到四个官方模型。百度千帆 Coding Plan 预设用平台文档化的 thinking 对象获得真实的思考开关。档位一律出自厂商文档或厂商自己的 Codex 目录,并收窄到真正行为有别的档——完全没有依据的模型保持不填。
Claude Code WebSearch 与 Codex Alpha Search 走通本地代理
两条此前在代理上走死胡同的网页搜索路径打通了。Claude Code 内置 WebSearch 工具桥接到 OpenAI Responses 与 Codex OAuth 后端:搜索在上游执行,结果以成对的 Anthropic 搜索块返回、引用保留并合并、搜索次数计入用量。max_uses 在 Responses API 支持处用 max_tool_calls 原生限额;Codex OAuth 后端拒绝该参数,仅在请求强制使用该工具时以流中截断本地限额,未强制却带 max_uses 的请求显式报错。Responses API 无法表达的约束(blocked_domains、非直连调用方、response_inclusion、未知工具版本)同样显式报错,绝不悄悄放宽搜索范围。桥接只覆盖 Responses 转换路径——Chat Completions 上游仍不支持托管 WebSearch。另外,Codex 独立的 Alpha Search 端点注册为语义透传,带完整的供应商选择、鉴权、模型映射、重试与日志流水线,新版 Codex 客户端的 404 就此终结。Claude-in-Codex 路由攻略已三语更新:「GPT 路由下没有网页搜索」在这些路径上不再成立。(#5681、#5363、#5378)
百度千帆 Token Plan 预设
千帆 Token Plan(个人版)——2026 年 7 月起替代 Coding Plan 面向新购用户——获得 Claude Code、Claude Desktop、Codex、OpenCode、OpenClaw 与 Hermes 六个应用的预设,走 /tokenplan/personal 端点。Codex 预设带六模型目录(DeepSeek V4 Pro / V4 Flash / V4 Flash 0731、GLM 5.2/5.1、Kimi K2.6),是首个思考开关与推理强度选择器都真实可用的千帆预设。密钥必须用 Token Plan 订阅的专属 key,而不是通用的千帆应用 key;老的 Coding Plan 预设为存量订阅保留。
模型选择器全面支持模糊搜索
供应商表单里所有「选模型」下拉——Claude Code(含 Copilot)、Claude Desktop 映射行、Codex、Gemini CLI、OpenCode、Hermes、OpenClaw 与 Pi——都换成了可输入过滤的组合框,按模型 id 和厂商名都能匹配,顺手把四份内联重复组件合而为一。对着返回几百个模型的供应商尤其好用。(#6285、#6353)
其他新增
- 接管开启确认动画:为当前应用打开路由接管时头部品牌区播放一次性彩带——应用启动、切换应用或系统偏好「减少动态效果」时绝不触发。同一改动补上一个真实缺口:接管开关在初始代理状态加载完成前置灰,对未知状态的点击不再可能把接管拨错方向。(#6209)
- Codex 表单 1M 上下文开关回归:上游 Codex 重新接受
model_context_window = 1000000,四月隐藏的开关(连同配套的自动压缩阈值输入)回来了,写的还是原来那两个 config.toml 字段。 - 新预设:PPIO(厂商贡献)、JieKou AI(厂商贡献)、XycAi(合作伙伴)分别接入各自支持的应用。(#6239、#6356)
变更
Codex 官方账号卡退出自动故障转移
官方 ChatGPT 卡不再被加入、列出或经由故障转移队列重试,官方路由上的所有错误类别一律不可重试——对着另一个供应商重试会把入站的 ChatGPT 授权用到别的账号头上。内置官方卡的存量队列行在读取时过滤。官方卡判定也不再只看类别标签:存了真实 API key 或显式第三方上游的卡按普通供应商对待,保留直连路径与故障转移资格。(#3879、#6535)
Codex OAuth 配额显示逐卡可配置
绑定 ChatGPT 账号的卡获得与脚本类供应商相同的「配置用量查询」入口:配额页脚可以关闭、刷新间隔可改(此前硬编码五分钟且没有关闭开关),对话框的测试按钮查询的是绑定的账号而不是 CLI 恰好登录的账号,托盘也不再给账号绑定卡装饰全局订阅百分比。(#6537)
OpenCode Go 改为直连
OpenCode Go 网关原生提供 Anthropic Messages,但其 /v1/messages 只认 x-api-key、静默忽略 Bearer 头——Claude Code 预设改为把密钥存进 ANTHROPIC_API_KEY 并去掉 Chat 格式声明,Claude Code 直连网关,不再需要路由接管、不再显示「需要路由」徽章。Claude Desktop 依设计保持代理模式(它自己不能改模型名),但代理现在透传 Anthropic Messages 而不是转成 OpenAI Chat。Codex 侧预设还把 DeepSeek V4 系模型的上下文窗口填到 1,048,576,Codex 不再围着 128K 回退值自动压缩。(#6171、#6196)
供应商表单一致性打磨
一轮贡献者主导的全应用供应商对话框对齐:Grok Build 与 Claude Desktop 表单搬上与其他应用相同的玻璃卡片;子分区共享同一套左规线层级;空配置编辑器收缩到三行而不是空占 6–14 行;Hermes 与 OpenClaw 的模型编辑器改为可展开详情的紧凑行并补上无障碍标签(展开状态改用稳定行键,删除模型不再让错误的行保持展开);复选框统一为一个原生组件;Claude 表单的「API 格式」改名「上游格式」并逐选项说明哪些格式需要路由接管。另外,主面板供应商卡片上的合作伙伴星标已移除——合作伙伴标识只保留在预设选择器里。(#6198–#6201、#6203–#6208)
Claude Desktop:连接模式改为下拉选择、两套模型列表互不覆盖
直连与模型映射改为带标签的下拉选择而不是开关;来回切换时各模式保留自己的模型行;直连模式的模型列表常驻显示、不再藏在「高级」折叠里;选择直连预设会预填其模型列表而不是丢弃。(#6208)
Grok Build 表单重建在 Codex 布局上
Grok Build 供应商对话框现在渲染与 Codex 共享的字段集——端点、密钥、默认模型、含上游格式/思考/User-Agent 的高级区——文案全程 Grok 化(一个 follow-up 抓住了对齐时漏进来的五处 Codex 措辞)。独立的「API Backend」与「客户端模型档案」输入框移除:客户端一律讲 Responses——Chat 或 Anthropic 上游需要转换时对着本地代理、否则直连上游——上游协议经高级 → 上游格式表达;经表单保存会把存储配置的 api_backend 钉为 responses,当前供应商立即写入 live 配置、其余供应商在下次切换时生效——见升级提醒。(#6427、#6511)
Kimi 上游改为干净透传
应 Moonshot 方面要求,代理不再向 Kimi/Moonshot 端点的工具调用历史注入占位思考块、也不再发出非标准的 reasoning_content 字段——其网关已不再要求思考回放,注入的占位符反而扰乱模型思维链。Kimi 路由上的工具调用历史原样转发(代理流水线其余部分不变),对存量供应商立即生效。DeepSeek 与 MiMo 保留该行为——那是文档明载的服务端要求。
DeepSeek V4 按新峰值档牌价重定价、Gemini 3.7 Flash 播种
DeepSeek 于 2026-08-16 引入峰谷计价并大幅上调:deepseek-v4-flash(及其 -0731、deepseek-chat、deepseek-reasoner 别名)的内置价从每百万 token 输入/输出 $0.14/$0.28 调至 $0.44/$1.32、缓存读取 $0.014;deepseek-v4-pro 从 $0.435/$0.87 调至 $1.32/$3.96、缓存读取 $0.044。价格表没有时段维度,刻意录入峰值档——高峰时段(北京 9:00–12:00、14:00–18:00)与工作时间重合;一天中其余十七个小时的用量读数因此约为实际账单的两倍。守护式修复会迁移仍持有旧内置价的数据库;你自己改过的价格绝不触碰。gemini-3.7-flash 按介绍价 $0.75/$3.75(缓存读取 $0.075)播种,2027 年起恢复牌价;gemini-3.6-flash 未调整——它没有拿到促销价。
其他变更
- BytePlus 预设切换到原生 Responses:BytePlus 自家 Codex 指南在预设所用端点上配置
wire_api = "responses",预设遂与境内的火山兄弟预设一致声明原生 Responses,并预填文档化的 low/medium/high 档位。 - Codex 表单移除 Goal 模式开关:codex-cli 0.147.0 起默认启用 goals,开关已具误导性——取消勾选会删掉配置行、进而回落为开启,界面显示关闭而功能仍在。现在无需任何配置;你此前写下的
goals = true留在 config.toml 里,无副作用。 - 项目 Profile 变更触发自动同步:WebDAV/S3 自动同步的触发表从未加入
profiles表,Profile 编辑只有蹭到其他表变更才会上云;两份传输各自的触发表合并为一份共享清单并纳入 profiles。(#6147) - 合作伙伴清单维护:RunAPI 预设迁移到其新域名
runapi.host(预设类型支持处保留旧域名作后备端点);PPIO 列为项目赞助商。
修复
Windows:WSL 路径上无法更新配置(v3.19.2 回归)
v3.19.2 把 Windows 原子写切换到 ReplaceFileW,而 WSL 文件系统以 ERROR_NOT_SUPPORTED (50) 拒绝它——rename 回退只在 NotFound 时触发,于是 \\wsl.localhost / \\wsl$ 路径上任何替换已有 live 配置的写入都直接失败:存量供应商无法更新或切换(只有配置文件的首次创建——缺失目标本就触发回退——仍然可用)。错误 50 现在落入 WSL 接受的 rename 路径。仅 v3.19.2 受影响;该版本内无任何绕过手段,受影响用户请直接升级。(#6232、#6224、#6219、#6188、#6247)
Windows:CLI 检测终于和终端看到的一致
版本检测此前依赖继承的进程 PATH 加一份硬编码目录清单——且探测顺序还是错的。三种可见故障、各有一个成因:应用内自更新后重启的进程只继承机器 PATH、丢掉用户 PATH,用户安装的 CLI 显示「未安装」,直到从开始菜单完整重启(#6061);winget 装的 Claude Code、独立安装器装的 Codex 与自定义 npm prefix 的目录从未被扫描(#6278、#6047、#4366);硬编码目录先于 PATH 默认项探测,过期的 %APPDATA%\npm shim 遮住 PATH 上实际更新的安装——「更新了但还显示旧版本」(#4701)。检测现在把注册表 PATH(用户+机器,展开 %VAR%)合并进有效搜索路径,扫描独立安装器目录,经显式的 where.exe 调用优先探测 PATH 默认项(跳过 Microsoft Store 应用别名、绝不搜索当前目录),并把同一份合并 PATH 喂给安装冲突诊断与锚定升级。(#6284)
启动不再白/黑闪屏
窗口在主题类应用之前就被显示,未着色的页面先画了一帧。内联的预绘制脚本现在在包加载前同步应用持久化主题(全平台),Windows 上窗口还会保持隐藏直到页面加载完成。(#6252、#6182)
Windows 安装包不再写入垃圾注册表键
WiX 模板里的 Software\{{manufacturer}}\{{product_name}} 用了单反斜杠,被 Handlebars 当作转义序列吞掉——自 v3.4.0 起每个 MSI 都在创建字面量的 HKCU\Software{{manufacturer}}{{product_name}} 键而不是预期路径。两处反斜杠已加倍,与模板里其他键对齐。已装机器上的存量垃圾键不会被清理——见升级提醒。(#6283)
代理接管恢复不再抹掉官方 ChatGPT 登录
接管的恢复备份是接管开始时的快照;如果你在接管期间跑过 codex login,每次恢复——停止接管、退出应用、崩溃恢复——都会用登录前的快照盖掉新登录,启动时的自动重接管还让这次抹除每次重启都重演。恢复现在会仲裁:live 登录材料永远胜出(只有 Codex 自己能推进它,必然比快照新),备份里的第三方 API key 降级写进 config.toml 保留而不是砸掉 auth.json。被早期版本毁掉的登录不会被恢复——跑一次 codex login 即可。(#6277)
环境检查不再在「全部升级」或冲突诊断时挂死
v3.19.2 携带的一次重构把 PATH 探测的登录 shell 放进仍持有控制终端的后台进程组:从终端启动的实例上,作业控制以 SIGTTIN 停住 shell、无限期的等待永不返回——整个预检冻结。即便在不可能发生这种情况的场景(正常启动的构建没有控制终端),该路径也完全没有超时,Windows 亦然——一个挂住的探测(阻塞的 .zshrc、不退出的 --version)同样冻结整轮检查。探测现在跑在完全分离的会话里、stdin 置空、10 秒硬超时并杀掉整棵进程树;丢失的探测只降级该工具的报告而不是挂死整轮,按钮在探测阶段显示加载指示而不是看似无视点击。(#5522 的回归)
macOS 输入法不再打乱供应商表单
使用中文/日文输入法快速输入时,供应商表单字段会间歇性地重复与乱序——报告中的复现里 12 个字符膨胀到 1,396 个。受控输入在输入法仍持有组字区间时把父状态写回 DOM,供应商键字段甚至对每个组字中间态都跑小写化清洗。共享的 IME 安全输入组件现在把组字文本留在本地直到提交、只对成品文本做归一化、并在组字中途失焦时强制提交待定文本(WebKit 的窗口切换路径根本不发 compositionend)。应用到所有应用共享的名称/备注/官网字段与 Hermes、OpenClaw、OpenCode 的字段集——腐坏被报告的位置。已存坏的值不会自愈——重新编辑一次即可。(#6308、#6333、#6507)
SQL 备份逐值保真、截断导入被拒绝
SQL 导出/导入循环的四处缺陷:TEXT 值含非 UTF-8 字节时导出中止、含 NUL 字节时语句被静默截断;REAL 值丢失存储类别(无穷、负零、整数值 REAL);AUTOINCREMENT 高水位从存活行重推导而不是保留;恢复后数据库的 auto_vacuum 模式被降级、下次启动以整库 VACUUM 重建来修补。四处全部修复。校验还移到了建表之前:截断的 SQL 文件——或缺少 CC Switch 核心表的文件——现在带着原库不动被拒绝,此前 schema 迁移可能凭空造出缺失的表、让残缺数据顶替你的数据库。没有供应商或 MCP 的真实导出现在可以导入而不是被拒。(#6146)
备份原子发布、恢复先在暂存库校验、全流程严格串行
备份此前在复制任何页之前就以最终文件名创建、复制结果被忽略——一次被打断的复制变成一个看似有效的备份文件。备份现在在临时文件里构建、完整性校验通过后才发布且不覆盖同名文件。恢复在触碰 live 数据库前先在暂存库校验整个镜像——完整性、schema 表、迁移——损坏或更新 schema 的备份干净地失败而不是替换到一半才发现;保留策略现在同时保护正在恢复的备份与新鲜的安全快照。并发侧:WebDAV 与 S3 此前各持各的锁、两种传输可以同时恢复,手动导入与 .db 恢复完全无锁,Skills 文件与其镜像的数据库行之间也没有共享锁。一把全局同步锁现在端到端串行化所有路径,Skills 状态锁让行与文件同进退,自动同步抑制从下载真正开始时才启动——排队等待期间的本地编辑不再被静默吞掉。会话日志读取游标也从云快照中排除:它们是绝对的本地文件位置,导入别的机器的游标会让本机用量摄取失步。(#6147、#6129)
恢复备份现在会重建依赖数据库的一切
恢复 .db 备份此前只改数据库——每个应用的 live 配置保持恢复前内容,直到下次手动切换供应商;SQL 导入与云下载后的收尾例程还跑在一个一次性状态对象上、缓存失效谁也够不着。所有恢复路径现在把恢复后的数据库向外投影——除 Pi 外每个受管应用的 live 配置(Pi 的 models.json 仍是事实源、下次启动反向导入)、各应用提示词文件、运行时日志级别与托盘用量缓存——并在恢复行之上重新应用你本地的设置文件与用户自改的模型定价;一个应用失败不再静默跳过其余。(#6147、#6129)
用量趋势图跨年时高亮与提示框终于一致
跨多年的区间上,悬停会高亮一个年份的点、提示框却描述另一个年份:图表用本地化的 MM/DD 文本作 X 轴键,不同年份的桶共享同一分类值,图表库的活动点查找返回首个匹配——高亮吸到早年份的点、提示框跟着光标走(绘制的点本身从来没错)。X 轴现在以后端完整的桶时间戳为键,刻度标签与提示框分别解析(跨年区间显示年份)。(#6337、#6302)
火山方舟:Agent Plan 预设终于指向 Agent Plan
以 Agent Plan 命名的预设在关键处指向 Coding Plan——端点与邀请链接——而两个计划是配额不互通的独立订阅。现拆分为六应用各两个预设:Agent Plan 走 /api/plan[/v3](Codex 上原生 Responses)、Coding Plan 走原有 /api/coding[/v3]。计划配额检测放宽为识别 Agent Plan 端点,对存量供应商立即生效;预设本身作用于新建供应商——持有旧供应商的 Agent Plan 订阅者请重建或修改 Base URL。(#6070、#6448)
思考开关与推理档位的一批方言修正
- ModelScope / Novita / Nvidia 的思考开关方言:三个聚合平台预设都声明了它们谁也没文档化的智谱式
thinking:{type}对象——ModelScope 与 Novita 上开关无效,Nvidia NIM 上注入字段可能被整体拒绝。前两家改发文档化的enable_thinking布尔值;Nvidia 的开关整个撤下——真正的控制不在该参数可及之处。平台推断表新增 ModelScope 分支,无存储声明的手建 ModelScope 供应商立即得到纠正。 - StepFun 推理强度到达 step-3.7-flash:推断分支此前只给 2603 后缀模型 effort,Codex 里选的档位对 step-3.7-flash 被静默丢弃;现在原样透传 low/medium/high,2603 系保持两档映射,无后缀的 step-3.5-flash 刻意不发 effort 字段——StepFun 没有为它文档化任何强度控制。
- OpenCode Zen 推理档位到达网关:路由模式下 Codex 里选的档位从未按原样到达网关——GLM/Kimi/MiMo 模型上代理回落到模型厂商启发式、丢档位、发网关不认的智谱式字段,DeepSeek 模型上发的是 DeepSeek 方言强转后的值。
opencode.ai平台规则现在发顶层reasoning_effort,按各模型声明的档位钳制,无强度控制的模型不发而不是瞎猜。存量供应商需重加一次预设携带逐模型档位表。(#6123、#6112) - SiliconFlow 与 ModelScope 预设指向不存在的模型:厂商目录盘点发现 SiliconFlow 预设携带两站都没有的 MiniMax id(首个请求即 400「Model does not exist」),ModelScope 预设指向其免费通道不可用的 GLM id。现改为
Pro/MiniMaxAI/MiniMax-M2.5(.cn)、MiniMaxAI/MiniMax-M3(.com,真实 1M 窗口)与ZhipuAI/GLM-5.2,覆盖七个应用。
用量与定价的一批修正
- DeepSeek 缓存命中在 Chat 路径被计为零:只转发 DeepSeek 文档字段
prompt_cache_hit_tokens、不镜像进 OpenAI 式字段的中转商,其缓存命中被记为 0、命中 token 按新输入计价高估成本。该字段现居标准回退链末位,用量解析与合成的 Codex 用量都覆盖。(#6126、#6073) - Grok Build 对话不再因缺用量字段失败:Chat 上游不报缓存 token 的每一轮都以「missing field
input_tokens_details」失败——报告中的 GLM-5.2 上游恒发cached_tokens: 0,即每轮必炸。Chat→Responses 用量翻译此前只在有缓存 token 时发出该对象,而 Grok 客户端要求它必在;现在恒发出,流式路径同样。(#6423、#6140) - 智谱配额层级在 CREDIT_LIMIT 改名后重新出现:智谱把境内端点的配额条目类型从
TOKENS_LIMIT改名CREDIT_LIMIT,解析器只认旧值、丢掉全部层级、面板空白。两个值现在都接受。(#6160、#6153) - Grok 4.5 缓存价修正;Grok 4.6 与一个 DeepSeek 别名补价:
grok-4.5被错播成 grok-4.6 的 $0.50 缓存读取价,修正为实际的 $0.30 并守护式修复存量库。grok-4.6按 $2/$6、缓存读取 $0.50 播种——基础档:xAI 对超过 200K 提示的 Grok 4.5/4.6 全费率翻倍而价格表没有档位列,长上下文 Grok 请求的读数约为账单一半。deepseek-v4-flash-0731——id 归一器剥不掉的 4 位日期变体、匹配不到任何价格行、一直按 $0 计费——获得自己的行;其历史 $0 行按现行价回填,该模型历史合计因此上升。
其他修复
- 文件丢失的 Skill 显示为可更新:更新检查此前只信数据库缓存的内容哈希、从不看文件系统——文件没了的 Skill(典型场景:跨机数据库恢复只搬行不搬文件)永远报「无更新」,唯一出路是卸载重装。检查现在先确认 Skill 目录存在;缺目录显示为可更新、安装即重建文件。覆盖仓库安装的 Skill——本地创建的 Skill 不做更新检查,文件缺失仍需手动重加。
- OpenClaw「设为默认」会询问模型并保留你的后备链:设为默认此前总是取首个模型、并用合成链替换
openclaw.json里已有的后备链。多模型供应商现在弹出选择器,写入合并进既有默认模型块、保留后备链与未知键。(#6201) - 用户自有的 Codex
model_catalog_json不再被覆盖:切换供应商此前无条件把~/.codex/config.toml的model_catalog_json指向应用生成的目录、丢弃自定义目录路径。指针现在只在缺失或已是 CC Switch 自有文件名时才认领。仅防今后——被早期版本改写过的指针不会被还原,见升级提醒。(#6087) - 镜像的 DeepSeek Codex 目录恢复尖括号文本:内置的 DeepSeek 官方 Codex 目录镜像提取时先做了 HTML 反转义再剥标签,四个 harness 字符串里的字面尖括号文本被当标记吞掉——
base_instructions里的一句指令与一个 markdown 链接示例、两个模型的消息模板都被损坏。镜像恢复逐字节保真,存量 DeepSeek 原生 Responses 供应商在下次切换时自动拾取、无需重存。
安全加固
模型拉取报错不再回显凭据
失败的「拉取模型」调用可能把 API key 反射进可见的错误信息,其他位置的脱敏也只对 8 个字符以上的密钥生效。拉取错误体现在经过严格脱敏——API key 与本版新支持的自定义请求头值,短至 1 个字符也隐藏——覆盖所有应用的供应商表单。拉取本身还为 Pi 变得格式感知:凭据头随供应商的 API 格式走,支持校验过的自定义请求头、包括仅请求头认证。(#6064)
升级提醒
本版包含数据库迁移,降级需还原备份
schema 从 v16 迁移到 v17(Pi 导入器的会话用量去重账本),迁移前自动创建备份。本版运行过一次后,旧版 CC Switch 会拒绝打开数据库——降级需还原该备份。
Pi 首次启动会导入既有供应商并回填历史用量
Pi 默认作为新应用页签出现。首启时 ~/.pi/agent/models.json 里已写入的供应商被导入为可管理卡片;首次用量同步扫描所有可发现的 Pi 会话并回填历史用量,看板总数可能跳涨。Pi 自己的登录、默认供应商与默认模型永不触碰。配置为相对路径的 Pi sessionDir 无法枚举——会话浏览与用量导入请设绝对路径。
v3.19.2 的 WSL 用户请直接升级
如果你在 v3.19.2 上使用 WSL 托管的配置目录,该版本无法更新或切换已有配置——请直接升级到本版。
MSI 存量垃圾注册表键不会被清理
从 v3.4.0 到 v3.19.2 之间任何 MSI 安装过的 Windows 机器,升级后仍保留过期的 HKCU\Software{{manufacturer}}{{product_name}} 键;本修复不删除它。想清掉请用 regedit 手动删除——注意删除可能触发一次性的 Windows Installer 修复弹窗,因为它曾被注册为安装的键路径。
部分 ChatGPT 账号需要重登一次
本版之前登录进认证中心的 ChatGPT 账号早于 id_token 持久化,会显示「需要重新登录」徽章;绑定到供应商卡之前请重登一次。被修复前的接管恢复缺陷抹掉的 ChatGPT 登录同样不会被找回——跑一次 codex login 即可。
故障转移队列里的官方卡被移出
如果内置的 Codex 官方卡在你的自动故障转移队列里,它现在会被过滤,Auto 模式不会从官方卡启动;请选一个第三方 Codex 供应商作为主选。
WSL / exFAT 上停止 Codex 接管改为拒绝恢复
在 WSL 或 exFAT 配置目录上,停止 Codex 接管现在以明确的「文件系统不支持安全恢复」报错拒绝执行,而不是冒险写出半份 auth 文件。不会删除任何东西,但接管前的凭据也不会被写回——之后请重跑 codex login,或把 Codex 目录放在支持安全探测的文件系统上。
预设改动只作用于新建供应商(例外见文末)
存量供应商保留创建时的配置。本版涉及:火山 Agent Plan 端点、ModelScope/Novita/Nvidia 思考方言、Kimi 推理强度、BytePlus 原生 Responses、SiliconFlow/ModelScope 模型 id 替换、OpenCode Go 直连与 1M 窗口、预填的推理档位、RunAPI 新域名。重新从预设创建(或手动改相应字段)即可获得。立即对存量供应商生效的例外:Kimi 透传变更、无存储声明供应商的平台推断修正(ModelScope、StepFun、opencode.ai)、火山 Agent Plan 端点的配额检测、DeepSeek 官方目录修复(下次切换时)。
被改写过的 model_catalog_json 指针需要手动指回一次
早期版本已改写过 ~/.codex/config.toml 里 model_catalog_json 的用户,本版不会还原你原来的指针——手动指回你自己的文件一次,此后它不再被动。指向用户自有文件期间,CC Switch 的逐供应商模型表(显示名、上下文窗口、推理档位)不会到达 Codex。
Grok Build 保存表单会钉住 api_backend
经表单保存存量 Grok Build 供应商会把其存储配置的 api_backend 钉为 responses——当前供应商立即写入 live 配置,其余供应商在下次切换到它时生效;上游协议改经高级 → 上游格式设置。
IME 缺陷已存坏的文本需要重新编辑
本版之前被输入法缺陷弄坏的文本仍留在数据库与 live 配置里——把受影响的供应商名称/密钥/模型字段重新编辑一次即可。
DeepSeek V4 成本读数将显著上升
看板中 DeepSeek V4 今后的成本大约:输入 3 倍、输出 4.5–4.7 倍、缓存读取 5 倍(Flash)到 12 倍(Pro)——这是厂商新的峰值档牌价,不是统计口径变化。成本在记录时冻结,历史不会重新计价——例外是此前无价的 deepseek-v4-flash-0731 行从 $0 按现行峰值价回填,这些历史合计会偏高。你手动改过的价格永不触碰。Gemini 3.7 Flash 按厂商标注持续到 2026 年底的介绍价播种。
备份与恢复行为变化
早期版本导出的 SQL 备份保留其原有的保真损失——依赖精确往返请导出一份新备份。截断或缺核心表的 SQL 文件现在在导入时被拒绝(早期版本可能会接受);恢复 .db 备份现在会按恢复后的数据库重写除 Pi 外所有受管应用的 live 配置(此前只改数据库)。启用 WebDAV/S3 自动同步后,项目 Profile 的编辑现在也会排队上传快照。
WebSearch 不可表达的约束显式报错
Claude Code WebSearch 请求携带 Responses API 无法表达的约束时(blocked_domains、非直连调用方、response_inclusion、或未强制工具时在 Codex OAuth 上带 max_uses),现在显式报错而不是搜得比要求更宽;Chat 格式上游仍不支持托管 WebSearch。
Kimi 端点升级后若报思考类 400
先检查重加预设后新发送的 thinking / reasoning_effort 字段——Moonshot 的参数文档与其 Codex 接入指南对 kimi-k3 是否接受 thinking 说法相反,预设按接入指南执行。只有「要求回传思考历史」形态的 400 才指向已移除的历史注入。
风险提示
沿用的提示
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 不对因使用这些功能而导致的任何账号限制、警告或服务暂停承担责任。
致谢
这一版 69 个提交里有 38 个来自 11 位外部贡献者——本版的三条主线全部有外部贡献者的深度参与。
代码贡献
- 感谢 @SaladDay——19 个提交,本版最大贡献者:Pi 整条主线(#6064、#6463)、Codex 多账号整条主线(#3879、#6535、#6506、#6537)、十个 PR 的表单一致性打磨、Windows 启动闪屏修复(#6252)与 Grok Build 用量字段修复。
- 感谢 @YUZHEthefool:备份与同步两波加固(#6146、#6147)——「修复」章节的三大数据可靠性条目尽出于此;还有 Windows CLI 检测大修(#6284)、模型选择器模糊搜索(#6285、#6353)、智谱 CREDIT_LIMIT 与 Grok Build 表单对齐。
- 感谢 @allenxu09:v3.19.2 WSL 写入回归的热修(#6232)与真实 WSL2 文件系统的 CI 覆盖(#6233)——修完还把同类缺陷的测试缺口补上了。
- 感谢 @Program120:WebSearch 与 Alpha Search 的代理桥接(#5681),一个人打通了本版第三条主线。
- 感谢 @stofancy:Codex 目录逐模型推理档位(#6228)——本版思考档位整轮梳理的地基。
- 感谢 @zayokami:OpenCode Zen 推理档位路由(#6123)、DeepSeek 缓存命中统计(#6126)与 Grok Build 文案修正(#6511)。
- 感谢 @yovinchen:macOS 输入法腐坏修复及其加固(#6333、#6507)。
- 感谢 @Hexc01:用量趋势图跨年错位修复(#6337)。
- 感谢 @misaka-myu:尊重用户自有
model_catalog_json(#6087)。 - 也感谢 @hu-miao 与 @jiekouai 分别贡献各自平台的预设(#6239、#6356)。
问题反馈
- 感谢 @vxzhong 在 #6188 对 WSL 写入回归的报告——os error 50 的精确定位直接框定了热修方向。
- 感谢 Windows CLI 检测五 issue 家族的各位:@RonsonNamek(#6061)、@gaoqiong001(#6278)、@lovelyhjqhs(#6047)、@baoyu0(#4366)——@jiangliushi666 更早在 #4701 就指出了 PATH 探测顺序问题。
- 感谢 @HyskoaMorroh 报告接管恢复抹掉 ChatGPT 登录(#6277)、@CacinieP 以精确复现报告输入法腐坏(#6308)、@FishV6A 报告启动闪屏(#6182)、@Destiny4073 报告 MSI 注册表错写(#6283)。
- 感谢 @totoneei(#6302)、@zju-zhanglu(#6153)、@xiaoyu753(#6073)、@GengchenXU(#6140)、@HOnnTaka(#6112)、@Xiao0219(#6171)、@STEVENTAN100(#6181)、@20130101(#6070)与 @leoncdq(#6448)——用量、配额与档位的一整批修正都始于这些报告。
下载与安装
访问 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.0-Windows.msi |
推荐 - MSI 安装包,支持自动更新 |
CC-Switch-v3.20.0-Windows-Portable.zip |
便携版,解压即用,不写入注册表 |
Windows ARM64 设备请选择文件名中带 arm64 标识的对应制品。
macOS
| 文件 | 说明 |
|---|---|
CC-Switch-v3.20.0-macOS.dmg |
推荐 - DMG 安装包,拖入 Applications 即可 |
CC-Switch-v3.20.0-macOS.zip |
解压后拖入 Applications,Universal Binary |
CC-Switch-v3.20.0-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.0-Linux-x86_64.AppImage/.deb/.rpmCC-Switch-v3.20.0-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 |
v3.19.2
2026年08月06日
CC Switch v3.19.2
这一版的主线是把数字算对、把边界扎紧:Codex 用量统计修掉一个会把交错计数器文件多算数倍的缺陷——升级后新数据即刻正确,历史虚高可用一次手动重建回正(见「升级提醒」);一轮六项安全加固把用量脚本、会话日志、目录文件与代理缓冲响应体的无界读取全部封顶。日常顺手的部分也补齐了:MCP / 提示词 / Skills 面板可以搜索,MCP 与 Skills 还能按应用一键批量开关;认证中心逐账号显示 ChatGPT 订阅用量;OMO 用户拿回可用的集成。两条写盘路径批量化之后,大数据库的备份导入、自动同步与用量重导入不再动辄卡住。本版没有数据库迁移。
重点内容:你现在可以
- 拿到正确的 Codex 用量数字:真实日志里存在计数器交错的文件——同一份快照被网关换着限额桶反复重播,或两个累计计数器交替出现——旧算法会把它们当成新增量,现场文件实测有 6 到 8 倍虚高。修复经近 1,900 份真实会话文件回放验证,与独立重算的理想值偏差 0.001%。历史数据不会被自动改写,回正方法见升级提醒。
- 在 MCP、提示词、Skills 面板里直接搜索:三个面板都有了搜索框;MCP 与 Skills 列表上的应用徽章还变成了三态开关,一键把某个应用在整张列表上批量启用或停用(#5954、#5935 都是用户之声)。
- 让新版 Claude Code 直接进入 Copilot 接管的会话:新版 Claude Code 对不认识的 API key 会弹确认框、且默认选中「No (recommended)」,此前接管写入的占位符正好撞上它,用户看到的是一个未登录的会话。现在改写
ANTHROPIC_AUTH_TOKEN占位符,零弹窗直接进入。 - 继续用 CC Switch 管理 OMO:OMO 4.19.3 起配置统一进
~/.omo/omo.jsonc,旧文件不再被读取,此前的供应商切换看似成功、实则全部落空。现在检测到统一配置文件(omo.jsonc或omo.json)就写进它的"[opencode]"分区。OMO 表单的模型选择器还会合并opencode models实际报告的运行时模型。 - 在认证中心看到每个 ChatGPT 账号的订阅用量:多账号场景下不再需要逐个切换查看。
- 在大数据库上不再动辄卡住:备份导出改为批量 INSERT、同步恢复改为单事务——此前每行一次 fsync 正是自动同步周期性卡顿的元凶;Codex 用量全量重导入在真实语料上从 36.3 秒降到 11.1 秒(macOS),Windows 收益更大。
- 看到被网关吞掉的工具调用,而不是被静默晾在原地:第三方 Chat 网关返回缺函数名的工具调用时,转换层此前把它们丢掉还报「本轮完成」,Codex 于是无声地结束了循环。现在这种情况会明确报错,且丢弃点带结构化日志,#4341 这类问题终于可以从真实流量里诊断。
- 让 Hermes 提示词真正生效:写入 Hermes 实际加载的
~/.hermes/SOUL.md,而不是它从不读取的AGENTS.md。 - 装上此前装不了的 Skill:ast-grep 这类带同名空壳目录的仓库能装了;skills.sh 嵌套 Skill 的 README 链接不再 404(存量记录需重装一次恢复,见升级提醒)。
使用攻略
本版的改动集中在用量统计与扩展管理面板上,建议结合以下文档了解:
Warning
唯一官方渠道声明(请务必阅读)
CC Switch 是完全免费、开源的桌面应用,不会向用户收取任何费用。请仅通过下列官方渠道获取本软件:
| 类别 | 唯一官方 |
|---|---|
| 官网 | ccswitch.io |
| 源码 | github.com/farion1231/cc-switch |
| 下载 | GitHub Releases |
| 作者 | @farion1231 |
| 举报山寨 | GitHub Issues |
任何向你收费、要求充值、或索取登录凭据的"CC Switch"网站或客户端均为假冒。如果你被诱导支付了费用,请立即停止操作并通过 GitHub Issues 反馈。
概览
CC Switch v3.19.2 是一次以正确性为主的维护版本,主线有三条。第一条是把数字算对:Codex 会话导入器在计数器交错的文件上会把用量多算数倍(#3011),本版换用「优先取每轮增量、按完整签名识别重播」的算法,并以近 1,900 份真实会话文件的回放验证收口;备份与用量导入两条写盘路径同时批量化,大数据库导入卡顿显著缓解(#2100 或将受益)。
第二条是把边界扎紧:一轮外部贡献的安全加固把用量脚本运行时、Grok 会话日志、Codex 目录文件与代理缓冲响应体的无界读取全部封顶,深链导入确认框补上两个此前收集却不显示的凭据字段。第三条是把日常顺手的东西补齐:MCP / 提示词 / Skills 三个面板的搜索、MCP 与 Skills 的批量应用开关、认证中心的逐账号订阅用量,以及 OMO 的统一配置与运行时模型两项适配。此外还有 Copilot 登录、Hermes 提示词、Skill 安装等七个具体故障修复。本版没有数据库 schema 迁移(版本号保持 v16),升级轻量。
发布日期:2026-08-06
更新规模:24 commits | 109 files changed | +12,340 / -1,897 lines
新功能
管理面板:搜索与批量应用开关
MCP、提示词、Skills 三个面板都有了共享的搜索框——按 Esc 清空,且只在有内容时拦截全局返回快捷键,不影响你平时的操作习惯。MCP 与 Skills 列表顶部的应用计数徽章变成了三态开关按钮:一键把某个应用在整张列表上批量启用或停用,逐条点开关的日子结束了(#5954、#5935)。
批量操作刻意串行执行而不是并发——每个应用的 live 配置是单个文件,并发写会互相覆盖;失败的条目会被收集起来一次性报告。批量开关作用于整张列表而不是搜索过滤后的子集,避免「以为只开了过滤结果、实际状态不明」的歧义。
底层还顺手修掉两个数据层的老问题:MCP 开关从「读整行、改内存、写整行」改为单列原子 UPDATE,两个应用几乎同时切换时不再互相丢失更新;Skill 更新落库前会重新确认记录仍然存在、安装代数未变,慢速更新任务不再可能复活一个刚被卸载的 Skill。搜索索引是显式白名单——环境变量与请求头永远不进可搜索文本。
认证中心:逐账号订阅用量
设置 → 认证中心现在给每个 ChatGPT(Codex OAuth)账号内联显示订阅用量,复用供应商卡片页脚已有的查询——按账号去重、缓存五分钟、挂载时拉取一次不轮询。多账号用户不用再逐个切换查看余量。(#4887)
OMO 模型选择器合并运行时模型
OMO 表单的模型选择器此前只有静态列表;现在还会运行 opencode models,把本机安装的 OpenCode 实际报告的模型合并进来。这个辅助进程被刻意关进沙箱:禁用项目级配置发现、工作目录钉死在 OpenCode 配置目录——打开一个表单绝不会执行某个项目的 .opencode/ 插件;整个过程限时 20 秒,超时后杀掉完整进程树(macOS / Linux 用进程组,Windows 用 taskkill /T,WSL 在发行版内部用 timeout)。任何失败都回落到静态列表并弹提示。(#5522)
Qwen3.8 Max 内置定价
qwen3.8-max 按官方牌价播种:每百万 token 输入 $2 / 输出 $6,缓存读取 $0.25,缓存写入 $2.50(输入价的 125%,官方显式上下文缓存费率)。按「不存在才插入」播种,你自己改过的价格不受影响。(#6053)
变更
预设清单维护
NekoCode 与 Unity2.ai 的合作伙伴预设从所有应用、README 与语言文件中移除;七牛预设的排序调整。
修复
Codex 用量在计数器交错时被多算(最高数倍)
会话导入器此前从单一高水位线对累计值求差——一份文件里只有一个单调计数器时这是对的,但真实日志里存在两种交错形态:网关把同一份未变化的快照换着限额桶反复重播,以及两个真正不同的累计计数器交替出现。旧算法在这两种形态上都会把重播或交替当成新增量,现场文件实测有 6 到 8 倍虚高。
现在导入器优先读取每个事件显式携带的「本轮用量」,并按完整 token 签名识别重播。去重刻意收窄:一份快照只与同一来源自己的上一份签名或紧邻的前一个 token 事件比对——不与其它来源的旧签名比对,因为合法的计数器重置会重现旧数值,扫全表会把它误吞。只有累计值的旧格式回退到单一全局基线,语义与从前一致。
修复用近 1,900 份、共 1.7 GB 的真实会话文件回放验证:与独立重算的理想值偏差 0.001%,残余差异全部是旧算法把计数器重置截断吞掉、新算法合法救回的请求。历史数据刻意不改写——回正方法见「升级提醒」。(#3011、#3015)
被丢弃的工具调用不再伪装成「本轮完成」
第三方 Chat 网关偶尔会返回缺函数名的工具调用,Chat → Responses 转换层此前把它们静默丢弃、还照样报告本轮 completed——Codex 看到一个「成功但无事可做」的回合,就安静地结束了智能体循环,一个本可诊断的上游故障变成了无声停摆。
现在,当一轮里的工具调用全部被丢弃、没有任何可用项时,流式路径发出 response.failed,非流式路径报转换错误;判定挂在 status == "completed" 上,finish_reason: length 的截断保持自己的 incomplete 语义不受影响。三个丢弃点都会记录结构化、不含内容的日志字段——是否有 call id、参数字节数、结束原因——#4341 这类问题终于可以从真实流量里诊断。含有效工具调用的回合、纯文本回合与截断回合行为不变。
OMO 的配置写进了它不再读取的文件
OMO 4.19.3 把配置统一进 ~/.omo/omo.jsonc(其次 omo.json),迁移时会把旧的按应用文件改名挪走。此后 CC Switch——只认识旧路径——一直在写一个不在 OMO 配置链上的文件,供应商切换看似成功、实则全部落空(#5945)。
现在检测到统一配置文件就把 OpenCode 配置写进 OMO 的 "[opencode]" 分区——并且只写在这里,因为 OMO 对根层 schema 严格校验,任何未知根键都会让它丢弃整份文件。写入把文档当 JSON5 对待:注释、键序与行尾原样保留,内容没变化就不落盘;每次写出前还会把结果重新解析、与预期做语义比对——如果序列化会损坏文档,写入被拒绝、原文件原样保留,绝不落盘一份坏文件(已知触发场景见「升级提醒」)。同一改动还把所有受管应用在 Windows 上的原子写入换成 ReplaceFileW,堵上了旧「先删后改名」序列里目标文件短暂不存在的窗口。
Copilot 接管在新版 Claude Code 上进不了登录态
新版 Claude Code 对不认识的 API key 会弹确认框、默认选中「No (recommended)」——Copilot 接管此前写入的 ANTHROPIC_API_KEY 占位符正好撞上它:按推荐走,key 被忽略,用户面对的是一个未登录的会话。接管现在改写 ANTHROPIC_AUTH_TOKEN 占位符,零弹窗直接进入;在供应商表单高级区显式选择了 ANTHROPIC_API_KEY 字段的供应商保持旧行为。Copilot 转发路径还补上了其它路径早就有的 [1M] 上下文标记剥离,claude-*[1M] 形态的模型 ID 不再原样发给 GitHub 的 API。(#5832)
Hermes 提示词写错了文件名
Hermes 从 ~/.hermes/ 加载的身份文件是 SOUL.md,从不在那里找 AGENTS.md——后者是项目级上下文,从工作目录向上发现。CC Switch 的提示词管理从加入 Hermes 支持那天起写的就是 ~/.hermes/AGENTS.md,启用 Hermes 提示词产出的是一个死文件。现在读写 ~/.hermes/SOUL.md,既有的回填机制照常生效:你自己写过的 SOUL.md 会先导入数据库再被替换。(#5777)
带同名空壳目录的 Skill 仓库装不上
安装 ast-grep 官方 Skill 报「缺少 SKILL.md」:这个仓库在根下有一个与 Skill 同名的空壳目录,真正的 Skill 嵌套在更深处,而解析器返回了第一个名字匹配的目录。源目录解析现在以 SKILL.md 本身为锚点——没有它的目录绝不会被选中——顺带修好了同类仓库上「更新检查永远报有更新」的幻影提示。(#4141)
skills.sh 嵌套 Skill 的 README 链接 404
skills.sh 的发现流程只报告 Skill 的末级目录名;安装时能解析出真实的嵌套目录,但入库的 README 链接仍按目录名猜测构建,点开就是 404。链接现在从安装器实际解析出的目录生成。修复只作用于安装链路——旧版本写入的记录要重装一次才能恢复,见「升级提醒」。(#6111)
全部应用启用时头部按钮被裁掉
所有应用页签、项目切换器与接管开关同时显示时,头部溢出,「添加供应商」按钮被裁掉。主要操作现在固定在不收缩的区块里,应用切换器变成宽度感知:放不下的应用折叠进「更多」弹出层,当前应用始终可见。
路由状态动画在后台空耗 GPU
路由状态指示器的脉冲动画在窗口失焦时照常运行,为一个纯装饰效果持续占用 GPU。现在窗口焦点通过 data 属性与 CSS 控制心跳——失焦时动画冻结在完整不透明度,系统的「减少动态效果」偏好则完全禁用它。数据轮询不受影响,暂停的只是装饰。(#5767)
安全加固
无界读取全部封顶,确认框不再隐藏字段
一轮六项的外部贡献加固(#5919):
- 用量脚本限资源限时:用量脚本可以经深链或同步的数据库到达本机,此前跑在没有任何限制的 JS 运行时上,一句
while(true)就能把后端线程永远挂死。现在运行时强制 5 秒中断、16 MiB 内存与 256 KiB 栈上限。 - Grok 会话日志读取设界:跳过超过 50 MiB 的文件,目录递归限深 16 层且不再跟随符号链接——
~/.grok/sessions下的一个符号链接环此前能造成栈溢出。 - Codex 模型目录路径收紧:
model_catalog_json此前只看文件名就信任任意绝对路径;现在必须解析到 Codex 配置目录之内——canonicalize之后复查一遍,符号链接逃不出去——单次读取上限 32 MiB。 - 代理缓冲响应体封顶:会被完整收集的响应体——非流式响应、错误响应与需要整体校验的路径——上限 128 MiB,并且在分块到达时即时累计、越限立即断开连接,而不是先收完再比较;流式路径(透传与流式转换)本就不整体缓冲,不设总量上限。
- 解压预算前置:解压配额加在解码器读取侧,gzip、deflate、zstd、brotli 全覆盖,压缩炸弹无法不受控地膨胀;越限响应映射为独立的 502,不会被误判为可重试的网络错误。
- 深链确认框补上两个字段:供应商导入确认框此前会解析并持久化
usageAccessToken与usageUserId,却从不显示它们;现在两个字段都在批准前展示,令牌照常脱敏。
性能
备份:导出批量化,恢复单事务
两个方向各有一个独立的成本。导出侧此前每行数据一条 INSERT,导入大备份时 SQLite 要逐条解析、准备、销毁数万条语句;现在按 200 行 / 1 MB 一批生成多行 INSERT,语句数少两个数量级,备份文件本身也缩小约 4 倍。恢复侧,每次 WebDAV / S3 同步导入后要把保留在本地的表逐行写回,此前每一行都是一个隐式事务——每行付一次完整的日志写入与 fsync,正是大库自动同步周期性卡住应用的元凶;现在整个恢复在单个事务内完成。
旧格式的单行备份照常导入,新格式也在所有随应用分发的 SQLite 支持范围内,跨版本双向兼容。#2100 报告的跨机导入卡死很可能因此缓解——欢迎在该 issue 反馈实测结果。(#6122)
Codex 用量全量重导入提速约 3 倍,Windows 收益更大
全量重导入——导入 v16 之前的 SQL 备份、跨机恢复后游标不匹配、或手动重建时触发——在大语料上会把一个 CPU 核心跑满数分钟:每个 token 事件各自构成一个自动提交事务,每行付一次完整的日志创建 / fsync / 删除循环;每个归档文件还要跑一条用不上索引的游标继承查询。
现在事件按 1,000 条一批提交,批间释放连接锁,界面查询得以插队;游标在与最后一批相同的事务里推进,崩溃永远不会让游标领先于数据;游标与模型定价每趟预载一次,热点语句预编译缓存。1,920 份 / 1.7 GB 的真实语料在 macOS(release 构建)上从 36.3 秒降到 11.1 秒;Windows 上每行 fsync 开销约数毫秒,绝对收益大一个数量级。改动前后回放同一语料验证等价:82,000 行导入结果在所有导出列上逐字节一致,导入 / 跳过计数完全相同。
升级提醒
本版没有数据库迁移
v3.19.2 不含 schema 迁移(版本号保持 v16),不会触发升级前备份,升级即用。
Codex 历史用量虚高需手动重建一次
交错计数器修复只保证今后正确:历史行刻意不改写,也没有自动重建。如果你的看板里 Codex 数字高得离谱、且会话文件带交错形态,升级后到 用量页 → Codex 用量维护 → 「重建 Codex 用量」 手动重建一次即可——重建前会自动备份数据库;已删除的会话日志对应的历史无法重新导入。本版的导入提速让这次重建比以往快约 3 倍。
大多数安装不受影响:不含交错形态的数据上,新旧算法的差异在千分之一以内。
嵌套 Skill 的存量记录需要重装一次
通过 skills.sh 安装、README 链接 404 的存量 Skill,卸载后重装即可恢复正确链接;原地「更新」不会重写它。
升级后的首次同步会整体重传一次备份文件
备份 dump 的格式变了,而同步协议把它当作整体哈希的不透明工件,所以升级后第一次 WebDAV / S3 同步会完整重传一次 db.sql——一次性、无害。
Copilot 占位符在下次接管写入时生效
AUTH_TOKEN 占位符在接管下一次重写 live 配置时生效——切换供应商或重启接管即可。在供应商表单高级区显式选过 ANTHROPIC_API_KEY 字段的供应商不受影响,你的选择原样保留。
OMO 统一配置按文件存在性检测
判定依据是文件是否存在、而不是 OMO 版本:~/.omo/omo.jsonc(或 omo.json)存在时就地编辑它;两者都不存在时照旧写传统的 OpenCode 层文件。已知限制:如果统一配置文件里含块注释(/* … */),写入会报错拒绝以保护文档——行注释(//)不受影响。在上游 JSON5 写入器修复之前,切换供应商前请先移除块注释。
批量开关作用于整张列表
管理面板的批量应用开关作用于全部条目,而不是搜索过滤后的子集。
代理缓冲响应体上限 128 MiB
需要完整缓冲的代理响应——非流式响应与错误响应——超过 128 MiB 时以 502 失败,不再转发;透传的流式响应不受影响。正常的 LLM 响应最多也只有几 MB,这个上限只会在上游异常时触发;这类失败会终止请求,不触发向下一个地址的故障转移。
风险提示
沿用的提示
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 不对因使用这些功能而导致的任何账号限制、警告或服务暂停承担责任。
致谢
这一版 24 个提交里有 13 个 PR 来自外部贡献者——9 位贡献者,覆盖了从用量头条修复到安全加固的几乎每一条主线。
代码贡献
- #5854:Codex 交错计数器用量修复——本版头条,感谢 @MJYKIM99。作者自带真实文件证据、按评审意见三轮打磨到全量回放逐位收敛;也感谢 @ayanamislover 用自己的交错文件独立回放,与我们的验证互证。
- #5919、#6122、#6119:六项安全加固、备份性能改造与 skills.sh README 修复,感谢 @zayokami——本版的「安全加固」与「性能」两个章节大半出自这三份工作。
- #6011、#5522、#5767:OMO 统一配置适配、运行时模型发现与路由状态动画的 GPU 修复,感谢 @allenxu09。
- #5967:管理面板搜索与批量开关,并顺手修掉数据层两个并发老问题,感谢 @YUZHEthefool——他还在 #6119 中协作把修复收敛到最小形态。
- #4887:认证中心逐账号订阅用量,感谢 @SaladDay。
- #5832:Copilot 接管兼容新版 Claude Code,感谢 @Suaig。
- #5779:Hermes 提示词文件名修复,感谢 @mmm-05610——从报告 #5777 到提交修复一人完成。
- #4153:Skill 源目录以 SKILL.md 为锚点解析,感谢 @makoMakoGo。
- #6053:Qwen3.8 Max 内置定价,感谢 @mhy1227。
问题反馈
- 感谢 @KeShih 在 #3011 中精确指出「
total_token_usage非单调 / 重放被当作新增量」——本版头条修复的问题定义直接来自这条报告,他还在 #3015 中先行提出了修复思路。 - 感谢 @Syuryuuki 报告 OMO 统一配置未适配(#5945)、@abcfy2 报告 ast-grep Skill 无法安装(#4141)、@mortalBibo 报告 skills.sh 嵌套 Skill 链接 404(#6111)。
- 感谢 @kith13(#5954)与 @Getianyu1998(#5935)——管理面板的搜索与批量开关正是从这两条建议来的。
下载与安装
访问 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.19.2-Windows.msi |
推荐 - MSI 安装包,支持自动更新 |
CC-Switch-v3.19.2-Windows-Portable.zip |
便携版,解压即用,不写入注册表 |
Windows ARM64 设备请选择文件名中带 arm64 标识的对应制品。
macOS
| 文件 | 说明 |
|---|---|
CC-Switch-v3.19.2-macOS.dmg |
推荐 - DMG 安装包,拖入 Applications 即可 |
CC-Switch-v3.19.2-macOS.zip |
解压后拖入 Applications,Universal Binary |
CC-Switch-v3.19.2-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.19.2-Linux-x86_64.AppImage/.deb/.rpmCC-Switch-v3.19.2-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 |
v3.19.1
2026年07月31日
CC Switch v3.19.1
这一版的主线是把上一版的尾巴收干净:三家国产 Codex 网关经确认原生支持 Responses API,不用再开本地路由接管——DeepSeek 与火山方舟 Coding Plan 的预设从走本地路由改为直连,新加入的腾讯混元 TokenHub 一上来就是直连;四个能在日常里撞上的故障被修掉——Claude Desktop 用量自 v3.18.0 起被算了两遍(升级后历史数字会自动回正,但有 30 天窗口,见「升级提醒」)、切回官方 Codex 会卡在 401 且看不到登录界面、从设置页升级 Grok Build 只报一句
os error 2、Grok Build 开启接管后直接 404。另有 8 个此前一直按 $0 记账的模型补上内置定价,39 个界面文案的语言问题被修正。本版没有数据库迁移,并且是本项目第一个删除量超过新增量的版本。
重点内容:你现在可以
- 让 DeepSeek、火山方舟 Coding Plan、腾讯混元在 Codex 里直连:三家的官方 Codex 文档都已确认端点原生提供 Responses API。DeepSeek 与火山方舟 Coding Plan 的既有预设从 Chat 格式改为原生格式,供应商卡片上的「需要路由」标记与切换时的提示随之消失,请求不再经过本地代理的协议转换;腾讯混元 TokenHub 是本版新增的预设,从一开始就是原生格式。注意 DeepSeek V4 Pro 暂时还不能直连——厂商侧尚未开通它的 Codex 集成,直连请用 V4 Flash(预设默认),详见升级提醒。
- 让 DeepSeek 用上 DeepSeek 自己发布的模型目录:新的「官方厂商目录镜像」机制把厂商公布的
models.json原样下发给该厂商自己的端点,freeformapply_patch与配套的 GPT-5 提示词框架成套保留,不再被压成中性模板。判定只认域名、不认模型名——同一个模型在聚合站上未必实现同样的能力。 - 拿到正确的 Claude Desktop 用量数字:自 v3.18.0 起,经本地网关的 Claude Desktop 流量在看板里被记了两遍——一遍来自代理、一遍来自会话日志导入,token、费用与请求数约翻倍。本版修好后,明细行还在的日子会自动回到正确数字,不需要重建。
- 切回官方 Codex 之后能正常登录:此前从第三方供应商切回内置的官方 Codex 条目时,第三方的 key 会留在
~/.codex/auth.json里,Codex 拿着它去请求官方端点,稳定 401——又因为文件存在,它不会退回自己的登录界面,在应用里没有出路。 - 从设置页把 Grok Build 升上去:
grok update自 0.2.112 起改为内部调用 npm 完成分发,而图形界面启动的应用看不到 node,升级只会报一句Error: No such file or directory (os error 2)。 - 给 Grok Build 开启接管而不是撞上 404:API 格式被手动改成 OpenAI Chat 或 Anthropic 的 Grok Build 供应商,开启接管后请求会打到一个代理没有注册的路由上,直接 404,且没有故障转移、没有用量记录。同时,Grok Build 的每次请求此前都被当成新会话,缓存键注入与按会话聚合都失效了。
- 看到 8 个此前一直按 $0 记账的模型的真实成本:
gpt-5.3-codex-spark、gemini-3.5-flash-lite、kimi-k2.7-code-highspeed、glm-5-turbo、glm-5v-turbo、qwen3.6-flash,以及不带日期后缀的claude-opus-4-6/claude-sonnet-4-6。 - 在繁体中文界面里看懂「关于」页的工具管理:30 个只补了简中 / 英文 / 日文的文案漏了繁体中文,因为 i18next 会静默回落英文,这块面板自 v3.16.0 起一直是半英文的。另有 9 个文案在所有语言下都显示简体中文。
- 在官方订阅与 DeepSeek 之间来回切,而不是二选一:
auth.json与config.toml都是单槽文件,Codex 自己存不下第二份凭据。厂商的一键脚本会把这份配置改造成自己专用的,而 CC Switch 是按供应商整段快照与还原——这也是它和官方脚本最实际的区别,详见下文对照。
使用攻略
本版的改动集中在 Codex 的连接方式与用量统计口径上,建议结合以下文档了解:
- 本地路由:哪些供应商需要开启接管、接管做了什么。本版之后 DeepSeek、火山方舟 Coding Plan 与腾讯混元都不再需要它。
- 用量统计:用量看板的数据来源与统计口径,理解 Claude Desktop 双算是怎么发生的、修复后为什么部分历史日期无法回正。
- 在 Codex 中用 DeepSeek 这类 Chat 格式 API:这篇攻略讲的是本地路由如何把 Responses 转换成 Chat Completions,已针对本版更新。开头新增了一节判定:用预设新建的 DeepSeek 走直连不需要路由,但升级前保存的供应商、以及要用
deepseek-v4-pro时仍然需要;机制部分对 Kimi、智谱 GLM、SiliconFlow 等仍是 Chat 形态的供应商完全适用。
Warning
唯一官方渠道声明(请务必阅读)
CC Switch 是完全免费、开源的桌面应用,不会向用户收取任何费用。请仅通过下列官方渠道获取本软件:
| 类别 | 唯一官方 |
|---|---|
| 官网 | ccswitch.io |
| 源码 | github.com/farion1231/cc-switch |
| 下载 | GitHub Releases |
| 作者 | @farion1231 |
| 举报山寨 | GitHub Issues |
任何向你收费、要求充值、或索取登录凭据的"CC Switch"网站或客户端均为假冒。如果你被诱导支付了费用,请立即停止操作并通过 GitHub Issues 反馈。
概览
CC Switch v3.19.1 是一次维护性发布,主线有三条。第一条是国产 Codex 网关集体转向原生 Responses:DeepSeek 直连 api.deepseek.com,并带来一个可复用的机制——把厂商自己发布的模型目录原样镜像下发,让 freeform apply_patch 与配套的 GPT-5 提示词框架保持自洽,而不是被折叠成中性模板;火山方舟的 Coding Plan 端点 /api/coding/v3 在官方文档确认后跟进;腾讯混元的 TokenHub 作为新预设加入。三者都不再需要开启本地路由接管。
第二条是四个现场可见的故障修复:Claude Desktop 的用量自 v3.18.0 起被记两遍(#5938);切回内置官方 Codex 供应商会留下第三方的 auth.json,导致 401 且看不到登录界面;grok update 在图形界面下只报 os error 2;Grok Build 的代理接管在非 Responses 后端上 404,且每次请求都被当作新会话(#5677)。第三条是减重:3,166 行已无任何调用方的代码与 4 个未使用的 npm 依赖被删除——本版是本项目第一个删除量超过新增量的版本。此外,深链导入确认框的脱敏更严、截断更少,8 个此前按 $0 记账的模型补上定价,4 个内置定价与厂商牌价重新对齐。本版没有数据库 schema 迁移(版本号保持 v16),升级轻量。
发布日期:2026-07-31
更新规模:12 commits | 71 files changed | +2,324 / -3,680 lines
新功能
官方厂商模型目录镜像(DeepSeek 首发)
Codex 从一个目录文件读取模型能力,而 CC Switch 此前对所有供应商都用中性模板生成这个目录——对聚合站这是对的,但会剥掉厂商自家集成所依赖的能力。现在,凡是随应用内置了官方目录的厂商,直接镜像下发它自己的那一份。
DeepSeek 是第一家:内置文件带着 deepseek-v4-flash 与 deepseek-v4-pro 两个条目,保留 apply_patch_tool_type: "freeform"、web_search_tool_type: "text"、supports_search_tool: true、low / high / max 三档思考强度,以及 base_instructions 与 model_messages 里那份 17,644 字符的 GPT-5 提示词框架——这份框架必须与 freeform 工具注册一起走,因为框架本身就在指导模型使用 apply_patch,拆开任何一半都会不自洽。
判定条件刻意收得很窄:供应商必须落在原生 Responses 档并且 base_url 在 deepseek.com 上。只认域名、不认模型品牌——同一个模型在转售它的聚合站上未必实现同样的能力,按品牌授予等于把能力凭空发给了没有实现它的服务。供应商自己在目录里写死的条目仍然优先;遇到不认识的模型 ID 会克隆旗舰条目,但保留它自己的名称。其它所有档位生成的目录与改动前逐字节一致。
腾讯混元(TokenHub)Codex 预设
Codex 的预设选择器里新增「Tencent Hunyuan」,归入「开源官方」分类,位于百炼与阶跃之间。选中即写好 https://tokenhub.tencentmaas.com/v1、wire_api = "responses" 与 TokenHub 强制要求的 disable_response_storage = true;声明 hy3 与 hy3-preview 两个模型,上下文窗口 256K(而不是接受 Codex 的 128K 默认值),并标记为纯文本——Codex 不会再把 view_image 的图片载荷发给读不了图的模型。
因为是原生 Responses 供应商,Codex 直连网关、无需本地路由;生成的目录走中性原生模板,会固定 shell_type = "shell_command" 并去掉原生网关拒收的 freeform apply_patch 注册。地址管理器与测速里从一开始就有两个候选:主域名与官方备用的 .cn 域名;区域独立的国际站刻意排除在外,因为 API Key 不跨站通用。
注意 API Key 需要是开通了 Hy3 权限的 TokenHub key,Coding Plan 与 Token Plan 的订阅 key 在这个端点上用不了。
8 个此前按 $0 记账的模型补上内置定价
gpt-5.3-codex-spark、gemini-3.5-flash-lite、kimi-k2.7-code-highspeed(按 Kimi 的 Turbo 惯例,取 kimi-k2.7-code 基准价的 2 倍)、glm-5-turbo、glm-5v-turbo、qwen3.6-flash 在内置定价表里根本没有行,前缀回退也够不着,因此每一次请求都被记成零成本。
另外两行 —— 不带日期后缀的 claude-opus-4-6 与 claude-sonnet-4-6 —— 补的是一个更隐蔽的缺口:模型 ID 解析只会剥掉日期后缀、从不补上,所以一条带着无日期 ID 的日志谁也匹配不到。八行全部按「不存在才插入」播种,你改过的价格不受影响。
Grok Build 加入故障转移页签与环境变量冲突检测
设置页的故障转移在 Claude Code、Codex、Gemini 之外新增第四个 Grok Build 页签。启动时的环境变量冲突横幅也开始检测 XAI_API_KEY 与 GROK_DEFAULT_MODEL——这两个变量会静默盖掉你在应用里选的供应商。检测区分了精确名与前缀,所以 CC Switch 自己用的 GROK_BIN_DIR、GROK_HOME 不会被误报。
变更
DeepSeek 与火山方舟 Coding Plan 改为直连 Codex,不再需要本地路由
两家的预设此前都标记为 OpenAI Chat 格式,因此都是「需要接管」的:供应商卡片带着「需要路由」标记,未开代理就切换会弹提示,每个请求都要走 Codex → 本地代理 → Responses 转 Chat → 上游这条链路。
现在两家的官方 Codex 集成文档都已确认端点提供 Responses API——DeepSeek 的 api.deepseek.com 与火山方舟的 /api/coding/v3——两个预设随之声明为原生 Responses,标记与提示消失,Codex 直连网关。两家写出的 config.toml 都没有变化(本来就是 wire_api = "responses"),变的是目录生成档位;DeepSeek 另外把上下文窗口从 1,000,000 对齐到厂商自己的 1,048,576。
BytePlus 国际站刻意保持 Chat 路由不变,等国际站文档单独核实后再说。火山预设里还留了一条值得知道的计费注记:按量计费的 /api/v3 端点绝不能加进这个预设的备用地址——它单独计费,不走套餐额度。
目录的显示名与上下文窗口改为「显式才生效」
这两个字段此前带着本地默认值——模型 ID 与 128,000 的窗口——并且在厂商值有机会参与之前就应用了,镜像目录里 1M 的窗口会被 128K 覆盖掉。现在它们是可选的,回退挪到条目构造那一层,于是「留空」才真正等于「沿用厂商声明的值」。显式写了这两个字段的供应商,以及所有非镜像档位,生成的目录与之前完全一致。
用 CC Switch 接入,和直接跑官方脚本有什么不同
DeepSeek 官方提供了一条 Codex 一键接入脚本,它能用、会备份、也带恢复菜单。如果你这台机器就打算专心用 DeepSeek,跑官方脚本没有任何问题。 CC Switch 解决的是另一个场景:你要在多个供应商之间来回切。
换供应商时,登录态与配置整套换,不用自己备份
~/.codex/auth.json 与 ~/.codex/config.toml 都是单槽文件——Codex 本身没有多凭据存储,一份配置只能对应一个供应商。CC Switch 在你切走某个供应商时,把这一对文件的内容整段快照进那个供应商的记录里;切回来时再整段写回。所以「ChatGPT 订阅 → DeepSeek → 切回订阅」通常不需要重新 codex login,第三方之间来回切则完全无需手工动作。手工做同一件事,你得在每次切换前后各拷贝一次这两个文件,漏一次,被覆盖的 OAuth 凭据就只能重新登录找回。
官方脚本的取舍不同:它把 config.toml 改造成 DeepSeek 专用配置——顶层写死 preferred_auth_method = "apikey" 与 forced_login_method = "api",把认证方式固定为 API Key,并且删除 config.toml 里已有的 [profiles.*](Codex 自带的多供应商切换机制)。你的 ChatGPT 登录凭据本身没有被删,auth.json 原封不动;但在这份配置下用不上,想回订阅需要跑脚本的恢复菜单整体回滚——回滚会连带丢掉安装之后你对 config.toml 的任何手改。脚本本身也只能在 flash 与 pro 之间切换,没有「换到第三个供应商」这一档。
换供应商之后,codex resume 里的旧会话还在
Codex 的续聊列表按会话里记录的 model_provider 分抽屉。CC Switch 创建的所有第三方 Codex 供应商——不管是 DeepSeek、Kimi 还是聚合站——都写同一个标识 custom,所以在它们之间怎么换,codex resume 一直能看到全部历史。CC Switch 首次启动时还会做一次性迁移,把已知的按厂商分桶的旧会话(官方脚本写入的 deepseek 也在其中)折进这个共享桶,原文件先备份到 ~/.cc-switch/backups/。
这里有一条明确边界:这个迁移只在 CC Switch 首次启动时跑一次。如果你先装了 CC Switch、之后才去跑官方脚本,那批带 deepseek 标识的会话不会再被折进来,它们会留在自己的抽屉里。另外,你手写的、不在已知名单里的供应商标识,CC Switch 刻意不去改动它。
官方订阅的会话,在 CC Switch 里本来就和第三方混排
CC Switch 的会话管理面板直接扫描会话目录、不读 model_provider,所以官方订阅期间产生的 Codex 会话一直和第三方会话在同一个列表里,可搜索、可续聊、可删除——不需要开任何开关。
如果你还希望 Codex 自己的 codex resume 列表也把官方与第三方合并,那是另一件事:设置 → 通用 → Codex 应用增强 → 「统一 Codex 会话历史」,默认关闭。开启后只影响新会话;已有的官方会话要一并迁入,需要在开启确认框里再勾选「同时迁入现有官方会话历史」(同样默认不勾)。这两项都是既有功能、不是本版新增,边界场景见《统一 Codex 会话历史》攻略。
两个共同前提,先说清楚免得你事后困惑:
一、以 CC Switch 指向的 Codex 目录为准。 默认是
~/.codex,可在设置里改。CC Switch 不读CODEX_HOME环境变量——如果你用这个变量把 Codex 指到别处,那边的会话它看不见,供应商切换也会写进 CLI 没在用的目录里。要换目录请用 CC Switch 自己的「配置文件目录」设置。二、出现在同一个列表里,不等于一定能续聊。 Codex 的推理内容(
encrypted_content)只有产生它的后端能解密,跨供应商继续一段旧会话可能失败——这是上游的设计,不是 CC Switch 能绕过的。
修复
Claude Desktop 的用量被算了两遍
经本地网关的 Claude Desktop 流量在用量看板里落两次——一次是代理行,一次是会话记录导入行——于是它的 token、费用与请求数大约翻倍。
这是 v3.18.0 引入的回归:代理侧的去重 ID 对除 claude 之外的所有应用都带上作用域前缀,写成 session:{应用}:{供应商}:{消息ID},这就把 claude-desktop 放进了独立命名空间;而会话导入器仍然以裸的 session:{消息ID} 形态、app_type = 'claude' 写同一条 Claude 消息。三道去重防线因此同时失守:让代理行吸收已有会话行的主键收敛、写入侧的指纹探测、读取侧的过滤器——后两者都在用严格相等比较应用类型。
现在两个应用重新共用裸命名空间,两处比较则按单向规则放宽:claude 的会话行可以被 claude-desktop 的代理行吸收,反过来不成立。由于读取侧的过滤器也正是日报聚合所使用的那一个,已经入库的重复行会停止被计入,不改写、不删除任何一行——这条自愈有保留期限制,见「升级提醒」。对 Codex、Gemini、OpenCode 而言放宽后的比较退化为原来的精确匹配,额度检查仍使用严格匹配。(#5938、#5951)
切回官方 Codex 供应商会卡在 401、看不到登录界面
在 Codex API Key 保留开关关闭时(默认如此),切换到第三方供应商会把对方的 key 写进 ~/.codex/auth.json。之后再切到内置的官方供应商——它存的凭据是空的——会走「只写配置」这条分支,于是 config.toml 被替换,而第三方的 OPENAI_API_KEY 原样留在盘上。Codex 随后拿着这把外来的 key 去请求官方端点,稳定 401;又因为 auth.json 存在,它不会退回自己的登录界面,在应用里找不到出路。
现在,成功切到官方 Codex 供应商之后,如果 auth.json 里只有一个 OPENAI_API_KEY、旁边没有任何一等凭据,这个文件会被删除——OAuth 令牌、个人访问令牌、agent 身份、Bedrock key 中的任何一个都标志着这是一份真实凭据,会被完整保留;而 auth_mode、last_refresh、账号 ID 这类纯元数据不再能「挡住」一把过期的 key。
选择删除文件而不是写入 {}:空对象会被 Codex 判定为没有令牌的 ChatGPT 模式并在启动时报错,而文件缺失才等价于未登录、直接进登录流程。清理只在旧供应商已成功回填进数据库之后执行,所以被删掉的 key 并没有丢——它存进了那个供应商的记录里,再次选中它就会回来。同一处改动还放宽了 live 配置读取:清理之后的状态(没有 auth.json、有 config.toml)不再被报成「Codex 未安装」。
从设置页升级 Grok Build 只报一句 os error 2
在设置 → 关于里升级 Grok Build 会失败于 Error: No such file or directory (os error 2),没有任何其它信息。
根因是探测与执行两条路径的不对称:探测走登录 shell,会读取用户的 rc 文件,因此看得见 nvm、Homebrew、Volta;而生命周期脚本跑在非登录 shell 下,继承的是图形界面应用启动时那份很窄的 PATH。这本来无所谓,因为锚定命令都用绝对路径调用目标程序——但 grok 0.2.112 把自更新改到了 npm 分发上,grok update 内部会调起 npm view 与 npm i -g,而 npm 自己又要通过 shebang 解析 node。内层调用返回 ENOENT,grok 就把它原样抛成了那句 os error 2。
现在 macOS 与 Linux 上的生命周期命令会把登录 shell 的真实 PATH 并到继承的那份前面,读取方式是执行 /usr/bin/env 而不是回显变量——因为 fish 把 PATH 存成列表,回显会得到空格分隔的片段。原生安装的 Grok 还给升级链追加了官方 xAI 安装脚本作为兜底,刻意不用 npm i -g:npm 与主路径共享同样两种失败模式(没有 node、镜像源缺包),会一起失败;官方安装脚本是唯一不依赖 node 的路径,落点相同,并且会把 CLI 自己的 installer 设置改回 internal,顺带治好被早期 npm 兜底切到 npm 分发上的用户。
Grok Build 开启接管后 404,且每次请求都像新会话
在 API 格式被改成 OpenAI Chat 或 Anthropic 的 Grok Build 供应商上开启接管,会立刻得到 404,没有故障转移也没有用量记录——接管改写了地址与 key,却没有动后端字段,于是 CLI 把请求发到了代理没有注册的路由上。现在接管会同时把后端固定为 Responses;针对具体供应商降级到 Chat Completions 的动作仍然发生在转发层,而这个被强制的值会随整份 live 配置的备份在代理停止时还原。
另一个问题是代理的会话识别此前只认 Codex 与 OpenAI 客户端,因此 Grok Build 的每一轮都会生成一个新的会话 ID 并标记为「非客户端提供」,这同时压掉了缓存键注入与看板里的按会话聚合。现在会读取 Grok 自己的头——先会话所属的对话 ID,再会话 ID,忽略每请求变化的那个——并使用独立前缀,避免与 Codex 的记录撞车。(#5677)
9 个界面文案在所有语言下都显示简体中文
有 9 个字符串无论界面语言是什么都显示简体中文,英文与日文界面同样如此。每个调用点都用了「内联默认值」的写法、默认值是中文字面量,但对应的键在四个语言文件里一个都没有——而 i18next 会先走完语言链才考虑内联默认值,于是英文回退根本没有机会生效,中文字面量在所有语言下都赢了。
受影响的文案覆盖 Grok Build 供应商表单的必填校验提示、应用尚未接管时的故障转移悬停提示、另一个应用持有接管时停止 Claude Desktop 路由的警告及其原因说明、供应商标识读取失败提示、Codex 通用配置为空的错误、路由服务的停止与停止失败两个提示,以及用量表格里给「有 token 但算出来是零成本」的请求打的「未定价」标签。9 个键现在在简中、英文、日文、繁中里都有了。(#5960)
繁体中文的「关于」页工具管理回落成英文
界面语言设为繁体中文时,「关于」页的工具管理区块显示英文——版本行、安装与更新按钮、结果提示、安装冲突诊断,以及整个升级确认弹窗。这块面板由三次改动逐步建成,每次都只补了简中、英文、日文;而 i18next 的策略是回落英文而不是报错,于是 30 个缺失的键在测试里完全不可见。这个缺口自 v3.16.0 起一直带到 v3.19.0。
30 个文案现在全部译好,安装提示也与其它语言对齐;新增的语言测试要求每一个工具管理文案在四种语言下都存在、且插值变量一致,这类漂移以后会在测试里失败而不是发出去。(#5943)
内置定价与厂商牌价脱节
成本在写入日志时就按内置定价表冻结,所以一个过期的播种价会静默地把之后每一次请求都算错。本版修正四行:deepseek-chat 与 deepseek-reasoner 现在是 V4 Flash 的旧称别名,每百万 token $0.14 输入 / $0.28 输出、缓存读 $0.0028(原为 $0.27/$1.10 与 $0.55/$2.19);minimax-m3 按官方标准档减半到 $0.30/$1.20;gpt-5.6-luna 按 OpenAI 2026-07-30 的降价下调 80% 到 $0.20/$1.20,gpt-5.6-terra 下调 20% 到 $2/$12,gpt-5.6-sol 刻意不动,该系列的缓存写入比例保持不变。
修复只在一行的四个价格列仍然全等于此前的内置值时才改写它,所以你自己改过的价格——或者由 models.dev 同步写入的价格——绝不会被动到。
安全加固
深链导入确认框:脱敏更严,截断更少
这是 v3.19.0 那轮 ccswitch:// 确认框加固的延续。配置预览改由一个共享模块统一构建,会递归地对嵌套 TOML 表与 JSON 对象里的密钥脱敏,一次修好两个方向相反的缺陷:Grok Build 的导入此前完全不渲染配置预览,而 Codex 的导入会把内嵌的 api_key 明文打印出来。
配置预览上 300 字符的截断被移除,完整内容现在渲染在可滚动的框里——补上了确认框最后一处可能隐藏「即将写入什么」的地方。脱敏本身在所有使用它的位置都更严了,包括 MCP 导入确认框:敏感键名匹配新增 AUTHORIZATION、COOKIE、CREDENTIAL,以及精确匹配的 AUTH 与 BEARER;脱敏后显示的明文前缀从 8 个字符缩到 4 个;长度不超过 8 个字符的值现在整体替换,而不是原样显示。
最后,前端的 Base64 解码器不再裁掉首尾空白——那有可能是 URL 解码把 + 变成的空格。这与 v3.19.0 修过的是同一类前后端解码口径分歧:确认框显示的是一回事,导入器写进去的是另一回事。
内部
删掉 3,166 行已无调用方的代码、14 个模块与 4 个依赖
一轮针对「没有任何调用方」的清理。后端删除了供应商图标推断表、一个占位的健康检查器、一套从未接线的 SSE 实现(含它自己的流式与非流式处理器)、两个未使用的代理会话类型,以及四个无引用的用量解析器与一个死的成本计算入口——线上计费路径、它的自动识别解析器与会话 ID 提取全部原封不动。22 处 #[allow(dead_code)] 抑制(正是它们让编译器一直没报警)随之删除。
前端删除 14 个无导入方的模块,包括已被面板改版取代的提示词表单弹窗与仓库管理器、一个重复的代理配置 hook、一个在项目历史上从未有过导入方的熔断器面板,以及三个 schema 文件;它们的文案在四种语言里同步删除。这些模块背后的 Tauri 命令刻意保留。另外删除 4 个未使用的 npm 依赖。两个会重新生成手工维护的图标索引的脚本被移除,索引文件头改为写明「刻意不支持自动重生成」。
配套的一处改动把代理状态与接管状态合并到单一的查询层——此前有第二套并行的 hook 覆盖同样的命令,但零调用方,它的查询键从来没有观察者,针对它们的失效调用全是空转。查询键字符串逐字未变,保留下来的 hook 维持原有的轮询行为。(#5916、#5928)
升级提醒
本版没有数据库迁移
v3.19.1 不含 schema 迁移(版本号保持 v16),不会触发升级前备份,升级即用。
Claude Desktop 双算的自愈有 30 天窗口(请读)
修复是在查询时抑制重复行,而不是改写或删除数据,所以明细行还在的每一天都会在下次启动后恢复正确总数,不需要任何重建操作。
但明细行超过 30 天会被聚合进日报并清理,而日报是按聚合当时生效的口径算一次就固定下来的。已经被没有此修复的版本聚合掉的日期,会永久保留虚高的数字。 这个回归自 v3.18.0(2026-07-21)进入,所以越早升级、能救回的历史区间越完整。
新定价对历史数据的两种不同影响
八个新补定价的模型会被回溯补算:启动时会给成本记为零的请求补上成本,因此这些模型的看板数字会上升。已经聚合并清理掉的明细行无法补算,保持为零。
四个改价的模型方向相反:补算只处理零成本行,所以已经记录的请求保持旧价,只有新请求按新价计费——同一个模型的历史花费与新增花费会不一致。两条路径都保护你自己的定价:修复只改仍是原内置值的行,而 ~/.cc-switch/model-pricing.json 里的手工改价、models.dev 同步值与删除墓碑会在播种与修复之后重放,始终优先。
预设变更只影响新建供应商
已经保存的 DeepSeek 或火山方舟 Coding Plan 供应商保持它存的 API 格式,仍然需要本地路由,也仍用旧目录。想用直连,请从预设重新创建供应商,或在供应商表单的高级区把 API 格式改为原生 Responses。
不过,已经是原生 Responses、且地址在 deepseek.com 上的供应商,下次切换时就会自动用上镜像的官方目录,不需要重新保存——因为判定读的是 live 配置。
DeepSeek V4 Pro 暂时还不能直连
预设里仍然列着 deepseek-v4-pro,厂商自己发布的目录也带着它,但 DeepSeek 侧针对 pro 的 Codex 集成尚未开通,官方给出的时间是 2026 年 8 月初。在那之前,直连模式下选 pro 会在上游报错——请用 deepseek-v4-flash,它也是预设的默认模型。
如果你现在就要用 pro,把这个供应商的 API 格式改回「OpenAI Chat」并开启本地路由接管即可。这正是 v3.19.1 之前 DeepSeek 一直走的那条路:本地代理会把 Codex 发出的 Responses 请求转换成 Chat Completions,pro 在这条路上不受影响。
DeepSeek 官方目录的两个前提
镜像的目录声明了 Codex 客户端最低版本 0.144.0,CC Switch 自己不做校验——它携带的 freeform apply_patch 注册需要这个版本或更新。另外,生成的目录文件会涨到约 75 KB(两个镜像模型),因为每个条目都带着完整的提示词框架文本。
直连之后,用量的归属会从供应商名变成 Codex (Session)
DeepSeek、火山方舟 Coding Plan 与腾讯混元不再需要接管,它们的流量可以完全绕过本地代理,代理侧的逐请求记录因此看不到它们。
用量本身不会丢,也仍然分得清——Codex 的会话日志导入照常记录,只是这条路径不携带供应商身份:所有没走本地代理的 Codex 用量会一起归入名为 Codex (Session) 的条目,官方订阅的消耗也在这一行里。也就是说,DeepSeek 从走路由改为直连之后,它的用量会从「DeepSeek」这个名字下移到 Codex (Session)。
要区分它们,看模型:每条用量记录都带着自己的模型 ID,用量面板的「模型统计」按模型逐行列出——deepseek-v4-flash、hy3、ark-code-latest 与官方订阅的 GPT 系列各归各行,费用与 token 都是分开的。只有当你需要的正是按供应商这个维度(比如同一个模型在多家聚合站之间比价),才需要继续用本地路由接管——这条路会记录真实的供应商名。
Codex 残留凭据清理的两个前提
清理只在「切入的供应商带有显式的官方分类」且「切出的供应商已成功回填」时执行。手工创建、没有标记官方分类的条目,或者回填失败的那次切换,残留仍会留在盘上。
Grok Build 开启接管会改写后端字段
在 Grok Build 供应商上开启接管,现在会把 live 配置里的后端字段改写为 Responses。数据库里存的供应商记录不受影响,代理停止时 live 文件会从备份整体还原。
工具安装与升级的 PATH 变化(仅 macOS / Linux)
设置 → 关于里触发的每一次工具安装与升级,现在都会把登录 shell 的 PATH 并到继承的那份前面,因此生命周期脚本按名称解析到的程序有可能与之前不同;每次操作还会多启动一个 shell 来读取这份 PATH,这会执行你的交互式启动文件。Windows 不受影响。
使用 grok 0.2.112 及以上版本的用户可能会看到两份安装记录——原生的那份,加上 grok update 自己创建的全局 npm 包;它们由上游保持同步,版本号一致。
环境变量冲突检测的匹配口径变了
Claude Code、Codex、Gemini 的检测从「包含」收紧为「前缀」,因此仅仅名字里含有应用名的变量——MY_ANTHROPIC_API_KEY、OLD_GEMINI_API_KEY——不再被报为冲突。同时新增了 Grok Build 的检测。
深链导入确认框显示的密钥更少
脱敏后显示的明文前缀从 8 个字符缩到 4 个,长度不超过 8 个字符的值整体脱敏。这也影响 MCP 导入确认框。
风险提示
沿用的提示
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 不对因使用这些功能而导致的任何账号限制、警告或服务暂停承担责任。
致谢
这一版的修复大半来自外部贡献者——六个 PR 里有五个不是我写的。
代码贡献
- #5677:Grok Build 的代理接管与深链集成收尾——补齐后端字段、会话身份识别、故障转移页签与环境变量检测,并顺带修好了配置预览里的密钥泄漏,感谢 @YUZHEthefool。这是本版覆盖面最广的一份工作。
- #5951:Claude Desktop 用量双算修复,感谢 @Komikawayi。定位到 v3.18.0 的哪一处改动让三道去重防线同时失守,是本版最需要耐心的一次排查。
- #5916、#5928:删除 3,166 行无调用方代码与重复的代理查询层,感谢 @SaladDay。
- #5943:补齐繁体中文的工具管理文案,并新增防止语言漂移的测试,感谢 @yovinchen。
- #5960:补齐 9 个在所有语言下都显示简体中文的文案,感谢 @mhy1227。
问题反馈
感谢 @Alaric-L 在 #5938 中报告 Claude Desktop 的每次请求都多出一条 session_log 来源的日志、导致 token 被统计两遍——这条反馈精确到了数据来源,本版最重要的用量修复直接由它定位。
下载与安装
访问 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.19.1-Windows.msi |
推荐 - MSI 安装包,支持自动更新 |
CC-Switch-v3.19.1-Windows-Portable.zip |
便携版,解压即用,不写入注册表 |
Windows ARM64 设备请选择文件名中带 arm64 标识的对应制品。
macOS
| 文件 | 说明 |
|---|---|
CC-Switch-v3.19.1-macOS.dmg |
推荐 - DMG 安装包,拖入 Applications 即可 |
CC-Switch-v3.19.1-macOS.zip |
解压后拖入 Applications,Universal Binary |
CC-Switch-v3.19.1-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.19.1-Linux-x86_64.AppImage/.deb/.rpmCC-Switch-v3.19.1-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 |
v3.19.0
2026年07月30日
CC Switch v3.19.0
这一版的主线是让你更放心:一波集中式安全加固——Skill 安装、
ccswitch://导入确认、SQL 备份导入、通用配置合并、终端启动全部收紧,其中两条需要你花一分钟确认——Gemini 通用配置的密钥泄漏已修复并在升级后自动清洗(需要你轮换密钥),ccswitch://的 MCP 导入确认框此前可能显示不出即将写入的命令(若你曾打开过来源不明的导入链接,建议核对一次),两条都见「升级提醒」;一个代理正确性大修——通过代理读图不再撑爆上下文(一张截图曾经吃掉 10 万+ token,两三张就能把 Codex 会话卡死在 400 上)。省心的部分同样实在:模型定价可以交给 models.dev 自动维护、Grok CLI 官方登录模式的用量与 SuperGrok 订阅余量终于进看板、应用内更新改走dl.ccswitch.io镜像——GitHub 访问不畅也能顺利升级。
重点内容:你现在可以
- 在代理下正常读图,不再撑爆上下文:Codex 的
view_image、返回图片的 MCP 工具,图片此前被序列化成工具文本、按纯文本计 token(约 9,000 倍膨胀);现在所有转换桥都把图片还原为原生格式再上送(文件与音频在两条 Chat 桥上一并支持)。真实测试里同一回放轮从 85k+ token 降到约 12k、缓存命中 99%。 - 把模型定价交给 models.dev 自动维护:用量面板新增「models.dev 自动定价同步」(默认关闭)。开启后启动时自动刷新所选模型的价格(每 6 小时至多一次),可在完整目录里挑选要跟踪的模型,或让它自动包含各家最新的常用模型。手工改价与删价从本版起会记入
~/.cc-switch/model-pricing.json,数据库重建也不丢。 - 看到 Grok 官方模式的用量与订阅余量:Grok CLI 用官方 OAuth 登录时无法走本地代理,此前这部分消耗完全不可见;现在会从会话日志导入逐轮用量,看板里以「Grok Build (Session)」呈现。官方类 Grok Build 供应商卡片还会直接显示 SuperGrok 订阅的额度用量与重置时间。
- 更放心地点开
ccswitch://导入链接:确认框现在完整展示命令、每个参数、URL 与环境变量(凭据类值脱敏显示),高亮标记值得多看一眼的值——shell 内联执行、改变加载行为的环境变量、内网 / 元数据地址;用量查询脚本会显示完整代码,且默认以禁用状态导入。 - 确认 Gemini 供应商里不再夹带别人的密钥:通用配置共享片段此前会把
GOOGLE_API_KEY等凭据复制进每个使用它的 Gemini 供应商;本版关闭该路径,升级后首次启动自动执行一次性清洗。凡是进过共享 Gemini 片段的密钥都应视为已暴露,请先轮换再重填(见「升级提醒」)。 - 在 GitHub 访问不畅时照常更新应用:应用内更新器优先查询
https://dl.ccswitch.io/latest.json(Cloudflare R2 镜像),GitHub 作为回落;minisign 签名校验不变,镜像本身不被信任。 - 新建供应商时直接用上最新模型:预设默认模型升级为 Claude Opus 5、GPT-5.6 Sol 与 Gemini 3.6 Flash,配套定价同步入库;已创建的供应商保持原样。
- 更快导入 fork 密集的 Codex 用量历史:父 rollout 文件只解析一次、跨全部 fork 点共享,fork 密集的历史重建明显提速,导入结果逐字节不变。
使用攻略
本版新能力主要落在用量面板与 ccswitch:// 深链导入上,建议结合以下文档了解:
- 用量统计:用量看板的数据来源与统计口径。本版新增 models.dev 自动定价同步与 Grok 官方模式用量导入。
- 深链导入(ccswitch://):导入确认框的字段说明与
usageEnabled等参数的默认值(本版起用量脚本默认禁用导入,文档已同步修正)。 - 安全策略(SECURITY.md):本版补齐了威胁模型与报告范围——哪些输入被视为不可信、哪些问题欢迎报告,一目了然。
Warning
唯一官方渠道声明(请务必阅读)
CC Switch 是完全免费、开源的桌面应用,不会向用户收取任何费用。请仅通过下列官方渠道获取本软件:
| 类别 | 唯一官方 |
|---|---|
| 官网 | ccswitch.io |
| 源码 | github.com/farion1231/cc-switch |
| 下载 | GitHub Releases |
| 作者 | @farion1231 |
| 举报山寨 | GitHub Issues |
任何向你收费、要求充值、或索取登录凭据的"CC Switch"网站或客户端均为假冒。如果你被诱导支付了费用,请立即停止操作并通过 GitHub Issues 反馈。
概览
CC Switch v3.19.0 由一波安全加固与一个代理正确性大修领衔。安全侧(#5811 及后续独立修复):从 GitHub 仓库安装 Skill 加固了 zip-slip 与路径穿越并设归档上限;Gemini 通用配置的密钥泄漏被关闭,升级后首次启动自动执行一次性清洗,把已经泄漏进其它供应商配置的密钥清理干净;导入 SQL 备份改在 SQLite authorizer 下执行,ATTACH 等能触及导入库之外的语句一律拒绝;通用配置片段合并不再跟随 __proto__ 污染全局原型;外部终端启动改用 POSIX 单引号转义,目录名再也注入不了命令;ccswitch:// 导入确认框完整展示载荷(凭据类值脱敏显示)并标记风险值,用量脚本默认禁用导入。代理侧,工具结果里的图片不再被序列化成工具文本,而是在各转换桥还原为原生媒体上送(文件与音频在两条 Chat 桥上一并支持)——终结了「一张 113 KB 截图吃掉 10 万+ token、两三张图把 Codex 会话卡死在 400 上」的问题(#4465、#5663)。
用量统计获得两块新能力:models.dev 自动定价同步(可选开启,#5734),配套把手工改价 / 删价持久化到人类可编辑的 ~/.cc-switch/model-pricing.json;以及 Grok CLI 官方 OAuth 模式的用量导入——这条流量无法走本地代理,此前完全不可见——外加供应商卡片上的 SuperGrok 订阅配额展示。围绕分发与体验:应用内更新优先走 dl.ccswitch.io 的 Cloudflare R2 镜像(GitHub 回落,签名校验不变);Codex 用量导入对 fork 会话重用已解析的父 rollout 时间线(#5626);预设默认模型升级为 Claude Opus 5、GPT-5.6 Sol 与 Gemini 3.6 Flash;OpenClaw 的 Kimi For Coding 预设修正了 base URL;工具栏应用切换器改为纯图标。本版没有数据库 schema 迁移,升级轻量。
发布日期:2026-07-30
更新规模:38 commits | 132 files changed | +14,926 / -1,415 lines
新功能
models.dev 自动定价同步
用量面板的定价区新增「models.dev 自动定价同步」卡片,默认关闭、需手动开启:开启时会有确认说明——CC Switch 将在启动时(每 6 小时至多一次)从 models.dev 刷新所选模型的价格,同名模型的内置价与手工价都会被覆盖。「选择模型」对话框提供完整的 models.dev 目录(可搜索筛选),另有「自动包含常用模型」选项,覆盖 Claude、GPT、Gemini、Grok、DeepSeek、Qwen、MiMo、LongCat、Kimi、MiniMax、GLM 各家最近发布的模型(每族至多 6 个,可单独排除)。卡片显示上次同步时间与错误,提供「立即同步」,还能打开或重载本地定价文件。
从本版起,手工改价与删价会同时记入数据库旁边的人类可编辑文件 ~/.cc-switch/model-pricing.json,每次启动重放——数据库重建后手工定价不再丢失,删掉的内置价也终于能删得掉(以墓碑记录,不再被重新播种)。注意该文件创建时为空、刻意不从既有定价表回填(否则内置价会被一并写成覆盖项、挡掉将来的内置价修正),升级前的改价仍只存在数据库里,重存一次即可入文件。同步真的改了价格时,会把从未算出成本(零或缺失)的历史用量行按新价补算——已有成本的行保持原值;拉取失败或离线绝不阻塞启动。models.dev 列表还过滤掉了非文本与已弃用的模型(音频 / 图像 / 视频 / embedding 等),手动选价对话框一并清爽了。(#5734)
Grok 官方模式的用量,终于进看板
Grok CLI 用官方 OAuth 登录时无法经本地代理路由——Grok 以空配置作为模式开关,没有地方能把它指向 CC Switch——这部分消耗此前在用量看板里完全不可见。现在 CC Switch 会随常规会话日志同步,从 ~/.grok/sessions(含归档会话)的 updates.jsonl 里按 turn_completed 事件导入逐轮用量:成本优先采用 CLI 自己上报的精确数字,缺失时回落本地定价(内置定价表新增 grok-4.5-build,$2 输入 / $6 输出 / $0.30 缓存读,每百万 token)。导入行以上游逐轮 ID 为键,回卷会话不会造成重复计数;沉淀窗口加近期代理活动检查,确保同一流量在「路由 + 官方」混用时也不会算两次。看板里新行以「Grok Build (Session)」供应商名呈现,应用筛选器新增 Grok Build 选项,数据来源分栏新增「Grok Build Session」条目与专属图标,四语齐全。
供应商卡片上的 SuperGrok 订阅配额
类别为「官方」的 Grok Build 供应商,卡片上现在直接显示 SuperGrok 订阅用量——与 Claude Code / Codex / Gemini 的官方订阅页脚并列:CC Switch 读取 Grok CLI 自己的 OAuth 凭据(~/.grok/auth.json),查询 grok.com 计费端点获取额度窗口的已用百分比与重置时间;重置间隔可识别时标注为「周」或「月」,否则归入新的「Credits」档(托盘用量摘要中以 c 组呈现)。网络瞬断时保留上一次读数并重试,不清空页脚;令牌过期会提示重新 grok login。Claude Code、Claude Desktop 与 Codex 里的受管 xAI OAuth(SuperGrok)供应商也自动获得同款配额展示——数据来自绑定到该供应商的账号,用量脚本入口随之隐藏。注意 Grok Build 供应商的「官方」判定现在只看 category 字段,不再探测配置内容。
Claude Opus 5 内置定价
claude-opus-5 加入内置定价表:$5 输入 / $25 输出、$0.50 缓存读 / $6.25 缓存写(每百万 token),用量不再显示 $0。按「不存在才插入」播种,改过的价格不受影响(Opus 5 fast 模式走独立计费,刻意未入表)。
预设目录更新
A6API(同模型多上游自动择优的聚合平台)加入八个应用的赞助商预设;PackyCode 预设在支持备用端点的五类预设(Claude Code / Claude Desktop / Codex / Gemini CLI / Grok Build)上新增三个备用地址,可在地址管理器与测速里选择;AICoding 合作伙伴预设回归七个应用;赞助商排序与 README 重新对齐。
变更
预设默认模型升级:Claude Opus 5、GPT-5.6 Sol、Gemini 3.6 Flash
内置预设的默认模型全面来到当前一代:claude-opus-5 替换 claude-opus-4-8(三种命名形态全覆盖),gpt-5.6-sol 替换 gpt-5.5 与裸 gpt-5.6,gemini-3.6-flash 替换 gemini-3.5-flash。同步更新了所有镜像位置——通用 / NewAPI 默认值、Codex 自定义 config.toml 模板、推荐列表、表单占位符与四语文案;gemini-3.6-flash 定价同步入库($1.50 / $7.50、缓存读 $0.15,每百万 token)。仍钉在 gemini-3.1-pro-preview 的 Code0 与七牛 Gemini 预设一并对齐到 3.6 Flash——这是有意的档位调整:3.6 没有 Pro 版,3.5 Pro 仍限合作测试。默认值只影响新建供应商,已保存的供应商维持创建时的模型;Claude Desktop 的 opus 路由现值前进到 claude-opus-5,claude-opus-4-8 转入兼容别名槽,存量配置照常解析。
应用内更新改走 ccswitch.io 镜像
更新器现在优先查询 https://dl.ccswitch.io/latest.json——发布清单的 Cloudflare R2 镜像——GitHub Releases 作为回落,检查与下载更新不再依赖 GitHub 可达。镜像清单把各平台下载指向同一存储桶,而 minisign 签名保持不动:签名覆盖的是文件内容而非 URL,每个下载产物仍会对着内置公钥校验,镜像本身始终不被信任。发布由 release 门控的同步工作流负责,只有当 tag 确为 GitHub 的 releases/latest 时才改写根清单,镜像永远不会把用户往回推到旧版本。
Codex 用量导入:fork 会话提速
导入与重建 Codex 用量统计不再对同一个父 rollout 文件按 fork 点逐次重读:每个父 ~/.codex/sessions/*.jsonl 只解析一次,生成内存中的 token 时间线,由所有从它 fork 出的子会话共享,各子会话的截断点改为内存过滤。缓存以文件身份戳校验(修改时间、大小,加 Unix 的 device/inode 或 Windows 的卷序列号 + 文件 ID),被追加、轮转或替换的父文件会重读而不是拿到陈旧数据。提速幅度取决于 fork 密度:fork 密集的历史冗余解析大幅减少,fork 稀少的历史基本不变——两种情况下导入结果都逐字节一致。(#5626)
工具栏应用切换器改为纯图标
切换器按钮不再在图标旁渲染文字标签——受管应用增至八个后,标签本来就几乎总是被溢出检测收起,于是移除了基于 ResizeObserver 的自动紧凑机制,始终只显示图标。应用名保留在悬停提示里,读屏器经 aria-label 照常可及。
赞助商域名与推荐链接刷新
多家赞助商迁移了域名,预设地址、备用端点、推荐链接与 README 行已同步(PackyCode → www.packyapi.ai、RightCode → www.rightapi.ai、ClaudeAPI → www.apito.ai、APINebula → apinebula.ai、AICodeMirror → .ai、AICoding → .inc、AIGoCode → .app),顺带移除了两个已失效的备用端点。已创建的供应商保留数据库里存的旧地址——想迁到新域名,手动改地址或从刷新后的预设重建即可。
修复
通过代理读图不再撑爆上下文
客户端经工具调用读取图片时——Codex 的 view_image,或任何返回图片的 MCP 工具——代理的协议转换会把整个图片块序列化进工具消息的文本里,上游按纯文本给 base64 计 token:约 9,000 倍的膨胀,一张 113 KB 的 PNG 折算 10 万+ prompt token;Codex 每轮重放全部历史,两三张截图就足以把会话顶出上下文窗口、卡死在反复的 400 上(#4465、#5663)。
代理现在把媒体载荷从工具结果里提出来、按各桥的原生格式重新上送——图片全桥覆盖,文件与音频在目标协议支持处生效:两条 Chat 桥(Claude→Chat、Codex Responses→Chat)承载图片 / 文件 / 音频,工具消息里留下简短标记、媒体作为合成用户消息紧随工具批次之后;Claude→Responses 还原原生 input_image,Codex / GrokBuild→Anthropic 重建标准 Anthropic 图片块,Claude→Gemini 在 Gemini 3 上用多模态 functionResponse.parts(旧型号用 inlineData),只接受内联 base64 图片。检测覆盖有类型的 Responses 块、Anthropic source 块、MCP data+mimeType 结果与整串图片 data URL,可穿透数组与嵌套 content 包装(含 JSON 编码的工具输出);一旦判定输出含媒体,其中残留的 data URL 与裸 base64 会被折叠成占位——裸 base64 本身从不触发媒体判定,普通工具输出原样不动。不含媒体的工具结果在所有桥上保持与之前逐字节一致,prompt 缓存前缀不受影响;上送的媒体块刻意不带 cache_control 标记,GLM、Qwen 这类严格上游不会拒收。对 Kimi K3 的端到端实测:同一回放轮稳定在约 12k 输入 token、缓存命中 99%,此前每次重放要背 85k+ 的 base64 文本。
「不支持图片回退」现在能看到工具结果里的图
「不支持图片回退」设置会在供应商仅文本或上游拒图时用占位标记替换图片块,但它此前只能看到仍是结构化块的图片——已被打平成 base64 文本的工具结果图片对它不可见,仅文本上游直接失败、无从恢复。媒体清洗器现在在每条路径上对称地检测并剥离工具输出内的媒体,发送前剥离与被拒后重试两条路都能救回这类轮次;由于该检测现在也深入工具结果,一条回归测试钉住了反应式重试仍只对真正的模态拒绝触发——上下文超限的 400 不会被误当拒图去重试。
Grok Build 成本回填不再高估
补算缺失成本的例程此前只把 Codex 与 Gemini 视为「上报输入 token 已含缓存读」的供应商,而 Grok Build 同属该口径——被回填的 Grok Build 行按全量输入计价、缓存读又计一次,成本虚高。缓存含入式供应商集合现在只定义一处,由路由记录器、成本计算器与回填例程共享,三者不再可能各说各话。注意此前已被旧回填修过的行保持原值——回填只处理零成本行,从不改写已有正成本。
手工编辑的配置文件不再让应用崩溃或吞掉编辑
~/.codex/config.toml 里 mcp_servers 存在但不是表(比如 mcp_servers = "x")时,MCP 同步会在切换中途 panic——且发生在数据库与 live 配置都已写入之后,留下半套用的切换;非表值现在先告警再归一为空表,Codex 与 GrokBuild 写入器同步修复。内联表形态(合法 TOML)有镜像问题:MCP 删除静默无效而界面报成功、base_url 编辑写到 Codex 根本不读的层级——均已处理。根节点、provider 或 mcp 段是数组 / 标量的 opencode.json 不再 panic,这类文件会被报错拒绝而不是重建,你自己的 model、theme 设置不会被抹掉。(#5811)
代理转换扛得住畸形上游响应
上游网关的畸形数据此前可能直接干掉本地代理而不是产生错误:Anthropic SSE 流里非对象的 message 或 content_block、缓冲响应体是顶层 JSON 数组或标量(无视 stream: true 的网关就返回这种)都会命中 panic 的索引赋值;流现在以正常的失败事件收尾。畸形的 content_block 头还会被恢复为文本块——只把它净化成空对象虽止住 panic,却让后续内容全部被静默丢弃、模型看起来什么都没说——由于坏头之后的增量通常是完好的,常见情况现在能通传,替换发生时记一条警告。(#5811)
OpenClaw 的 Kimi For Coding 地址修正
OpenClaw 预设此前指向通用平台端点 https://api.kimi.com/v1,而 Kimi For Coding 订阅走的不是它,coding 套餐的 key 用不了。地址修正为 https://api.kimi.com/coding/v1,表单占位符与默认值同步更新。从旧预设创建的供应商需手动改到新地址。
安全加固
本节九条里,有两件事需要你动手:轮换进过 Gemini 通用配置的密钥,以及核对曾经通过 ccswitch:// 导入的 MCP 条目——「升级提醒」里写明了怎么做。其余的升级即生效,不需要你操作。
如果你从不点开别人发来的 ccswitch:// 链接,也没用过共享的 Gemini 通用配置,那这九条对你的意义主要是「以后更不容易出事」;如果两条里有一条对得上,这一版值得优先升级。
Gemini 通用配置不再泄漏密钥,升级后自动清洗
Gemini 通用配置提取器此前只从共享片段里剥掉 GEMINI_API_KEY 与 GOOGLE_GEMINI_BASE_URL,其余 env 条目原样复制——而 GOOGLE_API_KEY 正是 Gemini 的一等凭据,某个账号的 key(连同其它长得像凭据的条目)会被深合并进每一个使用通用配置的 Gemini 供应商,并发往对方的 base URL——那可能是第三方中转。提取器现在跳过一切命中凭据模式的键(与 Claude 提取器同一套匹配器),前端片段校验器同步对齐,手工编辑也塞不回去。由于 Gemini 片段一旦存在就不再重提取,升级后首次启动还会执行一次性清洗:把已经泄漏的凭据从片段、从每个被合并到的供应商、从 ~/.gemini/.env 里清掉——按键名加值全等匹配,供应商自己的同名不同值 key 不受牵连——并保留 env 文件的排版与注释。清洗细节与注意事项见「升级提醒」。(#5811)
Skill 仓库安装加固:路径穿越与归档上限
从 GitHub 仓库安装或浏览 Skill 此前可能写到目标目录之外:归档条目未经归一就拼上目标路径,带 .. 的 ZIP 能逃出解压目录(zip-slip);仓库坐标从未校验,../../../releases/download/v1/evil 这样的分支名能把下载重定向到任意 release 资产——而 Skill 仓库可经不可信的 ccswitch:// 深链添加且默认启用,打开 Skills 面板就足以触发下载。来自备份恢复、同步快照与「从应用导入」的 Skill directory 值同样未经校验就拼路径,卸载可能 remove_dir_all 到受管目录之外。所有落点现在都校验目录名,仓库 owner / 名称 / 分支在唯一下载汇聚点白名单化,解压设硬上限(10,000 条目、写入 512 MB、下载 128 MB、符号链接目标 4 KB,自指链接拒绝),新错误信息四语齐全。(#5811)
深链导入确认框:看全内容,标记风险
ccswitch:// 的 MCP 导入确认框此前只渲染一行会被截断的 Command:,args、url、env 一概不显示——链接带上 command: "sh" 加 args: ["-c", "curl …|sh"] 和一个 LD_PRELOAD 环境变量,显示出来只是一个人畜无害的 sh,确认后却被写进各应用的 live MCP 文件。确认框现在把命令、每个参数、URL 与环境变量逐行渲染,换行而非截断,不会有内容被裁掉看不见(键名含 TOKEN / KEY / SECRET / PASSWORD 的 env 值以前缀加星号脱敏显示);值得多看一眼的值会被高亮并汇总进警告块:带内联执行标志的 shell 解释器(含 bash -lc、cmd /C、PowerShell -Command 缩写等组合形态)、改变进程加载行为的环境变量(LD_*、DYLD_*、NODE_OPTIONS、PYTHONPATH、PATH、代理变量等)、指向回环 / 内网 / 云元数据地址的端点。标记纯属提示、从不拦截导入——本地 Ollama 端点是再正常不过的用法。供应商确认框获得同款处理;「将立即写入所有指定应用」的警告改为无条件显示,不再受链接可控字段的门控。
深链用量脚本:默认禁用导入,代码先看后用
经深链导入的用量查询脚本是每次查用量都会执行的 JavaScript,此前可能全程没见过代码就被启用:后端把「带了代码」当作「同意执行」,确认框只显示启用 / 禁用徽标、从不显示脚本体。脚本现在默认禁用——链接必须显式携带 usageEnabled=true 才请求启用——确认框以可滚动、完整换行的代码块显示解码后的全部脚本,并警告启用后将会执行。解码失败时回落显示原始载荷,畸形脚本不可能伪装成「没有脚本」。脚本代码照常存到供应商上,审阅后可在应用内手动开启。
URL-safe Base64 曾让确认框整块变空
上面两条修的是「确认框显示得不够」,这一条修的是「确认框可以什么都不显示」。后端接受四种 Base64 变体(含 RFC 4648 §5 的 URL-safe 字母表),而前端的 atob 只认标准字母表、解不开时原样返回输入而不报错——于是同一段载荷,后端解码成功并导入,前端拿到的是一坨解不开的字符。用量脚本与系统提示词因此显示成不透明的 Base64;MCP 配置最糟:JSON.parse 失败被组件吞掉,确认框渲染成「0 个服务器」加一张空列表,而后端照常把真实条目写进 live MCP 文件。把载荷里一个 / 换成 _ 就够了——确认框变空,导入功能完好,上面两条刚补上的完整展示随之一并失效。
前端解码器现在先归一 URL-safe 字母表再解码,确认框显示的永远与将要导入的一致;共享解码器首次有了单元测试,用例内含前置自检,确保样本真的落在 URL-safe 分支上而不是碰巧两种编码相同。
这条缺陷影响 v3.8.0 起的所有版本。若你曾通过
ccswitch://链接导入过 MCP 服务器,建议检查一次——见「升级提醒」。
SQL 导入拒绝触及导入库之外的语句
导入数据库备份此前只校验文件头注释,之后整段文本直接交给 execute_batch——精心构造的备份可以 ATTACH DATABASE 在用户可写的任意位置创建 SQLite 文件,且该副作用发生在导入自身的状态校验之前,导入整体失败文件也已落地;WebDAV / S3 同步快照走的是同一条代码路径。现在外部批次执行期间安装 SQLite authorizer(结束立即卸下,应用自身的 schema 维护不受影响):ATTACH / DETACH、VACUUM、虚表创建(csvfile 这类文件后端模块能读写任意路径)以及一切 SQLite 报告为未知的动作一律拒绝——未来的新语句默认失败;PRAGMA 只放行导出器实际会写的 foreign_keys 与 user_version 两个。
通用配置片段的原型污染
应用、移除、比对通用配置片段的三个遍历器此前都会跟着 __proto__ 走进全局 Object.prototype:JSON.parse('{"__proto__":{…}}') 产出的是自有可枚举属性,合并会把攻击者指定的值写上全局原型——而 settings 表在同步时会被远端整表覆盖,恶意 WebDAV / S3 快照落地后,打开一次供应商表单就触发合并。三个遍历器现在一律跳过 __proto__、constructor、prototype;「已应用通用配置」的比对同时要求自有属性,顺带修掉一个可见怪象——{"__proto__":{}} 此前被判定为任何配置的子集。
终端启动的目录名命令注入
在外部终端恢复会话时,cd 行此前用双引号包裹工作目录、只转义反斜杠和双引号——双引号里 shell 照样展开 $(…)、反引号与 $VAR,而这个值是 CLI 会话历史里记录的真实项目路径,macOS 上目录名合法地可以包含这些字符。文件夹起了那样的名字,点「恢复」就会在你的终端里执行内嵌命令,全程无需任何被攻破的组件。三个拼 shell 行的启动器——Terminal.app、iTerm、kitty——改用 POSIX 单引号转义,任何内容都不展开(穿过 Terminal / iTerm 所需的 AppleScript 引号层同样安全);Ghostty、WezTerm / Kaku、Alacritty 本就把目录作为独立参数传递,原本安全。
GrokBuild 凭据解析不再替换或内联环境密钥
GrokBuild 凭据提取此前在配置指定的 env_key 变量未设置时回落到进程级 XAI_API_KEY——静默替换成另一个账号的 key、发往配置指向的任意 base URL;凭据现在只来自显式的内联 api_key 或 env_key 精确命名的环境变量。深链导入不再把环境变量解析成明文 api_key;只带 env_key 名字的链接会被拒绝并提示手动添加——照单全收意味着请求时仍会解析受害者的环境密钥、送往链接声明的地址。顺带修复:base URL 解析与凭据解析解耦,此前凭据缺失连 base URL 一起清空,macOS(GUI 进程不继承 shell 环境)上界面显示的地址与实际使用的不一致、用量脚本的 {{baseUrl}} 展开为空。(#5811)
文档
「在 Claude Code 中使用 GPT 模型」攻略补齐英日双语
此前仅有中文的本地路由攻略现已完整移植为英文与日文,端到端覆盖两条接入路径:第三方 OpenAI Responses 网关(API Key),以及 ChatGPT Plus/Pro 订阅经 Codex 设备码 OAuth 登录。两篇路由攻略同时改题为「用什么模型」而非「什么客户端对」——《在 Claude Code 中使用 GPT 模型》《在 Codex 中使用 Claude 模型》——所有交叉链接(含三语 v3.18.0 release notes)改为指向读者语言的版本。
用户手册:深链 usageEnabled 默认值修正
三语用户手册的深链参考此前声称 usageEnabled 默认为 true,实际默认 false、与导入器一致。手册现在写明正确默认值,并补充两个推论:导入前确认框会完整显示脚本代码;未显式 usageEnabled=true 时脚本以禁用状态导入,可稍后在应用内开启。
SECURITY.md:威胁模型与报告范围
SECURITY.md 补齐双语威胁模型与明确的范围内 / 范围外清单,报告按「谁控制这个输入」而非「值最终到了哪个 API」分诊:内置 WebView 渲染器声明为受信组件(附四条可独立验证的事实与失效触发条件);深链载荷、WebDAV / S3 恢复数据、导入文件、上游 API 响应、本地代理的入站请求全部列为不可信输入、欢迎报告。
升级提醒
本版没有数据库迁移
v3.19.0 不含 schema 迁移(版本号保持 v16),升级即用,无需等待数据重建。
Gemini 密钥一次性清洗(请读)
升级后首次启动会在常规配置提取前执行一次性的 Gemini 通用配置清洗。部分 Gemini 供应商随后可能提示缺少 API Key:条目按凭据型键名加值全等匹配删除,通常删掉的是经共享片段泄漏进来的其它供应商凭据(该供应商自己的原值在泄漏发生时已被覆盖、无法找回)——但你有意在多个 Gemini 供应商间复用的同值 key 也会被一并移除。无论哪种情况,请先轮换再重填:凡是进过共享 Gemini 片段的密钥都应视为已暴露。删除的键名与受影响的供应商 id(绝不含值)记录在 settings 表的 gemini_common_config_scrub_audit_v1 下,可据此逐一定位需要重新填写密钥的供应商。
曾用深链导入过 MCP?建议检查一次(请读)
本版之前,ccswitch:// 的 MCP 导入确认框可能显示不出即将写入的内容:参数与环境变量一概不渲染(command: "sh" 加 args: ["-c", …] 显示成一个无害的 sh),若载荷用 URL-safe Base64 编码,则整个列表显示成「0 个服务器」——而后端两种情况都照常把条目写进各应用的 live MCP 文件。这两条缺陷影响 v3.8.0 起的所有版本,本版一并修复。
利用需要你亲自打开攻击者提供的链接并点「导入」,因此绝大多数用户不受影响。如果你确实从不完全信任的来源打开过 ccswitch:// MCP 导入链接,建议在 MCP 面板逐条核对,或直接检查 ~/.claude.json 的 mcpServers(Codex 见 ~/.codex/config.toml 的 mcp_servers),确认没有你不认识的条目——MCP 服务器会在 CLI 下次启动时作为子进程执行。
深链用量脚本默认禁用
携带用量查询脚本的深链现在默认以禁用状态导入,除非链接显式携带 usageEnabled=true。依赖自动启用的链接(例如部分合作伙伴的一键配置链接)会导入脚本但不开启用量查询——审阅代码后在供应商编辑器里手动开启即可。应用内手工配置的用量脚本不受影响。
新默认模型只影响新建供应商
已保存的供应商维持创建时的模型 ID,想用新模型需手动编辑。Claude Desktop 的 opus 路由现值前进到 claude-opus-5、claude-opus-4-8 移入兼容别名槽,存量配置照常解析。
定价播种与本地定价文件
新定价行(claude-opus-5、gemini-3.6-flash、grok-4.5-build)在下次启动按「不存在才插入」追加——播种绝不覆盖你改过的价格。~/.cc-switch/model-pricing.json 创建时为空,只记录本版之后的手工改价与删价——更早的改价不会迁入,想让它们扛住数据库重建,重存一次即可。models.dev 自动同步保持关闭直到你手动开启;一旦开启,它是唯一会覆盖同名价格(内置与手工皆然)的路径。
GrokBuild 隐式环境变量回落已移除
依赖隐式 XAI_API_KEY 环境回落的 GrokBuild 供应商,现在需要显式的 api_key 或正确命名的 env_key。
Grok 官方模式用量有意延迟
官方模式的 Grok 用量会延迟约十分钟加一个同步周期出现——事件先沉淀、再与代理记录的行核对防止双计;若路由流量与官方流量在窗口内交替,部分官方轮会被跳过而不是冒险重复计数。被旧成本回填高估过的 Grok Build 行保持原值——回填只处理零成本行,从不修订已有正成本。
更新镜像自下个版本起生效
更新器端点列表内置在应用二进制里,现有安装在升级到含本改动的版本之前仍然只查 GitHub;此后优先 dl.ccswitch.io 镜像、GitHub 回落。
赞助商域名迁移不改存量供应商
已创建的供应商保留数据库中存储的旧地址,仍指向旧域名。想迁到新域名,手动修改供应商地址,或从刷新后的预设重新创建。
风险提示
SuperGrok 配额查询(本版新增)
供应商卡片的 SuperGrok 配额展示会读取 Grok CLI 自己的 OAuth 凭据(~/.grok/auth.json)并查询 grok.com 的计费端点——该端点并非公开文档化接口,其响应解析基于对现有格式的观察,xAI 调整接口后此功能可能失效(届时卡片降级为不显示配额,其余功能不受影响)。CC Switch 不会存储或修改这些凭据。
沿用的提示
xAI Grok OAuth 登录:复用官方 Grok CLI 的公开 OAuth 客户端身份,使用可能导致账号被限制或封禁——详见 v3.18.0 release notes。
Codex OAuth 反向代理:使用 ChatGPT 订阅的 Codex OAuth 反代可能违反 OpenAI 服务条款,详情见 v3.13.0 release notes。
第三方供应商路由:通过 CC Switch 本地代理把 Codex、Claude Desktop 或 Grok Build 的请求转换并转发到第三方供应商时,各供应商对计费、合规与数据留存的约束不同,请在使用前阅读目标供应商的服务条款。
用户启用上述功能即表示自行承担相关风险。CC Switch 不对因使用这些功能而导致的任何账号限制、警告或服务暂停承担责任。
致谢
这一版的安全加固几乎全部来自外部——一个 PR,加上收到的安全报告。
代码贡献
- #5811:Skill 安装的 zip-slip 与仓库坐标穿越、Gemini 通用配置密钥泄漏与一次性清洗、GrokBuild 凭据解析、多处 panic 路径修复,感谢 @zayokami。这是本版单个来源里覆盖面最广的一份工作。
- #5734:models.dev 自动定价同步,感谢 @YUZHEthefool。
- #5626:Codex fork 会话用量导入提速,感谢 @ayanamislover(与 @SaladDay 共同署名)。
安全报告
本版「安全加固」里的四条修复来自私下发来的安全报告。感谢 23pds(SlowMist 慢雾)与 zues devil——逐条归属如下:
- 深链导入确认框只显示一行会被截断的
Command:——args、url、env一概不渲染,sh -c加LD_PRELOAD的载荷在界面上看起来只是一个sh。这是本版影响面最大的一条。(23pds,SlowMist) - 导入 SQL 备份未受约束——
ATTACH DATABASE能在用户可写的任意位置创建文件,且副作用发生在导入自身的校验之前。(zues devil) - 外部终端启动的目录名命令注入——
cd行用双引号包裹,$(…)照常展开,而这个值是会话历史里记录的真实项目路径。(zues devil 与 23pds 各自独立报告,分别指向内置启动器与自定义模板两条路径) - 通用配置片段合并的原型污染——三个遍历器都会跟着
__proto__走进全局Object.prototype。(23pds,SlowMist)
报告同时促使我们补齐了 SECURITY.md 的威胁模型与报告范围——在此之前,这个项目只写了怎么报告,没写什么算漏洞。
其余两条深链修复(用量脚本默认禁用、URL-safe Base64 绕过)是在审查上述修复本身时发现的,不在原始报告内。
问题反馈
感谢在 #4465 与 #5663 中反馈代理读图撑爆上下文的用户——本版最重要的代理修复来自这些真实场景的复现线索。
下载与安装
访问 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.19.0-Windows.msi |
推荐 - MSI 安装包,支持自动更新 |
CC-Switch-v3.19.0-Windows-Portable.zip |
便携版,解压即用,不写入注册表 |
Windows ARM64 设备请选择文件名中带 arm64 标识的对应制品。
macOS
| 文件 | 说明 |
|---|---|
CC-Switch-v3.19.0-macOS.dmg |
推荐 - DMG 安装包,拖入 Applications 即可 |
CC-Switch-v3.19.0-macOS.zip |
解压后拖入 Applications,Universal Binary |
CC-Switch-v3.19.0-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.19.0-Linux-x86_64.AppImage/.deb/.rpmCC-Switch-v3.19.0-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 |
v3.18.0
2026年07月21日
CC Switch v3.18.0
这一版你可以做两件全新的事:把 xAI 的 Grok CLI(Grok Build)交给 CC Switch 管理——它成为第八个受管应用,供应商一键切换、MCP / Skills 同步、代理接管与用量统计一应俱全;以及把 Grok 接进 Claude Code、Claude Desktop 和 Codex——既可以直接用 xAI Grok 账号登录(设备码授权、无需 API Key,跑你的 Grok 订阅,Codex 侧自带严格网关兼容层,codex 0.142+ 也能跑通),也可以用 xAI API Key 接入(Codex 有原生 Responses 直连预设,Claude Code 可走本地路由)。同样重要的是一波修复:v3.17.0 引入的 Codex 用量双计已修,升级后自动重建数据,看板数字恢复真实;codex 0.144.5+ 因模型目录无法启动的问题已修;Windows 上切换供应商不再闪黑窗、不再卡住界面。诊断日志也从「每次启动清空」变为跨重启持久保留、按大小轮转、全面脱敏,界面崩溃会落盘留证而不再只剩一片白屏。
重点内容:你现在可以
- 管理 Grok Build(xAI 的 Grok CLI):像管理 Claude Code / Codex 一样添加、导入、一键切换 Grok Build 的供应商;MCP 服务器与 Skills 双向同步、提示词首启自动导入、会话管理与用量看板全覆盖;还可以走本地代理接管,获得独立的路由、failover 与计费。
- 把 Grok 接进 Claude Code / Claude Desktop / Codex——账号登录与 API Key 双路径:订阅用户在「设置 → OAuth 授权中心」用设备码完成 xAI 账号登录(支持多账号),三个客户端直接跑你的 Grok 订阅、全程无需 API Key;按量付费用户则用 xAI API Key 接入——Codex 有现成的「xAI (Grok)」预设原生直连
api.x.ai,Claude Code 可按本版新攻略走本地路由接入。默认模型均为grok-4.5。 - 把 Codex 的用量数字修回真实值:v3.17.0 的 fork / 子代理双计问题已在解析器层根治;升级后首次启动自动备份并重建 Codex 用量,用量页里也新增了手动「重建 Codex 用量」按钮。注意首次启动时历史记录是逐渐修复的——看板数字先变少、再随后台重导逐步回填,属预期行为(见「升级提醒」)。
- 放心升级 codex CLI:codex 0.144.5 起严格解析模型目录导致的「无法启动」已修复,生成目录会自动补齐解析器必需字段。
- 在 Windows 上顺滑切换:切换供应商 / 开关接管不再闪过黑色控制台窗口,也不再卡住界面约 2 秒(卡顿修复对全平台生效)。
- 更放心地排查与分享日志:诊断日志跨重启保留(20 MB × 4 轮转)、所有出口统一脱敏——URL 凭据、请求响应体、敏感请求头都不会再落盘;界面崩溃有错误卡片和重载按钮,错误详情写入磁盘。
- 多轮重推理、并行工具调用不再翻车:Responses↔Chat 桥修复了推理内容错挂、并行工具调用 ID 丢失 / 乱序、工具 schema 为 null 被严格上游整单拒绝三类问题。
- 用上 Kimi K3:Codex / Hermes / OpenClaw / OpenCode 的 Kimi 开放平台预设加入 K3(1M 上下文),内置定价同步入库,用量不再显示 $0。
使用攻略
本版新能力主要落在供应商预设、「设置 → OAuth 授权中心」与用量看板里,建议结合以下文档了解:
- xAI Grok 账号登录(设置 → OAuth 授权中心):设备码登录流程、多账号管理与集成边界说明;使用前请先阅读下方「风险提示」中的客户端身份披露。
- 在 Claude Code 中使用 GPT 模型(本地路由攻略):本版新增的中文分步攻略。Claude Code 始终对本地
/v1/messages路由说 Anthropic Messages 协议,由本地代理把每个请求转换成上游的 Responses 协议——网关 API Key、xAI 这类原生 Responses 端点,或 ChatGPT 订阅的 Codex 服务都适用。 - 在 Codex 中使用 Claude 模型(本地路由攻略):本版新增的三语分步攻略,配合 v3.17.0 的「原生 Anthropic Messages 上游」功能,把 Codex 接到任何只提供
/v1/messages的 Claude 系网关。 - 用量统计:了解用量看板的数据来源与统计口径。本版修复用量双计并新增「重建 Codex 用量」维护操作。
Warning
唯一官方渠道声明(请务必阅读)
CC Switch 是完全免费、开源的桌面应用,不会向用户收取任何费用。请仅通过下列官方渠道获取本软件:
| 类别 | 唯一官方 |
|---|---|
| 官网 | ccswitch.io |
| 源码 | github.com/farion1231/cc-switch |
| 下载 | GitHub Releases |
| 作者 | @farion1231 |
| 举报山寨 | GitHub Issues |
任何向你收费、要求充值、或索取登录凭据的"CC Switch"网站或客户端均为假冒。如果你被诱导支付了费用,请立即停止操作并通过 GitHub Issues 反馈。
概览
CC Switch v3.18.0 的两条主线都围绕 xAI Grok。第一条是 Grok Build 加入受管应用:xAI 的 Grok CLI(live 配置 ~/.grok/config.toml)成为与 Claude Code、Claude Desktop、Codex、Gemini CLI、OpenCode、OpenClaw、Hermes 并列的第八个受管应用——供应商添加 / 导入 / 一键切换、MCP 与 Skills 双向同步、深链导入、独立预设列表,以及带专属路由命名空间的代理接管;配套的「Grok 官方」条目支持官方登录态识别与导入,CC Switch 绝不触碰官方凭据。第二条是 xAI Grok 账号 OAuth 登录:设备码授权替代 API Key,本地代理逐请求注入访问令牌,Claude Code / Claude Desktop 侧完成 Anthropic Messages → xAI Responses 转换;Codex 侧则提供受管 OAuth 预设并自带兼容层——codex 0.142+ 发出的 ChatGPT 后端私有形态(namespace 工具声明、私有字段)会被确定性地展平与剥离,严格解析的 xAI 网关不再返回 422;API Key 用户则另有一条「xAI (Grok)」原生 Responses 直连预设,不经任何转换。
围绕正确性,本版集中修复了 v3.17.0 的 Codex 用量双计:fork / 子代理日志开头对父线程历史的重放不再被当作新用量导入(解析器改为只认显式父身份 + 令牌签名对齐),升级后自动执行一次性用量重建(schema v16),用量页新增手动重建按钮;代理侧用量记录改为幂等(同一响应重放不再堆叠重复行),大量会话导入时用量页不再卡死。Codex 转换层另有四处修复:工具 schema 归一为 object 类型、推理内容跨轮前向附挂、流式并行工具调用保 ID 保序、生成的模型目录补齐 codex 0.144.5+ 必需字段。诊断体系也走向成熟:日志跨重启持久、按大小轮转、所有出口脱敏,界面崩溃被错误边界捕获并落盘。此外还有 Kimi K3 预设与定价、OpenClaw 预设成本修正、SudoCode.us 回归、托盘首启语言跟随系统等一批改进。
发布日期:2026-07-21
更新规模:52 commits | 217 files changed | +21,452 / -6,285 lines
新功能
Grok Build:第八个受管应用
xAI 的 Grok CLI(Grok Build,live 配置 ~/.grok/config.toml)现在是 CC Switch 的一等公民:供应商添加 / 导入 / 一键切换(切换后提示重启 Grok Build 生效)、应用显隐与配置目录覆盖设置、会话管理与用量看板覆盖、提示词首启自动导入、ccswitch:// 深链导入供应商,以及本地代理接管——拥有专属的 /grokbuild/v1/responses 路由命名空间、独立的 failover 队列与按应用代理设置;转发复用 Codex 的 Responses 通路,但绝不与 Codex 共享供应商命名空间或熔断状态。
MCP 服务器与 Grok 的 [mcp_servers] 表双向同步,方言差异已被抹平:Grok 靠 command / url 推断传输类型且用 headers 字段,导出时会剥掉显式 type 并把 http_headers 重命名为 headers,导入时反向推断回来。Skills 也获得 Grok Build 启用开关。
预设方面刻意没有借用 Codex 列表(早期版本曾把国产直连供应商和 Codex 默认模型漏进 Grok 表单),而是独立整理了一份:只收录真正承载 Grok 模型的聚合与中转站,默认模型归一为 grok-4.5(命名空间路由站为 x-ai/grok-4.5)。工具面板安装 Grok 优先走 xAI 官方安装器(x.ai/cli/install.sh / install.ps1),npm 包 @xai-official/grok 作为兜底;被确认是原生安装的走 grok update 自更新,npm 安装保持 npm 锚定更新——自更新门控在「确定检测为原生」上,绝不会误伤另一种安装。四语界面文案同步就位。(#5453)
Grok 官方登录:识别、导入与保护
新增「Grok 官方」供应商条目,对应 Grok CLI 自带的 xAI OAuth 登录:选中它会隐藏连接字段并写入一个空的 ~/.grok/config.toml,CC Switch 从不存储、也从不触碰官方凭据。live 配置的读取、备份与官方态写入改用仅语法级的 TOML 校验,官方登录态(空配置)可以正常往返;Grok 处于官方登录态时「从 live 导入」会得到「已设 Grok 官方为当前」而不是报错,与 Codex 行为一致。官方态识别刻意只接线到手动导入命令——启动时的自动导入器仍会拒绝官方态配置,所以你删掉的「Grok 官方」条目绝不会在下次启动时复活。对官方登录配置的代理接管会被自动跳过,手动路径给出明确拒绝,与现有「不代理官方供应商」的策略一致。
用 xAI Grok 账号登录:Claude Code 与 Claude Desktop
Claude Code 与 Claude Desktop 新增「xAI (Grok)」预设,用 OAuth 设备码登录代替 API Key:请求经本地代理完成 Anthropic Messages → xAI Responses API 转换并逐请求注入访问令牌,各档默认模型都是 grok-4.5(Claude Desktop 预设把 claude-* 形式的角色 ID 映射到上游 grok-4.5,以通过 Desktop 的第三方模型校验)。
「设置 → OAuth 授权中心」新增 xAI 区块:设备码登录(用户码带复制按钮、验证链接、等待 / 取消 / 重试)、多账号与默认账号选择、按账号移除、重授权徽标——刷新令牌被吊销的账号会以「已过期」状态保留可见而不是消失,授权状态每 15 秒自动刷新,服务端吊销会自己浮现出来。
集成边界是钉死的:无论表单里的端点 / 格式字段怎么改,上游始终是 https://api.x.ai/v1/responses(Responses 格式);OAuth 端点经 OIDC 发现解析,但强制校验为 https 的 auth.x.ai;刷新令牌存于 ~/.cc-switch/xai_oauth_auth.json(Unix 上 0600;访问令牌只存内存);OAuth 错误响应体绝不进入错误信息或日志。grok-4.5 定价($2 输入 / $6 输出 / $0.50 缓存读,每百万 token)同步入库,用量不再记 $0,存量数据库下次启动自动补行。四语文案同步。使用前请阅读「风险提示」中的客户端身份披露。
不用 OAuth、只有按量付费的 xAI API Key?同样能接进 Claude Code:xAI 的 API 端点就是标准 Responses 协议,把它当作一个普通的 Responses 供应商添加——自定义供应商填 https://api.x.ai/v1 与 API Key、上游格式选 Responses,经本地路由完成 Anthropic Messages ↔ Responses 转换,与〈在 Claude Code 中使用 GPT 模型〉攻略是同一套玩法。Codex 侧则有现成的 API Key 预设,见下一节。
Codex 直连 xAI:OAuth 受管与 API Key 原生双预设
Codex 获得两条直连 xAI 的路——有 Grok 订阅走 OAuth 受管,有 API Key 走原生直连:
- 「xAI (Grok) OAuth」受管预设:让 Codex 跑在 Grok 订阅上。表单隐藏密钥 / 端点 / 格式字段、显示账号选择器,「获取模型」用已登录账号发起;供应商被钉死为原生 Responses,base URL 与逐请求令牌由代理强制执行——改了也会被忽略,受管路由无法被重定向。由于 codex 0.142+ 会发出 ChatGPT 后端私有的请求形态(
type:"namespace"工具声明会让 xAI 严格解析器直接 422,另有prompt_cache_retention、safety_identifier、external_web_access、additional_tools载体字段和 grok-4.5 不支持的采样参数),OAuth 路由在原生透传上加了一层兼容层:namespace 工具被展平为顶层 function 工具(与 Chat 路径同款 sha256 截断命名)、响应侧流式与非流式都还原回 namespace 形态,不支持的字段被剥除——全部是确定性的字段删除 / 结构提升,绝无语义改写,prompt 缓存前缀保持稳定。兼容层只门控在 xAI OAuth 供应商类型上,任何其它供应商的流量都不受影响。 - 「xAI (Grok)」API Key 预设:直连
api.x.ai/v1的原生 Responses,自带 500K 上下文的grok-4.5目录条目。该预设不会应用上述 xAI 专属兼容转换——codex 0.142+ 的 API Key 用户仍可能撞上 xAI 的严格解析器,OAuth 预设才是完全兼容的路径。
xAI OAuth 的令牌失败被归为不可重试错误,failover 绝不会把你的对话悄悄挪到另一个 Grok 账号上。
界面崩溃捕获:错误落盘与重载页
React 错误边界现在包住整个界面(包括数据库恢复界面):渲染进程崩溃时显示「界面出错了」卡片和重载按钮,而不是一片白屏;全局 error / unhandledrejection 处理器把渲染端错误持久化到磁盘——此前一次 JS 崩溃在盘上零证据。前端写出的所有日志经过两层脱敏:结构化序列化器按敏感属性名(tokens / apiKeys / credentials 等变体归一匹配,整值含嵌套对象一起隐藏)与值形态(令牌前缀、PEM 头、高熵不透明串)脱敏,再经唯一文本出口的有序正则链覆盖 URL 查询值与凭据、认证头与 scheme、命名密钥容器(双重编码的 JSON 也覆盖)。字符串形态到达的 JSON 会被重新解析后做结构化脱敏;超大结构化输入整体丢弃而非截断——截断的 JSON 串会退化到较弱的文本正则,可能泄漏。设置里的开关文案也改为名副其实:「应用诊断日志」(cc-switch.log)与代理的「记录请求用量」(统计数据库,本来就不是文本日志)。四语同步。
「重建 Codex 用量」维护按钮
用量看板的维护区新增「重建 Codex 用量」:备份数据库后,只清除 codex_session 来源的明细行、对应的 _codex_session 日汇总与 Codex 同步游标,然后用修正后的解析器从头重导所有 rollout 文件——这是被下述双计 bug 污染的数据库的恢复路径,也是父日志恢复后延迟 fork 文件的重试路径。手动重建在备份写不出时会硬失败(自动迁移版只告警,因为在升级后因备份目录不可写而卡死启动是更糟的结局);整个「备份 → 重置 → 重导」序列持有会话同步锁,60 秒后台同步无法与清除交错;完成时保证恰好发出一次前端刷新通知——包括重导为零行或失败的路径——看板绝不会停留在重置前的数字上。游标清理按路径形态匹配(sessions / archived_sessions 段下的 rollout-{uuid} 文件名),旧 CODEX_HOME 下记录的游标也能清到。四语同步。
会话导入可观测性:延迟文件与疑似重复
会话同步结果现在报告 filesScanned、deferredFiles——父日志缺失或父标记冲突的 fork rollout 会被搁置且不写游标,等后续同步或手动重建重试,而不是靠猜导入——以及 suspectedDuplicates:插入后逐行探测是否已存在同指纹行(走 idx_request_logs_dedup_lookup_expr 表达式索引),每次命中记一条警告。双计 bug 未来若复发,会在日志里自己喊出来,而不是无声地吹大总数。
Kimi K3 预设与定价
Codex / Hermes / OpenClaw / OpenCode 的 Kimi 开放平台预设加入 Kimi K3(1M 上下文窗口),追加在 K2.7 Code 之后,现有默认模型行为不变。内置定价表新增 kimi-k3(官方牌价 $3 输入 / $15 输出 / $0.30 缓存读,每百万 token)与裸 k3 别名——Kimi For Coding 订阅上报的模型短 id 是 k3,否则匹配不到任何定价行(与现有 hunyuan-hy3 / hy3 同款先例)。存量数据库下次启动自动补齐两行,不碰用户改过的定价。
SudoCode.us 回归,与 SudoCode.chat 并存
两家恰好同名「SudoCode」的无关公司现在是两个独立预设:赞助商更名为「SudoCode.chat」,此前被原位替换掉的「SudoCode.us」带着原有端点、模型与图标回归,Hermes slug 也做了区分,两者可在累加式的 ~/.hermes/config.yaml 中共存。算上新的 Grok Build 预设列表,SudoCode.chat 覆盖七个应用、SudoCode.us 覆盖全部八个。
变更
诊断日志:跨重启持久、按大小轮转、绝不记录密钥
cc-switch.log 不再在每次启动时被清空——过去能解释崩溃的日志,等应用重开时已经没了——改为 20 MB 轮转、保留 4 个归档(上限约 100 MB,对比过去单文件可膨胀到 1 GB);此前无上限的 crash.log 改为 5 MB 轮转、保留 2 个归档,检查 / 轮转 / 追加序列在同一把锁下,并发 panic 不会丢归档。
日志持久化让明文密钥成为真实的暴露面(用户会把日志附到公开 issue 里),所以同一批改动里把后端所有日志出口都做了清洗:上游 URL 只记剥掉 userinfo / query / fragment 的形式(没有已知密钥可替换时只记 origin,因为凭据可能嵌在路径里);请求与响应体一律不记——换成字节数、短哈希或安全分类(sse / html / json-like / binary-or-encoded 等),排查转换问题的信号还在、内容没了;响应头走白名单(名单外只记名字);正在使用的密钥值(API Key、访问令牌)会从任何携带它的 URL 里被替换掉;MCP 自定义字段值一律省略。日志插件注册提前(更新器 / 启动期故障可诊断),持久化的日志级别在数据库打开后立即生效、故障时收敛到 Info,「启用诊断日志」开关现在也管前端发起的日志写入。升级前的旧日志文件不会被追溯清洗——见「升级提醒」。
预设选择器:赞助商分组,其余按名称排序
预设选择器的默认顺序改为四层:官方最前,其次首要合作伙伴,然后是赞助商预设(与 README 赞助商表同序,预设文件已物理重排对齐),最后所有其余预设按显示名字母序排列,不再按文件序。命中多层的条目只落在最早一层,不会重复出现。
预设「获取 API Key」链接更新
RunAPI、ClaudeCN、ZetaAPI、APINebula 预设的密钥申请链接更新为各家当前的注册 / 推荐页(ClaudeCN 同时迁移了域名:claudecn.top → claudecn.ai)。推荐标签仅限这些链接与 README——官网链接和 API 端点保持不动。
修复
Codex fork / 子代理不再把重放的父历史当新用量(v3.17.0 双计根治)
修复 v3.17.0 的用量膨胀:fork 一个 Codex 任务或以复制模式派生子代理时,父对话的 token 历史被当作新用量重复计入——有用户报告单日用量跳涨数十亿 token、父子行字节级相同、空 fork 背着从未消耗过的用量。fork / 子代理的 rollout 文件开头会重放父线程历史,旧解析器靠启发式找接管边界(第一个 thread_settings_applied 事件、对象形态的 subagent 来源标记):父线程自己的设置变更出现在重放里时边界落得太早,而当前字符串形态的来源标记则完全识别不到,整段父历史被原样导入。新解析器只认显式父身份——子方 session_meta 上的 forked_from_id 或 source.subagent.thread_spawn.parent_thread_id,两者冲突时搁置该文件——线程身份锚定到 rollout 文件名 UUID,加载父 rollout 自己的 fork 前 token 计数序列,用令牌签名对齐剥掉子方的重放前缀:重放事件只用于恢复累计基线,绝不插行。不带重放历史的子代理日志现在按真实用量计入,反方向的漏计(真实子代理消耗被当作疑似重放跳过)同步修复。(#5335、#5433、#5381)
代理用量记录改为幂等:响应级稳定键
终态用量事件不带消息 id 时(经本地代理的 Codex /responses 流量是常态),去重键此前回退到随机 UUID——同一上游响应的每次重试 / 重放都造一个新键,INSERT OR REPLACE 每次都堆一行新的;有用户的数据库里同一用量组合出现了 2,078 次。解析器现在从响应信封本身取键——Codex response.completed 事件的 response.id(丢弃 response.created 的 id)、Chat Completions 的 chatcmpl id、Gemini 的 responseId——并按 session:{app_type}:{provider_id}:{id} 作用域化:failover 时同一响应打到不同供应商仍按供应商各记一次、互不碰撞(Claude 保持裸 session:{id} 形态,代理行继续与会话日志导入合流)。完全没有信封 id 时,兜底从响应的用量语义做确定性 SHA-256——相同重放必须撞进同一个键,去重才成立——最终写库也从无条件 REPLACE 改为去重窗口内的「不存在才插入」。(#5496)
大量会话导入时用量页不再卡死
导入大批会话时打开用量页可能整个卡住:每插入一行就发一次刷新通知,每次通知让前端重跑全部约 10 个用量查询,这些查询又与正在逐行解析几十 MB rollout 文件的导入器争抢唯一数据库连接——在被重复行吹大的数据库上三者互相放大。现在会话同步改为每轮完成只通知一次;所有会话导入器串行在单飞锁后(手动「立即同步」排队等待运行中的一轮,而不是与之竞争);阻塞式解析挪到专用阻塞线程,不再饿死驱动界面命令的异步运行时;60 秒后台节拍错过就跳过,不再突发补跑。
codex 0.144.5+ 不再因 CC Switch 生成的模型目录无法启动
codex ≥ 0.144.5 严格解析外部模型目录,条目缺 supports_reasoning_summaries 时整个文件被拒——Codex CLI 和桌面端都起不来,删掉生成目录也没用,因为任何一次供应商保存都会按同样方式重新生成。根因是 CC Switch 从机器共享的 models_cache.json 克隆目录模板,而它的字段集取决于最后写它的那个 codex 进程——共存的旧版 codex 一直在用缺字段的形态重写缓存。生成目录现在会从内置静态模板回填解析器必需字段,且只在缺失时回填(动态值永远优先);「缺失即解析器默认值」的可选能力字段刻意不回填,语义必须保留。
Windows:切换供应商不再闪黑窗、不再卡死
Windows 上切换供应商或开关接管会闪过一个控制台窗口、界面卡住约 2 秒。三个原因、三处修复:codex debug models --bundled 探测经 cmd.exe 启动 codex.cmd,GUI 子系统应用里这会弹出自己的控制台——子进程现在带 CREATE_NO_WINDOW 创建;模型目录模板此前每次切换都重新生成——现在首次成功加载后进程级缓存(失败保持可重试,坏的首次探测不会毒化缓存),Codex CLI 每次应用运行至多启动一次;switch_provider 此前是跑在主线程上的同步命令——现在异步化、真实工作在阻塞线程上,仍由按应用切换锁串行。卡顿修复对全平台生效,闪窗修复是 Windows 专属。
工具 schema 为 null / 缺失 / 联合类型不再被严格上游整单拒绝
Codex 内置工具(如 codex_app__automation_update)声明 parameters: null(或 type: null),DeepSeek 这类严格的 OpenAI 兼容上游会对整个请求返回 400,经代理路由的工具会话直接被杀。Responses→Chat 桥现在把每个工具的 parameters 归一为 type:"object" schema:null 或缺失(含嵌套形态的缺失)变为 {"type":"object","properties":{}},非 object 的 type(含 type: null)原位纠正为 "object",顶层 oneOf 联合 schema 补根 type:"object"、分支原样保留。同样的 object 类型保证扩展到了 Codex→Anthropic 工具路径的 input_schema。已有的 properties / required 绝不丢弃。(#4706、#5315,修复 #4705、#4783)
推理模型在多轮 Codex Chat 对话中保住思考
推理模型(如 kimi-k2-thinking)走代理的 Responses→Chat 桥时,多轮历史会弄坏思考内容:每轮的 reasoning 条目被粘到上一条助手消息的尾巴上,紧随的助手轮反而没有 reasoning_content——模型会肉眼可见地中途断片。Responses 语义里推理位于它所属消息之前,桥现在把推理前向附挂到其后的助手消息或工具调用上;真正的尾部推理只在确凿的尾部(输入结束,或用户消息这样的轮次边界——此前在这里会被静默丢弃)向后附挂,并追加到已内嵌的推理之后;悬挂中的推理在边界处必被消费,绝不会跨过用户轮泄漏进后面的助手消息。(#5508)
流式并行工具调用保住 ID 与顺序
Chat→Responses 流式桥的两个 bug 会弄坏「身份分散在多个 chunk」的上游发来的并行工具调用:携带空 id 的续传增量会覆盖真实 call_id(Codex 客户端看到 call_id:"",工具结果对不上调用);工具调用各自就绪就立即发出,名字先到的靠后索引能插到靠前索引前面——并行调用被重排。现在空 id 一律忽略;发射经过连续索引闸门,严格按 Chat index 顺序放行,未识别的靠前索引没就绪就等待;流中途绝不合成假 call id(只在流终结时作为最后手段,且防御性跳过无名调用、稀疏索引照常发出)。(#5310)
受管 OAuth 供应商可靠地标记为「需本地路由」
「需路由」徽标与切换时警告此前由供应商的 API 格式推导,对受管 OAuth 供应商(Copilot、Codex OAuth、xAI)这是错误信号——它们的凭据由代理注入、与上游格式无关,原生格式的受管供应商拿不到警告、不开接管就静默失败。路由需求现在由唯一共享谓词决定:官方供应商永不需要路由,受管 OAuth 供应商恒需要,格式规则只适用于其余情况。切换时的门槛也按应用查对了就绪信号:多数应用查按应用接管状态(旧门槛只看全局代理运行标志,漏掉「代理在跑但当前应用没被接管」),Claude Desktop 继续看代理进程本身——后端接管状态没有 Claude Desktop 字段,统一按应用查会让 Desktop 永远弹警告。Claude Desktop 供应商表单对所有受管 OAuth 类型强制代理模式并锁定模型映射开关,不再只对 xAI。四语同步。
Node 装在 nvm / fnm / mise 里时工具更新可用
锚定的 npm 更新与修复命令按绝对路径调 npm,但 npm 启动器靠 #!/usr/bin/env node shebang 从 PATH 找 node——GUI 启动的应用只继承系统 PATH,不含版本管理器目录,nvm / fnm / mise 安装的工具更新静默失败。现在每个锚定 npm 调用都把 npm 自己的同级 bin 目录前置到 PATH,npm 与它的 shebang 解析到同一个 Node;Codex 自修复(卸载 + 重装)路径同样覆盖。
删除的默认 Skill 仓库不再复活
默认 Skill 仓库此前每次启动被「补齐缺失默认项」逻辑重新播种,删掉的默认仓库下次启动又静默回来。播种改为按数据库一次性,用设置标志记录;升级时已有仓库的数据库直接置标志、不再补种,现有选择不受影响。(#5356)
托盘首启语言跟随系统
设置里还没选过语言时,托盘菜单被硬编码为简体中文——英文 / 日文 / 繁中系统上主界面正确跟随系统语言、托盘却不一致,直到用户手动切一次语言。托盘现在按与前端相同的优先级从系统 locale 推导首启语言(含 zh-TW / zh-HK / zh-Hant → 繁体中文);显式选择的语言永远优先,locale 读不到时照旧回落中文。(#4355)
导入失败显示真实错误并刷新列表
每次「从 live 配置导入」失败都弹一个空错误提示,因为 Tauri 的 invoke 以后端错误字符串拒绝,而处理器从它上面读 .message。现在显示后端真实报错(带本地化的通用兜底),失败时也会刷新供应商列表——报错前已提交的副作用立即可见。
OpenClaw 预设模型成本修正为官方牌价
15 个 OpenClaw 预设条目的成本值单位错误或未换汇——cost 字段是美元每百万 token,例如 glm-5.1 记成 0.001/0.001(低估约 1000 倍,用量成本近乎 0),deepseek-v4-pro 则带着未换算的人民币值(高估)。所有条目改为官方牌价 $/M;订阅套餐与免费档端点也刻意展示牌价,套餐用户能看到自己用量的标准价值。今后从预设新建的供应商拿到修正值;已创建的供应商保持创建时的配置。
界面小修一组
- AiHubMix 图标:Codex 应用的 AiHubMix 预设此前缺品牌图标字段、渲染成通用图标,现与其它应用一致。
- 两个缺失文案键补齐:Codex「因使用 Anthropic Messages 格式需要路由」提示里的原因片段此前在非中文界面显示中文(
proxyReasonAnthropicMessages不存在于任何语言文件);供应商表单的密钥状态加载标签自 4 月起只有硬编码默认值。两者已在 zh / en / ja / zh-TW 全部补齐。
文档
Codex ↔ Claude 双向路由攻略
两篇新攻略把「Codex 客户端用 Claude 模型」「Claude Code 客户端用 Responses 供应商」补成了双向:
- 在 Codex 中使用 Claude 模型(中 / 英 / 日三语,含截图):配合 v3.17.0 的原生 Anthropic Messages 上游,把 Codex 接到 Claude 系
/v1/messages网关;v3.17.0 的 release notes 已回链本攻略。 - 在 Claude Code 中使用 GPT 模型(中文,含截图):用 Responses 协议的供应商(网关 API Key,或 ChatGPT 订阅的 Codex 服务)驱动 Claude Code——Claude Code 始终对本地
/v1/messages路由说 Anthropic Messages,由代理把每个请求转换成上游的 Responses 协议。
README 赞助商更新
SubRouter 加入四语 README 赞助商表;置顶的 Kimi 赞助文案更新到 K3、横幅改由 Moonshot CDN 提供;RunAPI 权益文案刷新,赞助商行序与应用内预设顺序对齐。
升级提醒
数据库自动迁移与 Codex 用量一次性重建
从 v3.17.0 升级会连续执行三次 schema 迁移(v13 → v16):v14 重建 proxy_config 表以纳入 Grok Build(现有按应用代理设置全部保留,并新增 grokbuild 行);v15 给 MCP 服务器表与 Skills 表加 Grok Build 启用列;v16 触发一次性的 Codex 用量自动重建——数据库先备份到 backups/ 下,codex_session 数据与游标被重置,随后正常的启动同步用修正后的解析器重导全部数据。典型数据量只需数秒;实测最重的数据集(1,801 个 rollout 文件 / 1.5 GB)约 65 秒。之后的启动照旧增量。若有回退旧版本的习惯,建议先自行备份 ~/.cc-switch/cc-switch.db。
首次启动时请留意:历史记录的修复是逐渐完成的——重建随启动同步在后台进行,这段时间里用量看板的 Codex 历史数字会先清零、再逐步回填,属预期行为,不是数据丢失。重建完成后的总数通常会比升级前更小:被双计吹大的那部分被挤掉了,剩下的才是真实用量。
重建的边界
- 重建从 rollout JSONL 文件重新计算用量,源日志已被删除的历史无法重建。
- 父 rollout 缺失的 fork 文件会被搁置并报告,而不是靠猜导入;恢复父日志后运行「重建 Codex 用量」可补导。
- 历史上代理来源的重复行会永久保留——迁移只重建会话来源的数据,不存在针对过往代理膨胀的清理逻辑;幂等记录只保证从此不再产生新重复。
旧日志文件不会被追溯脱敏
诊断日志从本版起不再在启动时清空、跨重启持久保留(运行日志轮转上限约 100 MB,另有约 15 MB 崩溃日志)。早期版本写下的日志文件不会被追溯清洗,可能含有 API Key、令牌或带凭据的 URL——公开分享前请先检查升级前的旧日志。
Grok Build 安装走官方安装脚本
安装或重装 Grok Build 现在优先使用 xAI 官方安装器,安装时会外联获取 x.ai/cli/install.sh(Windows 为 install.ps1),npm 作为兜底;已有的 npm 安装继续经 npm 更新。
内置定价自动补行
新定价行(grok-4.5、kimi-k3、k3)在下次启动时按「不存在才插入」自动追加;用户编辑过的定价行绝不被覆盖。
风险提示
xAI Grok OAuth 登录(本版新增,请阅读)
本版的 xAI Grok OAuth 集成复用官方 Grok CLI 注册的公开 OAuth 客户端身份与权限范围(client_id b1a00492-073a-47ea-816f-4c329264a828,scope 含 grok-cli:access),而不是 CC Switch 自己注册的应用身份。xAI 可能不支持这种用法,使用可能导致账号被限制或封禁——风险自担。该功能完全可选:不添加 xAI 供应商,一切照旧。首次登录会创建 ~/.cc-switch/xai_oauth_auth.json(仅存刷新令牌,Unix 上权限 0600;访问令牌只存内存),并经你配置的出站代理访问 auth.x.ai 与 api.x.ai,无本地回调端口。
沿用的反向代理类提示
Codex OAuth 反向代理:使用 ChatGPT 订阅的 Codex OAuth 反代可能违反 OpenAI 服务条款,详情见 v3.13.0 release notes。
第三方供应商路由:通过 CC Switch 本地代理把 Codex、Claude Desktop 或 Grok Build 的请求转换并转发到第三方供应商时,各供应商对计费、合规与数据留存的约束不同,请在使用前阅读目标供应商的服务条款。
用户启用上述功能即表示自行承担相关风险。CC Switch 不对因使用这些功能而导致的任何账号限制、警告或服务暂停承担责任。
致谢
感谢以下贡献者在 v3.18.0 中提交的功能与修复:
- #5453:Grok Build 一等公民支持(第八个受管应用的主体实现),感谢 @YUZHEthefool。
- #5508:Responses→Chat 桥推理内容前向附挂,感谢 @ka79376046。
- #5310:流式并行工具调用保 ID 保序,感谢 @SaladDay。
- #5315:Codex 工具 parameters 归一为 object schema,感谢 @Komikawayi。
- #4706:严格 OpenAI 兼容上游的工具类型归一,感谢 @Ryan2128。
- #5356:删除的默认 Skill 仓库不再复活,感谢 @allenxu09。
- #4355:托盘首启语言跟随系统 locale,感谢 @LaiYueTing。
- #5138:后端 CI 扩展到 Linux / Windows / macOS 三平台,感谢 @zayokami。
也感谢所有反馈 Codex 用量异常、codex 新版启动失败与工具调用问题的用户——本版最重要的几个修复都来自这些真实场景里的复现线索。
下载与安装
访问 Releases 下载对应版本。
系统要求
| 系统 | 最低版本 | 架构 |
|---|---|---|
| Windows | Windows 10 及以上 | x64 / ARM64 |
| macOS | macOS 12 (Monterey) 及以上 | Intel (x64) / Apple Silicon (arm64) |
| Linux | 见下表 | x64 / ARM64 |
Windows
| 文件 | 说明 |
|---|---|
CC-Switch-v3.18.0-Windows.msi |
推荐 - MSI 安装包,支持自动更新 |
CC-Switch-v3.18.0-Windows-Portable.zip |
便携版,解压即用,不写入注册表 |
Windows ARM64 设备请选择文件名中带 arm64 标识的对应制品。
macOS
| 文件 | 说明 |
|---|---|
CC-Switch-v3.18.0-macOS.dmg |
推荐 - DMG 安装包,拖入 Applications 即可 |
CC-Switch-v3.18.0-macOS.zip |
解压后拖入 Applications,Universal Binary |
CC-Switch-v3.18.0-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.18.0-Linux-x86_64.AppImage/.deb/.rpmCC-Switch-v3.18.0-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 |
v3.17.0
2026年07月14日
CC Switch v3.17.0
这一版带来一个盼了很久的能力:「项目」一键切换——把当前的供应商、MCP、Skills、记忆文件整套保存为命名快照,在标题栏或托盘里一键换成另一套,切换时还会自动把你离开的项目当前状态存回去。Codex 侧同样收获颇丰:官方 ChatGPT 订阅账号现在也能走本地代理路由,享受与第三方供应商相同的路由与用量统计;GPT-5.6 全家的上下文窗口与 Sol / Terra / Luna 三档定价一步到位;还新增了原生 Anthropic Messages 上游格式——所在企业禁用了 Claude Code、但没有禁用 Claude API?现在可以在 Codex 里直接用上 Claude 系列模型。此外是一大波正确性修复:上游失败不再变成「空回复」、缓存写入不再被双重计费、删掉的 MCP 服务器不再复活、Kimi For Coding 的 256K 窗口终于真正生效。
使用攻略
本版的新能力主要落在主页顶部的项目切换器、Codex 供应商表单与用量看板里,建议结合以下文档了解:
- 在 Codex 里使用 Kimi(本地路由攻略):本版新增的分步攻略。较新的 Codex CLI 走 OpenAI Responses 协议,而 Kimi 开放平台与 Kimi For Coding 暴露的是 Chat Completions 端点,直连通常 404;攻略讲解如何用内置的
Kimi/Kimi For Coding预设配合本地路由完成协议转换。 - Codex 官方登录保留:了解 CC Switch 如何在切换第三方供应商时保留你的官方 ChatGPT 登录。本版在此基础上更进一步——官方账号本身也可以走代理路由(见下方「新功能」)。
- 用量统计:了解用量看板的数据来源与统计口径。本版修正了缓存写入计费、补齐了 Codex 子代理会话统计,并新增 GPT-5.6 与混元 Hy3 定价。
Warning
唯一官方渠道声明(请务必阅读)
CC Switch 是完全免费、开源的桌面应用,不会向用户收取任何费用。请仅通过下列官方渠道获取本软件:
| 类别 | 唯一官方 |
|---|---|
| 官网 | ccswitch.io |
| 源码 | github.com/farion1231/cc-switch |
| 下载 | GitHub Releases |
| 作者 | @farion1231 |
| 举报山寨 | GitHub Issues |
任何向你收费、要求充值、或索取登录凭据的"CC Switch"网站或客户端均为假冒。如果你被诱导支付了费用,请立即停止操作并通过 GitHub Issues 反馈。
概览
CC Switch v3.17.0 是 v3.16.5 之后的一个功能大版本,核心是**「项目」**:你可以把 Claude Code / Claude Desktop / Codex 当前的供应商、MCP、Skills、记忆文件状态保存为命名快照——比如编程目录一套「开发」、写作绘图目录一套「创作」——在主页顶部的切换器或托盘的「项目」子菜单里一键整套切换——切换前会自动把你正要离开的项目状态存回去,所以项目里保存的永远是你上次离开时的样子。第二条主线是 Codex:官方 ChatGPT 订阅账号现在也能走本地代理路由接管(不需要 API Key,Codex 自己的登录凭据原样透传,绝不覆盖你的官方登录);配合修正后的客户端身份,gpt-5.6-luna 这类最新订阅模型不再误报 404;GPT-5.6 的 372K 上下文窗口注入、Sol / Terra / Luna 三档定价(含 1.25 倍缓存写入费率)与预设默认模型同步就位;Codex 上游格式还新增了原生 Anthropic Messages 协议——它瞄准一个很现实的场景:不少企业禁用了 Claude Code 客户端、但并没有禁用 Claude API,这些用户现在可以让 Codex 直连 Claude API(或任何只提供 /v1/messages 的网关),在 Codex 里照常使用 Claude 系列模型。
围绕日常使用的正确性,本版做了三波集中修复。代理桥:上游在 2xx 里返回的语义失败不再被转成空回复,而是触发 failover;推理内容、工具结果、system 角色跨 Responses↔Anthropic 桥无损往返;提示缓存断点注入更充分,长对话不再每轮全价重发。用量计费:缓存写入 token 此前被同时按输入价和缓存创建价双重计费,现已修正(数据库升级到 schema v13 以保证历史数据口径不乱);用量与配额查询遇到网络瞬时失败会自动重试、不再把失败体当真实数据缓存。Codex config.toml:在应用里删掉的 MCP 服务器不再随供应商切换复活;live 文件解析失败时同步宁可报错也不再清空整个文件;「使用通用配置」的合并挪到后端执行,注释与键序不再被打乱。另有 Kimi For Coding 256K 窗口真正生效、Codex 子代理与免费版配额统计补齐、智谱团队套餐配额查询、OpenCode 表单增强与一批预设更新。
发布日期:2026-07-13
更新规模:69 commits | 172 files changed | +21,067 / -2,464 lines
重点内容
- 「项目」一键切换:把供应商、MCP、Skills、记忆文件整套保存为命名快照(比如编程一套、写作绘图一套),从主页顶部或托盘一键切换;切换时自动保存离开项目的当前状态。覆盖 Claude Code、Claude Desktop、Codex 三个作用域,互不干扰。
- Codex 官方账号也能走代理路由:ChatGPT 订阅登录的 Codex 会话可通过本地代理路由,获得与第三方供应商一致的路由与用量统计;官方登录凭据绝不被覆盖或存储。
- GPT-5.6 全面就位:Claude Code 走 Codex 接管时自动注入 372K 上下文窗口;Sol / Terra / Luna 三档定价入库(缓存写入按 1.25 倍输入价计费);相关预设默认模型升级到 gpt-5.6 家族;修正客户端身份后
gpt-5.6-luna不再误报 404。 - 在 Codex 里使用 Claude 系列模型(原生 Anthropic Messages 上游):不少企业禁用了 Claude Code 客户端、但没有禁用 Claude API——现在把 Codex 供应商的上游格式选为
anthropic,即可直连 Claude API 或任何只提供/v1/messages的网关,本地代理完成 Responses↔Anthropic 双向转换,自带标准 5 分钟提示缓存注入。 - 代理桥正确性修复:上游失败 fail-closed 触发 failover 而非空回复;推理 / 工具结果 / system 角色跨桥无损;缓存写入不再双重计费;断点注入更充分。
- Codex config.toml 加固:删掉的 MCP 服务器不再复活;解析失败时 MCP 同步宁可报错也不清空文件;通用配置合并保留注释与键序。
- Kimi For Coding 256K 真正生效:此前的 262144 压缩窗口从未实际生效(被 Claude Code 的 200K 默认钳回),本版补齐模型别名路由与窗口注入;存量供应商需重新套用预设(见「升级提醒」)。
新功能
「项目」:整套配置的命名快照与一键切换
这是本版的头号功能。你可以把当前的供应商、MCP、Skills、记忆文件状态保存为一个命名「项目」,之后在主页顶部的项目切换器或托盘的「项目」子菜单里一键整套切换,不必再逐项手动勾选。
举个典型场景:你有一个目录用来编程、另一个目录用来写作或绘图。编程时要的是一套供应商,配上文件系统 / GitHub 这类 MCP、代码审查 Skills 和写着工程约定的记忆文件;写作或绘图时往往换另一家供应商、另一组 MCP 和完全不同的提示词。以前在两件事之间来回,意味着切供应商、逐个开关 MCP 和 Skills、再改记忆文件;现在把两套状态分别存成「开发」和「绘图」两个项目,换目录干活时在 CC Switch 里点一下,整套配置随之就位。
项目功能覆盖 Claude Code、Claude Desktop 与 Codex 三个作用域(Claude Desktop 由 CC Switch 管理的维度只有供应商,因此其快照只含供应商、应用时不动其它维度)。
几个值得了解的设计:
- 项目是全局实体、按作用域切换:同一个项目在 Claude Code / Claude Desktop / Codex 三侧各自记录自己的当前项目与快照槽位,在 Codex 页签切换项目绝不会动到 Claude 的配置。
- 切换即自动保存:切换项目前,会先把你正要离开的项目在当前作用域下的状态自动存回去——所以项目里保存的永远是你上次离开它时的样子,不需要(也没有)手动「更新快照」按钮。
- 应用是尽力而为的:套用快照复用现有的切换原语(先切供应商,再做 MCP / Skills 的最小差异开关,最后启用记忆文件);快照里引用的某项如果已被删除,只会告警跳过,不会整体回滚。
- 自动关闭代理接管:套用项目前会先关闭该作用域内各应用的代理接管,避免快照状态和路由状态打架。
不用项目功能的用户可以在「设置 → 主页显示」里关闭「显示项目切换」,只隐藏主页入口,托盘子菜单与项目数据不受影响。底层由新的 profiles 表支撑(数据库自动迁移,无需手动操作),四语界面文案同步就位。
Codex 官方 ChatGPT 账号的代理路由接管
用 ChatGPT 订阅(OAuth 或 API-key 登录)的 Codex 会话,现在也可以走 CC Switch 的本地代理路由了——官方账号流量获得与第三方供应商一致的路由、格式转换与用量统计。在供应商面板或托盘里选择内置的「OpenAI Official」条目进行接管即可(如果你此前删掉过它,添加供应商时会自动恢复);路由中的卡片徽标显示「官方账号路由中」。
实现上刻意做到零凭据存储:不向 auth.json 写任何占位密钥,而是往 config.toml 投影一个指向本地代理的专用 model_provider,Codex 把自己的 ChatGPT 授权头原样发给代理、代理原样透传给官方端点——codex-official 这一行的凭据永远是空的。官方登录本身绝不被覆盖:接管时 OAuth / API-key 材料会保留进备份;官方端返回的 401 / 403 被视为不可重试错误,failover 绝不会把你的对话悄悄挪到另一个账号上。相应地,「切换时保留 Codex 官方登录」这个设置项的文案已更新——路由接管场景下官方登录总是被保留,该开关现在只管不走路由的第三方直切。
GPT-5.6:上下文窗口、预设默认与三档定价
围绕 GPT-5.6 家族做了三件事:
- 372K 上下文窗口注入:Claude Code 经代理接管路由到 ChatGPT Codex(Codex OAuth)后端时,自动往生效的
settings.json注入CLAUDE_CODE_MAX_CONTEXT_TOKENS与CLAUDE_CODE_AUTO_COMPACT_WINDOW(均为 372000),让 Claude Code 不再按默认 200K 窗口过早自动压缩、也不再撑爆上游。注入门控严格:只有当所有已配置的模型键都指向 gpt-5.6 家族时才注入(gpt-5.5 的目录窗口在 272K / 372K 间摇摆,故意不继承);你手动设置的值永远优先;切走时按镜像条件剥离,程序默认永远不会固化进你的供应商配置。 - 预设默认模型升级:Claude Code 与 Claude Desktop 的 Codex OAuth 预设默认路由升级到 gpt-5.6 家族(haiku →
gpt-5.6-luna,主模型 / sonnet / opus →gpt-5.6),自定义 Codexconfig.toml模板的默认模型同步跟进。 - Sol / Terra / Luna 三档定价:用量看板按官方价目为三档入库——Sol 5 / 30 / 0.50、Terra 2.50 / 15 / 0.25、Luna 1 / 6 / 0.10(美元每百万 token,输入 / 输出 / 缓存读)。与 5.5 及更早版本不同,5.6 家族的提示缓存写入按 1.25 倍输入价计费(Sol 6.25 / Terra 3.125 / Luna 1.25),已按此入库并自动修复此前按 0 计的存量行;裸
gpt-5.6及各 effort 后缀变体按 Sol 价对齐。
在 Codex 里使用 Claude 系列模型:原生 Anthropic Messages 上游
这个功能来自一个很现实的诉求:不少企业出于合规策略禁用了 Claude Code 客户端,但并没有禁用 Claude API。对这些用户来说,模型本身是可用的,缺的只是一个被允许的客户端——现在 Codex 可以补上这个位置。在 Codex 供应商的上游格式选择器里选新增的 anthropic,即可直连 Claude API 或任何只提供原生 Anthropic Messages 协议(/v1/messages)的网关,本地代理完成 Responses↔Anthropic 的请求、响应与流式双向转换,你在 Codex 里照常对话、照常用工具,背后跑的是 Claude 系列模型。表单配套提供:认证字段选择器(ANTHROPIC_AUTH_TOKEN 发 Authorization: Bearer,默认;或 ANTHROPIC_API_KEY 发 x-api-key)、可选的 Claude Code 客户端伪装开关(默认关闭)、以及按供应商的最大输出 token 覆盖(Codex 不发 model_max_output_tokens,不设置时回退到保守的 8192,可能截断长回复或重思考回复)。转换桥自动注入标准 5 分钟提示缓存标记(系统提示、工具与历史走缓存而非每轮全价重发),支持 [1m] 长上下文标记并补发对应 beta 头,截断的流会如实上报为未完成而不是伪装成功。(#5071)
Codex 供应商表单新增「默认模型」输入框
config.toml 顶层的 model 键现在是表单里的一个可编辑字段:新模型(如 gpt-5.6)发布后,你可以直接把现有供应商指过去,不必等预设更新(预设只影响新添加的供应商)。字段与 TOML 编辑器双向同步,候选列表来自模型映射目录与供应商 /models 端点的并集,值不在目录里时提供一键「加入映射」。显式填写的值永远优先于映射第一行的隐式回填;模型名与 base_url 写入时做了 TOML 转义,杜绝 /models 返回的远端数据注入伪造配置行的可能。
通用配置切换自动同步扩展到 Codex
v3.16.5 给 Claude 加的「切走时自动把 live 配置里的共享偏好回写到通用配置」现在覆盖 Codex 了:切走一个启用了通用配置的 Codex 供应商时,会先从它的 live config.toml 重新提取可共享部分更新到通用配置,再带给下一个供应商——你直接在运行中的 Codex 配置里改的偏好不再在切换时丢失,删掉的键也不会被悄悄注回。提取器会严格剥离供应商专属与注入内容(model / model_provider / base_url / wire_api、整个 [model_providers] 表、MCP 投影、API key 兜底字段、模型目录指针与注入的 web_search 哨兵),密钥永远不会进入共享片段。所有失败仅告警、绝不阻断切换。
Claude 子代理模型配置
Claude 供应商表单新增「子代理」模型行,写入 CLAUDE_CODE_SUBAGENT_MODEL,让 Claude Code 派生的子代理跑在你指定的(通常更便宜或更快的)模型上。支持 [1M] 标记;由于子代理模型不会出现在 /model 菜单里,该行显示「不在 /model 中展示」占位而没有显示名字段。代理接管路径与模型映射器已同步支持:请求模型与配置的子代理模型一致时原样放行,不再被折叠到默认模型;该键也被排除在共享通用配置之外,不会跨供应商泄漏。(#4830)
回退模型字段的 1M 上下文复选框
Claude 表单的回退模型字段(ANTHROPIC_MODEL)现在带上了 Sonnet / Opus / Fable 各档早已有的 1M 复选框:回退模型背后是 1M 窗口时可以如实声明,不再被静默当作 200K。勾选即在模型 id 后追加 [1M] 标记,取消即剥离。(#5124,修复 #3679)
智谱团队套餐配额查询
智谱的团队套餐(团队版 Coding Plan)走同一个配额端点但需要 ?type=2 与两个额外请求头(bigmodel-organization / bigmodel-project),个人版查询够不到。用量脚本弹窗新增「Zhipu GLM Team(智谱团队)」模板,填入 API Key + 组织 ID + 项目 ID 即可查询团队配额;三项缺一会明确提示补全。四语文案同步。(#5128)
OpenCode 表单:请求头与模型 Token 上限编辑器
OpenCode 供应商表单补上了两块此前只能手改 JSON 的配置:Headers 编辑器(供应商级 options.headers,如 OpenRouter 排行榜要求的 HTTP-Referer / X-Title,支持增删行、大小写不敏感去重)与按模型 Token 上限(model.limit.context / model.limit.output 数字输入,清空即移除)。「额外选项」块改为可折叠区,已有内容时自动展开;顺带修复了旧占位符过滤会误删真实以 option- 开头的选项键的问题。(#2907)
新增模型定价:腾讯混元 Hy3
为 2026-07-06 发布的腾讯混元 Hy3(256K 上下文)入库定价(按发布日牌价 CNY 1 / 4 / 0.25 每百万 token 折算),hunyuan-hy3 与 hy3 两个 id 都能命中,其用量不再显示 $0。注意 Hy3 实际是按输入长度分档计费,当前单价表按最低档入库,长上下文请求会低估成本,待官方计费页明确后再修正。
变更
Codex Chat 路由注入 prompt_cache_key,提升缓存命中
Codex 经本地路由转换到 Chat Completions 上游时,现在会按供应商感知地注入 prompt_cache_key:Kimi Coding 与 OpenAI 官方端点自动启用、Kimi 预设显式开启,未知的 OpenAI 兼容网关保持关闭以避免严格 schema 网关报 400。键值只取显式客户端值或真实的客户端会话 ID,绝不生成随机 UUID(那会让每个请求落到不同缓存桶、适得其反)。高级选项里提供自动 / 启用 / 禁用三态覆盖。
Codex 图片能力自动推断,去掉手动开关
生成的 Codex 模型目录现在只把 CC Switch 确认过的精确文本-only 名录内的模型声明为 input_modalities = ["text"];GPT、别名、新后缀变体和一切未知模型一律 fail-open 到 ["text", "image"]——修复了 GPT 系模型在 Codex IDE 扩展里被误报「不支持图片」的问题。整流器的「纯文本模型预检」开关继续只管代理侧的主动请求改写,不影响目录声明;目录反向导入也会把可推断的能力坍缩掉,未来名录修正或模型升级多模态时自动生效。
上下文窗口参数钉进预设,不再作为表单字段
Codex(ChatGPT / GPT-5.6)与 Kimi For Coding 预设不再在表单里展示「最大上下文 Tokens」「自动压缩窗口」两个输入框,数值直接钉死在预设 env 里(Codex 372000 / 372000,Kimi For Coding 262144 / 262144)——绝大多数用户从不需要碰这两个数字。两个键刻意保留在 env 里:显式钉住能让本地压缩触发点免疫远端实验性配置的下调。极少数想改数字的用户仍可在供应商的 JSON 编辑器里直接编辑这两个键。
供应商连通性配置简化
移除了过时的按供应商 testConfig 覆盖(超时、重试次数、降级延迟阈值):轻量的 base_url 探测现在始终使用全局连通性检查配置,自动 failover 仍完全由代理超时与熔断器的独立设置驱动。设置界面与接口命名也从「模型测试」术语统一迁移到「连通性检查」。
通用(多应用)供应商添加后自动同步
通过「添加供应商」弹窗添加通用(多应用)供应商后,现在会立即推送到各 live 目标配置,不再需要手动再点一次同步。同步失败不阻塞添加——供应商已保存但同步失败时给出非阻断的警告提示。(#2811)
预设更新
- LongCat-2.0:美团 LongCat 预设全线(Claude Code / Claude Desktop / Codex / Hermes / OpenClaw / OpenCode)从已退役的
LongCat-Flash-Chat/LongCat-2.0-Preview升级到LongCat-2.0,声明真实的 1M(1048576)上下文窗口。LongCat-2.0 是纯文本模型,代理的媒体清洗白名单已同步收录——粘贴进会话的图片会被替换为不支持标记而不是被上游硬拒。(#4838) - SudoCode:原
sudocode.us预设原位替换为sudocode.chat的新赞助商 SudoCode,覆盖六个客户端(Claude 系直连 Anthropic 透传,Codex / OpenCode / OpenClaw / Hermes 默认gpt-5.6-sol)。 - 火山 / 豆包 / BytePlus 官网链接:撤销了 v3.16.5 把这三个预设
websiteUrl改为产品主页的改动,恢复为带归因参数的活动 / 邀请链接(这是有意为之的设计)。 - Code0.ai:邀请链接更新为新的 agent 注册链接;API 端点不变。
- 删除重复的 OpenAI Compatible 预设:OpenCode 与 OpenClaw 预设列表里的
OpenAI Compatible自定义模板条目被移除——内置的custom供应商流程本就提供相同的起点,选择器里不再出现两个指向同一处的入口。存量供应商不受影响。
修复
Codex OAuth 客户端身份对齐:修复最新 ChatGPT 模型 404
用官方 Codex OAuth 账号经本地代理接管路由时,最新的订阅模型(如 gpt-5.6-luna)此前会返回误导性的 404 Model not found——明明账号有权限。根因是 ChatGPT 的 Codex 后端按 originator + version 头做模型分组路由,而 cc-switch 此前自报 originator: cc-switch 且不带版本号,被路由到一个 luna 尚未部署的分组。现在接管请求发送与真实 Codex CLI 一致的 originator: codex_cli_rs + version: 0.144.1,满足 luna 的最低客户端版本要求,经真实后端 A/B 实测确认修复。
Responses 上游失败不再变成空回复
代理把 Anthropic 格式客户端(Claude Code / Claude Desktop)桥接到 OpenAI Responses 上游时,上游藏在 HTTP 2xx 体里的语义失败(status:"failed" 对象、error 信封、首个输出前的 response.failed SSE 事件)此前会被转换成一个悄无声息的空回合。现在这些失败在重试循环内就被识别为真实错误,failover 能够换一个供应商重试;干净结束但内容不完整的流会如实标记为截断而非完成;无视 stream:true 直接返回整个 JSON 文档的网关也能被识别并展开为完整的流式生命周期;客户端历史本身格式错误时立即报错,不再拿着必败的请求把每个供应商都重试一遍。
跨 Responses/Anthropic 桥保留推理、工具结果与 system 角色
多轮工具循环里跨 Responses↔Anthropic 桥的内容不再丢失或损坏:加密的推理(reasoning)条目无损往返(往返失败会导致下一轮请求被上游拒绝的问题同步消除);流式转换器支持官方的推理事件词汇表并在网关跳过增量时从终结事件恢复工具参数;结构化工具结果的 is_error 标志、图片与 PDF 文档在两个方向都完整保留,不再被压平成一个 JSON 字符串;历史里的 system / developer 消息被正确提升为 Anthropic system,不再被静默降级成用户发言。计费上,上游请求成功但后续转换失败时用量照记,不再漏账。
缓存写入 token 不再双重计费
Codex / Gemini 类供应商上报的 input_tokens 同时包含缓存读与缓存写,而成本计算此前只减掉了缓存读——缓存写入 token 被按输入价和缓存创建价计了两次费。现在两者都会先行扣除,并且缓存写入数字在跨格式转换(Chat↔Responses↔Anthropic)时不再丢失。为了让历史数据口径不乱,数据库新增一列记录每行 input_tokens 的存储语义(schema v12→v13 自动迁移):旧行按旧口径回算、新行按新口径,Claude 类行不受影响。
更强的提示缓存断点注入
在注入 Anthropic cache_control 断点的代理路径上(Codex 接管桥与 Bedrock 原生优化器),注入器现在会更充分地使用四个断点预算:除了工具尾、系统尾与最新可缓存消息外,预算有余时再给较早的用户消息加一个锚点,让稳定前缀保持在 Anthropic 20 块回看窗口内——长的、工具密集的对话能持续命中提示缓存,而不是每轮把系统提示、工具与历史全价重发。调用方自带的断点被原样保留(绝不删除、重排或改写);注入的标记一律使用标准 5 分钟 TTL。
Kimi For Coding 的 256K 上下文窗口真正生效
Kimi For Coding 预设在 3.16.4 加的 CLAUDE_CODE_AUTO_COMPACT_WINDOW=262144 其实从未生效:Claude Code 对不认识的模型 id 按 200K 窗口封顶,且压缩窗口取 min(模型窗口, 设定值),262144 被钳回 200K。本版补齐了缺失的两环——预设同时钉上 CLAUDE_CODE_MAX_CONTEXT_TOKENS,并把各档模型显式路由到端点的 kimi-for-coding 别名(claude- 前缀 id 会让 Claude Code 无视这两个窗口参数,非 Claude 别名才是解锁大窗口的关键)。已保存的供应商在切换时也会自动注入这两个窗口默认值,但别名路由只存在于预设里——旧预设存下来的供应商实际仍是 200K,需要重新套用一次预设(见「升级提醒」)。
删除的 Codex MCP 服务器不再复活
MCP 服务器的权威数据在数据库里,Codex live config.toml 中的 [mcp_servers] 只是每次写入后重新同步的投影——但切走供应商时这份投影会被固化进供应商快照,导致你在应用里删掉的服务器在下次激活该供应商时死而复生,且逐条对账永远清不掉这个孤儿。现在切走时会把 [mcp_servers](含旧式 [mcp.servers])从存储快照中剥离,已被污染的快照在下次切走时自愈。一个可见的副作用:手写在 Codex 供应商配置里的 [mcp_servers.*] 段会在首次切走时被剥出快照——今后请通过 MCP 管理器定义 Codex 的 MCP 服务器(见「升级提醒」)。
MCP 同步更健壮:解析失败不清空文件、按应用报错
两处修复。其一,向 Codex 写入单个 MCP 服务器时,如果现有 config.toml 解析失败,旧逻辑会退到空文档再整体写回——整个文件被清空、只剩那一个 MCP 条目;现在直接返回校验错误并保持文件原样。其二,「从应用导入」此前把每个导入器的错误吞成 0,坏掉的 Codex 配置只会显示「导入了 0 个服务器」;现在逐应用尽力导入、失败时报出具体是哪个应用出了问题。切换与保存时的投影也改为只针对目标应用,一个应用的 live 文件解析失败不再连坐阻塞其它应用、也不再把已经成功的切换误报为失败。
Codex 通用配置合并保留注释与键序
Codex 供应商表单里勾选 / 取消「应用通用配置」此前走前端 TOML 实现整篇重排(解析 → 合并 → 序列化):注释被丢弃、键被重排、还会凭空多出 [model_providers] 这类空表头——就是「config.toml 老被重排」的元凶。现在合并走后端命令、与写 live 配置共用同一套合并语义,手写格式在编辑期合并中完整幸存;针对异步化引入的快速切换竞态也加了双重守卫(操作序号 + 配置基线核对),先发后至的旧结果不会覆盖新状态。
受管 Claude 接管只注入单个 auth 占位符
从第三方端点切到 Codex 受管供应商时,~/.claude/settings.json 里会同时写入 ANTHROPIC_API_KEY 和 ANTHROPIC_AUTH_TOKEN 两个占位符,导致 Claude Code 每次启动都警告「Both ANTHROPIC_AUTH_TOKEN and ANTHROPIC_API_KEY set」。现在只注入一个:Codex 受管走 ANTHROPIC_AUTH_TOKEN、Copilot 走 ANTHROPIC_API_KEY,其余 token 键一律清除。注意:升级后如果 live 配置已带着双键,由于「配置未变则跳过重写」的短路逻辑,警告可能仍在——把 Claude 路由开关关再开一次(或切换一次供应商)即可触发重写(见「升级提醒」)。(#5095,修复 #4919)
用量与配额查询:瞬时失败可自动重试、不再毒化缓存
用量与配额查询频繁出现手动刷新也清不掉的「查询失败」,根因是所有传输层失败(包括读响应体中途超时)都被折叠成了「成功但结果为失败」——前端的自动重试从不触发,失败体还被当作真实数据缓存。现在传输失败如实返回错误:react-query 自动重试生效,HTTP 429 与 5xx 一样按瞬时失败处理,保留的上次成功数据按 10 分钟窗口正常过期,失败状态下页脚保留重试入口与真实错误信息。(修复 #3820)
Codex 子代理会话用量计入本地统计
Codex 子代理(spawned agent)会话的 token 用量此前完全没进本地统计:子代理日志里携带的是父线程的 session_id,多个子代理的记录互相碰撞、被当作重复丢弃。现在解析器按每个文件自己的 thread_id 建立唯一身份,并识别子代理日志开头对父线程历史的重放、只用它恢复累计基线而不重复计费;归档日志也按文件名继承同步游标,重新解析只导入新增部分。(#5187)
Codex 免费版 30 天配额窗口正常显示
Codex 免费账号按 30 天滚动窗口计量(而非付费版的周窗口),但前端白名单和托盘分组都不认识 30_day 这个档位——免费账号唯一的档位被过滤掉后,配额页脚整个空白、托盘也不显示任何配额。现在 30 天档位在页脚和托盘都正常渲染,四语标签同步。(#4886,修复 #3651)
用量看板刷新间隔持久化
用量看板的自动刷新间隔此前是组件内状态,每次重启都重置回 30 秒。现在通过新的应用设置持久化,改动乐观生效、保存失败自动回滚。(#5057)
Fable 档模型键不再泄漏进通用配置
Fable 是 v3.16.3 加入的第四个 Claude 模型映射档,但它的 ANTHROPIC_DEFAULT_FABLE_MODEL(_NAME) 两个键漏在了供应商专属排除名单之外——某个供应商的 Fable 模型钉选可能泄漏进共享通用配置、再被注入到其它供应商。现已与 haiku / sonnet / opus 三档一样剥离,并顺带补全了 Fable 档的代理接管支持(接管时写入稳定的角色别名、切走时清理陈旧值)。(#5206,修复 #4272)
工具 schema 缺省 type 兜底与无分类供应商的 API Key 输入框
两个供应商侧修复:客户端发来的工具如果 input_schema 缺顶层 type(或干脆是空 {}),代理转换后会被严格网关拒绝,现在根 schema 自动补 type: "object"(只补根、不动嵌套子 schema);历史导入或手工构建的无分类供应商在编辑时看不到 Claude API Key 输入框的问题也已修复——现在只要不是官方 / 云厂商类供应商就显示该字段。(#5069)
GLM 5.2 纯文本模型的图片请求兜底
本地代理接管火山 Coding Plan 跑 GLM 5.2 时,请求里的图片块不再产生一个无法恢复的 400:文本-only 名录精确收录 glm-5.2(刻意不用前缀匹配,未来的多模态 glm-5.2v 不受牵连),预防路径在请求到达前剥离图片;网关那句不含 image 字样的报错(Model only support text input)也被反应路径的自证短语名录识别,触发媒体兜底。(修复 #5025)
会话与 live 配置同步小修一组
- 显示重命名的 Codex 会话标题:在 Codex 里重命名过的会话,会话管理器现在显示新标题而不是回退到首条消息文本;并发写入时的读取也不再立即失败。(#4927)
- OpenCode / OpenClaw / Hermes 的 live 编辑在启动时同步入库:直接改 live 配置文件(换 base URL、加模型)此前在首次导入后就再也不会被拾取;现在每次启动时对比 live 与库存,差异即更新,全程非致命。(#4712、#5098)
- OpenCode 会话恢复命令更新:会话管理器展示与复制的恢复命令从过时的
opencode session resume <id>更正为当前 CLI 的opencode -s <id>。(#2359) - 官方供应商跳过连通性探测:连通性检查不再对官方类供应商推导出一个无凭据必失败的第一方端点探测(例如裸打
chatgpt.com/backend-api/codex),批量检查直接跳过、单独解析明确报错。
文档
Codex + Kimi 本地路由攻略
新增分步攻略(中 / 英 / 日三语,含界面截图),讲解如何借助 CC Switch 的本地路由在 Codex CLI 里使用 Kimi:较新的 Codex CLI 走 OpenAI Responses 协议,而 Kimi 开放平台(按量付费,kimi-k2.7-code)与 Kimi For Coding(会员制,kimi-for-coding)暴露的都是 Chat Completions 端点,直连通常在 /responses 上 404。攻略覆盖从内置预设添加供应商到四步协议转换链的完整流程。
README 赞助商更新
开源 AI 基建项目 new-api 加入四语 README 的赞助商表。
升级提醒
Kimi For Coding 供应商需重新套用预设
如果你在用 Kimi For Coding 预设创建的供应商,请重新从预设选择一次并保存:256K 窗口的关键——把各档模型路由到 kimi-for-coding 别名——只存在于新版预设里,旧预设存下来的供应商即使升级后实际仍按 200K 窗口过早压缩。
手写的 Codex [mcp_servers.*] 会被剥出快照
为了根治「删掉的 MCP 服务器复活」,切走 Codex 供应商时会把 [mcp_servers] 段从存储快照中剥离。如果你有直接手写在某个 Codex 供应商配置里的 MCP 服务器,它会在首次切走该供应商时从快照消失——请改用 MCP 管理器(MCP 页签)定义 Codex 的 MCP 服务器,那里的条目才是权威数据、会被自动投影到 live 配置。
双 auth 键警告可能需要手动触发一次重写
如果升级后 Claude Code 仍提示「Both ANTHROPIC_AUTH_TOKEN and ANTHROPIC_API_KEY set」,这是因为 live 配置未变时接管逻辑会短路跳过重写。把 Claude 的路由开关关掉再打开一次(或切换一次供应商)即可写入修正后的单占位符配置,警告随之消失。
数据库自动迁移
首次启动 v3.17.0 时数据库会自动从 schema v11 迁移到 v13(新增项目表与用量语义列),无需任何手动操作。如果你有回退到旧版本的习惯,建议先备份 ~/.cc-switch/cc-switch.db。
风险提示
本版本继续沿用此前版本对反向代理类功能的风险提示。
Codex OAuth 反向代理:使用 ChatGPT 订阅的 Codex OAuth 反代可能违反 OpenAI 服务条款,详情见 v3.13.0 release notes。本版新增的「官方 ChatGPT 账号代理路由接管」同样属于此类用法,请知悉相同的风险。
Codex 第三方供应商 Chat 路由:通过 CC Switch 本地代理把 Codex 请求转换并转发到第三方供应商时,各供应商对计费、合规与数据留存的约束不同,请在使用前阅读目标供应商的服务条款。
Claude Desktop 第三方供应商代理切换:通过 CC Switch 内置代理网关把 Claude Desktop 的请求转到第三方供应商时,同样需要遵守目标供应商的计费、合规与数据留存约束。
用户启用上述功能即表示自行承担相关风险。CC Switch 不对因使用这些功能而导致的任何账号限制、警告或服务暂停承担责任。
致谢
感谢以下贡献者在 v3.17.0 中提交的功能与修复:
- #5071:新增原生 Anthropic Messages 协议作为 Codex 上游,感谢 @yeeyzy。
- #4830:新增 Claude 子代理模型配置,感谢 @AkimioJR。
- #5124:给回退模型字段加上 1M 复选框,感谢 @salarkhannn。
- #5128:新增智谱团队套餐配额查询,感谢 @zhanxin-xu。
- #2907:OpenCode 表单新增请求头与 Token 上限编辑器,感谢 @git1677967754。
- #2811:通用供应商添加后自动同步,感谢 @hubutui。
- #4838:LongCat 预设升级到 LongCat-2.0,感谢 @solthx。
- #5095:受管 Claude 接管只注入单个 auth 占位符,感谢 @fengshao1227。
- #5187:Codex 子代理会话用量计入统计,感谢 @starmiaoa。
- #4886:修复 Codex 免费版 30 天配额窗口不显示,感谢 @SaladDay。
- #5057、#4927、#2359:刷新间隔持久化、重命名会话标题显示与 OpenCode 恢复命令修正,感谢 @makoMakoGo。
- #5206:Fable 模型键排除出通用配置,感谢 @fzh365。
- #5069:工具 schema 缺省 type 兜底与 API Key 输入框恢复,感谢 @Komikawayi。
- #4712、#5098:OpenCode / OpenClaw / Hermes live 配置启动同步,感谢 @allenxu09。
也感谢所有反馈 Codex 官方路由、缓存计费、MCP 同步与配额查询问题的用户——本版相当一部分修复来自这些真实使用场景里的复现线索。
下载与安装
访问 Releases 下载对应版本。
系统要求
| 系统 | 最低版本 | 架构 |
|---|---|---|
| Windows | Windows 10 及以上 | x64 / ARM64 |
| macOS | macOS 12 (Monterey) 及以上 | Intel (x64) / Apple Silicon (arm64) |
| Linux | 见下表 | x64 / ARM64 |
Windows
| 文件 | 说明 |
|---|---|
CC-Switch-v3.17.0-Windows.msi |
推荐 - MSI 安装包,支持自动更新 |
CC-Switch-v3.17.0-Windows-Portable.zip |
便携版,解压即用,不写入注册表 |
Windows ARM64 设备请选择文件名中带 arm64 标识的对应制品。
macOS
| 文件 | 说明 |
|---|---|
CC-Switch-v3.17.0-macOS.dmg |
推荐 - DMG 安装包,拖入 Applications 即可 |
CC-Switch-v3.17.0-macOS.zip |
解压后拖入 Applications,Universal Binary |
CC-Switch-v3.17.0-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.17.0-Linux-x86_64.AppImage/.deb/.rpmCC-Switch-v3.17.0-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 |
v3.16.5
2026年07月02日
CC Switch v3.16.5
这一版的重头戏是让原生 Responses 格式的国产模型供应商真正适配到位——为小米 MiMo、火山豆包、千问 Qwen3-Coder、美团 LongCat、MiniMax 等具备原生 Responses 端点的供应商生成 Codex 模型目录,让 Codex 桌面能看到这些模型、内置工具也能正常工作,并对少数拒收
web_search的国产网关自动禁用该工具、避免请求被硬性拒绝。另有两处重要改进:切换供应商时,你在应用内新增的插件、环境变量等会自动回写到通用配置并带给下一个供应商;Linux(Wayland + NVIDIA)上「标题栏能点、页面点不动、缩放黑屏」的问题,现在也能用一个环境变量开关自救。本版还带来 Claude Sonnet 5 定价与默认档升级、两级分组的会话视图,以及一批凭据安全与平台兼容修复。
使用攻略
本版的新能力主要落在 Codex 供应商表单、会话面板与用量 / 通用配置里,建议结合以下文档了解:
- Codex 桌面看不到自定义模型?:本版重做了原生直连时的模型目录生成——当 Codex 供应商使用原生 Responses(
openai_responses)直连时,CC Switch 会生成~/.codex/cc-switch-model-catalog.json,让 Codex 桌面能显示配置的自定义模型、工具也可用。若你此前配过原生 Codex 供应商,请重新保存一次以生成新目录(详见下方「升级提醒」)。 - 用量统计:了解用量看板的数据来源与统计口径。本版新增了 Claude Sonnet 5 定价,并修复了用量脚本凭据被当作「显式覆盖」持久化的问题。
- 设置:Codex 上游格式选择器与本地路由开关、Claude 通用配置(现更名为「应用通用配置」并支持切换时自动同步)都在供应商表单的高级选项里。
Warning
唯一官方渠道声明(请务必阅读)
CC Switch 是完全免费、开源的桌面应用,不会向用户收取任何费用。请仅通过下列官方渠道获取本软件:
| 类别 | 唯一官方 |
|---|---|
| 官网 | ccswitch.io |
| 源码 | github.com/farion1231/cc-switch |
| 下载 | GitHub Releases |
| 作者 | @farion1231 |
| 举报山寨 | GitHub Issues |
任何向你收费、要求充值、或索取登录凭据的"CC Switch"网站或客户端均为假冒。如果你被诱导支付了费用,请立即停止操作并通过 GitHub Issues 反馈。
概览
CC Switch v3.16.5 是 v3.16.4 之后的一版维护更新,核心是把国产模型供应商的 Codex 原生直连做通。v3.16.4 已经把千问 / 百炼、小米 MiMo、火山豆包、美团 LongCat、MiniMax 等供应商切到了原生 Responses 端点,本版进一步为它们生成 Codex 所需的模型目录(~/.codex/cc-switch-model-catalog.json),让 Codex 桌面真正能看到这些自定义模型、内置工具也能正常调用,并把模型映射从「本地路由」开关里彻底解耦。针对少数第一方模型不支持 OpenAI 内置 web_search 的国产网关(MiMo、LongCat、MiniMax、Qwen3-Coder),本版还会自动禁用该工具,避免 Codex 默认带上它触发硬 400。
围绕日常使用体验,本版让 Claude 的通用配置在切换供应商时自动同步并传递——你在应用内新增的插件、环境变量、主题等会先回写到通用配置、再带给下一个供应商,不会在切换时丢失;给 Linux(Wayland + NVIDIA)上点击失灵 / 黑屏的用户加了一个可自救的环境变量开关;补上 Claude Sonnet 5 定价并把默认 Sonnet 档升级到它;带来「供应商 → 项目目录」两级分组的会话视图;并修了一串凭据安全(通用配置片段剥离全部密钥、用量脚本凭据仅作显式覆盖)、平台兼容(Hermes Windows 配置目录、Windows Codex npm 影子命令)与界面(长下拉滚动、窄窗口日期选择器)的问题。此外也新增了若干供应商预设,开箱即可选用。
发布日期:2026-07-01
更新规模:36 commits | 93 files changed | +5,678 / -2,804 lines
重点内容
- 让国产模型供应商的 Codex 原生直连真正可用:为小米 MiMo、火山豆包、千问 Qwen3-Coder、美团 LongCat、MiniMax 等国产供应商生成 Codex 模型目录(
~/.codex/cc-switch-model-catalog.json),让 Codex 桌面能看到这些模型、内置工具可用;并对拒收web_search的国产网关(MiMo、LongCat、MiniMax、Qwen3-Coder)自动禁用该工具、避免硬 400。存量原生供应商需重存一次以生成新目录。 - 通用配置切换时自动同步并传递:切走一个启用了通用配置的 Claude 供应商时,你在应用内新增的插件、环境变量、主题、hooks 会先自动回写到通用配置,再带给下一个供应商——不再在切换时被覆盖丢失。
- Linux Wayland 点击失灵 / 黑屏的自救开关:遇到 Wayland + NVIDIA 上「标题栏能点、页面点不动、缩放黑屏」时,用
CC_SWITCH_GDK_BACKEND=wayland启动即可切回原生 Wayland(平铺式合成器上遇到反向问题可设为x11)。 - Claude Sonnet 5:新增 Sonnet 5 定价,并把各预设的默认 Sonnet 档升级到
claude-sonnet-5。 - 会话分类视图与分组管理:会话面板新增「供应商 → 项目目录」两级分组视图,分组头支持三态复选框一键批量选择。
- 新增供应商预设:新增七牛云、FennoAI、ZetaAPI、TeamoRouter、NekoCode、Code0.ai、Amux 等供应商预设,覆盖各受管应用,开箱即可选用。
新功能
国产模型供应商的 Codex 原生直连(生成模型目录)
本版把国产供应商的 Codex 原生直连做通了。继 v3.16.4 把小米 MiMo、火山豆包、千问 Qwen3-Coder、美团 LongCat、MiniMax 等供应商切换到原生 Responses(apiFormat: "openai_responses")之后,本版推翻了当时「原生直连就删掉模型目录」的做法:这些供应商不经过本地代理直连时,CC Switch 会为它们生成 ~/.codex/cc-switch-model-catalog.json,让 Codex 桌面真正显示这些自定义模型、内置工具也能用——不会触发像 MiMo 这类原生网关会拒绝的 freeform apply_patch(type=custom)工具(编辑回退到 shell_command)。目录生成按 apiFormat 判定、与「本地路由」开关解耦,因此一个原生供应商无需开启本地路由映射也会持久化目录;而 openai_chat 格式仍保持既有的 Responses↔Chat 代理转换不变。由于 Codex 解析器要求每个条目都带 base_instructions,原生模板携带一个中性默认值、由各厂商官方文案覆盖(MiMo、MiniMax)。存量原生供应商需重新保存一次以生成有效目录(无需数据库迁移)。
配套地,对少数第一方模型不支持 OpenAI 内置 web_search 工具的国产网关(MiMo、LongCat、MiniMax、Qwen3-Coder),本版会在切换时自动禁用该工具,避免 Codex 默认带上它、被网关以硬 400 拒绝(详见下方「修复」)。
会话分类视图与分组管理
会话管理面板在原有平铺列表之外新增了分组视图,通过工具栏的 List / ListTree 选择器切换,视图模式与展开状态都持久化到 localStorage。分组构建「供应商 → 项目目录」两级层级:按项目目录名归组,缺少项目目录的会话落入「未知目录」桶。两级都是可折叠区块,并提供「全部折叠」按钮;在批量模式下,每个分组头会出现一个三态复选框,可一键选中 / 取消该组内全部可选会话,并显示已选 / 可选计数徽标。四语(zh / en / ja / zh-TW)文案已同步。该改动完全在前端,不涉及后端命令或数据访问层。(#4776)
Claude Sonnet 5 模型定价
在 schema.rs 里按 Anthropic list 价新增 claude-sonnet-5 定价行——输入 / 输出 $3 / $15 每百万 token、缓存读写 $0.30 / $3.75,与 Sonnet 4.6 一致。介绍期 $2 / $10 促销(有效期至 2026-08-31)刻意不入表,让记账反映稳态 list 价而非临时折扣。该行在应用下次启动时通过 ensure_model_pricing_seeded 应用,无需 SCHEMA_VERSION 变更。
新增供应商预设
本版新增了一批供应商预设,选中后填入自己的 API Key 即可使用:
- 七牛云(Qiniu):覆盖全部 7 个受管应用(含 Gemini),中转原生 Claude / GPT / Gemini。
- FennoAI / ZetaAPI / TeamoRouter / NekoCode:各覆盖 6 个应用(Claude、Claude Desktop、Codex、OpenCode、OpenClaw、Hermes)。
- Code0.ai:覆盖全部 7 个应用(含 Gemini)。
- Amux:覆盖 6 个应用。
各预设的端点与默认模型已按对应应用配好——Claude 类走 Anthropic 兼容主机直连、Codex 走原生 Responses、其余走 OpenAI 兼容 /v1。
变更
切换供应商时自动同步并传递通用配置
这是本版一个很实用的改动:切走一个启用了通用配置的 Claude 供应商时,服务会先从它的 live settings.json 里重新提取可共享部分、更新到通用配置,再带给下一个供应商,而不再只是单向写入。这样一来,你在运行中的应用里直接新增的插件(enabledPlugins)、hooks、环境变量(env)、主题(theme)等共享配置就不会在切换时被静默丢失,而是自动跟着走到下一个供应商;删除也会同步(移除的键不会被再次注入)。该同步严格限定在启用了通用配置的 Claude 供应商,被显式清空时会跳过,且所有失败都是非致命(仅告警)、永不阻断切换。
Codex 模型映射与「本地路由」开关解耦
Codex 供应商表单向 Claude Code 对齐——模型映射目录现在独立于路由接管,因为原生 Responses 供应商(MiMo、豆包、MiniMax)需要它来做无代理直连,而 Chat 供应商无论如何都走代理。「需要本地路由」开关被移除(它没有后端字段,只是门控目录 / 推理的持久化,等价于「映射是否填了」)。模型映射现在对非官方供应商始终显示、非空即持久化,而推理能力的显示 / 持久化改由 Chat 格式门控。四语(zh / en / ja / zh-TW)文案随之重写。顺带修复了 useCodexConfigState 在加载已存供应商时丢掉 supportsParallelToolCalls / inputModalities / baseInstructions 的问题(会在编辑时静默丢失并行工具、图像输入与官方 base instructions)。
默认 Sonnet 档升级到 Claude Sonnet 5
把各供应商预设里的默认 Sonnet 档从 claude-sonnet-4-6 升级到 claude-sonnet-5(覆盖 claude / claude-desktop / hermes / openclaw / opencode 预设与通用 NEWAPI_DEFAULT_MODELS),涉及 ANTHROPIC_MODEL / ANTHROPIC_DEFAULT_SONNET_MODEL / ANTHROPIC_DEFAULT_OPUS_MODEL 等键及其带前缀变体。Claude Desktop 的默认路由 sonnet route_id 也一并迁移到 claude-sonnet-5。非 Anthropic 的 pin(gpt / gemini / glm / sonnet-4-5)保持不变。
豆包带日期 model id 与定价归一化
豆包(DouBaoSeed)预设的 model id 切换到带日期的 doubao-seed-2-1-pro-260628(覆盖各应用),因为火山方舟会以 404 拒绝裸名 doubao-seed-2-1-pro、只接受完整带日期 id。由于真实用量现在带日期后缀,strip_model_date_suffix 扩展为也能剥掉火山的 6 位 YYMMDD 形式(并校验月 01-12、日 01-31 以免误伤 -123456 这类非日期版本后缀),从而归一化命中定价表里的裸名 seed 行、修复豆包模型显示 $0 成本的问题。
###「写入通用配置」更名为「应用通用配置」
原标签「写入通用配置」在数据流向上有歧义(读起来像「把当前配置写进通用配置」),而实际行为相反——是把已存的通用配置片段合并进本供应商配置。复选框在四语(zh / en / ja / zh-TW)里更名为「应用通用配置」,包括所有提示 / 攻略 / 说明引用,日文用户手册与 README_JA.md 也一并同步。(#4829)
其它预设与资源调整
- OpenClaw 豆包上下文对齐 262144:OpenClaw 的 DouBaoSeed 预设此前硬编码 128000,而 Codex 侧同模型用 262144,导致 OpenClaw 用户窗口偏小;已对齐并加了跨预设一致性测试防止再次漂移。
- 火山 / 豆包 / BytePlus 官网链接订正:这三个预设的「访问官网」链接被误设成了控制台 / 注册链接,已恢复为干净的产品主页。
- 过大的供应商图标降采样到 256px:一批捆绑图标此前远大于其 ~32px 的实际渲染尺寸,降采样后显著减小体积、无代码 / 文件名 / 导入改动(如 ZetaAPI 940KB→40KB、relaxcode 1.16MB→42KB),并删除了从未被引用的 1.4MB
dds.svg孤儿。
修复
对拒收 web_search 的原生 Codex 网关禁用该工具
一些原生 /responses 网关的第一方模型不具备 OpenAI 内置的 web_search 工具,会以「tool type 'web_search' is not supported」拒绝,而 Codex 默认就会带上该工具,导致硬 400。CC Switch 现在会为这些厂商写入顶层 TOML 行 web_search = "disabled"。作用域是一份黑名单(默认开启):仅命中 base_url 主机(xiaomimimo.com、longcat.chat、minimax.io、minimaxi.com)或模型品牌前缀(mimo、longcat、minimax、qwen3-coder)的供应商会被禁用,因此中转真 GPT、豆包、通用 Qwen 及任何未知供应商都保持 Codex 默认。其中 qwen3-coder 前缀只压制原生 qwen3-coder-plus(百炼 / DashScope 对 coder 系标记内置工具不支持),共享同一主机的通用 Qwen 保持开启;匹配走模型轴(会剥掉聚合器的 vendor/ 路径段),因此也能兜住硅基流动这类中转拒收厂商模型的情形。选黑名单而非模糊的「是不是 GPT」白名单,是因为误让 web_search 保持开启会以硬 400 失败;同时用归属哨兵保证 CC Switch 只会移除由它自己写入的 disabled 值,因此存量供应商无需重存、切回也会重新启用。此外顺带把 LongCat-2.0-Preview 预设的上下文窗口从 131072(128K)订正为真实的 1048576(1M)。
通用配置片段剥离全部凭据类键
extract_claude_common_config 此前只脱敏 ANTHROPIC_API_KEY 与 ANTHROPIC_AUTH_TOKEN,但 Claude 供应商合法地携带其它凭据(OPENROUTER_API_KEY、GOOGLE_API_KEY,可能还有 OpenAI / Gemini / AWS Bedrock / Vertex 密钥),这些可能泄漏进共享片段、再被注入到其它供应商。提取现在会按模式匹配并剥掉任何凭据形态的环境变量键(*_API_KEY / *_AUTH_TOKEN / *secret* / *token* 等),同时保留 MAX_OUTPUT_TOKENS 这类合法可共享的复数 *_TOKENS 值。手动「提取」与一次性自动提取路径的同一泄漏也一并堵上。
用量脚本凭据仅作显式覆盖持久化
供应商用量脚本存有可选的 api_key / base_url 字段用于查询配额时覆盖 live 凭据,但它们此前会静默镜像供应商自身的凭据——因此复制供应商或修改主 API key / base URL 后,用量脚本仍 pin 在旧端点旧 key,配额查询一直打向陈旧目标。现在 ProviderService 在持久化前会归一化:若脚本的 api_key 或 base_url 与供应商解析出的用量凭据相同(或为空)就清为 None,让查询回退到 live 配置;真正不同的覆盖才保留(token_plan 类脚本不动)。deeplink 导入路径也加了对应的归一化,前端在更新时会失效相关缓存键让首页用修正后的配置重新查询。(#4654)
Hermes 配置目录在 Windows 上正确解析
CC Switch 此前硬编码 ~/.hermes 作为 Hermes 配置目录,但 Hermes 自身是按 HERMES_HOME 环境变量、再退到平台默认(Windows 上 %LOCALAPPDATA%\hermes)解析的。在 Windows 上这意味着 CC Switch 把供应商配置写到了 Hermes 根本不读的路径,导致供应商切换无效。get_hermes_dir() 现在镜像 Hermes 自己的解析顺序——显式覆盖、HERMES_HOME(原样取用、不做 ~ 展开)、平台默认——从而重新尊重被 #3470 丢掉的 HERMES_HOME(Hermes 的 Windows 安装器把它作为重定位安装的首要机制)。(#4680,参见 #3178、#3470)
Linux Wayland:允许覆盖 AppImage 强制的 GDK_BACKEND=x11
AppImage 的 GTK 启动钩子无条件导出 GDK_BACKEND=x11 以规避一个历史上的原生 Wayland 崩溃。在较新的 Wayland + NVIDIA 环境上,这个被强制的 XWayland 会让 WebKitGTK 网页内容收不到指针事件(标题栏可点、页面却死了)、并在缩放时黑屏,而既有的 WEBKIT_DISABLE_* 缓解不起作用,因为根因是被强制的窗口后端而非渲染。main.rs 现在会在 GTK 初始化前读取一个可选的 CC_SWITCH_GDK_BACKEND 逃生开关(AppImage 的启动钩子从不改动它):不设保持现状(零回归)。遇到上述问题时,用它切回原生 Wayland 启动即可:
CC_SWITCH_GDK_BACKEND=wayland ./CC-Switch-*.AppImage该覆盖是通用的——若你在平铺式 Wayland 合成器上遇到的是反向的输入问题,则改设为 CC_SWITCH_GDK_BACKEND=x11。(#4351,修复 #4350)
Claude Desktop / OpenClaw / Hermes 表单显示「获取 API Key」链接
API key 输入框下的「获取 API Key」链接与合作推广块此前只对 claude / codex / gemini / opencode 生效。Claude Desktop 渲染的是不显示它的裸输入框,而 OpenClaw / Hermes 则被两处遗漏挡住(白名单只列了那四个 appId、供应商分类解析只认那四类预设 id 模式)。现在 Claude Desktop 改用共享的 ApiKeySection,白名单与分类解析都补上了 claude-desktop / openclaw / hermes;此外 Hermes / OpenClaw 表单不再让「官方」分类禁用 key 输入(这两个应用没有只走 OAuth 的官方供应商,如 Hermes 的 Nous Research 虽是官方但仍需用户自填 key)。
去重 Windows 上的 Codex npm 影子命令
在 Windows 上,npm 会把一个工具装成三个同名兄弟文件——codex.cmd、codex.exe 和一个无扩展名的 Unix shim codex——而 CC Switch 此前把三者都列为候选,导致无法直接执行的无扩展名 shim 被当作多余 / 失败候选去探测。现在仅当相邻没有可执行的 .cmd / .exe 兄弟时才追加无扩展名路径,路径解析也会优先选可执行的 .cmd / .exe,从而把版本探测与启动锚定到真正可运行的 Windows shim 上。(#4782)
长下拉列表的滚动边界
SelectContent 弹层此前用 overflow-hidden 且没有高度上限,因此选项很多的下拉(如长模型 / 供应商列表)会渲染得比视口还高、把溢出项裁掉且无法触及。现在它设了 max-h-[min(24rem,var(--radix-select-content-available-height))] 与 overflow-y-auto,把内容限制在 24rem 或 Radix 计算出的可用高度内并允许纵向滚动。(#4798)
日期范围选择器的日历在窄弹层里保持可见
自定义日期范围选择器此前按视口宽度(Tailwind sm: 640px 断点)切换两列布局(日期字段 | 日历),但弹层被夹在 100vw - 2rem 且锚定到触发器,实际可用宽度比视口窄。在窄窗口上,两列布局可能在弹层只放得下一列时被激活,把日历列挤出右边界裁掉(月份头与 7 列里的 4 列被切掉且无法触及)。现在布局改用 CSS 容器查询按弹层自身的行内尺寸切换,因此只有当弹层本身窄时才收成一列,让日历在任意窗口宽度下都完整可见。(#4860)
文档
CC_SWITCH_GDK_BACKEND 逃生开关文档
为可选的 CC_SWITCH_GDK_BACKEND 环境变量新增了 FAQ 条目,覆盖全部四种 README 语言与 zh / en / ja 用户手册的排障页,说明 Wayland + NVIDIA 用户如何在网页内容「点击失灵 + 缩放黑屏」时切回原生 Wayland,以及平铺式 Wayland 用户如何设为 x11 处理反向输入问题。
Kimi 海外 README 指向 platform.kimi.ai
英语、德语、日语 README 的 Kimi K2.7 Code 合作段落的横幅与内联行动号召改指 https://platform.kimi.ai?aff=cc-switch(保留推荐标签),四语 README 也都新增了一行指向 https://www.kimi.com/code/?aff=cc-switch 的 Kimi For Coding 订阅推广。
升级提醒
原生 Codex 供应商需重存一次
本版重做了原生 Responses 直连的模型目录生成。如果你此前配过使用原生 Responses(openai_responses)的 Codex 供应商,请重新从预设选择或打开该供应商并保存一次,以生成新的 ~/.codex/cc-switch-model-catalog.json——这样 Codex 桌面才能显示自定义模型、工具才可用。此过程无需数据库迁移,也不影响走 openai_chat 格式的供应商。
web_search 黑名单是默认行为
对小米 MiMo、美团 LongCat、MiniMax、千问 Qwen3-Coder 这些已知拒收 web_search 的原生网关,本版会在切换时自动写入 web_search = "disabled"。中转真 GPT、豆包、通用 Qwen 及未知供应商不受影响、保持 Codex 默认。该开关由 CC Switch 用归属哨兵管理,切回到未命中黑名单的供应商会自动恢复,无需手动干预。
默认 Sonnet 档变化
新从预设创建的 Claude 类供应商,其默认 Sonnet 档现在指向 claude-sonnet-5。已配置好的存量供应商不受影响、配置保持原样;如需改用 Sonnet 5,可重新从预设选择一次并保存。
风险提示
本版本继续沿用此前版本对反向代理类功能的风险提示。
Codex OAuth 反向代理:使用 ChatGPT 订阅的 Codex OAuth 反代可能违反 OpenAI 服务条款,详情见 v3.13.0 release notes。
Codex 第三方供应商 Chat 路由:通过 CC Switch 本地代理把 Codex 请求转换并转发到第三方供应商时,各供应商对计费、合规与数据留存的约束不同,请在使用前阅读目标供应商的服务条款。
Claude Desktop 第三方供应商代理切换:通过 CC Switch 内置代理网关把 Claude Desktop 的请求转到第三方供应商时,同样需要遵守目标供应商的计费、合规与数据留存约束。
用户启用上述功能即表示自行承担相关风险。CC Switch 不对因使用这些功能而导致的任何账号限制、警告或服务暂停承担责任。
致谢
感谢以下贡献者在 v3.16.5 中提交的功能与修复:
- #4776:新增会话分类视图与分组管理,感谢 @alkaid616。
- #4829:把「写入通用配置」更名为「应用通用配置」,感谢 @arichyx。
- #4654:让用量脚本凭据仅作显式覆盖持久化,感谢 @yyhhyyyyyy。
- #4680:修复 Windows 上 Hermes 供应商配置不生效,感谢 @thisTom。
- #4782:去重 Windows 上的 Codex npm 影子命令,感谢 @justjavac。
- #4798:修复长下拉列表无法滚动,感谢 @xwil1。
- #4351:允许通过
CC_SWITCH_GDK_BACKEND覆盖 AppImage 强制的GDK_BACKEND=x11,感谢 @BoneLiu。 - #4860:让日期范围选择器的日历在窄弹层里保持可见,感谢 @SaladDay。
也感谢所有在 v3.16.4 发布后反馈 Codex 原生直连、通用配置、凭据复用与平台兼容性问题的用户,很多补丁都来自这些真实使用场景里的复现线索。
下载与安装
访问 Releases 下载对应版本。
系统要求
| 系统 | 最低版本 | 架构 |
|---|---|---|
| Windows | Windows 10 及以上 | x64 / ARM64 |
| macOS | macOS 12 (Monterey) 及以上 | Intel (x64) / Apple Silicon (arm64) |
| Linux | 见下表 | x64 / ARM64 |
Windows
| 文件 | 说明 |
|---|---|
CC-Switch-v3.16.5-Windows.msi |
推荐 - MSI 安装包,支持自动更新 |
CC-Switch-v3.16.5-Windows-Portable.zip |
便携版,解压即用,不写入注册表 |
Windows ARM64 设备请选择文件名中带 arm64 标识的对应制品。
macOS
| 文件 | 说明 |
|---|---|
CC-Switch-v3.16.5-macOS.dmg |
推荐 - DMG 安装包,拖入 Applications 即可 |
CC-Switch-v3.16.5-macOS.zip |
解压后拖入 Applications,Universal Binary |
CC-Switch-v3.16.5-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.16.5-Linux-x86_64.AppImage/.deb/.rpmCC-Switch-v3.16.5-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 |
v3.16.4
2026年06月27日
🎉 CC Switch 跻身 GitHub 全球 Star 排行榜前 100!
感谢每一位用户、贡献者与 Star —— 是你们让它走到这里。🙏
继 v3.16.3 把「用量计费做准」之后,这一版把重心放在打磨 Codex 代理链路与丰富用量 / 定价工具上——国产供应商原生 Responses 迁移、上游格式选择器与模型映射解耦、zstd 请求 / 错误体解压,以及一批工具调用与 OAuth 走代理的修复;同时新增本地代理请求覆盖、数据库版本过新时的应用内恢复屏、原生 Windows ARM64 构建,并带来一波预设与品牌更新(SubRouter、OpenCode Go、CTok→ETok 改名、Kimi 品牌刷新与 prime-partner 徽标)。
使用攻略
本版以打磨与扩展为主,新增的能力主要落在用量面板与供应商表单的高级选项里,建议结合以下文档了解:
- Codex 桌面看不到自定义模型?:不少用户反馈在 Codex 桌面应用里看不到配置的第三方 / 自定义模型。这是 Codex 桌面应用上游自身的门控行为(按官方登录状态放行模型选择器),并非 CC Switch 的本地配置问题,本版(v3.16.4)未对此做改动;文档里说明了原因,以及可用的缓解办法(保留官方登录 + 路由接管)。
- 用量统计:了解用量看板的数据来源与统计口径。本版新增了从 models.dev 批量导入模型定价、火山方舟 Coding / Agent Plan 的 AK/SK 用量查询,以及自定义日期范围的「实时结束时间」。
- 设置:本地代理请求覆盖(自定义请求头 / 请求体)、Codex 上游格式选择器与本地路由开关等都在供应商表单的高级选项里。
Warning
唯一官方渠道声明(请务必阅读)
CC Switch 是完全免费、开源的桌面应用,不会向用户收取任何费用。请仅通过下列官方渠道获取本软件:
| 类别 | 唯一官方 |
|---|---|
| 官网 | ccswitch.io |
| 源码 | github.com/farion1231/cc-switch |
| 下载 | GitHub Releases |
| 作者 | @farion1231 |
| 举报山寨 | GitHub Issues |
任何向你收费、要求充值、或索取登录凭据的"CC Switch"网站或客户端均为假冒。如果你被诱导支付了费用,请立即停止操作并通过 GitHub Issues 反馈。
概览
CC Switch v3.16.4 是 v3.16.3 之后的一版维护更新。这一版围绕 Codex 代理链路做了一轮收紧——为多家具备原生 OpenAI Responses 端点的国产供应商切换到原生格式(省去 Responses→Chat 的路由接管转换)、把「上游格式」从「本地路由」开关里独立出来、补上 zstd 请求与错误响应体的解压,并修了一串工具调用与「OAuth 模块绕过全局代理」的问题。
与此同时,本版还丰富了用量与定价工具(从 models.dev 导入定价、火山方舟 Coding / Agent Plan 的 AK/SK 用量查询、自定义日期范围的实时结束时间、GLM-5.2 与豆包 Seed 2.1 定价),新增了一批代理与韧性能力(自定义请求头 / 请求体覆盖、数据库版本过新时的应用内恢复屏、原生 Windows ARM64 构建),并带来一波预设与品牌更新(SubRouter 与 OpenCode Go 订阅、CTok→ETok 改名、Kimi 品牌刷新与 prime-partner 徽标、Kimi K2.7 Code 赞助横幅)。
发布日期:2026-06-27
更新规模:53 commits | 126 files changed | +8,149 / -1,016 lines
重点内容
- 国产 Codex 供应商走原生 Responses:千问 / 百炼、小米 MiMo、火山豆包、美团 LongCat、MiniMax(国内 / 国际)现在直连各自的原生 Responses 端点,不再经过 Responses→Chat 的格式转换接管,链路更短、更稳。
- 本地代理请求覆盖:供应商可配置自定义请求头与请求体覆盖,由本地代理在转发时应用,并对受保护的安全请求头做了拦截校验。
- 数据库版本过新的应用内恢复屏:当 SQLite 版本比当前应用支持的更新时,不再死在「重试只会再次失败」的原生弹窗里,而是引导到一个可一键升级应用的恢复界面。
- 更丰富的用量 / 定价工具:从 models.dev 批量导入模型定价、火山方舟 Coding / Agent Plan 的 AK/SK 用量查询、自定义日期范围的「实时结束时间」,以及 GLM-5.2 与豆包 Seed 2.1 的定价。
- 新预设与品牌更新:新增 SubRouter 与 OpenCode Go 订阅预设,CTok 改名为 ETok,刷新 Kimi 品牌标识并为官方 Kimi 预设加上 prime-partner 心形徽标。
- 原生 Windows ARM64 构建:发布产物新增原生 ARM64 版本,ARM 架构的 Windows 设备不再依赖 x64 模拟。
新功能
数据库版本过新时的应用内恢复屏
当 SQLite 的 user_version 比当前应用支持的 SCHEMA_VERSION 更新时(例如降级回旧版、或被第三方客户端写过该文件),启动过去会死在一个原生的「重试 / 退出」弹窗里——而「重试」只会再次失败。现在应用会引导到一个专门的恢复界面:有可用更新时提供一键「升级应用」按钮(下载 + 安装 + 重启,带进度条),没有可用更新时则提示即便是最新版也读不了这个数据库。该「版本过新」检查在任何写库动作之前进行,因此应用永远不会对一个读不懂的数据库执行 DDL;恢复模式下的原生关闭会干净退出(此时托盘尚未创建)。(#4575)
本地代理请求覆盖(自定义请求头与请求体)
供应商配置现在可以定义自定义请求头与请求体覆盖,由本地代理在转发时应用,并通过 Claude 与 Codex 供应商表单里的新字段暴露。输入会经过校验,其中包含一份受保护的请求头名单,用于阻止覆盖安全敏感的请求头。(#4589)
火山方舟 Coding / Agent Plan 用量查询
用量面板现在可以查询火山方舟(Volcengine Ark)的 Coding Plan 与 Agent Plan 配额。由于方舟控制面 OpenAPI(open.volcengineapi.com)要求的是账号级 AccessKey 签名、而非推理 API key,用量脚本新增了独立的 AK/SK 输入区,并配有一个直达火山 IAM 密钥管理控制台(https://console.volcengine.com/iam/keymanage)的可点击链接;代理实现了火山签名 V4(一个 AWS SigV4 变体:固定的 canonical header 顺序、HMAC-SHA256 算法、ark 服务 scope)。它会先探测 GetAFPUsage(Agent Plan 的 5 小时 / 周 / 月配额)自动判定套餐,失败再回退到 GetCodingPlanUsage,从 Level 字段解析窗口标签(并对 ResetTimestamp <= 0 做守卫),同时在用量页脚、托盘菜单与四种语言里补上了 monthly 档标签。
从 models.dev 导入模型定价
「添加定价」面板新增了一个「从 models.dev 导入」按钮:拉取 https://models.dev/api.json,支持全文搜索整个目录,并通过与手动录入相同的 update_model_pricing 路径导入所选条目。导入的 model id 会按后端的 clean_model_id_for_pricing 规则归一化(剥供应商前缀、转小写、截断 : 后缀、把 @ 映射为 -、丢掉 [1m] 标记),让落库的行真正能匹配成本归因查询。配套修复让「按范围回填零成本」改用 Rust 端按原始 model 别名(路由前缀、:free 变体、日期后缀)匹配,而不再用精确 SQL 字符串匹配,从而新定价的别名行能立刻被计价、而不必等下次启动回填(修复 #4017)。(#4079)
原生 Windows ARM64 构建
发布产物现在包含原生的 Windows ARM64 制品,ARM 架构的 Windows 设备可以拿到对应的原生构建,不必再依赖 x64 模拟。发布矩阵也改为各平台独立运行(关闭 fail-fast),因此某个任务缺少密钥而失败(例如 fork 里的 macOS 签名)不会再把尚未完成的同级任务一并取消。(#3950)
自定义日期范围的实时结束时间
自定义日期范围选择器新增了一个「结束时间跟随当前时间」勾选框;开启后结束时间变为只读并自动跟随此刻,因此用量数据始终反映从所选起点到当下的实时消耗。这在 Coding Plan 的 5 小时配额窗口里尤其有用。liveEndTime 已纳入 React Query 的缓存键,因此一个实时范围和一个端点相同的固定范围不会再共用同一个陈旧缓存项。(#4438)
会话详情头显示源文件名
会话详情头现在会在项目目录旁显示会话日志的文件名(悬停看完整路径、可点击复制),方便用户直接从界面定位并打开底层的 JSONL 文件。对于像 ~70 字符的 Codex rollout 这类没有空格的长文件名,会截断到 max-w-[200px],避免在窄窗口里溢出到操作按钮区。(#4113)
导入按钮的未托管 Skill 提示
顶栏的 Skills 导入按钮现在会在本地存在未托管的 Skill 可导入时显示一个绿点与提示,让你一眼看出磁盘上的 Skill 还没被纳管。该扫描在挂载时执行一次,并在多次导航间共享(30s staleTime + keepPreviousData),避免重复磁盘 IO。
OpenCode Go 订阅预设
新增 OpenCode Go(opencode.ai/zen/go)预设,覆盖 Claude、Codex 与 OpenCode,使用可直接粘贴的纯 API key(无 OAuth)。Codex 预设走 openai_chat 转换并带 GLM / Kimi / DeepSeek / MiMo 模型目录(且不带静态 codexChatReasoning,按每个模型推断能力),OpenCode 则通过 @ai-sdk/openai-compatible 指向 /zen/go/v1。四个 OpenCode Go 预设——Claude、Claude Desktop、Codex、OpenCode——都带上了推荐链接与应用内推广文案;推广横幅现在仅凭 partnerPromotionKey 即可展示(不再绑定 isPartner),因此一个预设可以展示推荐推广却不获得金色付费合作伙伴星标(这也顺带让既有的 MiniMax 推广重新显示出来)。
Prime-Partner 预设徽标与排序
第一方 Moonshot Kimi 预设(Kimi / Kimi For Coding / Kimi K2.7 Code)现在被标记为 prime partner:不再显示金色星标,而是渲染一颗实心金色心形(无徽标边框),并在默认(Original)排序里浮到官方分类预设之后、其余之前。分组用三路 partition 实现,每组保持内部顺序,且一个同时被标为 prime-partner 的官方预设只会留在官方组里。
GLM-5.2 与豆包 Seed 2.1 定价
种子模型定价现在包含 GLM-5.2(#4385)与豆包 Seed 2.1 Pro / Turbo,让这些模型的用量被正确计价、而不是记成零成本。豆包价格采用火山官方 list 价(按约 7.14 的汇率折算);cache_creation 保持为 0,因为豆包按时间而非按 token 写入计费缓存存储,既有的 2.0 行也保留以供历史记账。
Kimi For Coding 自动压缩窗口
Kimi For Coding 预设现在把 CLAUDE_CODE_AUTO_COMPACT_WINDOW 默认设为 262144,与 Kimi 官方文档一致,并通过 templateValues 暴露,方便用户为将来的模型或性能调优自定义该值。(#4401)
SubRouter 合作伙伴供应商
新增 SubRouter(subrouter.ai,一个让一把 key 访问多模型多供应商的 AI 中转聚合商)作为预设,覆盖全部 7 个受管应用——Anthropic 格式端点用于 Claude Code / Claude Desktop / OpenClaw / Hermes,OpenAI 兼容的 /v1 端点(gpt-5.5)用于 Codex 与 OpenCode,Gemini 兼容的 /v1beta 端点(gemini-3.5-flash)用于 Gemini CLI——带上自有品牌图标、金色合作伙伴星标、四语推广文案,以及预填为 API key 注册地址的推荐注册链接(?aff=l3ri)。(#4522)
变更
国产 Codex 供应商走原生 Responses API
多家国产供应商(千问 / DashScope 百炼、小米 MiMo、火山豆包、美团 LongCat、MiniMax 国内 / 国际)现在暴露了原生的 OpenAI Responses 端点,因此它们的 Codex 预设切换到 apiFormat: "openai_responses",直连上游而不再经过 Responses→Chat 的路由接管转换。丢掉不再需要的 codexChatReasoning 与 modelCatalog 也让「本地路由映射」开关默认保持未勾选。SiliconFlow 托管的 MiniMax 仍保持 openai_chat,因为那是第三方端点、并非 MiniMax 自家 base_url。其余仍走 chat 的供应商也刷新了过期的 model id(GLM 5.1→5.2、StepFun 3.5-flash-2603→3.7-flash、Ling 2.5-1T→2.6-1T)。
上游格式选择器与模型映射开关解耦
Codex 供应商表单此前把 Chat 格式转换与路由接管(模型映射)绑在同一个开关上,导致一个提供原生 Responses API 的供应商无法在不强制 Chat Completions 转换的情况下使用模型映射。现在「上游格式」(Chat Completions / Responses)成了一个独立、始终可见的选择器,而本地路由开关只负责控制高级子区(模型映射目录,以及格式为 Chat 时的推理能力)。它的初始状态由已保存目录是否存在派生,不新增持久化字段;codexConfig 的四语(zh / en / ja / zh-TW)文案也随之重写。
豆包 Seed 2.1 Pro 预设
DouBaoSeed 预设现在在全部 6 个客户端(claude、claude-desktop、codex、opencode、openclaw、hermes)指向 doubao-seed-2-1-pro(替换 doubao-seed-2-0-code-preview-latest),展示名更新为「Doubao Seed 2.1 Pro」,并把 OpenClaw 的成本字段从 0.002 / 0.006 订正为 0.84 / 4.2 美元每百万 token 以匹配新模型。
CTok 改名为 ETok
随着厂商对域名、端点与商标的更名,所有面向用户的品牌从 CTok 迁移到 ETok(ctok.ai→etok.ai、api.ctok.ai→api.etok.ai,以及内部 id、展示名、图标和 README 合作伙伴横幅),覆盖每一个客户端预设。Codex 历史迁移白名单里仍保留 ctok 作为旧 id、与新 etok 并存,以保证改名后存量用户的本地会话历史仍被正确分桶。
Kimi 预设命名统一
OpenCode 与 OpenClaw 此前被标为「Kimi K2.7 Code」的 Kimi 预设,更名为与其它应用一致的「Kimi」(OpenCode 的供应商展示名也一并更名);模型标签仍保留「Kimi K2.7 Code」,因为它描述的是实际模型。
JSON 编辑器暗色模式
用量脚本弹窗、供应商表单与通用供应商表单里的 CodeMirror JsonEditor 现在会通过 useDarkMode() 跟随应用主题,切换到 oneDark 编辑器主题,而不再在应用其余部分已是暗色时仍停留在亮色。(#4556)
更紧凑的「添加供应商」标题与底部提示
「添加供应商」对话框把标题到页签、页签到卡片的纵向间距从 24px 收到 12px,并新增一个始终可见的固定底部提示,引导用户在选好预设后填写下方字段。FullScreenPanel 新增可选的 contentClassName 属性,让内边距覆盖只作用于此面板、不影响其它共用它的面板。
主题自适应的 Kimi 标识
内联的 Kimi 占位标记替换为厂商刷新后的标识。K 字形使用 currentColor,因此会跟随主题文字色(亮色模式深、暗色模式白),而品牌点缀色固定为新的 #1783FF,元数据回退色也相应对齐。
移除 Fable 5 Verified 纪念横幅
设置「关于」页不再显示 3.16.3 为标明特别构建而加在应用名旁的 Fable 5 Verified 纪念横幅;横幅图片及其标记被移除,「关于」面板回到标准的版本徽标布局。
修复
Copilot / Codex OAuth 请求现在遵循全局代理
CopilotAuthManager 与 CodexOAuthManager 在构造时写死了 Client::new(),导致它们的认证流程(换 token、拉 /models 列表、判定 model vendor、device-code 与 OAuth 刷新请求)无视配置的全局代理、直连目标服务。在 Copilot 上,直连会让 /models 返回 0 个 Claude 模型,使 live 模型解析失效,上游以 400 model_not_supported 拒绝请求。现在两个 manager 都改为每次请求从共享客户端现取(crate::proxy::http_client::get()),从而遵循全局代理 URL 并支持运行时热更新。修复 #2016、#2931。(#4583)
压缩请求体与错误体的解压
Codex Desktop 在对 Codex 后端认证时会发送 zstd 压缩的请求体,这会破坏本地代理路由,因为处理器直接用 serde_json 解析原始压缩字节。代理现在会在 JSON 解析前对请求体解压(gzip / br / deflate,外加新增的 zstd 支持,包括 gzip, zstd 这类堆叠编码),覆盖三个 Codex 处理器,并剥掉过期的 content-encoding / content-length / transfer-encoding 请求头让转发器重新生成。上游非 2xx 的错误体也以同样方式解压,因此压缩过的限流与鉴权细节不再被丢弃、对客户端隐藏。修复 #3764、#3696。(#3817)
DeepSeek 端点 thinking: disabled 的 400 错误
DeepSeek 的 Anthropic 兼容端点会拒绝 thinking.type=disabled 与 effort 参数共存的请求、返回 HTTP 400,这会破坏 Claude Code 2.1.166+ 那些硬编码 thinking: disabled 的子 agent(Workflow / Dynamic Workflow)。代理现在不是去覆盖客户端的意图,而是对官方 DeepSeek 端点剥掉冲突的 output_config.effort / reasoning_effort 参数,因为子 agent 本就不需要展示推理。(#4239)
回滚 Anthropic system 消息上提
回滚了 #3775 把 Anthropic 兼容供应商的 role=system 消息从 messages[] 上提到顶层 system 字段的改动。DeepSeek 端点本就原生接受内联的 system 消息,而该重写改变了请求前缀;保持消息原位能保留 prompt 前缀,避免一处疑似的缓存命中率回退(参见 #4297)。来自 #3775 的、不相关的 Windows 测试修复以及 tool-thinking-history 归一化都保留。
Chat 工具调用缺函数名
一些上游会在流式工具调用增量里发送空的或缺失的函数名,过去这会产生无效的 Codex Chat 输出项(或一个 unknown_tool 回退)。现在累积的工具调用状态不会再被空增量覆盖,而那些始终没拿到 call_id 与有效名字的工具调用会在最终化阶段被跳过,覆盖流式、非流式与旧版 function_call 三条路径。(#4159)
恢复 Codex 缓存的工具调用字段
当 Codex 发起一个引用 previous_response_id 的后续 Chat 请求时,它的 function_call 项可能只携带 call_id。历史增强此前只回填 reasoning / reasoning_content,留空了函数的 name、arguments、status 等字段;现在它会从历史里恢复全部缓存的工具调用字段,让该调用能为 Chat 上游正确重建。(#4160)
config.toml 里重复的 Codex base_url 条目
把 Codex 的 base_url 写入 config.toml 时此前每个区段只替换或移除一个匹配的赋值,因此一个已经含多行 base_url 的区段会留下多余项、累积重复。setCodexBaseUrl 现在会折叠目标区段或顶层的所有匹配(替换第一处、移除其余),TOML 的 base_url 正则也处理了转义引号。(#4316)
历史迁移探测 CODEX_SQLITE_HOME 的状态库
Codex 会话历史迁移此前只扫描 ~/.codex/state_5.sqlite 与 config.toml 的 sqlite_home 位置,因此当 Codex 的 SQLite 状态通过 CODEX_SQLITE_HOME 环境变量被重定位时,状态库从未被扫描、其 threads 仍留在旧的供应商分桶里。第三方与统一会话两套迁移共用的 codex_state_db_paths 辅助函数现在会回退到 CODEX_SQLITE_HOME(config 里的 sqlite_home 仍优先)。
供应商终端尊重用户 shell
在 macOS / Linux 上启动供应商终端时此前硬编码了 bash,导致 zsh / fish 用户的 rc 文件不会加载。启动器现在会从 $SHELL 检测用户默认 shell(macOS 回退 /bin/zsh、Linux 回退 /bin/bash)并以干净启动的 flag exec 进去,而启动脚本本身改走 POSIX sh 以保证可移植性(例如 fish,以及 /bin/sh 可能不存在的 NixOS)。(#4140,修复 #1546)
Claude MCP 路径尊重自定义配置目录
当配置了自定义的 Claude 配置目录时,MCP server 的读写现在会解析到该目录下的 MCP 文件、而非默认位置,让 MCP 状态按 profile 隔离。此前对旧文件的「访问即拷贝」迁移被移除,改为直接解析覆盖路径。(#3431)
搜索后预设结果可点击
在「添加供应商」预设选择器里搜索后,结果一度无法点击或选中。那个与输入打架、会吃掉首字符(如「gateway」→「ateway」)的 requestAnimationFrame select() 被移除,开箱即点路径的输入自动聚焦被恢复,当搜索框已打开时按 Ctrl/Cmd+F 也接上了重新聚焦。供应商列表的打字守卫也被收窄到 Ctrl/Cmd+F 分支,从而 Escape 仍能关闭搜索面板。(#4315)
Skills 浏览与供应商卡片显示修复
修复了若干显示与交互问题:浏览 skills.sh 时仓库管理操作保持可用,仓库返回空结果时刷新也保持可用;供应商卡片上过长的供应商名与网站 URL 现在会截断而非溢出;OMO 模型变体下拉会截断所选标签并配全文提示;Select 菜单项会在当前选中项上显示对勾。(#4323)
切换设置页签时重置滚动
在设置对话框里切换页签会保留上一个页签的滚动位置,有时会停在新页签的中途;现在每当激活页签变化时,滚动容器都会重置到顶部。(#4165)
文档
Kimi 置顶赞助横幅
全部四种 README 语言(en / zh / ja / de)顶部的置顶赞助横幅现在换成了 Kimi K2.7 Code,取代此前的 MiniMax M2.7 横幅。文案反映 K2.7 Code 发布(一个面向编程的 agentic 模型,思考 token 用量较 K2.6 降低约 30%),横幅改由仓库内资源(assets/partners/banners/kimi-banner-en.png / kimi-banner-zh.png)提供、不再走 Moonshot CDN,并附一个指向 aff=cc-switch Moonshot 控制台的可点击行动号召。
Codex 统一会话历史攻略
新增三语(zh / en / ja)攻略,讲清统一 Codex 会话历史开关的开启迁移(启用时)与按账本还原(禁用时)到底做了什么、为什么会话数据从不会真正删除(只改标记 + 自动备份),以及如何核对文件是真在磁盘上、还是只是被归到了另一个供应商抽屉里。它包含一张针对常见「我的会话不见了」误解的症状对照表,以及 macOS / Linux / Windows 的磁盘核对命令,并作为首项链入 v3.16.3 的「使用攻略」release notes。
简化 Homebrew 安装说明
安装指南不再要求用户在 brew install --cask cc-switch 之前先运行 brew tap farion1231/ccswitch;这个已废弃的 tap 步骤已从 en / ja / zh 用户手册里移除,cask 现在可直接安装。(#4319)
Star-History 全球排名徽标
在全部四种 README 语言里、既有的 Trendshift 徽标旁新增了一个 star-history 全球排名徽标,并带亮 / 暗主题变体。
火山方舟 Coding Plan 活动链接
ByteDance / 火山方舟赞助条目里的「中国大陆地区的开发者请点击这里」链接现在指向火山的 ai618 活动页,取代此前的 codingplan 推荐 URL,覆盖全部四种 README 语言。
CCSub 赞助横幅矢量资源
把低分辨率的 ccsub.jpg 赞助 logo 替换为矢量的 ccsub.svg,并从 2046x648 letterbox 到 2046x850(约 2.406:1),使其与其它赞助表横幅匹配、以相同的 62px 高度渲染。全部四种 README 语言都指向新资源。
升级提醒
国产 Codex 供应商原生 Responses 迁移
本版把多家具备原生 Responses 端点的国产供应商(千问 / 百炼、小米 MiMo、火山豆包、美团 LongCat、MiniMax 国内 / 国际)的 Codex 预设切换为 openai_responses 并移除了 modelCatalog。已经基于这些预设配置过的存量供应商不受影响、配置保持原样;如果你希望改用原生 Responses(省去格式转换接管),可以重新从预设选择一次并保存。SiliconFlow 托管的 MiniMax 仍走 openai_chat,不在此次迁移之列。
数据库版本过新的恢复
如果你曾用更高版本的 CC Switch 打开过数据库、再切回旧版,旧版启动时会进入新的「数据库版本过新」恢复屏,并引导你升级到能读懂该数据库的版本。这是预期行为——升级到最新版即可恢复正常。
风险提示
本版本继续沿用此前版本对反向代理类功能的风险提示。
Codex OAuth 反向代理:使用 ChatGPT 订阅的 Codex OAuth 反代可能违反 OpenAI 服务条款,详情见 v3.13.0 release notes。
Codex 第三方供应商 Chat 路由:通过 CC Switch 本地代理把 Codex 请求转换并转发到第三方供应商时,各供应商对计费、合规与数据留存的约束不同,请在使用前阅读目标供应商的服务条款。
Claude Desktop 第三方供应商代理切换:通过 CC Switch 内置代理网关把 Claude Desktop 的请求转到第三方供应商时,同样需要遵守目标供应商的计费、合规与数据留存约束。
用户启用上述功能即表示自行承担相关风险。CC Switch 不对因使用这些功能而导致的任何账号限制、警告或服务暂停承担责任。
致谢
感谢以下贡献者在 v3.16.4 中提交的功能与修复:
- #3817:转发前解压请求体并支持 zstd,感谢 @chenx-dust。
- #4583:修复 Copilot / Codex OAuth 模块绕过全局代理导致 Claude 模型 400,感谢 @zymouse。
- #4589:新增本地代理请求覆盖(自定义请求头与请求体),感谢 @mfzzf。
- #4575:新增数据库版本过新时的应用内恢复屏,感谢 @SaladDay。
- #4556:为多处 JsonEditor 接入暗色模式,感谢 @TanKimzeg。
- #4438:新增自定义日期范围的实时结束时间,感谢 @arichyx。
- #3950:新增 Windows ARM64 发布支持,感谢 @MOON-DREAM-STARS。
- #4401:为 Kimi For Coding 预设添加 CLAUDE_CODE_AUTO_COMPACT_WINDOW,感谢 @cyijun。
- #4323:修复 Skills 管理与模型配置的交互展示,感谢 @thisTom。
- #3431:对齐自定义配置目录的 Claude MCP 路径,感谢 @makoMakoGo。
- #4159:跳过缺函数名的 Chat 工具调用,感谢 @hueifeng。
- #4385:新增 glm-5.2 定价,感谢 @arichyx。
- #4079:支持从 models.dev 导入模型定价,感谢 @kingcanfish。
- #4315:修复搜索预设后结果无法点击选中,感谢 @RuixeWolf。
- #4316:防止重复的 Codex base_url 条目,感谢 @jeffwcx。
- #4140:让供应商终端尊重用户 shell,感谢 @zkforge。
- #4113:在会话详情头显示源文件名,感谢 @xu-song。
- #4160:恢复 Codex 缓存的工具调用字段,感谢 @chen-985211。
- #4239:DeepSeek 端点 thinking:disabled 时剥掉 effort 参数,感谢 @maskshell。
- #4165:切换设置页签时重置滚动,感谢 @Muleizhang。
- #4319:移除已废弃的 Homebrew tap 步骤,感谢 @tianpeng-dev。
- #4522:新增 SubRouter 供应商预设,感谢 @abingyyds。
也感谢所有在 v3.16.3 发布后反馈 Codex 代理链路、用量计费、本地代理稳健性与平台兼容性问题的用户,很多补丁都来自这些真实使用场景里的复现线索。
下载与安装
访问 Releases 下载对应版本。
系统要求
| 系统 | 最低版本 | 架构 |
|---|---|---|
| Windows | Windows 10 及以上 | x64 / ARM64 |
| macOS | macOS 12 (Monterey) 及以上 | Intel (x64) / Apple Silicon (arm64) |
| Linux | 见下表 | x64 / ARM64 |
Windows
| 文件 | 说明 |
|---|---|
CC-Switch-v3.16.4-Windows.msi |
推荐 - MSI 安装包,支持自动更新 |
CC-Switch-v3.16.4-Windows-Portable.zip |
便携版,解压即用,不写入注册表 |
Windows ARM64 设备请选择文件名中带 arm64 标识的对应制品。
macOS
| 文件 | 说明 |
|---|---|
CC-Switch-v3.16.4-macOS.dmg |
推荐 - DMG 安装包,拖入 Applications 即可 |
CC-Switch-v3.16.4-macOS.zip |
解压后拖入 Applications,Universal Binary |
CC-Switch-v3.16.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.16.4-Linux-x86_64.AppImage/.deb/.rpmCC-Switch-v3.16.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 |