摘要

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。

目录

  1. 为什么要把 Codex 和 DeepSeek 结合起来
  2. 直接修改 base_url 为什么容易失败
  3. 整体架构说明
  4. 环境准备
  5. 安装 Codex CLI
  6. 获取 DeepSeek API Key
  7. 部署 Moon Bridge 本地桥接层
  8. 生成 Codex 配置文件
  9. 启动 Codex 并验证效果
  10. 常见问题与排查思路
  11. 安全建议
  12. 总结

一、为什么要把 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 默认模型;
  • 报错信息中出现 responseswire_apiunsupported 等关键词。

新版 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 编程工作流。


Logo

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

更多推荐