Codex切provider就丢对话,切回来又串provider,有啥靠谱方案?

最近在折腾Codex Desktop/CLI里官方OpenAI和第三方API的切换,踩了一堆坑,想问问有没有正确的打开方式。

我想干的事儿其实特简单:

官方模式:走 ChatGPT / OpenAI OAuth
第三方模式:走 API Key + base_url
切换时:历史对话别丢,provider 别乱,工具别掉

现在遇到的问题一堆:

  1. 切完provider,Codex里的历史对话就没了
    切回原来的provider,有些对话又能回来,感觉session可能是和model_provider / provider name / auth的状态绑死的。
  2. 然后我查了下,可以手动给config文件加上对话对应的provider信息。但这么干,对话是回来了,可继续发消息时,走的还是对话原来配置里的那个服务商。
  3. 搞不清旧对话到底是用旧的provider,还是用当前config.toml里配置的那个。
  4. 我自己还写了个小工具来切provider、同步/隔离记录
    结果越搞越发现.codex里面session、sqlite、rollout、provider、auth、cache这些东西搅成一团,关系太深了。
  5. 后来看到CC Switch,以为能直接切换Codex的provider
    实测下来对Codex Desktop好像没效果,或者效果不全。切完Desktop感觉还是走的官方,不确定是不是只对CLI有用。
  6. 又看到有人说可以搞个本地路由中转
    思路是:
Codex -> localhost router -> 官方 OpenAI / 第三方 API

这样Codex就只认一个本地地址,后端靠router来切。
但我不确定Codex Desktop的OAuth、Responses API、streaming、tools调用这些能不能稳定地这样转发。

  1. 最后发现我本地的Codex环境也乱了
    之前填过各种OPENAI_BASE_URLOPENAI_API_KEY,还有第三方key,可能把官方provider给污染了。
    还遇到过子进程重连报错、Chrome操控插件明明装了但工具不生效、插件缓存里缺了plugin.json这类问题。
    所以后来干脆把Codex配置全清掉重装了。

现在主要想搞明白这几个事儿:

  1. Codex Desktop的provider优先级到底是啥?
    是OAuth优先,还是config.toml / env / cache / session这些优先?
  2. provider的名字会不会影响历史对话的显示?
    为啥一切provider对话就没了?
  3. 在旧对话里继续发消息,到底是用旧的provider,还是用当前全局的provider?
  4. CC Switch到底能不能真正切换Codex Desktop?
    还是说只对CLI比较有用?
  5. 官方OAuth和第三方API,应该共用一个.codex,还是分多个CODEX_HOME来隔离?
  6. 本地搞个router中转是不是更稳?
    有没有佬跑通Codex + LiteLLM / one-api / new-api / OpenRouter / 本地反代这套?

现在感觉搞个本地中转好像能实现热切还不串provider,毕竟在codex的配置里,provider没变,这个思路看起来没啥毛病。但是今天折腾得太晚了,脑子已经浆糊了,我先发出来,睡觉去了。

站里可能已经有相关的解决方案了,但我找了好久没找到,知道的佬能给指条路吗?

这么折腾真不如直接清配置重来,我上次也这样,后来分两个用户目录用bat脚本切环境,一劳永逸。

同问,等一个大佬的解决方案。

这问题我也遇到过,后来干脆放弃切换了,直接开两个Codex实例,一个用官方OAuth登录,另一个专门走第三方API,虽然占点资源但省心啊。历史对话和provider完全隔离,再也没串过。你可以试试用不同端口或者改环境变量来区分实例。

是不是因为本地缓存没清干净?我之前切provider的时候先把.sqlite和session都删了再切,好像就没丢对话了,不过我也不太确定,小白一个。

mark一下,晚上回去试试。

又来这种帖子了,Codex这破玩意儿设计就有问题,官方自己都没想清楚怎么切换provider吧,指望社区给方案也是搞笑。

你提到的本地路由中转具体怎么配置?我试过用nginx反代,但是streaming老是断,而且tools调用经常超时,有没有更稳定的实现方式?

切provider串对话这bug好久了,没人修

我现在干脆按provider建不同的工作目录,互不串才安心

我也踩这坑了,最后还是两套配置切来切去

双实例靠谱,就是吃内存有点疼

开两个实例确实最稳,对话也不会乱串就是占点资源