Codex + CC Switch 切换供应商后codex会话(session)消失/401 的完整修法

最近折腾 Codex + CCSwitch,遇到一个比较容易误判的问题,记录一下。 现象是:在 CCSwitch 里切换 Codex provider 之后,Codex 左侧线程列表突然少了一大片。比较典型的表现是置顶线程还在,但普通线程看不到了。一开始我以为是线程被删了,后来发现不是聊天内容丢失,...
Codex + CC Switch 切换供应商后codex会话(session)消失/401 的完整修法
Codex + CC Switch 切换供应商后codex会话(session)消失/401 的完整修法

最近折腾 Codex + CCSwitch,遇到一个比较容易误判的问题,记录一下。

现象是:在 CCSwitch 里切换 Codex provider 之后,Codex 左侧线程列表突然少了一大片。比较典型的表现是置顶线程还在,但普通线程看不到了。一开始我以为是线程被删了,后来发现不是聊天内容丢失,而是 Codex 切到了另一个会话空间。

我这里确认到的核心点是:

Codex 的线程显示和 model_provider 有关。

也就是说,Codex 不是只按模型名找历史会话,而是会把线程和 model_provider 绑定。比如第三方线路都稳定在 custom 空间时,普通线程会显示在 custom 下面;切到 CCSwitch 的 OpenAI Official 后,它会进入 openai 空间,Codex 就去 openai 下面找普通线程。

所以看起来像是线程消失了

但更准确地说是:

当前 provider 空间里没有这些线程的索引/元数据

会话隔离问题

这个问题不只是 config.toml 一行配置的问题,更像是 provider 维度的会话隔离。

我这里整理下来,至少涉及这些本地文件:

~/.codex/config.toml
~/.codex/state_5.sqlite
~/.codex/sessions/**/rollout-*.jsonl
~/.codex/session_index.jsonl
~/.codex/.codex-global-state.json

其中 state_5.sqlite 里有线程的 provider 信息,rollout-*.jsonl 的首行 session metadata 里也有 provider 信息,左侧列表还会依赖 session_index.jsonl 和全局状态文件。

所以只改:

model_provider = "custom"

有时不够。因为旧线程的数据库记录、rollout 元数据、索引文件可能还停留在另一个 provider 空间。

我遇到过的现象是:切到 OpenAI Official 后,置顶线程仍然能看到,但普通线程不见。这个现象说明置顶线程和普通列表的显示逻辑可能不完全一样。这个内部实现我没有完全确认,所以这里只按现象记录。

我的处理思路

我的做法是写一个本地同步脚本,在切换 provider 后,把本地线程元数据同步到当前 provider 空间。

第三方 provider 统一同步到:

custom

OpenAI Official 同步到:

openai

注意:这个脚本不处理 API key,不打印 token,也不修 401。如果 key 本身无效,还是要单独换正确 key。

使用方式

先退出 Codex,或者至少确保 Codex 当前没有正在写入线程。

把下面脚本放到本地,例如:

codex_provider_sync.py

切到第三方线路后运行:

python .\codex_provider_sync.py --target custom

切到 OpenAI Official 后运行:

python .\codex_provider_sync.py --target openai

然后重启 Codex。

如果想先看会改多少东西,可以先 dry-run:

python .\codex_provider_sync.py --target openai --dry-run

如果想让脚本自动判断当前 CCSwitch provider,可以用:

python .\codex_provider_sync.py --target auto

如果想后台盯着 provider 切换,可以用:

python .\codex_provider_sync.py --watch

脚本默认会给被改动的文件做备份,备份文件名里会带:

.bak-provider-sync-时间戳

附脚本:

codex_provider_sync.py (点击了解更多详细信息)

5 个帖子 - 4 位参与者

阅读完整话题

来源: LinuxDo 最新话题查看原文