GPT 额度蹬完就切 DeepSeek:Codex 多 API + Session 保留折腾记录

一打猫猫 2026-09-13 14:41 1

想法


个人喜欢使用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.toml


powershell中输入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.json


models.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 # 展示历史记录

最新回复 (7)
  • OctoberSama 09-13 14:44
    1

    中途切提供商的最大问题是缓存失效了 雷霆上下文一下子塞进来

  • 一打猫猫 楼主 09-13 14:47
    2

    哈哈哈这个确实是最大的问题,现在我只想到了如何换着蹬方便,还没考虑到缓存的问题 ^-^

  • shen1e 09-13 15:15
    3

    统一走cpa出口呗,cpa可以接服务商

  • 一打猫猫 楼主 09-13 15:28
    4

    统一的话,我感觉切换sol terra luna不太方便,有打算将两个gpt统一,如果gpt再和deepseek统一,感觉模型容易搞混,我再多了解一下吧,谢谢佬!!

  • shen1e 09-13 15:30
    5

    cpa接服务商可以自定义映射模型名称,这样对外看到的都是统一模型

  • Alex Ju 09-13 15:38
    6

    接个cpa或者sub2api,映射完,把deepseek和gpt的权重调一下.gpt限流会切到deepseek的映射

  • 一打猫猫 楼主 09-13 16:29
    7

    突然发现切换为deepseek之后再切换为gpt好像无法继续对话了,还是存在问题,打算更换为佬友建议的全部用cpa试试!

* 帖子来源Linux.do
返回