CC Switch v4.0.29
本版本新增受管应用 GitHub Copilot CLI:自带 Key 的供应商会写进 Copilot 自己的 providers.json,在 copilot 里用 /model 就能和官方模型一起选,不用经过 CC Switch。界面新增韩语和俄语,七种语言从此同步维护,不再有缺的地方显示英文。
另外修复了 Windows 上 Codex 桌面版在 WSL 里运行 Codex 时,用第三方供应商启动就报错;Codex 新对话经路由连第三方原生 Responses 上游报 400;Codex 经路由连 Anthropic 格式上游时,长回答被 8192 的输出上限截断;Codex 官方卡在路由模式下拿不到账号自己的模型列表等问题。
新增
GitHub Copilot CLI
GitHub Copilot CLI(copilot)成为新的受管应用(#8753,需求见 #5768)。供应商卡片分两种:
- 官方登录:用 Copilot CLI 自己的 GitHub 登录,不写任何文件。「打开终端」以卡片上的模型和推理强度启动
copilot;卡片绑定了授权中心的 GitHub 账号时,用这个账号启动。卡片上显示该账号的 Copilot 额度。 - 自带 Key 的供应商:点「添加」后写进 Copilot 自己的
providers.json($COPILOT_HOME/providers.json)。之后在本机任何地方启动copilot,都能在/model里和官方模型并列选到「卡片标识/模型」,请求直接发给供应商,不经过 CC Switch 的路由。不登录 GitHub 也能用。- CC Switch 只改这一家自己的条目,文件里的其他条目(Copilot 自己也会写这个文件)和顺序原样保留。
providers.json写坏了 Copilot 会起不来,所以写入前会按 Copilot 的规则把整份文件校验一遍,例如模型的最大输出不能占满整个上下文窗口。 - Copilot 当前默认模型所在的那一家标为默认,不能移除或删除。要换,先在
copilot里用/model换成别家的模型。 - 卡片上的终端按钮要添加之后才能用,启动时直接选中这张卡的第一个模型。
- 预设沿用 Pi 的供应商预设。
- CC Switch 只改这一家自己的条目,文件里的其他条目(Copilot 自己也会写这个文件)和顺序原样保留。
此外还支持:
- MCP、Skills、提示词:同步到 Copilot 的
mcp-config.json、Skills 目录和指令文件。 - 会话管理:列出 Copilot 会话,可以在终端里恢复。
- 用量统计:从 Copilot 的会话日志导入用量;自带 Key 的供应商按会话里选中的卡片记账。
- 一键导入链接:可以导入 Copilot 供应商,认得
providers.json写法,支持bearerToken,链接里的模型 ID 全部保留。
韩语、俄语界面,七种语言同步维护
- 韩语(#8794,需求见 #2704)和俄语(#7788,需求见 #6010):首次启动按系统语言自动选择,托盘菜单和快捷面板也已翻译。用量统计的币种新增韩元(KRW),支持自动获取汇率。
- 土耳其语、韩语、俄语不再是「社区翻译、缺的地方显示英文」:界面上的每一句话,中文简体、中文繁体、English、日本語、한국어、Türkçe、Русский 七种语言都有,之后新增和修改文案也会七种语言一起改。
- 升级后弹出的更新摘要暂时只有中文简体、中文繁体、英文和日文,其他语言显示英文。
变更
- Copilot 获取模型列表为空时说明原因(#5500):Copilot Free 账号能拿到模型,但没有一个可以在模型选择器里用,以前只提示没有找到模型。现在会提示这个账号可能没有开通 Copilot Pro;Claude Code 和 Claude Desktop 的表单还会提示可以手动填写
gpt-4.1或gpt-4o。账号有模型、但都不支持当前选择的上游格式时,Codex 表单会单独说明。
修复
- Windows 上 Codex 桌面版在 WSL 里运行 Codex 时,用第三方供应商一启动就报「No such file or directory (os error 2)」(#9375)。v4.0.27 起,CC Switch 在
config.toml里把模型目录文件写成 Windows 绝对路径,WSL 里的 Codex 读不懂这个路径,直连、路由、聚合三种模式都受影响。现在在 Windows 上、Codex 桌面版开启了在 WSL 中运行 Codex 时,改回只写文件名,下次写入时自动改正。 - Codex 新对话经路由连第三方原生 Responses 上游时报 400(#9328,相关 #7074、#9379)。新版 Codex 桌面版会在新对话里带上没有
call_id的页面上下文工具结果,自动化和跨任务派发的回执也是这样,校验严格的上游会拒绝整个请求。以前只对 xAI 改写,现在对所有非官方的原生 Responses 上游都改写成一条用户消息,内容保留。官方订阅和带call_id的工具结果不受影响。 - Codex 经路由连 Anthropic 格式上游时,长回答被截断,报「Incomplete response returned, reason: max_output_tokens」,重试也一样。Codex 请求不带输出上限,以前按 8192 发出,思考也算在内,一次写一整个文件的工具调用就会用完。现在默认改为 32000。上游的输出上限更低时会报 400,可以在供应商的「最大输出 tokens」里填它支持的值。
- Codex 官方卡在路由模式下拿不到账号自己的模型列表:Codex 只能用它自带的列表,缺少账号专属的模型;Codex 桌面版打开 Daybreak 后,官方模型全部变灰。现在路由正在用官方卡、且没有打开「暂停使用官方登录」时,路由会把官方的模型列表原样交给 Codex。第三方供应商不转发。
- Claude Code 经路由连 Mistral 上的 DeepSeek 模型时,工具调用之后的每一轮都报 422(#9385、#9388)。
- 只能经路由使用的 Claude Code 卡片,点「打开终端」后 Claude Code 每句话都提示未登录(「Not logged in」),请求根本没发出去。GitHub Copilot、Codex OAuth、xAI OAuth 这类卡片的凭据由路由提供,非 Anthropic 格式的卡片要靠路由转换格式,终端直连卡片地址用不了。现在这类卡片的「打开终端」按钮变灰,并说明要开启路由后在终端里直接运行客户端。Codex 页面上这类卡片也从隐藏按钮改为同样变灰。
- Claude 官方卡显示的额度可能是另一个账号的:本机默认登录换成别的账号后,正在用的那张卡会读到默认登录那个账号的额度。现在会先确认默认登录属于这个账号。
- Antigravity 的额度和
agy /usage对不上;Google AI Ultra 5x 和 20x 都只显示「Google AI Ultra」(#9317、#9319)。
致谢
感谢 @Owlbay(GitHub Copilot CLI)、@cuiyf5516(韩语界面、韩元币种)、@sunrisegm(俄语界面)、@szcascsa(Codex 没有 call_id 的工具结果)、@quwang123(Mistral 上的 DeepSeek)、@jimpablo(Antigravity 额度与 Ultra 档位)的贡献。
特别感谢以下贡献者:你们的 PR 发现并修复了真实的问题,只是同样的问题后来在主线上另行修好,PR 因此关闭。@SailingLoong(Codex 配置不再写入 disable_response_storage)、@zichen0116(Codex 经路由发往第三方时去掉 ChatGPT 身份头)、@lihenga(Codex 桌面版页面通知缺少 call_id)。
感谢 @SMYQH、@Irving798、@imysen、@THao712、@Z-Eternal、@sumi-0011、@DrMaks22 提出需求、报告问题和提供复现信息。
完整的技术细节请见 CHANGELOG。