CC Switch v4.0.7
4.0 正式版的第三个修复版本
同一个 OpenAI 账号下的 Plus 和 Team 工作区,在 4.0 里切不过去,这个版本修好了。额度可以改回 3.x 那样显示「已用」,在「设置 → 通用 → 外观」里切换。Codex 的历史会话可以在 CC Switch 里打开压缩,会话管理和用量统计也能读取压缩后的会话。直连和路由互相切换后,CC Switch 也会提示重启 Codex;Windows 上第一次能看到这条提示。用量统计这次修了几处算错的地方,包括 Claude 1 小时缓存写入的价格和部分中转站的缓存命中。4.0 完整的更新内容请见 v4.0 发布说明。
新增
可以压缩 Codex 的历史会话。 Codex 会把每个会话完整记录在 ~/.codex/sessions 下,用得多的话这个目录会涨到几十 GB。Codex 自己有一个还在开发中的压缩功能,默认关闭;CC Switch 这次加了开关,并且能读取压缩后的会话。
- 怎么打开: 在「设置 → 应用配置 → Codex」打开「压缩 Codex 历史会话」,旁边会显示
sessions和archived_sessions两个目录当前一共占多少空间。这个开关直接改 Codex 的config.toml:打开时写入[features]下的local_thread_store_compression = true,关闭时删掉这一行,CC Switch 不另外保存这个设置。 - 压缩什么时候发生: 打开后不会马上压缩。Codex 每次启动时会在后台把 7 天以上没动过的会话文件压成同名的
.jsonl.zst,再删掉原文件。实测压缩后大约只占原来的六分之一。 - 继续旧会话: 照常在 Codex 里继续就行,Codex 会先把这个会话解压回原来的格式。
- 在 CC Switch 里: 压缩过的会话照常出现在会话列表里,可以查看和删除,用量照常统计,压缩前后也不会重复计算。为了在会话很多时也能很快打开列表,CC Switch 只读压缩文件的开头,所以这些会话不显示最后一条回复的预览,最后活跃时间取文件的修改时间。
- 需要注意: 需要较新版本的 Codex,改完要重启 Codex 才生效。这是 Codex 还在开发中的功能,打开后 Codex 每次启动都会显示一条提示。关闭开关后不再压缩新的会话,已经压缩的会话保持原样,只有在 Codex 里继续时才会被解压。其他直接读取
.jsonl会话文件的工具可能读不到压缩后的会话。
即使不打开这个开关,Codex 的后台服务也可能自己压缩会话。以前 CC Switch 只认未压缩的会话文件,这些会话会从会话列表里消失,用量也不会导入,现在都能正常读取。
额度可以显示「已用」。 4.0 把各档额度都改成了「剩余 x%」,有人习惯 3.x 的「已用 x%」,也有人希望和 Codex 自己的写法一致,所以做成了设置。在「设置 → 通用 → 外观 → 额度显示」选「剩余」(默认)或「已用」,供应商卡片、授权中心和托盘都会跟着变。只有各档的百分比会换,余额、Codex Credits 和重置次数始终显示剩余,用完的档位仍然显示「已用完」。颜色和「快用完」提醒仍然按剩余算,已用 94% 和剩余 6% 一样是橙色。展开后的进度条长度跟着显示的数字走,已用 30% 就画 30%。
直连和路由互相切换后,也会提示重启 Codex。 已经打开的 Codex 还在用启动时读到的模型列表。以前只在聚合模式下检查,直连和路由互相切换后,即使模型列表变了也不会提示。现在三种模式都会检查。关掉提示后如果模型列表又变了,提示会再次出现。
Windows 上也能看到重启 Codex 的提示了。 以前判断 Codex 有没有在运行,靠读系统进程列表,这个方法在 Windows 上用不了,模型列表和账号的提示都不会出现,重启按钮也总是说后台服务没在运行。现在 Windows 上按 Codex 后台服务自己记录的进程号判断它是否在运行,只在确认它在运行时提供重启按钮。CC Switch 在 Windows 上看不到 Codex 桌面版和编辑器插件,所以只要模型列表或登录账号和你上次关掉提示时不一样,就会提示「切换前就开着的 Codex 可能还在用之前的账号或模型列表」;这些客户端没开着的话,直接关掉提示就行。刚升级时不会弹出这条提示。
从应用页菜单打开「配置目录」时,设置页会滚到这个应用的条目,并让它的边框闪两下。滚动途中你自己滚动或点击,会马上停止;系统开启了减少动态效果时直接跳过去。
修复
- 同一个 OpenAI 账号下的 Plus 和 Team 工作区,在 Codex 里切不过去。 4.0 只按用户来认 Codex 的官方登录,同一个人的不同工作区被当成「已经登录了这个账号」,
auth.json不会改写,也不会提示重启。暂存登录信息时也按用户记,同一个人的几个工作区只剩一份。现在按「用户 + 工作区」来认,和 Codex 自己判断账号有没有变的方式一致。升级后会自动整理暂存的登录信息,被合并掉的工作区会从官方卡片里找回来;已经登出的账号不会被恢复。 - Codex 供应商的地址写在
config.toml顶层时,编辑保存会把地址删掉。 这类配置在编辑器里请求地址显示为空,保存后地址被删除,路由报「Codex Provider 缺少 base_url 配置」;直连模式下切过去还会走到 OpenAI 官方地址。现在会把顶层地址整理到[model_providers.custom]里,编辑器能显示,保存也会保留。表单也不再生成这种写法。 - Windows 用户名里有中文等非 ASCII 字符时,在「应用」页升级工具失败,提示「系统找不到指定的路径」。Claude Code 供应商卡片上的「打开终端」也会读不到临时配置,Claude Code 不报错,直接用默认配置启动;项目目录带中文时也一样。原因是 CC Switch 生成的批处理文件按 UTF-8 写入,
cmd.exe却按控制台代码页读。升级脚本现在会先切换到 UTF-8,这一步只在它自己的隐藏窗口里生效;「打开终端」不切换代码页(那会改掉你自己终端的设置),改为不把这些路径直接写进批处理文件。 - Codex 在官方供应商下继续旧的第三方会话时,报错提示让你重启。 Codex 继续会话时会沿用会话创建时的供应商,第三方会话会一直指向本地路由,重启 Codex 也没用。现在报错会说明这是旧的第三方会话,需要新开会话;只有确实是 Codex 没有重新读取配置时,才提示重启。
- Claude 的 1 小时缓存写入按 5 分钟的价格计费。 1 小时缓存写入的单价是输入价的 2 倍,5 分钟的是 1.25 倍,以前一律按 5 分钟算,少算了不少。现在代理日志和 Claude Code 会话导入都会分开计价。
- 部分 OpenAI 兼容中转站的缓存命中显示为 0。 有的中转站把
cache_read_input_tokens固定写成 0,真实命中数放在prompt_cache_hit_tokens里,以前读到 0 就不往下找了,缓存命中显示为 0,未命中的输入也被多算。现在遇到 0 会接着看下一个字段。Claude Code 经路由转 OpenAI Chat 格式、Codex 和 Grok Build 使用 Chat 格式的上游时都按这个规则读。 - Codex 会话导入的用量里没有缓存写入。 GPT-5.6 和 GPT-6 的缓存写入被按普通输入计价,现在会单独记录。
- Claude Sonnet 5.5 和 Haiku 5.5 的费用记为 0。 内置定价表补上了这两个模型。
- 用量统计「Claude」页里,同一个供应商在 Claude Code 和 Claude Desktop 里都配置过时,会出现两行一样的记录,切换应用后还会留下旧的行。
- OpenCode 和 MiniMax Code 的额外选项,编辑其中一项后,其他没动过的值类型会变。 比如字符串
"123"、"false"被存成数字或布尔值。现在没改过的值保持原样,改名时也不能改成已有的名字。 - OpenClaw 打开或关闭「发送 User-Agent」时,其他自定义请求头全被删掉。 现在只改 User-Agent 这一项。
- Pi 和 MiniMax Code 的「火山 Agent Plan」预设用的是 Coding Plan 的地址,Agent Plan 的 Key 用不了。现在改用 Agent Plan 自己的地址,另外新增「火山 Coding Plan」预设。
其他:
- 中文版聚合模式指南和三语用户手册补充了两个 Codex 常见问题:子 agent 换到另一家供应商后读不到任务,以及官方 5 小时额度用完后
/model被锁定在 Luna Reserve,暂时把第三方供应商设为默认可以绕开。 - 「统一 Codex 会话历史」的说明改为只针对 Codex CLI:Codex 桌面版更新后已经能显示所有供应商的会话,只用桌面版的话不需要打开。
升级说明
数据库结构没有变化,仍然是 20。
Claude 的缓存写入费用升级后会变高。 用 1 小时缓存时(Claude Code 主会话通常就是),新记录的缓存写入按正确的价格计算,每天的费用会比升级前高一截。这是以前少算了,不是涨价;升级前的记录不会重算。
Claude Sonnet 5.5 和 Haiku 5.5 以前记为 0 的费用,会在启动时按新价格补算。Haiku 5.5 只按 10 万 token 以内的价格计算,更长的提示词会少算。
已经添加过的「火山 Agent Plan」供应商(Pi、MiniMax Code)不会自动修改,请把请求地址里的 /api/coding/v3 改成 /api/plan/v3,或者删掉后用新预设重新添加。
致谢
感谢 @ggbdpq(中转站缓存命中显示为 0、OpenCode 额外选项类型被改、直连和路由切换后的重启提示)、@Chaoqi31(报告并修复 Claude 1 小时缓存写入计价、Codex 会话导入缓存写入)、@Yanxcyan(Claude Sonnet 5.5 / Haiku 5.5 定价、火山 Agent Plan 预设)、@hulkbig(报告并修复 OpenClaw 自定义请求头被删)、@Railgun-wiki(报告并修复用量统计重复行)、@funkpopo(设置页滚到应用配置条目)的贡献。
感谢 @yleo888、@harvey500、@friendlzw、@burningimlam、@JinLin-Yu、@winter-maple、@SamPheng、@cjmarklll、@LeenixP、@EMnian 报告问题和提出建议。
完整的技术细节请见 CHANGELOG。