视频加载失败

Codex 重装后三大故障修复全记录:CC Switch 报错、走官方通道、聊天记录丢失

1565 字
8 分钟
Codex 重装后三大故障修复全记录:CC Switch 报错、走官方通道、聊天记录丢失

Codex 重装后三大故障修复全记录:CC Switch 报错、走官方通道、聊天记录丢失#

环境:Windows 11 · Node v24.19.0 · npm 全局 Codex CLI 0.160.0 · Codex Desktop(ChatGPT 桌面版)26.928 · CC Switch(供应商切换工具)

一次「Codex 包名有问题,删了重装」的操作,引发了三个看似独立、实则环环相扣的故障。本文完整记录排查与修复过程,供遇到同类问题的朋友参考。

故障现象#

重装 Codex 之后,出现了三个问题:

  1. CC Switch 设置页报错:Codex 卡片显示「已安装 · 无法运行」,错误信息为 requireStack: [] } Node.js v24.19.0,底部提示「请检查运行环境」。
  2. Codex 启动走的还是官方通道:打开 Codex 桌面版直接进 ChatGPT 登录页;CLI 调用则返回 401 Unauthorized ... url: https://api.openai.com/v1/responses,完全没有走 CC Switch 配置的 MiMo 中转。
  3. 历史聊天记录消失:旧的会话记录在桌面版里一条都看不到。

三个问题各有一个根因,下面逐个拆解。


问题一:CC Switch 报「无法运行」#

根因#

CC Switch 检测 Codex 是否可用的方式,是执行 npm 全局目录下的 codex.cmd。而重装过程中,npm 全局目录里 @openai/codex 的包体被删空了,只留下了启动壳:

%APPDATA%\npm\node_modules\@openai\ ← 目录还在,里面 0 个文件
%APPDATA%\npm\codex.cmd ← 启动壳还在,指向不存在的包

执行 codex.cmd 时报:

Error: Cannot find module '...\node_modules\@openai\codex\bin\codex.js'
code: 'MODULE_NOT_FOUND',
requireStack: []
Node.js v24.19.0

requireStack: [] 就是截图里那行报错的来源——不是 Node 环境坏了,是包没了。

修复#

Terminal window
npm install -g @openai/codex

⚠️ 关键坑:Codex 的 npm 包采用「主包 + 平台二进制」分离结构,主包 @openai/codex 很小,真正的可执行文件在 optionalDependencies 里(如 @openai/codex-win32-x64)。国内直连官方 registry 经常在下载平台包时超时,结果是主包装上了但运行仍报错:

Error: Missing optional dependency @openai/codex-win32-x64.
Reinstall Codex: npm install -g @openai/codex@latest

解决办法是换国内镜像单独补装平台包:

Terminal window
npm install -g "@openai/codex-win32-x64@npm:@openai/codex@0.160.0-win32-x64" --registry=https://registry.npmmirror.com

验证:

Terminal window
codex --version # codex-cli 0.160.0
codex doctor # 应全部通过

问题二:Codex 走回官方通道(401)#

根因#

CC Switch 的工作原理是把供应商配置写进 ~/.codex/config.toml。正常应写入:

model_provider = "custom"
[model_providers.custom]
name = "xiaomi_mimo"
base_url = "https://api.xiaomimimo.com/v1"
wire_api = "responses"
requires_openai_auth = true

但实际打开 config.toml 发现:model_provider 和整个 [model_providers.custom] 表丢失了,取而代之的是一堆无效的顶层键(base_url、wire_api、experimental_bearer_token 写在了顶层——TOML 里这些键 Codex 根本不认,启动时会警告 unrecognized configuration settings)。

没有 model_provider 指示,Codex 就用默认的 OpenAI 官方 provider,于是打到 api.openai.com 返回 401;桌面版则因为没有有效凭证直接弹登录页。

为什么会被写坏? 时间线是:

  1. 今早 Codex 桌面版启动时重写了 config.toml(9<35>);
  2. CC Switch 把这份已经不含 provider 段的 config 回读成了自己的供应商模板(双向同步的副作用);
  3. 之后每次切换供应商,CC Switch 用坏模板写回 config.toml——越修越坏,切换一次覆盖一次。

证据:CC Switch 数据库(~/.cc-switch/cc-switch.db 的 providers 表)里存的模板已经是坏的,而当天早些时候的数据库备份(9<29>)里配置还是完整的。

修复(三处一起改)#

改任何一处之前,先备份 CC Switch 数据库:

Terminal window
Copy-Item ~\.cc-switch\cc-switch.db ~\.cc-switch\backups\db_backup_manual.db
  1. 修模板(根因):用 SQLite 打开 ~/.cc-switch/cc-switch.db,找到 providers 表中当前 Codex 供应商的 settings_config JSON 字段,删掉无效顶层键,补回 model_provider = "custom" 和 [model_providers.custom] 表。
  2. 修 ~/.codex/config.toml:同样处理。
  3. 重建 ~/.codex/auth.json(如果也丢了):
{ "OPENAI_API_KEY": "你的中转 Key" }

教训:只修 config.toml 不修数据库模板是没用的,下次切换就会被覆盖回去。必须修源头。


问题三:恢复的聊天记录不显示#

背景#

Codex 的会话记录是 JSONL 文件,按日期存放在:

~/.codex/sessions/YYYY/MM/DD/rollout-<时间>-<uuid>.jsonl

把旧的 2026/ 文件夹整个复制回 ~/.codex/sessions/ 后,文件明明在,桌面版侧边栏却一条都不显示。

根因#

桌面版的会话列表不是实时扫描文件夹的,而是读本地索引库 ~/.codex/state_5.sqlite 的 threads 表。首次启动时有一个 backfill 扫描流程负责把 rollout 文件导入这张表,扫完后在 backfill_state 表里记:

(1, 'complete', NULL, <时间戳>, <时间戳>)

新装的 Codex 在 9<09> 第一次启动时扫过一次——当时 sessions 目录还是空的(聊天记录是之后才复制进去的),扫描结果标记为 complete,之后永远不会再扫。

修复#

  1. 完全退出 ChatGPT 桌面版(托盘也要退出,避免写库冲突);
  2. 备份后清空 backfill_state 表,强制下次启动重扫:
import sqlite3, shutil
shutil.copy2(r"C:\Users\<你>\.codex\state_5.sqlite",
r"C:\Users\<你>\.codex\state_5.sqlite.bak")
con = sqlite3.connect(r"C:\Users\<你>\.codex\state_5.sqlite")
con.execute("DELETE FROM backfill_state")
con.commit()
  1. 重新打开桌面版,启动时自动重扫,历史记录全部回来了。

修复顺序建议#

如果你同时遇到这三个问题,按这个顺序修,避免互相干扰:

① npm 包(codex --version 能跑)
↓
② CC Switch 数据库模板 + config.toml + auth.json(走通中转)
↓
③ 退出桌面版 → 重置 backfill_state → 重启(恢复列表)

验证清单#

  • codex --version 输出版本号
  • codex doctor 无致命错误
  • CC Switch 设置页 Codex 卡片无警告
  • codex exec "你好" 走中转正常回复(不应出现 api.openai.com 的 401)
  • 桌面版侧边栏能看到历史会话

经验教训#

  1. requireStack: [] ≠ 环境坏了:十有八九是包文件缺失,先 ls 看包目录是不是空的。
  2. npm 装 Codex 国内务必配镜像:平台二进制包体积大,官方 registry 容易半途超时,留下「装了一半」的残局。
  3. 双向同步类工具有「污染源头」风险:CC Switch 会把 app 重写过的 config 回读成模板,坏一次就循环放大。修的时候一定要连它的数据库模板一起修。
  4. 文件在 ≠ 能显示:现代客户端基本都有本地索引库,恢复数据文件后要找到对应的「重扫/重建索引」开关。
  5. 改数据库前先备份:本文所有数据库操作都留了备份,出问题可随时回滚。

本文基于一次真实排障记录整理,涉及的具体厂商(CC Switch / MiMo 中转)仅为实例,同类「供应商切换工具 + Codex」组合的排查思路通用。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
Codex 重装后三大故障修复全记录:CC Switch 报错、走官方通道、聊天记录丢失
https://mstzuomu.space/posts/azuma.zuomu-blog-15/
作者
左沐
发布于
2026-10-02
许可协议
CC BY-NC-SA 4.0
相关文章智能推荐
1
零基础部署Codex接入第三方大模型API
技术分享让你的Codex更换大脑
2
MiMo-V2.6:扩展强化学习规模,迈向自我提升
技术分享全新MIMO模型发布
3
导航栏 UI 改造全记录:卡片边框、悬浮胶囊、三段收拢与 PC 收拢态快捷面板(附完整复现指南)
技术分享一次连续迭代的完整复盘——从卡片边框体系、悬浮胶囊导航,到三段结构拆分、下滑收拢动画,再到 PC 收拢态汉堡的控件快捷面板与"行点击原位弹卡"的两处根因修复,追加 PC 搜索控件图标化与收拢动画卡顿的逐帧诊断修复。每个批次改了哪些文件、为什么这么改、踩了哪些坑(CSS 层序、正圆公式、包含块、Vite 缓存、Playwright headless 动画冻结),附 git 重放与手工重做两条复现路径及验收清单
4
博客性能优化全记录:Lighthouse 报告拆解到帧率根因排查(A–F 六项实战)
技术分享从两份 Lighthouse 对比报告出发,完整记录六项性能优化的排查方法、根因定位与修复代码:字体子集化、封面图尺寸 API、CSS 内联、强制重排归零、以及"只有 Chrome 掉帧"的浏览器设置级根因,附全部可复现命令与工具脚本
5
Win11 资源管理器大小列只显示 KB?开启 KB / MB / GB 自适应显示完整教程
技术分享Win11 详细信息视图的大小列长期以来一律用 KB 显示,4 GB 的文件写成 4,194,304 KB 根本没法看。微软其实已经原生支持自适应单位了,本文给出先更新系统、再用 ViveTool 强制开启(功能 ID 61014711)的完整教程,含回滚方法与常见问题。
随机文章随机推荐

评论区

Profile Image of the Author
陌殊途左沐
热爱是拯救无趣人生的唯一途径
公告
欢迎来到我的博客!这里是左沐的个人空间,分享我的学习、生活和兴趣爱好。希望你能在这里找到有趣的内容,请不要对我的喜好做出评价哦!请勿使用公网访问本站。
分类
访客信息
加载中...
标签
最新动态
站点统计
文章
27
分类
2
标签
47
总字数
48,093
运行时长
0 天
最后活动
0 天前
总浏览量
-
访客数
-
文章目录