最近在搭个人 AI 编程环境时,一直在折腾如何用 DeepSeek 来驱动 Codex。Codex 是 OpenAI 推出的编程智能体,官方默认绑定自家模型;但因为它支持自定义模型服务商(model provider),我们可以通过一个配置文件,把模型服务地址指向 DeepSeek 的 API,让代码生成、解释、重构这些操作全部走 DeepSeek。这样既绕开了对开发者不友好的模型绑定限制,又能把国产模型的性价比优势用在日常编码里。
这篇文章会从一个可落地的角度,把整个接入流程拆成清晰步骤:环境准备、API Key 申请、Codex CLI 配置、命令行验证、识图能力扩展,以及高频坑点排查。适合想要低成本使用 Codex 交互体验的开发者,也适合需要统一接入国内模型服务地址的团队参考。全文不涉及复杂的源码改造,配置集中在少数几个文件里,跟着操作就能跑起来。
1. 为什么要在 Codex 中使用 DeepSeek
1.1 Codex 到底是什么
Codex 是 OpenAI 推出的编程智能体,它和普通聊天式 AI 插件最大的区别在于:Codex 能直接操作代码仓库,完成多文件级任务的拆解与执行。你给它一个任务,例如“把项目里的登录接口改成 JWT 鉴权”,它会自己查看项目结构、搜索相关代码、生成补丁,甚至执行测试命令来验证结果。
简单说,Codex 更像一个“驻守在终端里的 AI 程序员”,而不是一问一答的对话框。它自带 CLI 工具,也可以作为开源编程工具被集成到其他客户端中。很多人第一次使用 Codex 时会惊讶于它的多轮任务追踪能力——它能把一个复杂需求拆成多个子任务,并逐步落地到代码文件里。
不过 Codex 的默认模型配置指向 OpenAI 自家服务。对于国内开发者来说,这会带来两个问题:国内直连不稳定、API 成本和支付方式不够方便。因此,“把模型切换到 DeepSeek”就成为很实际的优化方案。
1.2 DeepSeek 的能力与接入价值
DeepSeek 是深度求索推出的大语言模型服务,目前对外提供 OpenAI 兼容接口,也就是说,任何支持“OpenAI 格式”的客户端都可以通过简单的 base_url 配置切换到 DeepSeek。
DeepSeek 的主要优势有三点:
- 价格相对友好,API 调用成本较低,适合高频编码场景。
- 中文理解能力表现不错,对中文注释、中文需求文档的解析比很多国外模型更自然。
- 模型能力覆盖代码生成、代码解释、单元测试编写、复杂逻辑推理等开发工作。
从工程角度看,DeepSeek 提供的 API 兼容格式已经足够成熟。你不需要修改 Codex 的核心代码,只需要在配置里声明一个模型服务商,并把 API Key 换成 DeepSeek 的 key。
这里需要特别说明的是:DeepSeek 的主要模型仍是文本模型,官方模型是否支持多模态视觉输入,取决于当前模型版本的对外能力。因此,本文后续讲的“支持识图”,会围绕“图片理解能力如何接入相关工作流”展开,而不是默认 DeepSeek 模型内置了视觉识别。
1.3 接入后能做什么:代码生成 + 识图
把 Codex 接入 DeepSeek 之后,日常可以做的事情包括:
- 让 Codex 基于 DeepSeek 模型分析项目结构,生成新功能代码。
- 在多文件修改场景下,由 Codex 自行搜索关键函数并生成补丁。
- 让 Codex 解释一段复杂代码,并输出中文注释、设计思路。
- 通过第三方客户端或扩展能力,把“图片”作为输入,实现 UI 稿转代码、报错截图分析、架构图解读等功能。
也就是说,接入后不只是“换个模型”,而是把编码智能体和国产模型能力组合起来,形成一套更符合国内开发者使用习惯的工具链。
2. 接入原理与核心概念
2.1 OpenAI 兼容接口是什么意思
“OpenAI 兼容接口”是目前大模型服务领域的事实标准。它定义了一套 HTTP 接口规范,包括发起对话、配置文本模型、接收流式响应等。只要大模型服务提供方实现了这套接口,客户端就可以用同一套代码接入不同模型。
举个例子,官方 Codex 默认会调用 OpenAI 的对话接口。我们通过配置项把 base_url 改为https://api.deepseek.com,接口路径和请求体格式保持不变,Codex 就能把请求转发给 DeepSeek 服务。
这种做法的好处非常明显:
- 不破坏 Codex 的既有功能。
- 切换模型服务商只修改配置,不修改代码。
- 模型服务方只要支持兼容接口,切换成本几乎为零。
2.2 DeepSeek API 的服务地址与密钥
要完成接入,需要准备两个核心信息:
- DeepSeek API 的服务地址。
- 你的专属 API Key。
DeepSeek 的官方 API Base URL 通常是:
https://api.deepseek.com- 或
https://api.deepseek.com/v1
具体以 DeepSeek 官方文档为准,通常两者都可以使用。API Key 需要在 DeepSeek 开放平台控制台创建,创建后请妥善保存,因为它只在创建时完整展示一次。
需要注意,DeepSeek 的 API Key 和普通账号密码不同,它是调用计费服务的凭证。如果泄漏到公开仓库,别人就可以使用你的额度。因此,推荐用环境变量传递,不要硬编码在配置文件里提交到 Git。
2.3 识图功能在架构中的位置
很多开发者误以为,Codex 接入 DeepSeek 后就直接拥有“看图片”的能力。实际上,Codex CLI 本身是面向代码任务的工具,它的输入输出以文本为主。真正的“识图”需要多模态模型或者额外的图片理解服务参与。
在常见架构中,识图能力可以拆成两段:
- 图片理解阶段:由视觉模型或 OCR 服务对图片内容进行识别,输出结构化文字描述。
- 代码生成阶段:把描述文本交给 DeepSeek,由 DeepSeek 根据描述生成代码或修改逻辑。
所以,本文里的“支持识图”是一项组合能力:DeepSeek 负责逻辑推理,视觉或 OCR 服务负责图片信息读取。这也是目前社区里很多“识图插件”“识图 Skill”的核心实现思路。
3. 环境准备与版本说明
3.1 运行环境
本文示例以常见开发环境为例,重点演示配置思路。你需要准备的基础环境如下:
- 操作系统:Windows 10/11、macOS、Linux 均可。
- 终端工具:Windows 推荐 PowerShell 或 Windows Terminal;macOS/Linux 使用自带终端。
- Node.js 环境:如果通过 npm 安装 Codex CLI,需要 Node.js 16 及以上版本。
- Git:建议安装,方便后续克隆项目或提交代码补丁。
- DeepSeek API Key:在 DeepSeek 开放平台控制台申请。
版本需要根据你的项目实际情况调整,本文重点讲解配置思路,不写死某个版本号。遇到版本差异时,请以当前 CLI 的帮助信息为准。
3.2 安装 Codex CLI
Codex CLI 的安装方式主要有两种:
方式一:通过 npm 安装。
npm install -g @openai/codex安装完成后,检查是否成功:
codex --version如果能输出版本号,说明安装成功。
方式二:从 GitHub Release 下载对应系统的二进制文件,解压后加入系统 PATH。这种方式适合不想安装 Node.js 的用户。
安装完成后,先执行一次不带参数的codex命令,确认它能否正常启动。
3.3 获取 DeepSeek API Key
登录 DeepSeek 开放平台控制台,在“API Keys”页面创建一个新的密钥。创建成功后,你会得到一串形如sk-开头的字符串,这就是后续配置中要使用的密钥。
建议先在控制台页面确认账户状态和余额,避免因为账户欠费导致调用失败。API Key 创建完成后,将其设置为环境变量:
# macOS / Linux export DEEPSEEK_API_KEY="你的密钥" # Windows PowerShell $env:DEEPSEEK_API_KEY="你的密钥"为了持久化配置,可以把这段命令写入 shell 的配置文件,例如.bashrc、.zshrc,或 Windows 用户环境变量设置里。
4. 完整实战:DeepSeek 一键接入 Codex
4.1 创建配置目录与配置文件
Codex CLI 的配置文件根目录是~/.codex。我们需要在这个目录下创建主配置文件config.toml。
mkdir -p ~/.codex cd ~/.codex如果你的机器上已经存在config.toml,操作前请先备份:
cp config.toml config.toml.bak4.2 编写 Codex 配置文件
在~/.codex/config.toml中写入以下内容:
model_provider = "deepseek" [model_providers.deepseek] name = "DeepSeek" base_url = "https://api.deepseek.com/v1" env_key = "DEEPSEEK_API_KEY" wire_api = "chat"配置说明:
model_provider:指定默认使用的模型服务商名称,这里填deepseek,对应下方[model_providers.deepseek]配置块。base_url:DeepSeek 的 OpenAI 兼容接口地址。如果换成其他兼容服务,只需改这一项。env_key:告诉 Codex 从哪个环境变量读取 API Key。配置为DEEPSEEK_API_KEY后,Codex 自动读取我们在上一步设置的环境变量。wire_api:接口协议类型。DeepSeek 兼容 OpenAI 的 Chat 接口,因此填chat。
如果你的 Codex 版本支持在配置中直接指定默认模型名称,可以在[model_providers.deepseek]下增加:
model = "deepseek-chat"具体字段以你本地codex --help或官方文档为准。
4.3 登录与权限验证
Codex 在首次使用时可能会要求登录或确认权限。如果你跳过登录,也可以先通过环境变量方式运行。
在终端中执行:
codex --provider deepseek "用 Python 写一个快速排序函数"这里的--provider deepseek是显式指定服务商,避免加载默认配置。
如果配置正确,你会看到 Codex 调用 DeepSeek 并返回代码结果。这一步同时验证了:
- Codex 是否读取到自定义 provider。
- DeepSeek API 地址是否可达。
- API Key 是否有效。
- 模型调用是否成功。
4.4 运行首个对话任务
除了直接输入问题,Codex 还支持在仓库目录里运行。我们创建一个测试项目:
mkdir codex-test cd codex-test echo "# Codex Test" > README.md然后运行:
codex "创建一个 README 补充项目说明,并添加一个 main.py 入口文件"Codex 会自动分析当前目录结构,生成文件或补丁。
如果你希望在特定模型与 DeepSeek 之间切换,可以在命令中显式指定 provider,例如:
codex --provider deepseek "分析这个仓库的依赖关系"4.5 结果说明
当 Codex 返回结果后,注意观察输出区域:
- 如果是纯文本回答,说明模型已经生效。
- 如果是文件修改,Codex 会展示 diff 内容,并询问是否接受变更。
- 如果返回错误,则参考第 6 节中的问题排查。
这里需要理解 Codex 的运行模式:它并不只是“生成一段文本”,在部分模式下,会实际修改工作区文件。建议在测试目录里操作,避免误改重要项目。
5. 识图能力的实现方式
5.1 让 Codex 理解图片的两种思路
由于 Codex CLI 原生输入以文本为主,要让 Codex 具备识图能力,需要从工作流层面补充图片理解模块。常见思路有两种:
思路一:先让视觉模型把图片转成文字描述,再把文字描述交给 Codex。例如,把一张报错截图交给 OCR/视觉模型,生成“控制台显示 FileNotFoundError: xxx not found”,再将这段文本作为上下文提交给 Codex。
思路二:在 Codex 外部做一个“识图前置工具”,用户在客户端上传图片后,由工具完成图片识别,并把结果自动附加到发送给 Codex 的 prompt 文本里。
这两种思路的共同点是:图片本身不会直接进入 DeepSeek 的文本接口,而是先转换为结构化文本。
5.2 使用兼容视觉模型作为图片理解服务
要实现图片到文字的转换,可以借助支持视觉输入的多模态模型,例如 Qwen-VL、GPT-4o 等。调用时,把图片转成 Base64 编码,拼接进对话请求,视觉模型返回描述。
Python 调用视觉模型的核心思路如下:
import base64 from openai import OpenAI client = OpenAI( api_key="你的视觉模型APIKey", base_url="https://你的服务地址/v1", ) with open("screenshot.png", "rb") as f: image_data = base64.b64encode(f.read()).decode("utf-8") response = client.chat.completions.create( model="视觉模型名称", messages=[ { "role": "user", "content": [ {"type": "text", "text": "请描述这张报错截图中的关键错误信息"}, { "type": "image_url", "image_url": { "url": f"data:image/png;base64,{image_data}" }, }, ], } ], ) print(response.choices[0].message.content)这段代码的作用是:先读取本地图片,转成 Base64,再通过视觉模型接口获取图片描述。得到的描述文本就是后续传给 DeepSeek 的上下文。
注意:这里使用的是通用 OpenAI SDK,base_url和model需要替换为你实际使用的视觉模型服务信息。
5.3 通过第三方客户端实现图片上传与问答
除了手工写脚本,社区里也出现了不少第三方桌面客户端,例如 DeepSeek Harness、DeepSeek Hermes 等。这类工具本质上是在 DeepSeek API 或 Codex CLI 之上套了一层图形界面,提供更友好的图片上传入口。
使用这类客户端时,流程通常是:
- 在客户端中配置 DeepSeek API Key。
- 在输入框上传图片。
- 客户端自动将图片交给支持的视觉模型或 OCR 模块识别。
- 识别结果与问题一起发送给 DeepSeek,生成答案。
需要提醒的是,这类第三方工具版本迭代很快,截图和按钮位置可能与你的版本不同。安装前先阅读对应项目的 README,确认它是否支持图片上传、是否内置视觉模型,以及是否需要额外配置 API Key。
5.4 本地图片处理脚本示例
如果你只需要“截图里的错误信息”这类简单识图,也可以不用视觉模型,直接用 OCR 库完成。下面是一个使用 PaddleOCR 的示例思路:
from paddleocr import PaddleOCR ocr = PaddleOCR(use_angle_cls=True, lang="ch") result = ocr.ocr("error.png", cls=True) for line in result: for item in line: print(item[1][0])PaddleOCR 会把图片中的中文、英文、数字文本提取出来。这样,即使没有额外的多模态视觉模型,也能完成报错截图的信息读取。
不过 OCR 只能识别文字,不能理解图表、结构、颜色等视觉信息。如果需要对 UI 截图进行更完整的分析,还是需要多模态视觉模型。
6. 常见问题与排查思路
6.1 报错:找不到 codex cli binary
很多 IDE 插件或桌面客户端会提示类似“unable to locate the codex cli binary”的错误。这个问题的本质是:外部程序不知道 Codex CLI 的可执行文件在哪里。
排查思路如下:
- 在终端执行
codex --version,确认 CLI 是否安装成功。 - 如果 CLI 可用,查看它所在的绝对路径:
which codex- 在 IDE 插件或客户端的设置项中,找到 Codex CLI Path 配置,把上一步得到的路径填进去。
- 如果用 npm 安装,且
which codex找不到,检查 npm 全局 bin 目录是否已加入系统 PATH。
在 macOS 上,常见的安装路径是/usr/local/bin/codex或某个 Node 版本管理目录;Windows 上则可能在%APPDATA%\npm\codex.cmd。
6.2 报错:本地网络转发服务异常导致请求失败
部分开发者使用社区客户端时会遇到本地转发服务异常,最终导致 Codex 请求/responses接口失败。这类问题通常和本地网络设置有关,而不是 Codex 配置本身的问题。
排查建议:
- 检查网络服务地址是否能正常访问,最直接的方式是使用
curl:
curl https://api.deepseek.com/v1/models \ -H "Authorization: Bearer $DEEPSEEK_API_KEY"- 如果请求超时或拒绝连接,检查系统防火墙、网络策略和本地 DNS 设置。
- 如果使用了本地流量转发工具,确认服务是否正常运行,并关闭不必要的全局转发后重试。
- 如果仍然不通,尝试更换网络环境(例如切换手机热点)验证是否为网络问题。
这里必须强调:请使用合法、合规的网络访问方式,不要使用任何违规工具绕过网络限制。
6.3 接入后仍然调用默认模型
修改了config.toml,但 Codex 运行时仍然调用默认模型。这种情况通常有三个原因:
- 配置文件路径不对。Codex 读取的是用户目录下的
~/.codex/config.toml,不是项目目录里的配置。 - 启动命令没有指定 provider。部分 Codex 版本需要显式加
--provider deepseek。 - 环境变量未生效。配置文件里声明读取
DEEPSEEK_API_KEY,但如果终端里的环境变量没有设置或没有重新加载,Codex 可能不会加载 provider。
可以先执行:
echo $DEEPSEEK_API_KEY确认环境变量存在。然后运行:
codex --provider deepseek --model deepseek-chat "你好"验证是否切换到 DeepSeek。
6.4 API Key 无效或鉴权失败
如果 Codex 返回鉴权错误、401 或类似信息,说明服务端无法识别你的 API Key。
常见原因有:
- API Key 复制错误,多复制了空格或漏掉末尾字符。
- 环境变量名不匹配。配置里写的是
DEEPSEEK_API_KEY,但环境变量设置成了DEEPSEEK_KEY。 - 账户余额不足或密钥被删除。
- 多个服务商配置冲突。
建议在控制台重新创建密钥,并使用curl单独验证密钥有效性,确认没问题再修改本地配置。
6.5 识图能力不稳定或返回为空
如果你通过视觉模型或第三方客户端实现识图,遇到“没反应”或“返回为空”,请按以下顺序排查:
- 基础模型是否支持图片输入,不支持的话要换视觉模型。
- 图片是否过大,部分模型对图片尺寸和体积有限制。
- 上传时是否成功把图片转成 Base64 或正确填写图片 URL。
- 客户端是否内置了图片识别插件,如果没有,需要先安装对应的 Skill 或插件。
- 日志里是否出现密钥缺失、模型名错误之类的提示。
识图链路比纯文本链路多一个环节,出问题时先确认“图片到文字”这一步是否成功,再检查“文字到代码”这一步。最简单的验证方式是写一个独立脚本,直接调用视觉模型接口描述图片,确认输出正常后再接入 Codex 流程。
下面用一个表格整理高频问题:
| 问题现象 | 常见原因 | 解决思路 |
|---|---|---|
| IDE 提示找不到 codex cli binary | Codex CLI 未安装或 PATH 未配置 | 执行which codex,并在插件中设置 CLI 路径 |
| 请求响应失败或超时 | 网络地址不可达、DNS 异常 | 用curl测试 API 地址,检查网络策略 |
| 配置后仍调用默认模型 | 配置文件路径错误或未指定 provider | 确认~/.codex/config.toml路径,添加--provider deepseek |
| 401 鉴权失败 | API Key 错误或余额不足 | 重新创建 Key,单独用 curl 验证 |
| 识图返回为空 | 模型不支持视觉、图片格式问题 | 先用独立脚本验证视觉模型输出 |
7. 最佳实践与工程建议
7.1 配置管理
不要把 API Key 直接写进config.toml或任何会提交到 Git 的文件中。配置文件里用env_key指向环境变量是最稳妥的方式。如果团队协作,建议使用.env文件管理密钥,并在.gitignore中忽略它。
对于 Codex 配置,建议维护一份基础模板:
model_provider = "deepseek" [model_providers.deepseek] name = "DeepSeek" base_url = "https://api.deepseek.com/v1" env_key = "DEEPSEEK_API_KEY" wire_api = "chat"团队成员只需各自设置DEEPSEEK_API_KEY环境变量,就可以共用同一份配置模板。
7.2 密钥安全
API Key 是计费凭证,必须按敏感信息处理:
- 不要提交到 GitHub、Gitee 或其他代码仓库。
- 不要在技术博客、截图、视频中暴露完整密钥。
- 定期轮换密钥,尤其发现密钥可能泄漏时。
- 在 DeepSeek 控制台关注调用量和消费记录,异常增长时立即禁用密钥。
另外,如果有多个项目共用同一个 DeepSeek 账户,最好为不同项目创建不同的 API Key,方便追溯用量和单独限制。
7.3 成本控制与模型选择
DeepSeek 提供不同定位的模型,例如偏通用对话的deepseek-chat和偏复杂推理的deepseek-reasoner。在实际使用中:
- 日常代码生成、注释解释,优先使用
deepseek-chat,速度和成本更友好。 - 涉及复杂链路分析、多条件逻辑推理,可以切换到
deepseek-reasoner。 - 如果只是简单问答,不要频繁调用推理模型,避免不必要的成本。
在 Codex 中可以通过命令参数临时指定模型,也可以在配置文件中修改默认模型名。建议根据自己的任务类型做一个简单规则,而不是所有请求都使用同一个模型。
7.4 识图场景的合规与边界
启用识图能力时,需要注意数据合规问题。图片中可能包含敏感信息,例如个人信息、内部文档截图、密钥信息等。建议:
- 只对已获得授权的图片内容执行识图。
- 不要在识图链路中传输身份证、银行卡、密码等敏感信息。
- 企业内部使用时,确认视觉模型服务的数据存储策略。
- 图片处理后及时删除临时文件,避免残留在本地目录或日志中。
从技术角度,识图链路可以把图片“最小化”:先通过裁剪、压缩降低图片体积,再交给视觉模型。对 OCR 场景,也可以先做灰度化、二值化等预处理,提升识别准确率。
7.5 生产环境落地建议
如果要把 DeepSeek 接入 Codex 的方式推广到团队,而不是个人电脑上跑通就算完,还需要考虑以下几点:
- 统一 Codex CLI 版本,避免不同成员之间配置字段不兼容。
- 在 CI 环境使用独立的 API Key,并设置单次调用上限。
- 把 Codex 配置文件纳入配置管理,但密钥继续使用环境变量注入。
- 记录调用日志,分析每日 token 消耗和主要使用场景。
- 对于需要长期维护的仓库,建议先在小范围试运行,观察 Codex 自动修改文件的准确性,再决定是否放开权限。
Codex 会自动修改文件,这在个人项目中很方便,但在生产项目中有风险。建议开启 Codex 的确认模式,对生成的 diff 逐条审阅后再应用。也可以在测试仓库中演练几轮,确认行为符合预期再进入实际项目。
8. 总结
这次接入的核心思路其实很简单:Codex 支持自定义模型服务商,DeepSeek 提供了 OpenAI 兼容接口,两者通过一个config.toml文件连接起来,API Key 通过环境变量传递,即可完成 DeepSeek 驱动 Codex 的配置。
“支持识图”则是一个组合能力,需要额外的视觉模型或 OCR 服务参与。最稳妥的做法是先搭建一条“图片 → 文字描述 → DeepSeek → 代码输出”的流转链路,这样既保留了 DeepSeek 在文本、代码推理方面的优势,又能让使用者通过上传图片来完成报错分析、UI 稿转代码等操作。
如果你正打算把 Codex 接入 DeepSeek,建议先按照第 4 节的流程跑通命令行验证,再根据实际需求决定是否引入识图组件。配置过程中遇到问题时,优先按第 6 节的高频问题逐项排查,特别是 API Key 和环境变量这两处,绝大多数接入失败都出在这里。文中的步骤和代码都可以直接复制使用,建议先收藏备用。