- 一打猫猫2026-09-1335052
想法
个人喜欢使用codex cli和codex的vscode的拓展,但是只有自己的team两个账号的gpt额度,而且都有5h限制,于是考虑当gpt蹬完的时候,可以在保留session的情况下,切换deepseek的api继续蹬。
为了尽量避免 Codex 在切换后因为 provider 过滤而隐藏已有 session,本方案让 CPA GPT 与 DeepSeek 始终使用同一个
model_provider = "cliproxyapi"。这样不会修改或合并 session,而是让两边尽可能落入同一个 provider 视图。需要注意,Codex 的历史可见性还可能受到认证方式、客户端版本等因素影响,因此本文方案以实际测试结果为准。
下面分享一下现在使用的方案,以我的使用情况(以我的两个CPA反代出来的api和一个deepseek官方的api)为例:
解决方案
1.设置环境变量(设置到系统中的永久环境变量)
将下面的命令直接复制到powershell中运行```
[Environment]::SetEnvironmentVariable( "CODEX1_API_KEY", "你的CPA1-Key", "User" )
[Environment]::SetEnvironmentVariable( "CODEX2_API_KEY", "你的CPA2-Key", "User" )
[Environment]::SetEnvironmentVariable( "CODEXDS_API_KEY", "你的Deepseek-Key", "User" )
```- 将“你的xx-key”切换为自己真实的api。- 然后“CODEX1_API_KEY”可以根据自己想要的名称修改,需要保证和下面的function中的名称一样。
- 自己可以按需求增加和减少想要添加的环境变量
2.设置相关函数,配置PowerShell 里的函数
保证function能够被系统认出来,我个人喜欢codex1、codex2、codexds分别表示自己的三个不同api的调用。
首先
notepad $PROFILE进入记事本,复制以下内容然后ctrl+s保存```
function codex1 {
$env:CLIPROXY_API_KEY = $env:CODEX1_API_KEY
& codex --profile gpt @args
}function codex2 {
$env:CLIPROXY_API_KEY = $env:CODEX2_API_KEY
& codex --profile gpt @args
}function codexds {
$env:CLIPROXY_API_KEY = $env:CODEXDS_API_KEY
& codex --profile ds @args
}
``然后在poweshell输入. $PROFILE`生效3.设置总配置文件config.toml
powershell输入
notepad "$env:USERPROFILE\.codex\config.toml"检查是否存在以下内容```
[features]
remote_compaction_v2 = false
[windows]
sandbox = "unelevated"
[tui]
status_line = ["model-with-reasoning", "current-dir", "five-hour-limit", "weekly-limit"]
status_line_use_colors = true
``正常情况下,只要我们使用过cpa反代之后的api,开头会是:``
model = "gpt-5.6-sol"
model_provider = "cliproxyapi"
model_reasoning_effort = "medium"
service_tier = "default"[model_providers.cliproxyapi]
name = "CLIProxyAPI"
base_url = "https://xxxx.xxxx.com/v1" # 需要修改为自己实际的反代api的网址
env_key = "CLIPROXY_API_KEY"
wire_api = "responses"
``最开始我尝试把这一部分删除,只打算留下[features]`以下的内容,发现这样子在使用deepseek的api时,codex cli中的session存在,但是vs code中codex拓展的历史记录不在了。为了解决这个问题,在
[features]之前添加上deepseek的相关内容,完整配置如下:```
model = "deepseek-flash"
model_provider = "cliproxyapi"
model_reasoning_effort = "high"
model_catalog_json = "C:/Users/xxxxx/.codex/models.json" # 需要修改为自己电脑实际的位置[model_providers.cliproxyapi]
name = "CLIProxyAPI"
base_url = "https://api.deepseek.com"
env_key = "CODEXDS_API_KEY"
wire_api = "responses"[features]
remote_compaction_v2 = false
[windows]
sandbox = "unelevated"
[tui]
status_line = ["model-with-reasoning", "current-dir", "five-hour-limit", "weekly-limit"]
status_line_use_colors = true
```4.分别设置gpt.config.toml 和 ds.config.tomlpowershell中输入
notepad "$env:USERPROFILE\.codex\gpt.config.toml",复制以下内容```
model = "gpt-5.6-sol"
model_provider = "cliproxyapi"
model_reasoning_effort = "medium"
service_tier = "default"[model_providers.cliproxyapi]
name = "CLIProxyAPI"
base_url = "https://xxxx.xxxx.com/v1" # 需要修改为自己实际的反代api的网址
env_key = "CLIPROXY_API_KEY"
wire_api = "responses"
``同理notepad "$env:USERPROFILE\.codex\ds.config.toml"````
model = "deepseek-flash"
model_provider = "cliproxyapi"
model_reasoning_effort = "high"model_catalog_json = "C:/Users/23247/.codex/models.json"
[model_providers.cliproxyapi]
name = "CLIProxyAPI"
base_url = "https://api.deepseek.com/"
env_key = "CLIPROXY_API_KEY"
wire_api = "responses"
```5.配置deepseek的models.jsonmodels.json推荐使用官方配置,但注意:官方脚本同时会修改config.toml。如果已经使用本文的自定义配置,应提前备份config.toml,生成models.json后再恢复自己的config.toml首先备份自己的
config.toml```
Copy-Item `
"$env:USERPROFILE\.codex\config.toml" `
"$env:USERPROFILE\.codex\config.my-backup.toml" `
-Force`irm https://cdn.deepseek.com/api-docs/codex-deepseek-setup-en.ps1 | iex` 输入1 生成完成以后,将备份的文件替换脚本修改后的文件:``` Copy-Item ` "$env:USERPROFILE\.codex\config.my-backup.toml" ` "$env:USERPROFILE\.codex\config.toml" ` -Force ```DeepSeek 官方也说明 `models.json` 的作用就是给 Codex 提供 context window、reasoning effort、tool format 等 metadata。 6.现在我们的文件结构``` C:\Users\xxxxx\.codex\ config.toml # VS Code 默认 DeepSeek 配置 # 公共配置 gpt.config.toml # CPA+GPT配置 ds.config.toml # DeepSeek连接设置 models.json #DeepSeek 模型 metadata sessions\ ```7.注意deepseek实际model以models.json的结果为准 **模型名称不要照抄本文,以自己当前 `models.json` 中的 `"slug"` 为准。** DeepSeek 官方脚本与在线文档在版本更新期间可能存在命名差异。``` Select-String ` -Path "$env:USERPROFILE\.codex\models.json" ` -Pattern '"slug"' ```当前我的查询结果如下:``` .codex\models.json:4: "slug": "deepseek-flash", .codex\models.json:72: "slug": "deepseek-v4-pro", ```所以上述模型我都写为`model:"deepseek-flash"` 8.最终实现``` codex1 #CPA反代的第一个team gpt额度 codex2 #CPA反代的第二个team gpt额度 codexds #deepseek官方api额度 codex1 resume # 展示历史记录主楼 - OctoberSama2026-09-1310523
中途切提供商的最大问题是缓存失效了 雷霆上下文一下子塞进来
- 一打猫猫2026-09-1335052
哈哈哈这个确实是最大的问题,现在我只想到了如何换着蹬方便,还没考虑到缓存的问题 ^-^
- shen1e-linuxdo2026-09-1315474
统一走cpa出口呗,cpa可以接服务商
- 一打猫猫2026-09-1335052
统一的话,我感觉切换sol terra luna不太方便,有打算将两个gpt统一,如果gpt再和deepseek统一,感觉模型容易搞混,我再多了解一下吧,谢谢佬!!
- shen1e-linuxdo2026-09-1315474
cpa接服务商可以自定义映射模型名称,这样对外看到的都是统一模型
- Alex_Ju2026-09-139563
接个cpa或者sub2api,映射完,把deepseek和gpt的权重调一下.gpt限流会切到deepseek的映射
- 一打猫猫2026-09-1335052
突然发现切换为deepseek之后再切换为gpt好像无法继续对话了,还是存在问题,打算更换为佬友建议的全部用cpa试试!