v4.0.7

farion1231/cc-switchv4.0.7Oct 10, 2026by github-actions[bot]

Upgrading?

AI Summary

This release fixes critical issues with OpenAI account switching between Plus and Team workspaces in Codex, resolves multiple calculation errors in usage statistics (such as Claude cache pricing), and introduces new customization options for credit display and compressed session history support.

Key Highlights

  • Fixes the inability to switch between OpenAI Plus and Team workspaces in Codex.
  • Adds a setting in 'Settings > General > Appearance' to toggle credit display between 'Used' and 'Remaining'.
  • Supports reading compressed Codex history sessions in session management and usage statistics.
  • Fixes usage statistics calculation errors for Claude cache pricing and OpenAI cache hit tokens.
  • Improves Codex restart prompts on Windows and across direct connection and routing modes.

New Features

  • Toggle credit usage display style (Used vs. Remaining) in Settings > General > Appearance.
  • Read and manage compressed Codex history sessions in session management and usage statistics.
  • Display restart prompts for Codex when switching connection modes (Direct/Routing) on Windows.
  • Visual feedback (scroll to entry and flash border) when opening the Config Directory from the app menu.

Full Release Notes

# 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 发布说明](https://github.com/farion1231/cc-switch/blob/main/docs/release-notes/v4.0.4-zh.md)。

**[English →](https://github.com/farion1231/cc-switch/blob/main/docs/release-notes/v4.0.7-en.md) | [日本語版 →](https://github.com/farion1231/cc-switch/blob/main/docs/release-notes/v4.0.7-ja.md)**

---

## 新增

**可以压缩 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](https://github.com/farion1231/cc-switch/blob/main/CHANGELOG.md)。

Related Repositories