ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

CC Switch 中 Codex 第三方切换机制解析:config.toml 承载密钥、auth.json 只管官方登录

CC Switch 中 Codex 第三方切换机制解析:config.toml 承载密钥、auth.json 只管官方登录 CC Switch 中 Codex 第三方切换机制解析config.toml 承载密钥、auth.json 只管官方登录【免费下载链接】cc-switchA cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build Hermes Agent. Only official website: ccswitch.io项目地址: https://gitcode.com/GitHub_Trending/cc/cc-switch本文基于 CC Switch 仓库中的 CHANGELOG.md、codex_config.rs、Codex 官方认证保留攻略 与 v3.20.1 / v3.16.1 Release Note 整理。读完你能判断把 Codex 切到 DeepSeek、Kimi、GLM 等第三方 API 时密钥到底写进哪个文件、auth.json还会不会被覆盖、什么情况下切换会被提前拒绝以及这些行为对边用第三方模型、边保留官方远程操作的用户意味着什么。一个决定密钥跟着 provider 走不再借用 ambient 登录核心变化是第三方 Codex 切换从写auth.json改为写config.toml的 provider 表且这一行为在 v3.20.1 起成为无条件默认。在 v3.20.1 之前默认模式下第三方密钥被写进~/.codex/auth.jsonprovider 靠环境里恰好有一份登录来继承凭据从 v3.20.1 起密钥改写入config.toml当前 provider 下的experimental_bearer_tokenauth.json退回为纯粹的官方 ChatGPT 登录文件。CHANGELOG.md 的 v3.20.1 一节把这一改动列为本版本主线并直接点名了触发它的上游变更。为什么旧写法会坏Codex 0.149 关掉了凭据继承旧写法不是 CC Switch 主动想改而是被 Codex 0.149 的一个上游变更逼出来的。CHANGELOG.md 记载Codex CLI 0.149 起自定义 provider 不再从auth.json继承环境凭据——而旧默认模式恰好只把密钥写进auth.json于是第三方切换在客户端侧变成 401。换句话说auth.json曾经是官方登录 第三方密钥的共用槽位一旦上游不再读它来给第三方鉴权这条继承链就断了。从这条记录可以推断CC Switch 选择把密钥下沉到 provider 自己的config.toml表而不是继续往auth.json里塞——这样既修掉 401又让auth.json重新只承担官方登录一种职责两种身份不再挤在同一个文件里。experimental_bearer_token自 Codex 0.48 起被官方读取这是该字段可用的前提CHANGELOG.md 在 v3.20.1 升级提醒里也据此要求旧于 0.48 的 Codex 升级。机制核心两个文件、一条 provider-scoped 令牌、一个占位符理解这套机制只需盯住两个文件和一处占位符。两个文件各管一件事Codex 的配置分两个文件职责被刻意拆开见 攻略背后的原理一节~/.codex/auth.json官方 ChatGPT / Codex 登录缓存Codex App 识别官方账号、手机远程操作、官方插件都靠它。~/.codex/config.toml当前模型、base URL、模型目录以及 provider 级 token 等运行配置。切换第三方供应商后写出来的config.toml形态如下取自 攻略model_provider custom [model_providers.custom] name DeepSeek base_url https://api.deepseek.com wire_api responses experimental_bearer_token sk-...auth.json保持官方登录不变模型请求则按config.toml的model_provider与base_url走第三方 API。provider 表用的是固定 idcustom由 codex_config.rs 中的CC_SWITCH_CODEX_MODEL_PROVIDER_ID常量定义。接管场景下的 PROXY_MANAGED 占位符当 CC Switch 的本地路由接管 Codex 时真实第三方密钥并不落进 live 文件而是用占位符PROXY_MANAGED顶替请求经过本地代理时再按请求注入真实 token。该占位符由 codex_config.rs 的CODEX_PROXY_AUTH_PLACEHOLDER定义同时被extract_codex_managed_oauth_account_id用作判断这是代理托管、可被清空的信号之一。设计取舍在于占位符是 CC Switch 的所有权标记——它只清理自己写入的值绝不动用户手填的 key。一个开关决定 auth.json 的去留Keep official login for direct switches切换第三方时保留官方登录这个开关只决定auth.json在第三方切换时是被保留还是被删除不再决定密钥写到哪里。v3.20.1 之后密钥恒定进config.toml开关的语义被收窄为对auth.json的处置见 CHANGELOG.md v3.20.1 Changed 一节开关 ONChatGPT 登录在第三方切换中完全不被触碰auth.json原样保留——这正是第三方模型 官方远程操作共存用户需要的状态。开关 OFF默认切换第三方时删除auth.json而不是像更旧版本那样用 API key 覆盖它删除失败会给出官方登录仍在盘上的警告。这一开关的默认值有过一次明确的回调。v3.16.0 让官方认证保留默认开启但部分用户不希望它改变配置文件写入方式于是 v3.16.1 Release Note 把它改成默认关闭以维持 v3.16.0 之前的兼容行为。从这条回调可以推断项目对是否动auth.json采取保守策略拿不准就保持旧行为把选择权交给用户。开关只影响auth.json不影响密钥进config.toml这一事实。即便 OFF第三方模型照常可用区别仅在于切换后官方登录态是否还在盘上。两道前置安全门宁可拒绝切换也不留半成品每次第三方切换前都会跑两道 preflight命中即拒绝而不是写出一个 Codex 起不来的看似成功的切换。CHANGELOG.md v3.20.1 列出了这两道门源码测试在 provider/mod.rs 中有对应断言third-party switches are config-only: auth.json is removed前置检查拒绝条件为什么必须拒无处安放密钥密钥存在却没有 provider 表来承载它没有experimental_bearer_token的落点密钥只能回到auth.json等于退回旧坏路径无凭据借用官方登录requires_openai_auth true但无自身凭据或仅一个裸openai_base_url重定向这种配置靠官方登录兜底才能工作一旦auth.json被删就彻底失效属静默失败此外live 写入的校验被移到了current指针移动之前执行。旧顺序是先移动指针、再在写入层被拒导致被拒 provider 的存储配置被回填成旧的 live 值新顺序保证指针没动 存储没被污染。CHANGELOG.md 把这条列为独立修复。配置与行为速查项类型 / 取值默认作用experimental_bearer_tokenconfig.toml字符串无provider 级密钥自 Codex 0.48 被读取v3.20.1 起第三方切换的密钥落点model_providerconfig.toml字符串custom指向[model_providers.custom]表常量见 codex_config.rsrequires_openai_authconfig.toml布尔按登录态ON 表示无自身凭据时借用官方登录是安全门检测的字段之一PROXY_MANAGEDlive 文件占位符接管时写入代理接管期的所有权标记请求时注入真实 tokenKeep official login设置开关布尔OFFON 保留auth.jsonOFF 删除auth.jsonCodex 版本下限客户端版本0.48低于 0.48 不读 provider 表 token第三方鉴权失效你需要做什么多数用户什么都不用做只要把 Codex 升到 0.48 以上建议直接跟最新第三方切换就会自动走 config-only 路径。要第三方模型 官方远程操作 / 官方插件共存先把 Codex 切回OpenAI Official完成一次官方登录再到设置 → 通用 → Codex 应用增强打开切换第三方时保留官方登录然后切第三方供应商步骤见 攻略。第三方供应商只支持 Chat CompletionsDeepSeek / Kimi / MiniMax 常见路径额外开启本地路由并启用 Codex 接管让 CC Switch 把 Responses 请求转成 Chat 请求原生 Responses 上游则可直连无需接管。改完模型映射记得重启 Codex模型目录在客户端启动时加载/model菜单通常要重启才刷新。若你的卡片是空配置第三方或裸openai_base_url重定向切换会在 preflight 被拒——这类卡片以前是骑在auth.json上静默工作的现在需要补一个真正的[model_providers.id]表或 API key。测试与证据链该行为被多层测试锁住可作为复核入口provider/mod.rs 的managed_codex_switch_adopts_outgoing_cli_rotation_before_account_or_key_overwrite等用例断言第三方切换是 config-only、auth.json被移除并覆盖切走前采纳 CLI 自行轮换的 refresh token 的顺序。proxy.rs 的热切换与接管系列用例如codex_takeover_hot_switches_between_builtin_official_and_third_party、codex_active_takeover_hot_switch_failure_restores_native_official_auth锁定接管/非接管两条路径下auth.json的保留、替换与失败回滚。codex_config.rs 中CodexLiveStateSnapshot::restore_preserving_newer_same_account_auth的代次比较逻辑保证跨账号写入失败时精确回滚而不会把同账号刚刷新的 token 一并卷回。延伸阅读Codex 官方认证保留攻略端到端操作步骤与背后的原理图解。Codex DeepSeek 本地路由攻略从添加供应商到验证请求转发的完整路径。v3.20.1 Release Note 相关条目config-only 切换、0.149 兼容修复与安全门的完整说明。【免费下载链接】cc-switchA cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build Hermes Agent. Only official website: ccswitch.io项目地址: https://gitcode.com/GitHub_Trending/cc/cc-switch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表