CC Switch v4.0.15
本版本以修复为主:Windows 上更新后隐藏的应用、配置目录覆盖等设置会被重置为默认值的问题已修复;更新 Codex 时,--version 响应慢不会再把好好的 Codex 卸掉;macOS 应用图标改为白色圆角方块,macOS 26 不再把它塞进灰色底板。经路由的请求重新认得出 Claude Code 的会话,走 Codex OAuth 时的缓存键和 Claude Desktop 连 Gemini 时的签名回放都恢复正常;Codex 历史里有一条坏掉的工具调用时不再每轮都报错,DeepSeek 也不再拒收回放的工具历史。另外修复了 WebDAV/S3 慢速传输 300 秒被掐断、Windows 上「打开终端」找不到 claude、WSL 里的 Hermes 会话读不出、路由切换总是提示重启等问题。新增用量趋势图的柱形图 / 曲线面积图切换、Hermes 按模型声明图片输入,Claude Desktop 表单也能为 Copilot 等托管登录的供应商获取模型列表。4.0 完整的更新内容请见 v4.0 发布说明。
新增
用量趋势图可以选柱形图或曲线面积图(#8406)。在用量页「设置」页签的「显示」区,「趋势图样式」可以选柱形图(默认)或曲线面积图,两种样式的指标、坐标轴、悬停提示和币种换算都一样。「显示」区的几项设置也重新排成了对齐的两列,汇率单独一行,放在币种下面。
Hermes 可以按模型声明支持图片输入(#8464)。Hermes 按每个模型的 supports_vision 判断能不能看图,没写的未知模型会被当成纯文本、图片被压成文字;以前表单里没有地方设置,手写的值保存后也会被冲掉。现在展开模型详情后有「支持图片输入」开关:打开写 supports_vision: true,关掉则删除这个键,交给 Hermes 自己判断。从模型列表选到已知支持图片的模型时会自动打开。
Claude Desktop 可以为托管登录的供应商获取模型列表(#8426)。GitHub Copilot、Codex OAuth、xAI OAuth 这类供应商以前在 Desktop 表单里没有「获取模型列表」按钮,现在有了,会按登录的账号拉取;还没登录时先提示登录。换了供应商类型或账号后,列表会清空重拉,不会混进别的账号的模型。
改进
路由下切换供应商,提示写明实际做了什么(#8347)。以前路由模式下切换,Codex、Gemini CLI、Grok Build 总会提示重启客户端。现在提示会说明是记住了供应商、改了路由目标、切换了路由,还是改了聚合默认供应商;只有客户端配置文件确实改了,才提示重启。
侧栏「今日」不再带「今日」前缀。 只选一项时也和选两项时一样只显示数值,完整说明在悬停提示里。
Claude Code 用量导入更快(#8224)。同一次导入里,查过的模型价格会复用,不再每条记录都查一遍;改了价格,下一次导入就会用上。
土耳其语:补齐了卸载和套餐额度相关的新文案(#8291)。
预设: 新增 EveryAPI、AllTokens。
修复
- Windows 上每次更新后,隐藏的应用、配置目录覆盖等设置被重置为默认值(#8429)。以前直接覆盖写
settings.json,个别环境下新内容变短时,旧内容的尾巴没被截掉,下次启动整份解析失败;读取失败时又悄悄用了默认值,更新后弹出的更新摘要一保存,就把默认值写了回去。现在先写临时文件再替换;读取时会去掉 BOM,有尾巴时只读第一段 JSON,解析不了的字段单独丢掉、其余照常保留。没有完整读出的文件会先备份成settings.json.broken-<时间>.bak,备份成功之前不会保存。 - 更新 Codex 时,
--version响应慢会把好好的 Codex 卸掉。 以前更新前检测到--version超时或启动失败,就会先卸载再重装,重装一失败,Codex 就显示成未安装。现在只有--version真的运行并报错时才这样修复,其余情况照常升级。 - macOS 26 把应用图标放进灰色底板并缩小(#8401)。macOS 应用图标现在自带白色圆角方块,macOS 26 和 15 显示一致;Windows 和 Linux 图标不变。
- 经路由的请求认不出 Claude Code 的会话(#8235、#8234、#8418)。新版 Claude Code 把会话 ID 写成 JSON 放在
metadata.user_id里,路由以前解析不了,同一个对话的每个请求都被当成新会话;Claude Desktop 的请求也没有读会话头。结果是走 Codex OAuth 时没有稳定的缓存键,Claude Desktop 经路由连 Gemini 时工具调用报错。现在两种格式都认得,Claude Desktop 也读会话头。 - Codex 历史里有一条参数坏掉的工具调用时,之后每轮都被 Chat 上游拒收(#5197)。例如输出被截断、参数不是完整的 JSON。现在转换时把这条调用改写成普通文字,正常的历史一个字节都不改。
- Codex 经路由连 DeepSeek 经常报 400(#8331)。回放工具历史时,工具调用和结果之间夹着的空消息、进度文字或思考内容会被拆成单独的消息,DeepSeek 不接受。现在只对 DeepSeek 模型把它们并回工具调用那条消息,其他上游不受影响。
- Codex 聚合模式去掉了
x-codex-beta-features请求头(#8435)。部分原生 Responses 网关需要这个头。现在发往原生 Responses 上游时保留它,身份相关的请求头仍然去掉。 - Claude Desktop 原生供应商配模型映射时卡在死循环(#8441)。保存映射要求先开路由,开路由又要求已有映射。现在没填模型列表的原生供应商可以先进入路由,再在同一张卡上保存映射。
- WebDAV / S3 同步慢速传输到 300 秒就被掐断(#8428)。慢速网络下,传输超过 300 秒的大 Skills 包会失败。现在总超时随文件大小放宽,下载另设 120 秒无数据超时,连接真卡住时仍会及时报错。
- Windows 上卡片的「打开终端」报「'claude' 不是内部或外部命令」(#8446)。应用内更新自动重启后,或先打开 CC Switch 再安装 CLI 时,进程里缺少用户级 PATH,终端沿用了它。现在打开的终端会带上完整的用户和系统 PATH。
- Windows 上读不出 WSL 里 Hermes 的会话(#8205)。Hermes 数据在 WSL 里时,改为在对应的发行版内只读读取数据库;需要发行版里有
python3(3.7 及以上)。其他路径不受影响。 - 故障转移后,「路由中」标记还停在原来那家(#7998)。
- Pi 子代理的用量统计不上,或记成 unknown(#8298)。现在从每个子代理自己的会话文件导入,带上真实的模型和供应商;从升级后第一次导入起统计,之前的不补算。
- 拖动排序供应商时卡片被拉伸、互相遮挡(#8283)。
- Skills 下载失败时,真正的原因被「仓库或分支不存在,请检查地址」盖掉。 以前配置的分支失败后会依次试 main、master,最后报的是 master 的 404。现在只有 404 才换分支,超时、压缩包过大、解压失败都按原因报错。
- DeepSeek 一个币种的钱包还有余额,另一个为 0 时显示「余额已用完」(#8170)。现在只要有钱包还有余额,就不再列出空钱包,卡片也不会每次启动都自动展开额度面板。
- 窗口较矮时,Codex 模型列表的思考等级弹窗下半截被截掉(#8094)。现在弹窗不超出窗口,放不下时列表在弹窗里滚动,「默认等级」一直可见。
升级说明
数据库结构没有变化,仍然是 20。
- Windows 上已经带尾巴的
settings.json会在首次启动时恢复,原文件保留为settings.json.broken-<时间>.bak;之前更新时已经被重置的设置无法找回。 - Pi 子代理用量从升级后第一次导入开始统计,之前的记录保持原样。
- 在 Windows 上读取 WSL 里的 Hermes 会话,需要发行版里装有
python3(3.7 及以上)。
致谢
感谢 @Foodie05(Claude Code 会话识别)、@MonsterXia(Codex 坏工具调用历史)、@funkpopo(DeepSeek 工具历史、趋势图样式、拖动排序)、@JfanLiu(聚合模式 beta 请求头)、@ix-prism(Claude Desktop 映射循环)、@Dante-dan(WSL 里的 Hermes 会话)、@SmileMachine(路由切换提示)、@Chaoqi31(Pi 子代理用量)、@Carl723000(用量导入提速)、@alkank(土耳其语)、@NestorRay(面板过渡清理)的贡献。
感谢 @wangding0610、@DiYi1999、@CaiSre、@vincerise、@qiangyidian、@zhouys0725、@qianlongwuyong-zxl、@ElijahHong、@wx2cyj、@rvwmng9rvk-crypto、@luckday888、@ramonmi、@quntaoli、@LwTen2019、@CYRickyArAr、@edwardchenchen、@ximigoo 报告问题、提供复现信息和修复思路。
完整的技术细节请见 CHANGELOG。