不用OpenAI服务!Codex CLI接入DeepSeek,从零搭建本地代码生成环境

说明:本文基于开源Codex‑CLI客户端做适配器改造,将后端切换为DeepSeek大模型,用于本地代码生成调试,操作仅做技术实践,版本不同部分配置项会存在差异。
前言
之前一直在折腾Codex CLI,原生版本强依赖OpenAI接口,手机号验证、地区限制、网络问题经常卡开发进度。国内环境使用体验并不友好。
DeepSeek在代码生成能力上表现很不错,同时提供兼容OpenAI格式的API接口。这就给了我们一个思路:直接改造Codex CLI,把底层推理后端替换成DeepSeek,保留原有的Skills配置、命令行参数、输出逻辑,不用更换自己已经习惯的CLI工作流。
网上大部分教程只讲调用DeepSeek原始API,很少有把Codex CLI完整迁移过来的实操记录。本文完整梳理5个核心步骤:环境准备、客户端安装、适配器配置、参数调优、第一次代码对话,同时记录实操中遇到的兼容坑点。
整体架构说明
原生Codex CLI,内部硬编码对接OpenAI接口。而DeepSeek的API高度兼容OpenAI的请求报文格式,所以不需要大规模修改源码,只修改接口端点、模型标识、鉴权密钥即可完成适配。
- 上层:Codex CLI原有全部能力,Skills配置、命令行参数、输出解析、上下文管理全部保留。
- 中间层:改写API对接配置,把base_url指向DeepSeek网关地址。
- 底层:实际推理交由DeepSeek代码模型执行。
注意:属于API层兼容,不是100%完全等价。少量OpenAI独有的请求字段DeepSeek不识别,会被直接忽略,不影响核心代码生成。
步骤1:前期环境准备
1.1 获取DeepSeek API Key
登录开发者平台,创建API密钥,保存好api_key,注意不要泄露。余额提前充值,调用代码模型会消耗额度。
1.2 本地运行环境
- Node.js版本要求:v18及以上,过低版本会出现依赖报错。
- 网络环境:可以正常访问DeepSeek官方API网关,不需要跨境代理。
- 操作系统:Windows、MacOS、Linux全部支持。
1.3 下载Codex‑CLI
可以使用npm全局安装,也可以拉取开源源码本地编译运行。
优先使用npm全局安装,对新手更友好。
npm install -g @xxx/codex-cli
踩坑提醒:部分旧版本Codex‑CLI不支持自定义base_url,必须升级到较新版本,否则无法替换接口地址。如果安装完成后没有自定义端点参数,就需要拉源码手动编译。
步骤2:配置DeepSeek接口对接参数
Codex CLI支持环境变量注入接口地址,不需要修改源码。
设置两组核心环境变量:
# DeepSeek api key
export CODEX_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxx"
# 替换为DeepSeek兼容OpenAI的接口地址
export CODEX_BASE_URL="https://api.deepseek.com/v1"
Windows PowerShell:
$env:CODEX_API_KEY="sk-xxxxxxxxxxxxxxxxxxxxxxxx"
$env:CODEX_BASE_URL="https://api.deepseek.com/v1"
关键点:
/v1后缀不能丢,丢掉之后接口404。
模型名称填写DeepSeek对应的代码模型标识符,例如deepseek-coder-v2,不要填写OpenAI模型名。
步骤3:连通性测试,验证接口是否通
先做最小测试,验证网络、密钥、接口配置是否正确。执行简单测试命令,让它输出一段简单工具函数。
codex run --model deepseek-coder-v2 "写一个python读取json文件的工具函数"
常见报错
- 401 Unauthorized:密钥复制错误,存在换行空格,核对API Key。
- 404 Not Found:
CODEX_BASE_URL少写/v1后缀。 - 500类报错:模型名称写错,确认DeepSeek平台支持的模型ID。
- 请求超时:检查本地网络能否访问DeepSeek网关。
测试正常,终端直接输出完整Python代码,代表链路跑通。
步骤4:迁移原有Skills配置模板
之前整理的Codex‑CLI的Skills yaml模板,可以直接复用。
因为Skills本质是提示词约束,和后端大模型无关。
调用时指定skills配置文件即可:
codex run --model deepseek-coder-v2 --skills ./skills.yaml "根据需求生成C#工具类"
适配注意点:
- temperature、max_output_tokens这类推理参数字段完全兼容,可以直接沿用。
- examples示例尽量贴合DeepSeek的输出习惯,如果生成效果偏差,可以微调示例片段。
- 不要写OpenAI专属的能力描述,描述调整为通用代码工程师角色。
步骤5:首次完整对话与代码生成
链路和配置全部就绪之后,可以做一次完整的实战任务。
示例需求:编写一个读取本地日志文件,做简单过滤统计的脚本。
codex run --model deepseek-coder-v2 --skills ./script-skills.yaml "编写一个日志分析脚本,读取log文本,统计错误行数,输出统计结果,增加异常捕获"
执行完成,模型输出完整脚本,直接重定向保存到本地文件。
codex run --model deepseek-coder-v2 "你的需求" > log_analyze.py
到这里,5步全部完成。原来Codex CLI整套本地开发工作流,现在后端跑在DeepSeek上,完全绕开OpenAI账号、手机号验证、地区限制一系列麻烦。
实操踩坑汇总
坑1:旧版CLI不支持自定义BASE_URL
现象:设置环境变量不生效,依旧请求OpenAI域名。
处理:升级npm包;如果包不支持,下载源码,修改内部API请求部分,本地build。
坑2:模型名称直接照搬OpenAI
现象:接口返回model not found。
处理:使用DeepSeek官方文档给出模型ID,例如deepseek-coder-v2。
坑3:Skills示例里面大量OpenAI风格示例
现象:输出效果差,出现不存在库、臆造API。
处理:改写examples示例,示例代码尽量贴近日常业务。
坑4:上下文窗口参数不匹配
现象:传入大段代码,直接截断。
处理:DeepSeek不同模型上下文窗口不一样,调整skills里面max_output_tokens,不要超过模型上限。
坑5:环境变量不生效(Windows高频)
现象:命令行手动设置变量可以跑,IDE终端、脚本里面执行失败。
处理:PowerShell、CMD、IDE终端环境互相隔离,脚本内直接在命令行传入参数,或者在脚本内定义环境变量。
坑6:部分OpenAI特有参数不兼容
原生Codex‑CLI会携带少量OpenAI专属请求字段,DeepSeek会直接忽略,不会报错,但不会生效,属于兼容正常现象。
参数调优参考(对接DeepSeek场景)
| 场景 | temperature | max_output_tokens |
|---|---|---|
| C#/Java业务代码、重构、bug修复 | 0.1‑0.3 | 1500‑2000 |
| Python脚本、工具类生成 | 0.2‑0.4 | 1200‑1800 |
| 算法Demo、原型探索 | 0.4‑0.6 | 1000‑1500 |
做工程业务代码,温度依旧不建议过高,过高会虚构接口、库。
两种使用模式
- 临时命令行模式:每次调用直接写prompt,适合快速生成小片段,调试函数。
- Skills常驻模式:加载yaml技能配置,固化编码约束、示例、推理参数,适合日常高频开发,不用重复写一大段提示约束。
总结
通过修改环境变量替换接口端点,就可以把Codex CLI迁移到DeepSeek,完整保留原有CLI的全部特性:Skills配置、命令行调用、输出重定向、脚本集成。不用再处理OpenAI手机号验证、地区限制等一系列棘手问题。
整个落地分为5步:环境准备、获取密钥、配置接口地址、连通性测试、迁移Skills模板并正式调用。实操重点注意客户端版本、接口后缀、模型ID、环境变量隔离这几个高频坑。
这套方案适合国内开发者,把熟悉的CLI工具和国内可访问的代码大模型结合,构建稳定本地代码生成工作流。
葡萄城是专业的软件开发技术和低代码平台提供商,聚焦软件开发技术,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。
更多推荐

所有评论(0)