# CC Switch v3.16.2

> 在 v3.16.1 的 Codex 稳定性补丁之后，这一版主要拓宽了数据的可携带性与用量观测能力——新增 S3 兼容云同步、OpenCode 会话用量同步、官方订阅额度模板——并继续加固 Codex 通过 Chat Completions 路由第三方供应商的稳健性，同时修复了一批 Windows / macOS 平台问题，新增 CherryIN、ZenMux 供应商，并全面刷新了三语用户手册。

**[English →](v3.16.2-en.md) | [日本語版 →](v3.16.2-ja.md)**

---

## 使用攻略

这一版新增了云同步的 S3 后端和更多用量统计来源，如果你想用上，可以先看这些文档：

- **[设置](../user-manual/zh/1-getting-started/1.5-settings.md)**：在设置页配置云同步（WebDAV / S3 兼容存储），用于在多台设备间备份和恢复供应商、MCP、提示词、技能等配置。
- **[用量统计](../user-manual/zh/4-proxy/4.4-usage.md)**：了解用量看板的数据来源（代理日志、Codex / Gemini / OpenCode 会话同步）与统计口径。

---

> [!WARNING]
>
> ## 唯一官方渠道声明（请务必阅读）
>
> CC Switch 是**完全免费、开源**的桌面应用，**不会向用户收取任何费用**。请仅通过下列官方渠道获取本软件：
>
> | 类别     | 唯一官方                                                                       |
> | -------- | ------------------------------------------------------------------------------ |
> | 官网     | **[ccswitch.io](https://ccswitch.io)**                                         |
> | 源码     | **[github.com/farion1231/cc-switch](https://github.com/farion1231/cc-switch)** |
> | 下载     | **[GitHub Releases](https://github.com/farion1231/cc-switch/releases)**        |
> | 作者     | **[@farion1231](https://github.com/farion1231)**                               |
> | 举报山寨 | **[GitHub Issues](https://github.com/farion1231/cc-switch/issues)**            |
>
> **任何向你收费、要求充值、或索取登录凭据的"CC Switch"网站或客户端均为假冒**。如果你被诱导支付了费用，请立即停止操作并通过 GitHub Issues 反馈。

---

## 概览

CC Switch v3.16.2 是 v3.16.1 之后的一版维护更新。在上一版集中处理 Codex 官方鉴权与本地路由接管的安全问题之后，这一版把重心放在两件事上：一是拓宽数据的可携带性和用量观测——新增 S3 兼容云同步（WebDAV 之外的第二套云备份后端）、OpenCode 会话用量同步，以及面向官方订阅的额度统计模板；二是继续打磨 Codex 通过 Chat Completions 路由第三方供应商时暴露出来的边角问题——流式截断判定、空 tools 下的 `tool_choice`、自定义工具元数据、推理 token 统计、文件 / 音频附件转换等。

此外，本版还修复了一批本地代理的稳健性问题（临时端口解析、接管占位符还原死循环、Anthropic `system` 消息归一化、上游 413 文案、Claude Desktop 的 `[1m]` 模型路由），处理了若干 Windows / macOS 平台体验问题，并新增 CherryIN、ZenMux 两个供应商，同时全面刷新了三语用户手册。

**发布日期**：2026-06-07

**更新规模**：41 commits | 132 files changed | +11,116 / -1,636 lines

---

## 重点内容

- **S3 兼容云同步**：在 WebDAV 之外新增 S3 兼容对象存储作为第二套云备份后端，内置 AWS S3、MinIO、Cloudflare R2、阿里云 OSS、腾讯云 COS、华为 OBS 等一键预设。
- **更多用量统计来源**：新增 OpenCode 会话用量同步，以及面向 Claude / Codex / Gemini 官方订阅的额度统计模板（显式开关、默认关闭）。
- **Codex Chat Completions 路由继续加固**：修复流式截断误判、空 tools 下 `tool_choice` 被拒、自定义工具元数据丢失、推理 token 统计缺失，并支持文件 / 音频附件转换与 `/v1/models` 探活端点。
- **本地代理更稳**：修复临时端口（port 0）解析、接管占位符还原死循环、Anthropic `system` 消息归一化、上游 413 文案，以及 Claude Desktop 1M 上下文模型路由。
- **平台与供应商**：修复 Windows 托盘 / 任务栏图标、子目录技能更新、macOS 输入自动大写等问题，并新增 CherryIN、ZenMux 供应商。

---

## 新功能

### S3 兼容云同步

云同步现在支持 S3 兼容对象存储作为 WebDAV 之外的第二套后端，签名采用自实现的 AWS Signature V4，以兼容尽可能多的服务。设置页提供 AWS S3、MinIO、Cloudflare R2、阿里云 OSS、腾讯云 COS、华为 OBS 以及自定义 endpoint 的一键预设，支持连接测试、手动上传 / 下载，以及在配置变更时自动同步（providers、endpoint、MCP、提示词、技能、设置、代理等配置表，**不含**用量日志这类高频写入数据）。开启 S3 同步会停用正在运行的 WebDAV 同步，反之亦然（[#1351](https://github.com/farion1231/cc-switch/pull/1351)）。

### OpenCode 会话用量同步

新增 OpenCode 作为用量统计来源，从 OpenCode 本地 SQLite 数据库读取每条消息的 token、成本和模型数据并导入用量记录，并提供独立的「OpenCode」应用筛选页签和「OpenCode Session」数据来源标签。数据库路径会遵循 `OPENCODE_DB` 和 `XDG_DATA_HOME`（在所有平台默认 `~/.local/share/opencode`），只导入已完成的消息，并在判断新鲜度时把 WAL 文件一并计入，避免刚写入的会话被跳过（[#3215](https://github.com/farion1231/cc-switch/pull/3215)）。

### 官方订阅额度模板

由于部分用户担心发起用量查询的 IP 和发起应用内请求的不一致导致封号风险，因此为 Claude / Codex / Gemini 官方供应商新增一个显式、可选的「官方订阅」用量模板，通过 CLI / OAuth 凭据查询套餐额度，替代此前对官方供应商的隐式自动查询。该模板默认关闭，需要在用量脚本弹窗里开启，并可配置刷新间隔。使用此功能建议开启代理的 TUN 模式。

### 文本模型图片回退整流器

新增一个代理整流器：当路由到的模型仅支持文本（显式声明，或由内置的模型名启发式判定），或上游拒绝图片输入时，会把 Anthropic 图片块替换为 `[Unsupported Image]` 占位标记，避免对话被中断。设置页提供该回退功能的开关，并单独提供一个开关控制启发式检测（可关闭以避免误判多模态模型）。

### ZenMux Token Plan 供应商

新增 ZenMux 作为 Token Plan 类的 Coding Plan 供应商，可在用量脚本弹窗里手动填写 API key 和 base URL，并以美元口径富展示已用 / 额度（[#2709](https://github.com/farion1231/cc-switch/pull/2709)）。

### CherryIN 预设

新增 CherryIN 聚合网关作为快捷配置预设，覆盖全部 7 个受管应用——Claude Code / Claude Desktop / OpenClaw / Hermes 使用 Anthropic 格式端点（open.cherryin.net），OpenCode 使用 `@ai-sdk/anthropic`（`/v1`），Codex 使用 OpenAI 兼容端点，Gemini CLI 使用 Gemini 兼容端点，附带官方品牌图标，位置紧挨 AiHubMix（[#3643](https://github.com/farion1231/cc-switch/pull/3643)）。

### Codex CLI 模型探活端点 `/v1/models`

本地代理现在会响应 Codex CLI 启动时探测的 `GET /v1/models`，返回 CC Switch 托管的 Codex 模型目录。同时加入了过期目录守卫：解析 live 的 `config.toml`，仅当 `model_catalog_json` 仍指向 CC Switch 持有的目录文件时才提供，避免把上一个供应商遗留的目录暴露给 Codex（[#3818](https://github.com/farion1231/cc-switch/pull/3818)）。

### Codex Chat 文件与音频附件

Codex 的 Responses→Chat 转换现在会把 `input_file`（携带 `file_id` 或内联 `file_data`）和 `input_audio` 内容部分映射为 Chat Completions 的对应形态，并补发此前会被丢弃的顶层 `input_*` 项，让文件和音频附件能够送达只支持 Chat 的 Codex 上游。

---

## 变更

### 用量看板 Hero 重新设计

把用量看板的 Hero 区与汇总卡片重排为更紧凑的布局，将真实 token 总量、请求数和成本合并到顶部一行展示（[#3426](https://github.com/farion1231/cc-switch/pull/3426)）。

### SSSAiCode 端点刷新

把 SSSAiCode 预设的官网、注册和 API base URL 更新到 `sssaicodeapi.com` 域名，并刷新其端点候选节点（默认 `node-hk.sssaicodeapi.com`，另含 `node-hk.sssaiapi.com` 和 `node-cf.sssaicodeapi.com`），覆盖全部 7 个应用预设。

---

## 修复

### Codex Chat 流式截断判定

当 Chat Completions 上游在没有 `finish_reason` 或 `[DONE]` 的情况下结束流时，CC Switch 不再把它当作正常完成：只有流真正结束才正常收尾；已产出部分内容时发出 incomplete（`max_output_tokens`）响应；完全没有产出时发出失败的 `stream_truncated` 事件。晚到的推理内容也会回填到仍在进行的流式工具调用上。

### Codex Chat 空 tools 下的 `tool_choice`

Responses→Chat 转换现在会在最终 tools 数组缺失或为空（包括所有工具被过滤掉）时一并丢弃 `tool_choice` 和 `parallel_tool_calls`，避免严格的 OpenAI 兼容上游（vLLM、企业网关）以"When using `tool_choice`, `tools` must be set."报 503/400（[#3640](https://github.com/farion1231/cc-switch/pull/3640)）。

### Codex 自定义工具元数据保留

自定义 Codex 工具（如自由格式的 `apply_patch` 工具）现在会把完整的原始定义——包括 format 和 grammar 元数据——以紧凑、顺序稳定的 JSON 块嵌入生成的 Chat 函数描述中，而不是替换成通用占位符，从而在 Chat Completions 上游上仍可正常使用（[#3644](https://github.com/farion1231/cc-switch/pull/3644)）。

### Codex Chat 用量缺少 `reasoning_tokens`

Chat→Responses 的用量转换现在总会包含 `output_tokens_details.reasoning_tokens`（默认 0），即使供应商省略 `completion_tokens_details` 或返回非对象也是如此，满足 Codex CLI 的严格要求，避免反复的响应解析失败和重试（[#3514](https://github.com/farion1231/cc-switch/pull/3514)）。

### Codex 自定义工具 / 搜索工具的跨轮推理

Codex Chat 历史里的跨轮推理缓存现在覆盖完整的工具调用集合（`function_call`、`custom_tool_call`、`tool_search_call`）及其输出，而不再仅限普通函数调用，因此 `apply_patch` 和工具搜索调用在通过 `previous_response_id` 恢复时能保留各自的 `reasoning_content`。

### 临时端口（port 0）解析

当代理被配置为监听 0 端口（由系统分配）时，接管流程现在会先启动代理以拿到真实端口，再写入 live 配置和数据库，避免客户端 URL 指向无效的 `:0` 地址；若还没解析出具体端口，Claude Desktop 的网关 URL 会被直接拒绝。

### 代理占位符备份 / 恢复死循环

如果上一次停止代理时未能还原原始 live 配置、把代理占位符遗留在了 live 中，再次接管时不会再用代理配置覆盖掉正常备份，恢复时也不会把占位符写回 live：两条路径都会识别占位符状态并以当前供应商为真相来源重建 live，修复了代理开关变成空操作、客户端被钉死在本地代理地址的问题（[#3689](https://github.com/farion1231/cc-switch/pull/3689)）。

### 代理接管期间误拦截供应商切换

在本地路由接管期间，现在只有显式归类为官方的供应商会被禁止切换，而不会再把端点存在 meta 里、或字段尚未填写的自定义供应商一并禁用。被禁用的「启用」按钮现在以更轻量的提示气泡替代原先的红色「已拦截」标记。

### localhost 监听地址归一化

保存代理时如果监听地址填的是 `localhost`，现在会先归一化为 `127.0.0.1` 再持久化，避免绑定不一致（[#3016](https://github.com/farion1231/cc-switch/pull/3016)）。

### Anthropic `system` 消息归一化

对 Anthropic 格式的供应商，`messages` 数组里的 system 角色条目现在会被折叠并合并到顶层 `system` 字段（保留原顺序以及已有的顶层 system），避免严格上游拒绝非首位的 system 消息；OpenAI Chat 路由不受影响（[#3775](https://github.com/farion1231/cc-switch/pull/3775)）。

### Claude Desktop 1M 上下文模型路由

Claude Desktop 在 1M 上下文 beta 激活时会给模型名追加 `[1m]` 标记（如 `claude-opus-4-8[1m]`）。代理现在会在路由匹配前先剥掉该后缀，让精确、别名、旧名和角色关键词匹配都能正确命中，修复了对话中途切换到 1M 模型时的 `route_unknown`（HTTP 400）失败；诊断用的 `route_unknown` 错误里仍保留原始模型名。

### Codex 413 错误文案

当 Codex 上游网关以 HTTP 413 拒绝过大的请求体时，代理现在返回专门的提示，说明这是供应商服务端的请求体大小限制（而非 CC Switch 本地限制），并给出可操作的恢复步骤（运行 `/compact`、移除大段日志或内联图片，或请供应商调高限制），不再原样回显上游的 HTML 错误页。

### 代理面板错误详情

切换代理接管失败时，代理面板的提示现在会带上后端返回的具体错误详情，而不是只显示一句笼统的失败信息（[#3656](https://github.com/farion1231/cc-switch/pull/3656)）。

### Copilot 无限空白检测阈值

把流式无限空白的中断阈值从 20 调高到 500 个连续空白字符，避免参数里含深层缩进代码（Python、YAML、Rust、Markdown）的正常工具调用被误判中断，同时仍能捕获真正的 Copilot 无限空白 bug（[#2647](https://github.com/farion1231/cc-switch/pull/2647)）。

### 订阅档位托盘渲染

通过统一的档位到标签映射，修复官方订阅档位在托盘和额度展示上的渲染问题：Claude / Codex 不再漏掉 7 天窗口，Gemini Pro / Flash / Flash-Lite 档位不再泄露原始机器名，多窗口套餐（如 Opus + Sonnet）现在按最差利用率展示而非取第一个匹配。

### Claude 流式 input_tokens 虚高

部分 Anthropic 兼容的流式供应商（如 Qwen、MiniMax）会在 `message_start` 里把完整上下文当作 `input_tokens` 上报，重复计入了已经单独统计的缓存部分，导致显示的缓存命中率被人为拉低。现在解析器会优先采用 `message_delta` 中更小的正 `input_tokens`，并采用同一 usage 块里配套的缓存计数；原生 Claude 和 OpenRouter 转换路径不变。

### 智谱配额查询端点路由

智谱 Coding Plan 的配额查询此前被硬编码到 `api.z.ai`，导致使用大陆预设（`open.bigmodel.cn`）的用户在国际端点不可达时查不到用量。现在配额请求会路由到与用户所配 base URL 匹配的主机（[#3702](https://github.com/farion1231/cc-switch/pull/3702)）。

### MiniMax 余额接口与定价

适配 MiniMax Coding Plan 配额的新余额接口（新接口返回剩余百分比字段，而非旧解析器依赖、会导致档位为空、托盘不再显示用量的用量计数），过滤掉非编程模型（如视频），兼容无周限额的套餐，并为 MiniMax M3 模型补充了默认定价（[#3518](https://github.com/farion1231/cc-switch/pull/3518)）。

### GLM Coding Plan 端点与模型拉取

把智谱 / Z.AI 的 GLM Coding Plan 预设修正到 `/api/coding/paas/v4` 端点（覆盖 Codex、OpenCode、OpenClaw、Hermes），并让模型列表探测对已经以 `/v{N}` 版本段结尾的 base URL 改为先查 `{base}/models`（保留 `/v1/models` 作为兜底），让「拉取模型」按钮不再在带版本号的端点上 404（[#3524](https://github.com/farion1231/cc-switch/pull/3524)）。

### Codex 模型目录路径可移植性

Codex 现在只把相对文件名 `cc-switch-model-catalog.json` 写入 `config.toml`，而不是绝对路径（Codex CLI 会从配置目录解析它），修复了在 WSL 和符号链接环境下绝对路径无法转换、导致模型目录失效的问题（[#3614](https://github.com/farion1231/cc-switch/pull/3614)）。

### APINebula 的 OpenCode SDK

APINebula 的 OpenCode 预设现在加载 `@ai-sdk/openai-compatible` 而非 `@ai-sdk/openai`，让请求使用该中转期望的 OpenAI Chat Completions 格式，而不是只支持 chat-completions 的上游会失败的 Responses API。

### Windows 退出后托盘图标残留

在 Windows 上退出 CC Switch 可能会留下一个失效的托盘图标，直到鼠标划过才消失。现在应用会在退出前显式移除托盘图标，让它随进程结束干净消失（[#3797](https://github.com/farion1231/cc-switch/pull/3797)）。

### Windows 任务栏图标

在运行时显式设置 Windows AppUserModelID，并给安装器生成的桌面和开始菜单快捷方式写入相同的 ID 和产品图标，让 CC Switch 在任务栏上显示正确图标并正确归组（[#3457](https://github.com/farion1231/cc-switch/pull/3457)）。

### Windows 子目录技能的更新检查

在 Windows 上扫描已安装技能时，把反斜杠路径分隔符归一化为正斜杠，让嵌套在子目录里的技能（如 `skills/my-skill`）能被更新检查匹配到，而不是被静默跳过（[#3430](https://github.com/farion1231/cc-switch/pull/3430)）。

### macOS 输入自动大写

为共享的文本 Input 组件关闭自动完成、自动纠错、自动大写和拼写检查，让 macOS 不再对配置字段里输入的首字母自动大写或自动纠正（[#3626](https://github.com/farion1231/cc-switch/pull/3626)）。

### Codex VS Code 会话预览

从 VS Code 发起的 Codex 请求，其会话预览在注入请求前存在 markdown 标题时，可能显示选区或打开文件的内容而非真实提示。现在后端标题和前端预览都会匹配最后一个「## My request for Codex:」标题（IDE 把真实请求作为最后一节注入），让预览反映用户的提示（[#3593](https://github.com/farion1231/cc-switch/pull/3593)）。

### 中文界面 VS Code 文案

把简体和繁体中文里「应用到 Claude Code 插件」的描述改为正确书写「VS Code」而非「Vscode」，与英文、日文文案对齐（[#3228](https://github.com/farion1231/cc-switch/pull/3228)）。

---

## 文档

### 用户手册刷新

刷新了 README 各语言版本以及 en / zh / ja 用户手册，使其反映全部 7 个受管应用（在介绍和总览文案里补上 Claude Desktop 与 Hermes），把 OpenCode 配置路径修正为 `~/.config/opencode/`（`opencode.json`），补充了 Hermes 配置文件说明，把语言文档更新为四种语言，订正各应用 MCP / 提示词 / 技能的支持情况，说明导出现在会生成带时间戳、含用量日志的 SQL 备份，并补充了定价模型 ID 匹配规则（[#3411](https://github.com/farion1231/cc-switch/pull/3411)）。

### Codex 官方认证保留指南

新增中 / 英 / 日三语指南，说明如何在把模型流量切到第三方 API 的同时，保留 Codex 官方远程操作和官方插件的可用性，并从 v3.16.1 release notes 链接到该指南。

### README 链接与赞助商标记

把各语言 README 里的 Release Notes 链接更新到 v3.16.1，并修复 README_ZH 赞助商区块里损坏的弯引号字符，让其 HTML 属性能正确渲染（[#3772](https://github.com/farion1231/cc-switch/pull/3772)）。

---

## 升级提醒

### S3 与 WebDAV 云同步互斥

云同步同一时间只会运行一套后端。开启 S3 自动同步会停用正在运行的 WebDAV 自动同步，反之亦然。如果你之前用的是 WebDAV，切到 S3 前请确认两端数据已对齐，避免误以为旧后端仍在备份。

### 修改模型映射后仍需重启 Codex

Codex 在启动时读取 `model_catalog_json`。即使本版已把模型目录改写为相对路径并新增了 `/v1/models` 探活端点，只要你修改了模型映射表，仍然需要重启 Codex 才能让 `/model` 菜单刷新。

---

## 风险提示

本版本继续沿用此前版本对反向代理类功能的风险提示。

**Codex OAuth 反向代理**：使用 ChatGPT 订阅的 Codex OAuth 反代可能违反 OpenAI 服务条款，详情见 [v3.13.0 release notes](v3.13.0-zh.md#️-风险提示)。

**Codex 第三方供应商 Chat 路由**：通过 CC Switch 本地代理把 Codex 请求转换并转发到第三方供应商时，各供应商对计费、合规与数据留存的约束不同，请在使用前阅读目标供应商的服务条款。

**Claude Desktop 第三方供应商代理切换**：通过 CC Switch 内置代理网关把 Claude Desktop 的请求转到第三方供应商时，同样需要遵守目标供应商的计费、合规与数据留存约束。

用户启用上述功能即表示自行承担相关风险。CC Switch 不对因使用这些功能而导致的任何账号限制、警告或服务暂停承担责任。

---

## 致谢

感谢以下贡献者在 v3.16.2 中提交的功能与修复：

- [#1351](https://github.com/farion1231/cc-switch/pull/1351)：新增 S3 兼容云存储同步，感谢 [@keithyt06](https://github.com/keithyt06)。
- [#3215](https://github.com/farion1231/cc-switch/pull/3215)：新增 OpenCode 会话用量同步，感谢 [@nothingness0db](https://github.com/nothingness0db)。
- [#2709](https://github.com/farion1231/cc-switch/pull/2709)：新增 ZenMux Token Plan 供应商，感谢 [@Eter365](https://github.com/Eter365)。
- [#3643](https://github.com/farion1231/cc-switch/pull/3643)：新增 CherryIN 预设供应商，感谢 [@zhibisora](https://github.com/zhibisora)。
- [#3818](https://github.com/farion1231/cc-switch/pull/3818)：新增 Codex CLI 探活用的 `GET /v1/models` 端点，感谢 [@CSberlin](https://github.com/CSberlin)。
- [#3426](https://github.com/farion1231/cc-switch/pull/3426)：用量看板 Hero 重新设计，感谢 [@allenxu09](https://github.com/allenxu09)。
- [#3640](https://github.com/farion1231/cc-switch/pull/3640)：空 tools 时丢弃 `tool_choice`，感谢 [@Postroggy](https://github.com/Postroggy)。
- [#3644](https://github.com/farion1231/cc-switch/pull/3644)：Chat 路由保留 Codex 自定义工具元数据，感谢 [@LanternCX](https://github.com/LanternCX)。
- [#3514](https://github.com/farion1231/cc-switch/pull/3514)：Chat→Responses 始终包含 `reasoning_tokens`，感谢 [@yeeyzy](https://github.com/yeeyzy)。
- [#3689](https://github.com/farion1231/cc-switch/pull/3689)：live 已是代理占位符时跳过备份 / 恢复，感谢 [@YongmaoLuo](https://github.com/YongmaoLuo)。
- [#3016](https://github.com/farion1231/cc-switch/pull/3016)：归一化 localhost 监听地址，感谢 [@Alexlangl](https://github.com/Alexlangl)。
- [#3775](https://github.com/farion1231/cc-switch/pull/3775)：规范化 Anthropic `system` 消息，感谢 [@Dearli666](https://github.com/Dearli666)。
- [#3656](https://github.com/farion1231/cc-switch/pull/3656)：改进代理面板错误信息展示，感谢 [@lzcndm](https://github.com/lzcndm)。
- [#2647](https://github.com/farion1231/cc-switch/pull/2647)：调高无限空白检测阈值 20 → 500，感谢 [@NiuBlibing](https://github.com/NiuBlibing)。
- [#3702](https://github.com/farion1231/cc-switch/pull/3702)：智谱配额查询按所配 base URL 路由，感谢 [@YongmaoLuo](https://github.com/YongmaoLuo)。
- [#3518](https://github.com/farion1231/cc-switch/pull/3518)：适配 MiniMax 余额查询新接口与默认定价，感谢 [@LaoYueHanNi](https://github.com/LaoYueHanNi)。
- [#3524](https://github.com/farion1231/cc-switch/pull/3524)：修复智谱 Coding Plan 预设与带版本号端点的模型探测，感谢 [@makoMakoGo](https://github.com/makoMakoGo)。
- [#3614](https://github.com/farion1231/cc-switch/pull/3614)：模型目录改用相对文件名，感谢 [@steponeerror](https://github.com/steponeerror)。
- [#3797](https://github.com/farion1231/cc-switch/pull/3797)：修复 Windows 退出后托盘图标残留，感谢 [@iAJue](https://github.com/iAJue)。
- [#3457](https://github.com/farion1231/cc-switch/pull/3457)：修复 Windows 任务栏图标，感谢 [@ZhangNanNan1018](https://github.com/ZhangNanNan1018)。
- [#3430](https://github.com/farion1231/cc-switch/pull/3430)：归一化 Windows 路径分隔符以匹配子目录技能更新，感谢 [@Ninthless](https://github.com/Ninthless)。
- [#3626](https://github.com/farion1231/cc-switch/pull/3626)：关闭 macOS 输入框自动大写，感谢 [@ZHLHZHU](https://github.com/ZHLHZHU)。
- [#3593](https://github.com/farion1231/cc-switch/pull/3593)：修复 Codex VS Code 会话预览，感谢 [@xwil1](https://github.com/xwil1)。
- [#3228](https://github.com/farion1231/cc-switch/pull/3228)：对齐中文界面 VS Code 文案，感谢 [@Games55k](https://github.com/Games55k)。
- [#3411](https://github.com/farion1231/cc-switch/pull/3411)：刷新用户手册以反映当前应用支持，感谢 [@makoMakoGo](https://github.com/makoMakoGo)。
- [#3772](https://github.com/farion1231/cc-switch/pull/3772)：修复 README release note 链接与赞助商标记，感谢 [@null-easy](https://github.com/null-easy)。

也感谢所有在 v3.16.1 发布后反馈 Codex Chat 路由、本地代理接管、用量统计和平台兼容性问题的用户，很多补丁都来自这些真实使用场景里的复现线索。

---

## 下载与安装

访问 [Releases](https://github.com/farion1231/cc-switch/releases/latest) 下载对应版本。

### 系统要求

| 系统    | 最低版本                   | 架构                                |
| ------- | -------------------------- | ----------------------------------- |
| Windows | Windows 10 及以上          | x64                                 |
| macOS   | macOS 12 (Monterey) 及以上 | Intel (x64) / Apple Silicon (arm64) |
| Linux   | 见下表                     | x64 / ARM64                         |

### Windows

| 文件                                     | 说明                                |
| ---------------------------------------- | ----------------------------------- |
| `CC-Switch-v3.16.2-Windows.msi`          | **推荐** - MSI 安装包，支持自动更新 |
| `CC-Switch-v3.16.2-Windows-Portable.zip` | 便携版，解压即用，不写入注册表      |

### macOS

| 文件                             | 说明                                          |
| -------------------------------- | --------------------------------------------- |
| `CC-Switch-v3.16.2-macOS.dmg`    | **推荐** - DMG 安装包，拖入 Applications 即可 |
| `CC-Switch-v3.16.2-macOS.zip`    | 解压后拖入 Applications，Universal Binary     |
| `CC-Switch-v3.16.2-macOS.tar.gz` | 用于 Homebrew 安装和自动更新                  |

Homebrew 安装：

```bash
brew install --cask cc-switch
```

更新：

```bash
brew upgrade --cask cc-switch
```

### Linux

Linux 资产同时提供 **x86_64** 和 **ARM64**（`aarch64`）两种架构。资产文件名中包含架构标识，请按你机器的 `uname -m` 输出选择对应版本：

- `CC-Switch-v3.16.2-Linux-x86_64.AppImage` / `.deb` / `.rpm`
- `CC-Switch-v3.16.2-Linux-arm64.AppImage` / `.deb` / `.rpm`

| 发行版                                  | 推荐格式    | 安装方式                                                               |
| --------------------------------------- | ----------- | ---------------------------------------------------------------------- |
| Ubuntu / Debian / Linux Mint / Pop!\_OS | `.deb`      | `sudo dpkg -i CC-Switch-*.deb` 或 `sudo apt install ./CC-Switch-*.deb` |
| Fedora / RHEL / CentOS / Rocky Linux    | `.rpm`      | `sudo rpm -i CC-Switch-*.rpm` 或 `sudo dnf install ./CC-Switch-*.rpm`  |
| openSUSE                                | `.rpm`      | `sudo zypper install ./CC-Switch-*.rpm`                                |
| Arch Linux / Manjaro                    | `.AppImage` | 添加执行权限后直接运行，或使用 AUR                                     |
| 其他发行版 / 不确定                     | `.AppImage` | `chmod +x CC-Switch-*.AppImage && ./CC-Switch-*.AppImage`              |
