Codex + DeepSeek 配置指南:让 Codex CLI 接入 DeepSeek V4 的完整实践
本文介绍了如何将OpenAICodexCLI的本地工程能力与DeepSeekV4模型的推理能力相结合,构建高效的AI编程工作流。由于两者的API协议不兼容(Codex使用OpenAIResponsesAPI而DeepSeek采用ChatCompletionsAPI),直接修改base_url会导致调用失败。
摘要
OpenAI Codex CLI 是一款运行在本地终端中的 AI 编码助手,可以理解项目代码、修改文件、执行命令、辅助调试和生成补丁。DeepSeek V4 则在代码理解、推理能力、上下文长度和使用成本方面具备较强吸引力。很多开发者希望把 Codex 的本地工程能力与 DeepSeek 的模型能力结合起来。
但需要注意的是,新版 Codex 并不是简单把 base_url 改成 DeepSeek 地址就能稳定使用。核心原因在于:Codex 当前面向模型提供方发送的是 OpenAI Responses API 风格请求,而 DeepSeek 官方接口主要提供 OpenAI Chat Completions 兼容接口和 Anthropic 兼容接口。两者在请求路径、消息结构、工具调用、流式返回等方面并不完全一致。
因此,本文将从原理、环境准备、配置步骤、验证方法、常见问题几个方面,完整介绍 Codex + DeepSeek 的推荐接入方式:通过本地协议桥接层 Moon Bridge,让 Codex 发送 Responses 请求,由桥接层转换后转发给 DeepSeek。
目录
- 为什么要把 Codex 和 DeepSeek 结合起来
- 直接修改 base_url 为什么容易失败
- 整体架构说明
- 环境准备
- 安装 Codex CLI
- 获取 DeepSeek API Key
- 部署 Moon Bridge 本地桥接层
- 生成 Codex 配置文件
- 启动 Codex 并验证效果
- 常见问题与排查思路
- 安全建议
- 总结
一、为什么要把 Codex 和 DeepSeek 结合起来
Codex CLI 的优势在于“本地工程能力”。它可以直接进入项目目录,读取代码结构,理解上下文,并在用户授权的情况下修改文件、运行命令、执行测试。相比单纯在网页对话框里复制粘贴代码,Codex 更适合处理真实工程项目,例如:
- 阅读陌生代码库;
- 根据需求生成新功能;
- 修复 Bug;
- 重构模块;
- 编写单元测试;
- 根据报错日志定位问题;
- 生成提交说明;
- 对代码进行安全审查。
DeepSeek 的优势主要体现在模型能力和使用成本上。DeepSeek V4 Pro 更适合复杂推理和大上下文代码分析,DeepSeek V4 Flash 更适合日常轻量级代码问答、简单修改和快速反馈。对于经常使用 AI 辅助开发的人来说,把 Codex 的本地工程操作能力与 DeepSeek 的模型推理能力结合起来,可以形成一套相对高性价比的 AI 编程工作流。
简单理解:
Codex 负责“操作工程”
DeepSeek 负责“模型推理”
桥接层负责“协议转换”
二、直接修改 base_url 为什么容易失败
很多人第一次配置时,会本能地这样写:
model = "deepseek-v4-pro"
model_provider = "deepseek"
[model_providers.deepseek]
name = "DeepSeek"
base_url = "https://api.deepseek.com"
env_key = "DEEPSEEK_API_KEY"
这类配置看起来很合理,但在新版 Codex 中往往会失败。原因不是 DeepSeek 不能用,也不是 API Key 错了,而是 Codex 和 DeepSeek 的接口协议并不完全一致。
可以简单对比如下:
| 项目 | Codex 新版请求方式 | DeepSeek 官方 OpenAI 兼容接口 |
|---|---|---|
| 主要协议 | Responses API | Chat Completions API |
| 常见路径 | /v1/responses |
/chat/completions |
| 工具调用 | Responses 风格事件与工具结构 | Chat Completions 风格 tool_calls |
| 流式输出 | Responses 事件流 | Chat Completions 流式增量 |
| 直接兼容性 | 需要 Responses 兼容服务 | 原生不等于 Codex 可直接调用 |
因此,只改 base_url 可能会出现这些问题:
- 404 或 400 错误;
- 提示接口路径不存在;
- 模型能回答简单问题,但执行代码修改时失败;
- 工具调用、补丁生成、流式返回解析异常;
- Codex 仍然尝试走 OpenAI 默认模型;
- 报错信息中出现
responses、wire_api、unsupported等关键词。
新版 Codex 的正确思路不是“把 Codex 直接指向 DeepSeek”,而是“让 Codex 指向一个 Responses 兼容入口,再由该入口转发给 DeepSeek”。
三、整体架构说明
本文采用本地桥接方案,整体调用链如下:
┌──────────────────┐
│ Codex CLI │
│ 本地编码助手 │
└─────────┬────────┘
│
│ OpenAI Responses API
│ http://127.0.0.1:38440/v1/responses
▼
┌──────────────────┐
│ Moon Bridge │
│ 本地协议桥接层 │
└─────────┬────────┘
│
│ DeepSeek Anthropic/OpenAI Compatible API
▼
┌──────────────────┐
│ DeepSeek API │
│ deepseek-v4-pro │
│ deepseek-v4-flash │
└──────────────────┘
Moon Bridge 的作用不是简单代理,而是做协议转换。Codex 仍然认为自己在调用一个 Responses 兼容模型服务;Moon Bridge 接收到请求后,将其转换成 DeepSeek 可以理解的请求格式,再把 DeepSeek 的返回结果转换回 Codex 可以识别的格式。
这样做的好处是:
- 不需要降级 Codex;
- 不破坏新版 Codex 的本地工程能力;
- 可以继续使用
wire_api = "responses"; - 可以在本机控制 API Key;
- 可以根据需要切换 DeepSeek V4 Pro / Flash;
- 便于观察请求日志和排查问题。
四、环境准备
建议准备以下环境:
| 环境 | 建议版本 | 说明 |
| 操作系统 | Windows 10/11、macOS、Linux | Windows 可使用 PowerShell 或 WSL |
| Node.js | 18+ | 安装 Codex CLI 常用 |
| Go | 1.25+ | 用于运行 Moon Bridge |
| Git | 最新稳定版 | 用于拉取项目 |
| Codex CLI | 最新版 | 本文不建议降级 |
| DeepSeek API Key | 有可用余额 | 从 DeepSeek 控制台创建 |
执行以下命令确认环境:
node --version
go version
git --version
Windows PowerShell 中同样可以执行:
node --version
go version
git --version
五、安装 Codex CLI
1. 使用 npm 安装
跨平台推荐使用 npm 安装:
npm install -g @openai/codex
安装完成后验证:
codex --version
能看到版本号,说明 Codex CLI 已经安装成功。
2. Windows PowerShell 安装方式
Windows 也可以使用官方安装脚本:
powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"
安装完成后执行:
codex --version
3. 第一次运行 Codex
进入任意项目目录:
cd /path/to/your-project
codex
Windows 示例:
cd D:\projects\demo
codex
首次运行时,Codex 可能会要求登录或初始化配置。先完成基础初始化即可,后续再修改配置文件。
六、获取 DeepSeek API Key
进入 DeepSeek 开放平台,创建 API Key,并妥善保存。后续配置中会用到该密钥。
建议不要把 API Key 直接写入 Git 项目目录,也不要提交到仓库中。可以使用以下几种方式保存:
- 环境变量;
- 本机
.env文件; - Moon Bridge 本地配置文件;
- 密码管理工具。
本文为了便于演示,会在 Moon Bridge 的 config.yml 中写入示例字段。实际使用时请替换为自己的密钥,并确保该文件不被提交。
七、部署 Moon Bridge 本地桥接层
1. 拉取 Moon Bridge
执行:
git clone https://github.com/ZhiYi-R/moon-bridge.git
cd moon-bridge
Windows PowerShell:
git clone https://github.com/ZhiYi-R/moon-bridge.git
cd moon-bridge
2. 创建 config.yml
在 moon-bridge 目录下创建 config.yml 文件:
mode: "Transform"
server:
addr: "127.0.0.1:38440"
models:
deepseek-v4-pro:
context_window: 1000000
max_output_tokens: 384000
default_reasoning_level: "high"
supported_reasoning_levels:
- effort: "high"
description: "High reasoning effort"
- effort: "xhigh"
description: "Extra high reasoning effort"
supports_reasoning_summaries: true
default_reasoning_summary: "auto"
extensions:
deepseek_v4:
enabled: true
deepseek-v4-flash:
context_window: 1000000
max_output_tokens: 384000
default_reasoning_level: "high"
supported_reasoning_levels:
- effort: "high"
description: "High reasoning effort"
- effort: "xhigh"
description: "Extra high reasoning effort"
supports_reasoning_summaries: true
default_reasoning_summary: "auto"
extensions:
deepseek_v4:
enabled: true
providers:
deepseek:
base_url: "https://api.deepseek.com/anthropic"
api_key: "sk-your-deepseek-api-key"
offers:
- model: deepseek-v4-pro
- model: deepseek-v4-flash
routes:
moonbridge:
model: deepseek-v4-pro
provider: deepseek
defaults:
model: moonbridge
max_tokens: 65536
把下面这一行替换为自己的 DeepSeek API Key:
api_key: "sk-your-deepseek-api-key"
例如:
api_key: "sk-xxxxxxxxxxxxxxxx"
3. 启动 Moon Bridge
在 moon-bridge 目录中执行:
go run ./cmd/moonbridge --config config.yml
Windows PowerShell:
go run ./cmd/moonbridge --config config.yml
启动成功后,该终端窗口不要关闭。默认情况下,Moon Bridge 会监听:
127.0.0.1:38440
并对外提供 Responses 兼容入口:
http://127.0.0.1:38440/v1/responses
八、生成 Codex 配置文件
Codex 的用户级配置文件默认在:
~/.codex/config.toml
Windows 对应路径通常是:
C:\Users\你的用户名\.codex\config.toml
1. 备份原配置
macOS / Linux:
CODEX_HOME_DIR="${CODEX_HOME:-$HOME/.codex}"
mkdir -p "$CODEX_HOME_DIR"
cp "$CODEX_HOME_DIR/config.toml" "$CODEX_HOME_DIR/config.toml.bak" 2>/dev/null || true
Windows PowerShell:
$CODEX_HOME_DIR = if ($env:CODEX_HOME) { $env:CODEX_HOME } else { "$HOME\.codex" }
New-Item -ItemType Directory -Force -Path $CODEX_HOME_DIR | Out-Null
if (Test-Path "$CODEX_HOME_DIR\config.toml") {
Copy-Item "$CODEX_HOME_DIR\config.toml" "$CODEX_HOME_DIR\config.toml.bak" -Force
}
2. 自动生成 Codex 配置
在另一个终端中,进入 moon-bridge 目录,执行:
macOS / Linux:
CODEX_HOME_DIR="${CODEX_HOME:-$HOME/.codex}"
MODEL="$(go run ./cmd/moonbridge --config config.yml --print-codex-model)"
go run ./cmd/moonbridge \
--config config.yml \
--print-codex-config "$MODEL" \
--codex-base-url "http://127.0.0.1:38440/v1" \
--codex-home "$CODEX_HOME_DIR" \
> "$CODEX_HOME_DIR/config.toml"
Windows PowerShell:
$CODEX_HOME_DIR = if ($env:CODEX_HOME) { $env:CODEX_HOME } else { "$HOME\.codex" }
$MODEL = go run ./cmd/moonbridge --config config.yml --print-codex-model
go run ./cmd/moonbridge `
--config config.yml `
--print-codex-config "$MODEL" `
--codex-base-url "http://127.0.0.1:38440/v1" `
--codex-home "$CODEX_HOME_DIR" `
| Set-Content -Path "$CODEX_HOME_DIR\config.toml"
该步骤会生成两个关键文件:
config.toml
models_catalog.json
其中:
config.toml用于告诉 Codex 调用本地 Moon Bridge;models_catalog.json用于告诉 Codex 模型的上下文、推理能力、工具支持等元数据。
3. 手动配置示例
若自动生成失败,也可以先使用以下最小配置思路:
model = "moonbridge"
model_provider = "moonbridge"
model_reasoning_effort = "high"
model_context_window = 1000000
model_supports_reasoning_summaries = true
[model_providers.moonbridge]
name = "Moon Bridge"
base_url = "http://127.0.0.1:38440/v1"
wire_api = "responses"
注意:
wire_api = "responses"
不要写成:
wire_api = "chat"
新版 Codex 中,chat 方式已经不适合作为主配置使用。DeepSeek 侧的 Chat/Anthropic 兼容由 Moon Bridge 负责处理,Codex 侧仍然保持 Responses 协议。
九、启动 Codex 并验证效果
1. 确认 Moon Bridge 仍在运行
第一个终端中应保持:
go run ./cmd/moonbridge --config config.yml
不要关闭该窗口。
2. 进入项目目录
cd /path/to/your-project
Windows:
cd D:\projects\demo
3. 启动 Codex
codex
或者直接执行一次任务:
codex exec "请用一句话说明当前项目的主要作用"
4. 观察 Moon Bridge 日志
当 Codex 发起请求时,Moon Bridge 终端中应能看到类似请求日志:
POST /v1/responses
这说明 Codex 已经把请求发送到了本地桥接层。
5. 用 curl 验证桥接层
也可以直接测试 Moon Bridge 的 Responses 接口:
curl http://127.0.0.1:38440/v1/responses \
-H "Content-Type: application/json" \
-d '{
"model": "moonbridge",
"input": "Say hello in one short sentence.",
"max_output_tokens": 1024
}'
返回正常内容,说明 Moon Bridge 侧基本可用。
十、常见问题与排查思路
1. 报错:connection refused
原因通常是 Moon Bridge 没有启动,或者端口不一致。
检查:
go run ./cmd/moonbridge --config config.yml
确认配置文件中端口为:
server:
addr: "127.0.0.1:38440"
Codex 配置中也应对应:
base_url = "http://127.0.0.1:38440/v1"
2. Codex 还是走 OpenAI 默认模型
检查 config.toml 是否在正确目录。
macOS / Linux:
cat ~/.codex/config.toml
Windows PowerShell:
Get-Content "$HOME\.codex\config.toml"
重点确认:
model = "moonbridge"
model_provider = "moonbridge"
[model_providers.moonbridge]
base_url = "http://127.0.0.1:38440/v1"
3. 提示 wire_api 不支持
新版 Codex 侧应使用:
wire_api = "responses"
不要使用:
wire_api = "chat"
也不要把 DeepSeek 官方 API 地址直接当作 Codex 的 Responses 服务地址。
4. 报 401 或鉴权失败
排查 DeepSeek API Key:
providers:
deepseek:
api_key: "sk-your-deepseek-api-key"
确认:
- Key 没有多余空格;
- Key 没有写错;
- DeepSeek 账户余额正常;
- 当前网络可以访问 DeepSeek API;
- 没有把 OpenAI Key 和 DeepSeek Key 混用。
5. 模型名称不匹配
建议优先使用:
deepseek-v4-pro
deepseek-v4-flash
不建议继续依赖旧的兼容模型名:
deepseek-chat
deepseek-reasoner
旧模型名虽然可能仍能兼容一段时间,但后续有被废弃的风险。新配置中建议直接使用 DeepSeek V4 系列模型名。
6. Codex 能回答,但不能改代码
这通常不是模型不可用,而是 Codex 的沙盒、权限或项目目录问题。
建议检查:
sandbox_mode = "workspace-write"
approval_policy = "on-request"
示例:
model = "moonbridge"
model_provider = "moonbridge"
sandbox_mode = "workspace-write"
approval_policy = "on-request"
[model_providers.moonbridge]
name = "Moon Bridge"
base_url = "http://127.0.0.1:38440/v1"
wire_api = "responses"
含义如下:
workspace-write:允许 Codex 在当前工作区内写文件;on-request:执行敏感命令或写入操作前请求确认;- 不建议新手直接使用完全放开的权限。
7. Windows 路径问题
Windows 下配置目录一般为:
C:\Users\你的用户名\.codex
PowerShell 中可以用:
cd $HOME\.codex
查看配置文件:
Get-Content .\config.toml
查看目录:
dir
十一、安全建议
1. 不要把 API Key 提交到 Git
建议在项目中添加 .gitignore:
.env
config.yml
*.bak
.codex/
Moon Bridge 的配置文件中可能含有明文 API Key,务必避免提交到公开仓库。
2. 不要在陌生项目中直接放开全部权限
Codex 可以执行命令、修改文件,因此在陌生项目中建议使用保守权限:
sandbox_mode = "workspace-write"
approval_policy = "on-request"
不要一上来就使用高危模式。
3. 对模型生成的命令保持审查
即便配置成功,也不建议盲目执行模型生成的所有命令。尤其是以下命令要重点关注:
rm -rf
curl | sh
powershell -Command
Invoke-Expression
chmod -R
sudo
pip install
npm install
涉及删除文件、远程脚本、权限提升、安装依赖的命令,都应先看清楚再执行。
4. 重要项目先提交 Git
使用 Codex 修改代码前,建议先确认当前工作区干净:
git status
必要时先提交:
git add .
git commit -m "backup before codex changes"
这样即使修改不符合预期,也可以快速回退。
十二、推荐使用方式
日常开发中,可以按任务复杂度选择模型。
1. 复杂需求分析
适合使用 DeepSeek V4 Pro:
请阅读当前项目结构,分析用户登录模块的调用链,并指出可能存在的安全风险。
2. 简单代码修改
适合使用 DeepSeek V4 Flash:
请把当前模块中的硬编码配置提取到 config 文件中。
3. Bug 定位
请根据报错日志定位问题,并给出最小修改方案,修改前先说明原因。
4. 单元测试生成
请为 userService 增加单元测试,覆盖正常登录、密码错误、用户不存在三种场景。
5. 代码审查
请审查最近一次 git diff,重点关注空指针、权限校验、异常处理和日志脱敏问题。
十三、总结
Codex + DeepSeek 的关键不在于“能不能把地址改成 DeepSeek”,而在于“Codex 需要的是 Responses 兼容入口”。DeepSeek 官方接口虽然兼容 OpenAI/Anthropic 调用方式,但这并不等于可以被新版 Codex 直接稳定调用。
推荐实践是:
Codex CLI
↓ Responses API
Moon Bridge 本地桥接层
↓ DeepSeek 兼容接口
DeepSeek V4 Pro / Flash
这种方案的优点是:
- 保留新版 Codex 的本地工程能力;
- 不需要降级 Codex;
- 可以使用 DeepSeek V4 模型;
- 本机可控,便于排查日志;
- 配置逻辑清晰,后续可扩展多模型。
最终配置时要牢记三点:
第一,Codex 侧使用 wire_api = "responses"。
第二,不要直接把 base_url 指向 DeepSeek 官方地址。
第三,使用 Moon Bridge 这类桥接层完成协议转换。
完成上述配置后,就可以在本地项目中使用 Codex 操作代码,同时由 DeepSeek 提供模型推理能力,形成一套高性价比、可控性较强的 AI 编程工作流。
更多推荐



所有评论(0)