分享一个轻量原生的codex多provider切换方式
- 内容介绍
- 文章标签
- 相关推荐
我平时经常会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即可

