分享一个轻量原生的codex多provider切换方式

2026-04-11 12:181阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:

我平时经常会provider混用,但是codex在这方面支持做的很差,直接切换provider会导致session记忆相互独立,于是就用这个方案,统一路由到模板T,历史就不会割裂了。
不用ccswitch的原因是我觉得相对来说太重了,没必要。

放在 ~/.codex/config.toml 配置文件里的provider占位符

[model_providers.T] name = "OpenAI" base_url = "https://placeholder.invalid/" env_key = "T_API_KEY"

写在 ~/.bashrc (或你shell的对应init文件)里的函数,方便直接通过函数调用特定供应商,例如此配置中就可以直接 codexT1 来调用这一个provider了

_codex_T() { local base_url="$1" local api_key="$2" shift 2 T_API_KEY="$api_key" codex -c model_provider=T -c model_providers.T.base_url="$base_url" "$@" } codexT1() { _codex_T "https://<ENDPOINT>/v1" "<API_KEY>" "$@" } codex_provider2() { _codex_T "https://<ENDPOINT>/v1" "<API_KEY>" "$@" } 网友解答:


--【壹】--:

这也是个方法,不过配置文件有点散落了


--【贰】--:

谢谢大佬


--【叁】--:

我没用过官方登陆的方式,但是应该是没法互通历史session的


--【肆】--:

大赞,你这个功能强劲好多


--【伍】--:

auth那边这个管不着这个只能管外部provider


--【陆】--:

混用啊混用


--【柒】--:

佬,这个对官方的有用吗


--【捌】--:

是的,但是这样还得每次去改 ~/.codex/config.toml,太麻烦了


--【玖】--:

我的做法是用go写一个交互式命令行,然后在home目录的一个子文件夹维护每个供应商的auth和config文件,切换的时候直接覆盖.codex目录的文件就好了


--【拾】--:

image754×247 48.2 KB
image1154×554 141 KB

我也是 让 ai 写了个半成品小工具 只不过我做的是软链接 这样就能共享 session 了


--【拾壹】--:

CODEX_HOME=/path/to/provider_* codex


--【拾贰】--:

主要我不想通过环境变量暴露key,但是auth.json又不匹配provider,所以咯,除了改codex源码看来是不可兼得咯,所以直接用最笨的方法减少心智负担(


--【拾叁】--:

谢谢佬哥 按照你的这个配置方式写入toml 再写入环境变量即可对吧 至于auth.json不需要写入?


--【拾肆】--:

只要你这几个都是这种API端点请求的都可以咯,codex manager我不确定,只能说两个独立用的时候应该是不影响的,配合我真不知道


--【拾伍】--:

支持一下


--【拾陆】--:

谢谢佬哥


--【拾柒】--:

改一次啊,直到你换provider


--【拾捌】--: Yan233_:

codex -c model_provider=T

最简单的,用这个就可以:codex -c model_provider=T
改写 ~/.codex/config.toml
[model_providers.T]
name = “T”
base_url = “https://placeholder.invalid/”
env_key = “T_API_KEY”


--【拾玖】--:

佬哥 如果本地想用sub2api 或者cpa 或者codex manager进行对应的操作是不是把这三个写入toml 然后环境变量加入对应的key即可

问题描述:

我平时经常会provider混用,但是codex在这方面支持做的很差,直接切换provider会导致session记忆相互独立,于是就用这个方案,统一路由到模板T,历史就不会割裂了。
不用ccswitch的原因是我觉得相对来说太重了,没必要。

放在 ~/.codex/config.toml 配置文件里的provider占位符

[model_providers.T] name = "OpenAI" base_url = "https://placeholder.invalid/" env_key = "T_API_KEY"

写在 ~/.bashrc (或你shell的对应init文件)里的函数,方便直接通过函数调用特定供应商,例如此配置中就可以直接 codexT1 来调用这一个provider了

_codex_T() { local base_url="$1" local api_key="$2" shift 2 T_API_KEY="$api_key" codex -c model_provider=T -c model_providers.T.base_url="$base_url" "$@" } codexT1() { _codex_T "https://<ENDPOINT>/v1" "<API_KEY>" "$@" } codex_provider2() { _codex_T "https://<ENDPOINT>/v1" "<API_KEY>" "$@" } 网友解答:


--【壹】--:

这也是个方法,不过配置文件有点散落了


--【贰】--:

谢谢大佬


--【叁】--:

我没用过官方登陆的方式,但是应该是没法互通历史session的


--【肆】--:

大赞,你这个功能强劲好多


--【伍】--:

auth那边这个管不着这个只能管外部provider


--【陆】--:

混用啊混用


--【柒】--:

佬,这个对官方的有用吗


--【捌】--:

是的,但是这样还得每次去改 ~/.codex/config.toml,太麻烦了


--【玖】--:

我的做法是用go写一个交互式命令行,然后在home目录的一个子文件夹维护每个供应商的auth和config文件,切换的时候直接覆盖.codex目录的文件就好了


--【拾】--:

image754×247 48.2 KB
image1154×554 141 KB

我也是 让 ai 写了个半成品小工具 只不过我做的是软链接 这样就能共享 session 了


--【拾壹】--:

CODEX_HOME=/path/to/provider_* codex


--【拾贰】--:

主要我不想通过环境变量暴露key,但是auth.json又不匹配provider,所以咯,除了改codex源码看来是不可兼得咯,所以直接用最笨的方法减少心智负担(


--【拾叁】--:

谢谢佬哥 按照你的这个配置方式写入toml 再写入环境变量即可对吧 至于auth.json不需要写入?


--【拾肆】--:

只要你这几个都是这种API端点请求的都可以咯,codex manager我不确定,只能说两个独立用的时候应该是不影响的,配合我真不知道


--【拾伍】--:

支持一下


--【拾陆】--:

谢谢佬哥


--【拾柒】--:

改一次啊,直到你换provider


--【拾捌】--: Yan233_:

codex -c model_provider=T

最简单的,用这个就可以:codex -c model_provider=T
改写 ~/.codex/config.toml
[model_providers.T]
name = “T”
base_url = “https://placeholder.invalid/”
env_key = “T_API_KEY”


--【拾玖】--:

佬哥 如果本地想用sub2api 或者cpa 或者codex manager进行对应的操作是不是把这三个写入toml 然后环境变量加入对应的key即可