本文记录一种把 DeepSeek、第三方中转 API 或其他 OpenAI-compatible 大模型接入 Codex 的方式:使用 ccswitch 管理模型与接口信息,再让 Codex 通过 ~/.codex/config.toml 指向对应的模型服务。

前言

Codex 默认面向 OpenAI 模型使用,但它的配置文件支持自定义 model_provider。只要目标服务提供兼容的接口,或者通过中转服务转换成 Codex 能识别的协议,就可以把 DeepSeek、Qwen、Kimi、GLM 等模型接入到 Codex 里。

ccswitch 的作用可以理解为“模型配置切换器”:它负责维护模型列表、接口地址和当前模型选择。配置完成后,Codex 读取本地配置,就能在命令行或桌面端里使用对应模型。

本文以 DeepSeek 为例,演示完整配置流程。

适用场景

如果你有下面这些需求,本文比较适合你:

  • 想在 Codex 中使用 DeepSeek、Qwen、Kimi、GLM 等非默认模型;
  • 已经有第三方中转站、聚合 API 或自建 OpenAI-compatible 服务;
  • 希望在多个模型之间快速切换;
  • 想把 Codex 当成本地编程助手,但模型服务走自己的 API。

准备工作

开始前需要准备:

  1. 已安装 Codex CLI 或 Codex 桌面端;
  2. 已安装并能运行 ccswitch
  3. 已有可用的 API Key;
  4. 确认你的服务端支持 Codex 当前使用的接口协议。

可以先检查 Codex 是否可用:

codex --version
codex --help

Codex 的用户级配置文件通常在:

Windows: C:\Users\<你的用户名>\.codex\config.toml
macOS/Linux: ~/.codex/config.toml

如果你使用的是 Codex 桌面端,本质上也会读取同一套 Codex 配置。

整体原理

配置链路可以简单理解为:

Codex
  -> 读取 ~/.codex/config.toml
  -> 根据 model_provider 找到接口配置
  -> 请求 ccswitch 或中转服务提供的 base_url
  -> 实际调用 DeepSeek 等大模型

关键点有两个:

  • model:告诉 Codex 当前使用哪个模型名称;
  • model_provider:告诉 Codex 去哪个 provider 配置里找接口地址。

一个典型配置长这样:

model = "deepseek-chat"
model_provider = "deepseek"

[model_providers.deepseek]
name = "deepseek"
base_url = "https://你的接口地址"
wire_api = "responses"
requires_openai_auth = true

其中:

  • model 是模型名,必须与你的服务端支持的模型名一致;
  • model_provider 要和下面的 [model_providers.xxx] 对应;
  • base_url 是 API 网关或中转服务地址;
  • wire_api 表示 Codex 使用的接口协议,常见值是 responses
  • requires_openai_auth 表示是否使用 OpenAI 风格的鉴权头。

第一步:用 ccswitch 准备模型配置

不同版本的 ccswitch 命令可能略有差异,建议先查看帮助:

ccswitch --help

如果它支持模型列表,可以查看当前可用模型:

ccswitch list

如果它支持切换模型,可以切换到 DeepSeek:

ccswitch use deepseek

如果你的 ccswitch 使用的是交互式菜单,直接运行:

ccswitch

然后在界面里选择 DeepSeek 或对应的中转模型即可。

切换完成后,重点确认三件事:

  1. 当前模型名是什么;
  2. 当前接口地址是什么;
  3. Codex 配置文件是否已经被更新。

有些环境里,ccswitch 会生成类似下面的模型目录文件:

~/.codex/cc-switch-model-catalog.json

这个文件通常用于记录可选模型、显示名称、上下文长度、工具能力等信息。普通用户不一定需要手动修改它,但可以用来排查模型是否被识别。

第二步:配置 Codex 的 config.toml

打开 Codex 配置文件:

~/.codex/config.toml

Windows 下可以用记事本、VS Code 或其他编辑器打开:

notepad $env:USERPROFILE\.codex\config.toml

添加或修改为类似下面的配置:

model = "deepseek-chat"
model_provider = "deepseek"

[model_providers.deepseek]
name = "deepseek"
base_url = "https://api.deepseek.com"
wire_api = "responses"
requires_openai_auth = true

如果你不是直连 DeepSeek 官方接口,而是使用中转站,例如:

https://example.com/api/codex

则可以写成:

model = "deepseek-chat"
model_provider = "mirror"

[model_providers.mirror]
name = "mirror"
base_url = "https://example.com/api/codex"
wire_api = "responses"
requires_openai_auth = true

这里的 mirror 只是 provider 名称,可以换成 deepseekccswitchmy-api 等,只要前后对应即可。

第三步:配置 API Key

大多数 OpenAI-compatible 服务都需要 API Key。常见方式是设置环境变量:

export OPENAI_API_KEY="你的 API Key"

Windows PowerShell:

$env:OPENAI_API_KEY="你的 API Key"

如果希望长期生效,可以写入用户环境变量:

[Environment]::SetEnvironmentVariable("OPENAI_API_KEY", "你的 API Key", "User")

设置完成后,重新打开终端或重启 Codex 桌面端。

注意:不要把真实 API Key 写进文章、截图、Git 仓库或公开配置文件。

第四步:验证 Codex 是否走了 DeepSeek

可以先用 Codex CLI 做一次简单测试:

codex "用一句话介绍你当前是什么模型"

也可以临时指定模型:

codex -m deepseek-chat "写一个 Python 快速排序"

如果你想临时覆盖配置项,也可以使用 -c

codex -c model='"deepseek-chat"' -c model_provider='"deepseek"' "解释一下这个项目的目录结构"

如果能正常返回结果,说明 Codex 已经可以通过配置的 provider 调用模型。

一个完整示例

下面是一个较完整的 config.toml 示例:

model = "deepseek-chat"
model_provider = "ccswitch"

[model_providers.ccswitch]
name = "ccswitch"
base_url = "https://你的中转服务地址/api/codex"
wire_api = "responses"
requires_openai_auth = true

[projects.'C:\Users\你的用户名\Documents\your-project']
trust_level = "trusted"

如果你使用的是其他模型,只需要改 model 即可,例如:

model = "deepseek-reasoner"
model_provider = "ccswitch"

或者:

model = "qwen-plus"
model_provider = "ccswitch"

前提是你的 base_url 后端确实支持这些模型名。

常见问题

1. 提示模型不存在

优先检查 model 字段。

很多中转服务里的模型名并不一定等于官方模型名,例如官方叫 deepseek-chat,中转服务可能叫 deepseek-v3deepseek/deepseek-chat 或其他别名。

解决方式:

ccswitch list

查看服务端实际支持的模型名,然后把 config.toml 里的 model 改成对应名称。

2. 提示 401 或鉴权失败

一般是 API Key 没有配置成功。

检查环境变量:

echo $OPENAI_API_KEY

Windows PowerShell:

echo $env:OPENAI_API_KEY

如果为空,重新设置 API Key 并重启终端。

3. 提示接口不存在或 404

优先检查 base_url

不同服务对 Codex 的路径要求可能不同,有些只需要域名,有些需要带 /v1,有些中转服务会单独提供 /api/codex

例如:

base_url = "https://api.deepseek.com"

或:

base_url = "https://example.com/v1"

或:

base_url = "https://example.com/api/codex"

具体写法以你的服务商文档和 ccswitch 输出为准。

4. Codex 桌面端没有生效

可以尝试:

  1. 保存 ~/.codex/config.toml
  2. 关闭 Codex 桌面端;
  3. 重新打开 Codex;
  4. 新建一个会话测试。

如果仍然没有生效,先用 CLI 验证:

codex "hello"

CLI 能用而桌面端不能用时,通常是桌面端没有重载配置或环境变量。

5. DeepSeek 推理模型输出慢

如果使用 deepseek-reasoner 这类推理模型,响应时间可能明显长于普通聊天模型。这是正常现象。

建议:

  • 日常改代码使用 deepseek-chat 或速度更快的模型;
  • 复杂架构分析、长链路推理再切到 deepseek-reasoner
  • 通过 ccswitch 在不同模型之间切换。

使用建议

我的建议是把模型分成三类使用:

场景 推荐模型类型
日常问答、简单代码生成 快速聊天模型
复杂 bug 分析、架构推理 推理模型
大文件阅读、长上下文项目分析 长上下文模型

如果你的 ccswitch 支持多模型目录,可以把常用模型都配置进去,再根据任务切换。

例如:

ccswitch use deepseek-chat
codex "帮我重构这个函数"

ccswitch use deepseek-reasoner
codex "分析这个并发 bug 的根因"

这样可以兼顾速度、成本和推理质量。

总结

通过 ccswitch 配合 Codex 的 config.toml,可以比较方便地把 DeepSeek 等大模型接入 Codex:

  1. ccswitch 管理或切换模型;
  2. ~/.codex/config.toml 中配置 modelmodel_provider
  3. 在 provider 中填写 base_urlwire_api 和鉴权方式;
  4. 配好 API Key 后重启终端或 Codex 桌面端;
  5. codex "测试问题" 验证是否调用成功。

核心配置其实就这一段:

model = "deepseek-chat"
model_provider = "ccswitch"

[model_providers.ccswitch]
name = "ccswitch"
base_url = "https://你的接口地址"
wire_api = "responses"
requires_openai_auth = true

只要模型名、接口地址和 API Key 三者匹配,Codex 就可以通过这套配置使用 DeepSeek 或其他兼容大模型。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐