github farion1231/cc-switch v4.0.21
CC Switch v4.0.21

3 hours ago

CC Switch v4.0.21

本版本为 Claude Code 增加了多个官方订阅账号的切换:在授权中心添加几个 Claude 账号,每张官方卡选一个,切到哪张卡,Claude Code 就用哪个号;想几个号同时用,从卡片上「打开终端」,那个终端固定用卡片上的号。登录走 Claude Code 官方的流程,令牌只留在本机的 Claude Code 里,CC Switch 不上传、不刷新、不登出。绑了账号的卡片和授权中心都会显示每个号的套餐和剩余额度。另外,「打开终端」挪到了卡片上,Codex 的模型列表可以拖动排序,轻量模式重启后保持。修复了托管 ChatGPT 账号重启后误报登录过期、Codex 经路由时请求发到了别的地址、Codex 的 MCP 配置里多出 timeout / autoApprove、npm 12 下 OpenCode 和 Grok Build 装不好、Kimi Code 用量的时间不对、Oh My Pi 的 models.yml 里有 &、*、! 时无法编辑等问题。4.0 完整的更新内容请见 v4.0 发布说明。

English → | 日本語版 →


新增

在多个 Claude 官方订阅账号之间切换

手上有不止一个 Claude 订阅(比如个人 Max 和公司 Team,或者多个 Pro 账号)时,以前只能在 Claude Code 里 /logout 再 /login,或者自己给每个号建配置目录。现在可以在 CC Switch 里管理多个号(#1928)。

安全与合规。 订阅账号交给工具管理,最要紧的是令牌安全、不违反 Anthropic 的条款。这个功能按 Claude Code 官方文档的做法实现,令牌始终只在你本机的 Claude Code 里:

  • 登录走官方流程。 添加账号时运行的是 Claude Code 自带的 claude auth login --claudeai,密码和授权都在 claude.ai 的官方页面完成。CC Switch 没有自己的 Claude 登录,也没有自己的 OAuth 客户端。Anthropic 的法律与合规页要求 Claude 账号的登录必须通过 Anthropic 自己的流程完成,并且明确不限制用户用自己的订阅登录未经修改的 Claude Code。
  • 多账号用的是官方推荐的方法。 每个号一个独立的配置目录,用 CLAUDE_CONFIG_DIR 区分,和 Claude Code 认证文档里「Log in with multiple accounts」一节的方法一样,CC Switch 只是替你建好目录、打开终端。
  • 令牌不离开本机。 令牌只存在 Claude Code 自己的位置(macOS 的钥匙串,Linux、Windows 的 .credentials.json),不上传,不随云同步,也不写进 CC Switch 的数据库。CC Switch 自己只记邮箱、组织、套餐这类账号资料和登录过期时间,不记令牌。
  • 不替你发请求。 CC Switch 没有服务器,不用订阅令牌调用模型;对话请求都由本机未经修改的 Claude Code 直接发给 Anthropic,用量计在你自己的账号上。查额度时在本机直接查 Anthropic 官方的额度接口,和 Claude Code 自己的 /usage 查的是同一份数据。
  • 不刷新、不登出、不改 Claude Code。 令牌一律由 Claude Code 自己刷新。删除账号只删 CC Switch 为它建的目录(macOS 上连同这个目录在钥匙串里的条目),不会让这个号在任何地方退出登录。CC Switch 不修改 Claude Code 的程序文件。
  • 只管你自己的账号。 不按额度自动轮换账号,也不提供把订阅共享给别人的功能。

切卡即切号会在本机 Claude Code 的存储位置之间移动登录(只按 Claude Code 自己的格式),官方文档没有专门讲到这种用法。只想用文档写明的方式的话,卡片保持「跟随 Claude Code 登录」,其他号只从卡片「打开终端」使用。

怎么用:

  • 添加账号。 在授权中心的 Claude 组点「添加账号」。浏览器会打开 claude.ai 的官方授权页,登录后账号自动出现在列表里。浏览器授权后回不到本机时,可以把地址栏里的地址或页面上的代码粘贴回来。每个号的目录互不干扰,会同步你在 ~/.claude 里的设置、MCP 和 CLAUDE.md(登录凭据和路由相关的设置除外)。
  • 给官方卡选账号。 Claude 官方卡的「登录方式」下拉和 Codex 官方卡一样:上面是已登录的账号,下面是「添加或管理 Claude 账号」(跳到授权中心)和「跟随 Claude Code 登录」。一个号建一张卡就行。
  • 切卡即切号。 切到选了账号的官方卡时,CC Switch 把这个号的登录放进 Claude Code 默认读取的位置,原来那个号放回它自己的目录。终端、IDE 插件、脚本里的 claude 都改用这个号,已经在运行的 Claude Code 也会立即跟着换,不用重启。切到选了账号的官方卡时,现在的登录如果还不在授权中心会先收进来。切换时持有 Claude Code 自己的锁;切换中途 CC Switch 意外退出的话,下次切换或启动时会自动补完或撤回。选「跟随 Claude Code 登录」的卡不碰登录,不添加账号的人不受影响。
  • 几个号同时用。 在选了账号的卡上「打开终端」,这个终端固定用卡片上的号,之后切换卡片不影响它。
  • 套餐和额度。 卡片副标题显示账号和套餐(如 Max 20x),登录需要更新时带一个提示;卡片底部默认显示这个号的剩余额度,授权中心里每个号也有一样的额度列。不在用的号令牌过期时,CC Switch 在它的目录里运行一次 Claude Code 自带的 claude -p /usage(每个号最多 10 分钟一次),由 Claude Code 自己刷新登录、查询额度,CC Switch 只读结果。/usage 不调用模型,不消耗对话额度。没选账号的官方卡也会显示当前登录的套餐。

几点注意:

  • 切号后正在用的 Remote Control 会断开;换号后第一条消息要重建提示缓存,会慢一点、多用一点额度。
  • 在设置里覆盖了 Claude 配置目录(包括指向 WSL)时,切卡不会切换登录,界面会提示改用「打开终端」。

Codex 的模型列表可以拖动排序

Codex 供应商表单里的模型列表,每行开头有拖动手柄,可以用鼠标或键盘调整顺序(#8870)。这个顺序就是 Codex 里 /model 菜单的顺序。第一行代表默认模型时,拖到第一行的模型成为新的默认模型。以前要删掉再加回来才能挪位置。

改进

「打开终端」挪到卡片上。 以前在 ⋯ 菜单里,现在是「编辑」左边的一个图标按钮。悬停提示是「以此供应商打开终端」,终端固定用这张卡时(填了自己的地址和 Key 的卡、选了 Claude 账号的官方卡)会写「(环境隔离)」。

授权中心每组的「添加账号」按钮固定在标题右边。 以前没有账号时按钮会挪到空白提示里,几组卡片的按钮高低不一。ChatGPT 的登录方式改成按钮旁边的一个小下拉。标题里的「删除全部账号」菜单去掉了,账号在各自那一行的菜单里删除。各个账号的额度条现在对齐,长度一致。

轻量模式重启后保持。 在轻量模式下退出 CC Switch,下次启动仍是轻量模式,不再弹出主界面。从 ccswitch:// 链接冷启动时照常打开主界面,好显示导入对话框。

Hermes 卡片显示「默认」,「设为默认」移到 ⋯ 菜单里。 Hermes 把添加的供应商都写进 config.yaml,当前那家只是默认值,和 OpenClaw、OpenCode、Kimi Code 一样。以前的电源图标「启用」按钮看起来像开关。

卡片变成「使用中」时,用量一栏不再左右挪动。

MCP 选了 SSE 时提示哪些应用不支持(#8882)。Codex 只支持 stdio 和 HTTP,会把 SSE 地址当作 HTTP 连接,服务端只支持 SSE 时连不上;Pi 和 Antigravity 保存时会报错。现在「写入到」下面会提前提示。

Claude Desktop 的上游地址填 githubcopilot.com 时,上游格式显示为「由路由按模型自动选择」(#8838),和选 GitHub Copilot 供应商时一样。

OpenCode 的 OMO、OMO Slim 卡片不再显示「检测连通」(#8842)。它们只是代理和模型的对应关系,没有地址可测,以前点了会报错。

土耳其语翻译补全(#8836)。

预设: DeepSeek 一律改用 Flash 模型;Kimi 官方预设加入 K3.1 Pro 和 K3.1 Pro HighSpeed,可以选 low / high / max 思考程度(#8867);OpenClaw 的 MiniMax M3.1 Flash 可以选 max;新增 ClinePass(#8885)、TeamoRouter Claude(#8266);Claude Desktop 的 OpenCode Go 改用官方文档的地址,额度也能查了(#8720、#8779)。

修复

  • 托管 ChatGPT 账号重启后显示「登录已过期」、不能切换,过一会儿又自己好了(#8901)。以前刷新登录时遇到任何 HTTP 403 都当成登录失效,网络错误也显示成过期。现在和 Codex CLI 一样,只有 401 或明确的令牌失效错误才算过期;一时的网络问题照常重试,额度保留上一次的结果。托盘切换后,主界面里查询失败的额度也会重新查询。
  • Codex 经本地路由时,请求发到了别的地址(#8849、#8848)。config.toml 里有多个供应商表、或上面有一行注释掉的旧地址时,以前取的是文本里第一个 base_url,会带着选中供应商的 Key 发到别处。现在按 model_provider 选中的那张表取地址。
  • Codex 远程压缩的用量有时漏记(#8879)。
  • Codex 的 MCP 配置里多出 timeout、autoApprove,Codex 桌面版报未知设置,--strict-config 拒绝加载(#8843)。这两个字段是别的客户端的,以前原样写进了 config.toml,手动删掉下次同步又会写回来。现在写给 Codex 时去掉,其他应用不受影响。
  • Codex 经中转连到多个 Azure 资源时,会话中途报 400「created under a different Azure OpenAI resource」,无法继续(#8877)。现在收到这个错误后重试一次,去掉历史记录的条目 ID。正常的请求不受影响。
  • ClinePass 这类把 Chat Completions 结果包在 data 里返回的上游,非流式请求报 422「No choices in response」(#5658)。
  • npm 12 下,「应用」页装的 OpenCode 在 Windows 上报「与你运行的 Windows 版本不兼容」,Grok Build 升级后仍在跑旧版本(#8863)。npm 12 默认不运行安装脚本,这两个包要靠它放置真正的程序。现在安装和升级时允许它们的安装脚本。
  • Windows 上 Hermes 在「应用」页显示成两处安装(#8839)。同一目录里遗留的 hermes.cmd 不再算一处安装。
  • Kimi Code 的用量,一整轮对话的请求时间都一样,按小时统计时挤在最后一小时(#8899)。现在按每次请求完成的时间记。已导入的记录在会话文件下次变化时会更正。
  • Oh My Pi 的 models.yml 里有 name: Search & Fetch 这类含 &、*、! 的值时,保存供应商时报「此 YAML 使用了 CC Switch 无法安全编辑的格式或语法」(#8897)。
  • ~/.gemini/.env 里写成 export GEMINI_API_KEY=... 时,导入后没有 Key,切回默认供应商还会把它从文件里删掉(#8862、#8861)。
  • 从启用了提示词的项目切到没有提示词的项目,原来的提示词没有停用。
  • 用量统计页展开或收起侧栏时,趋势图右边缘跳动(#8548)。

致谢

感谢 @L4XB(Codex 路由地址、Gemini export 写法)、@syxscott(Codex 远程压缩用量)、@jlxzl(Claude Desktop 的 OpenCode Go 地址)、@Railgun-wiki(Claude Desktop 的 Copilot 地址识别)、@VipCrazyMaster(OMO 卡片的连通检测)、@allenxu09(用量趋势图)、@alkank(土耳其语翻译)、@2867297362mjb-sketch(TeamoRouter 预设)、@zayokami(路由端到端测试)、@Ming-Sir-69(Windows 编译修复)、@SaladDay(issue 与 PR 模板、CI)的贡献。

感谢 @chunliang7258、@Lightly20110815、@Catcaca11j、@xovow、@Haoxuan1016、@karenepitaya、@lwdreamroom、@QingYunA、@bamboodew、@Little-TBS、@sojo-negai、@ppdragon2026、@smart-wcm、@oscarachiang 报告问题、提供复现信息和修复思路。

特别感谢 @octo-patch:你的 PR 发现并修复了真实的问题,只是同样的问题后来在主线上另行修好,PR 因此关闭。

完整的技术细节请见 CHANGELOG。

Don't miss a new cc-switch release

NewReleases is sending notifications on new releases.