最近在尝试将 AI 大模型集成到开发工作流中发现 Codex 是一个极佳的本地 AI 助手平台而 DeepSeek 作为国内顶尖的大模型其推理能力和代码生成效果非常出色。但如何让 Codex 直接调用 DeepSeek 的 API实现“国内直连、无需订阅”的流畅体验成了很多开发者尤其是国内开发者面临的实际问题。网上资料零散配置过程也容易踩坑。本文将为你提供一套完整的、从零开始的实战方案手把手教你如何在 12 分钟内将 DeepSeek 大模型成功接入 Codex让你在本地 IDE 或命令行中就能享受到媲美 ChatGPT 的智能代码辅助且完全免费、网络稳定。无论你是刚接触 AI 编程的小白还是寻求效率提升的资深开发者都能跟着本文一步步完成配置。1. 背景与核心概念为什么选择 Codex DeepSeek在深入配置之前我们先理清几个关键概念理解这个组合方案的价值所在。1.1 什么是 CodexCodex 并非 OpenAI 的那个 Codex 模型这里通常指的是一类本地化部署的 AI 代码助手客户端或平台。它能够接收你的自然语言指令或代码上下文调用后端的大模型 API如 OpenAI GPT、Claude 或本文的 DeepSeek生成、补全、解释或重构代码。常见的形态包括VS Code 插件如Claude Code,Cursor内置类似能力等。独立的桌面应用。命令行工具。它的核心价值在于提供了一个统一的、本地的交互界面将复杂的 API 调用封装成对开发者友好的操作。1.2 什么是 DeepSeekDeepSeek 是由深度求索公司开发的一系列大型语言模型。它有几个突出优势使其成为 Codex 后端的绝佳选择强大的代码能力在多项代码基准测试中表现优异理解和生成代码的质量很高。完全免费通过官方 API 调用目前撰写本文时提供免费的额度对于个人开发者和小型项目非常友好。国内网络友好API 服务器在国内访问速度快且稳定无需处理复杂的网络问题。上下文长度大支持 128K 甚至更长的上下文适合处理大型代码文件。1.3 为什么需要将它们连接起来默认情况下Codex 类客户端通常预设连接的是 OpenAI 或 Anthropic 的官方 API。对于国内用户来说这可能会面临网络访问问题需要处理网络连接。订阅费用GPT-4 等模型 API 调用会产生费用。速度延迟国际网络访问可能有延迟。通过将 Codex 的后端从 OpenAI/Claude切换或桥接到 DeepSeek我们就能获得免费、高质量的代码助手。享受低延迟、稳定的响应。完全在合规的国内网络环境下使用。接下来我们就进入实战环节核心思路是使用一个“桥梁”服务将 Codex 客户端的请求转发到 DeepSeek API。2. 环境准备与前置条件在开始配置前请确保你的开发环境满足以下要求。整个过程不复杂但基础的软件环境是必须的。2.1 基础环境要求操作系统Windows 10/11, macOS, 或 Linux (如 Ubuntu)。本文以 macOS/Linux 命令为例Windows 用户可使用 Git Bash 或 WSL 获得类似体验。终端/命令行工具能够执行 Shell 命令。网络能够正常访问api.deepseek.com。2.2 必要软件安装我们需要一个“桥梁”程序。根据网络资料一个常见的方案是使用Moon Bridge或类似的反向代理工具。这类工具通常使用 Node.js 或 Go 编写。1. 安装 Node.js (推荐)Moon Bridge 的参考实现多基于 Node.js。请确保你的系统已安装 Node.js (版本 16 或以上) 和 npm。打开终端检查版本node --version npm --version如果未安装请访问 Node.js 官网 下载并安装 LTS 版本。2. 获取 DeepSeek API Key这是调用 DeepSeek 模型的凭证。访问 DeepSeek 开放平台 。注册并登录账号。在控制台中找到 “API Keys” 部分。点击 “Create API Key”生成一个新的密钥。妥善保存这个密钥如sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx接下来会用到。关闭页面后无法再次查看完整密钥。2.3 确认 Codex 客户端本文的配置方法适用于支持自定义 API 端点Endpoint的 Codex 类客户端。请确认你使用的客户端如某些 VS Code 插件或独立应用是否提供了设置自定义后端 URL 的选项。这是连接成功的关键。3. 核心原理与方案拆解在动手写配置之前理解其工作原理能让你在遇到问题时更快地排查。3.1 整体架构图一个简化的数据流如下[你的 Codex 客户端] -- (发送请求到) http://localhost:你的端口/v1/chat/completions -- [本地 Moon Bridge 服务] (接收请求添加 DeepSeek API Key转换格式) -- (转发请求到) https://api.deepseek.com/v1/chat/completions -- [DeepSeek 官方服务器] (处理并返回结果) -- (返回结果给) [本地 Moon Bridge 服务] -- (返回结果给) [你的 Codex 客户端]你的 Codex 客户端以为自己还在和 OpenAI 格式的 API 对话但实际上请求被本地的桥梁服务“劫持”并转发给了 DeepSeek。3.2 关键配置点本地代理服务在本地启动一个服务监听某个端口如127.0.0.1:8080。请求转发与适配该服务需要将收到的请求头部Header进行修改主要是加入Authorization: Bearer sk-your-deepseek-key并将请求体Body格式微调以兼容 DeepSeek API通常与 OpenAI 格式高度兼容可能只需修改model字段。客户端配置将 Codex 客户端的 API 地址从默认的https://api.openai.com/v1改为http://localhost:8080/v1。4. 完整实战搭建本地桥梁并配置 Codex这是本文的核心部分我们将一步步完成从桥梁服务部署到客户端配置的全过程。4.1 方案一使用现成的 Node.js 桥梁脚本推荐小白这是最快上手的方法。我们创建一个简单的 Node.js 服务器作为代理。步骤 1创建项目目录并初始化mkdir deepseek-codex-bridge cd deepseek-codex-bridge npm init -y步骤 2安装必要的依赖我们需要express作为 web 框架axios或node-fetch来转发请求cors处理跨域dotenv管理环境变量。npm install express axios cors dotenv步骤 3创建桥梁服务器主文件创建一个名为bridge.js的文件并填入以下内容// bridge.js const express require(express); const axios require(axios); const cors require(cors); require(dotenv).config(); const app express(); const PORT process.env.PORT || 8080; const DEEPSEEK_API_URL https://api.deepseek.com/v1; const DEEPSEEK_API_KEY process.env.DEEPSEEK_API_KEY; // 从环境变量读取 if (!DEEPSEEK_API_KEY) { console.error(错误未设置 DEEPSEEK_API_KEY 环境变量); console.error(请在项目根目录创建 .env 文件并添加DEEPSEEK_API_KEYsk-your-key-here); process.exit(1); } app.use(cors()); // 允许跨域请求这对本地客户端很重要 app.use(express.json()); // 解析 JSON 请求体 // 定义一个通用的转发路由匹配所有 /v1/* 的路径 app.all(/v1/*, async (req, res) { const originalUrl req.originalUrl; const targetUrl ${DEEPSEEK_API_URL}${originalUrl.replace(/^\/v1/, )}; console.log([${new Date().toISOString()}] 转发请求: ${req.method} ${originalUrl} - ${targetUrl}); const headers { Authorization: Bearer ${DEEPSEEK_API_KEY}, Content-Type: application/json, // 可以添加其他必要的头部如 User-Agent }; // 可选将请求体中的模型名称强制指定为 deepseek-chat 或你想要的模型 let requestBody { ...req.body }; if (requestBody requestBody.model) { // 如果客户端传了 model可以保留也可以强制替换。 // 例如强制使用 deepseek-chat 模型 // requestBody.model deepseek-chat; console.log(使用模型: ${requestBody.model}); } try { const response await axios({ method: req.method, url: targetUrl, headers: headers, data: requestBody, // 设置合理的超时时间 timeout: 120000 // 120秒 }); // 将 DeepSeek 的响应原样返回给客户端 res.status(response.status).json(response.data); } catch (error) { console.error(转发请求时出错:, error.message); if (error.response) { // 如果 DeepSeek API 返回了错误 console.error(DeepSeek API 响应状态:, error.response.status); console.error(DeepSeek API 响应数据:, error.response.data); res.status(error.response.status).json(error.response.data); } else { // 网络或其他错误 res.status(500).json({ error: { message: 代理服务器错误: ${error.message}, type: proxy_error } }); } } }); // 健康检查端点 app.get(/health, (req, res) { res.json({ status: ok, service: deepseek-codex-bridge }); }); app.listen(PORT, 0.0.0.0, () { console.log(✅ DeepSeek-Codex 桥梁服务已启动); console.log( 本地端点: http://localhost:${PORT}/v1); console.log( 目标 API: ${DEEPSEEK_API_URL}); console.log( 请将你的 Codex 客户端 API 地址设置为: http://localhost:${PORT}/v1); console.log(⚠️ 确保已正确设置 DEEPSEEK_API_KEY 环境变量); });步骤 4配置环境变量在项目根目录创建.env文件用于安全存储你的 DeepSeek API Key。# .env DEEPSEEK_API_KEYsk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # 替换成你的真实 Key PORT8080 # 可选默认就是 8080重要确保.env文件被添加到.gitignore中避免密钥泄露。步骤 5启动桥梁服务在终端中运行node bridge.js如果一切正常你将看到类似下面的输出✅ DeepSeek-Codex 桥梁服务已启动 本地端点: http://localhost:8080/v1 目标 API: https://api.deepseek.com/v1 请将你的 Codex 客户端 API 地址设置为: http://localhost:8080/v1 ⚠️ 确保已正确设置 DEEPSEEK_API_KEY 环境变量服务会一直运行直到你按CtrlC停止。为了长期使用可以考虑使用pm2等进程管理工具让其后台运行。npm install -g pm2 pm2 start bridge.js --name deepseek-bridge pm2 save pm2 startup # 设置开机自启可选4.2 方案二使用 Go 语言编写的桥梁高性能选择如果你追求更轻量、高性能的代理可以使用 Go 语言编写。以下是简易版本。步骤 1确保已安装 Gogo version步骤 2创建 Go 项目文件创建main.go文件// main.go package main import ( bytes encoding/json io log net/http net/http/httputil net/url os strings ) var ( deepseekAPIKey os.Getenv(DEEPSEEK_API_KEY) targetURL, _ url.Parse(https://api.deepseek.com) ) func main() { if deepseekAPIKey { log.Fatal(DEEPSEEK_API_KEY 环境变量未设置) } proxy : httputil.ReverseProxy{ Director: func(req *http.Request) { req.URL.Scheme targetURL.Scheme req.URL.Host targetURL.Host req.Host targetURL.Host // 设置 DeepSeek API Key req.Header.Set(Authorization, Bearer deepseekAPIKey) // 移除可能引起问题的头部 req.Header.Del(Origin) req.Header.Del(Referer) // 如果需要可以在这里修改请求体例如强制指定模型 if req.Method http.MethodPost strings.Contains(req.URL.Path, /chat/completions) { modifyRequestBody(req) } }, ModifyResponse: func(resp *http.Response) error { // 可以在这里修改响应但通常不需要 return nil }, ErrorHandler: func(w http.ResponseWriter, r *http.Request, err error) { log.Printf(代理错误: %v, err) http.Error(w, 代理服务器错误, http.StatusBadGateway) }, } http.HandleFunc(/v1/, func(w http.ResponseWriter, r *http.Request) { log.Printf([%s] %s, r.Method, r.URL.Path) proxy.ServeHTTP(w, r) }) http.HandleFunc(/health, func(w http.ResponseWriter, r *http.Request) { w.Header().Set(Content-Type, application/json) json.NewEncoder(w).Encode(map[string]string{status: ok}) }) port : os.Getenv(PORT) if port { port 8080 } log.Printf( DeepSeek-Codex Go 代理启动于 http://localhost:%s, port) log.Fatal(http.ListenAndServe(:port, nil)) } func modifyRequestBody(req *http.Request) { body, err : io.ReadAll(req.Body) if err ! nil { return } defer req.Body.Close() var data map[string]interface{} if err : json.Unmarshal(body, data); err ! nil { return } // 示例强制使用 deepseek-chat 模型注释掉则不修改 // data[model] deepseek-chat newBody, _ : json.Marshal(data) req.Body io.NopCloser(bytes.NewBuffer(newBody)) req.ContentLength int64(len(newBody)) }步骤 3设置环境变量并运行export DEEPSEEK_API_KEYsk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx go run main.go同样你会看到服务启动的日志。4.3 配置 Codex 客户端桥梁服务运行起来后最关键的一步是配置你的 Codex 客户端。由于客户端众多此处给出通用配置思路找到 API 设置在你的 Codex 客户端如 VS Code 中的某个 AI 助手插件设置中寻找类似API Base URL、Custom Endpoint、Server URL或OpenAI API Url的配置项。修改 API 地址将该项的值从默认的https://api.openai.com/v1或https://api.anthropic.com改为你的本地桥梁地址即http://localhost:8080/v1如果你的桥梁运行在 8080 端口。设置 API Key这里非常关键由于我们的桥梁服务已经帮你在请求头里添加了真实的 DeepSeek API Key所以在客户端的 API Key 配置项里你可以填写任意非空字符串例如sk-dummy或not-needed。因为客户端会把这个 Key 发给桥梁但桥梁会忽略它并使用.env文件中的真实 Key。有些客户端不允许 Key 为空所以填个占位符即可。选择模型在客户端的模型选择下拉框中尝试选择gpt-3.5-turbo或gpt-4。我们的桥梁服务在转发时可能会根据bridge.js中的逻辑修改模型名。你也可以在客户端中直接尝试填写deepseek-chat或deepseek-coder看桥梁服务是否支持透传。保存并测试保存设置并尝试在客户端中问一个问题例如“用 Python 写一个快速排序函数”。观察桥梁服务的终端日志如果有请求转发记录和 DeepSeek 的响应说明配置成功5. 常见问题与排查思路 (FAQ)在配置过程中你可能会遇到以下问题。请根据现象按顺序排查。问题现象可能原因排查步骤与解决方案桥梁服务启动失败1. 端口被占用2. Node.js/Go 未安装或版本过低3. 依赖安装失败1. 换一个端口修改.env中的PORT或代码中的端口号。2. 运行node --version和go version检查。3. 删除node_modules和package-lock.json重新运行npm install。客户端连接超时或无法连接1. 桥梁服务未运行2. 客户端配置的 URL 或端口错误3. 防火墙/安全软件阻止1. 在浏览器访问http://localhost:8080/health看是否返回{status:ok}。2. 仔细检查客户端中填写的 URL必须是http://localhost:端口/v1。3. 临时关闭防火墙或安全软件测试。API 返回 401 未授权错误1. DeepSeek API Key 未设置或错误2. 桥梁服务未正确注入 Authorization 头1. 检查.env文件中的DEEPSEEK_API_KEY是否正确确保没有多余空格。2. 查看桥梁服务日志确认转发请求的 URL 和头部。可以在bridge.js中临时console.log(headers)调试。API 返回 404 或模型不存在错误1. 请求路径转发错误2. 客户端请求的模型名 DeepSeek 不支持1. 检查桥梁日志中的targetUrl是否正确拼接。2. 尝试在客户端中将模型明确设置为deepseek-chat。或在bridge.js的modifyRequestBody部分强制修改model字段。响应速度慢1. 本地网络问题2. DeepSeek API 服务波动1. 测试直接访问api.deepseek.com的速度。2. 桥梁服务本身开销很小瓶颈通常在网络或 API 服务端。客户端提示“无效的 API Key”客户端对 API Key 有格式校验在客户端 API Key 栏尝试填写一个符合格式的假 Key如sk-dummy1234567890abcdefghijklmnopq。桥梁服务会覆盖它。桥梁服务日志显示成功但客户端无响应1. 响应格式可能与客户端预期不符2. CORS 问题1. 查看桥梁服务返回的完整响应日志对比 OpenAI 官方 API 响应格式。2. 确保桥梁服务代码中启用了cors()中间件。6. 最佳实践与进阶配置完成基础接入后以下建议能让你的开发体验更稳定、更安全。6.1 安全性增强保护你的 API Key永远不要将.env文件或包含真实 Key 的代码上传到 GitHub 等公开仓库。使用.gitignore确保其被忽略。限制本地访问桥梁服务默认绑定在0.0.0.0意味着同一网络下的其他设备也可能访问。如果仅在本地使用可改为app.listen(PORT, 127.0.0.1, ...)仅监听本地回环地址。使用环境变量管理坚持使用.env文件管理所有敏感配置这是现代应用开发的基本规范。6.2 性能与稳定性进程守护使用pm2(Node.js) 或systemd(Linux) 管理桥梁服务进程实现崩溃自动重启和开机自启。添加超时与重试在bridge.js的axios请求配置中已经设置了超时。对于生产环境可以考虑增加重试逻辑以应对短暂的网络波动。日志记录当前的console.log适合开发。对于长期运行建议将日志输出到文件便于问题追溯。可以使用winston或pm2的日志管理功能。6.3 功能扩展多模型路由如果你的桥梁服务想同时支持 DeepSeek 和其他模型如 OpenAI 备用可以解析请求中的model字段动态地将请求转发到不同的后端 API URL。请求/响应日志为了调试复杂的提示词Prompt问题可以修改桥梁代码将请求和响应的完整内容脱敏后记录到文件方便分析。速率限制如果你与他人共享此桥梁可以添加简单的速率限制中间件防止 API Key 被过度消耗。6.4 针对特定客户端的配置技巧Cursor 编辑器Cursor 深度集成了 AI。虽然它主要使用自己的模型但一些社区方法可以通过修改其底层配置或使用第三方插件来指向自定义端点这需要更深入的探索。VS Code 插件许多独立的 VS Code AI 助手插件如Genie AI,CodeGPT等都提供了自定义端点的设置项配置流程与上文通用方法一致。Claude Code如果该插件支持自定义端点配置方法相同。注意其请求格式可能与 OpenAI 稍有不同可能需要调整桥梁中的请求体转换逻辑。通过以上步骤你应该已经成功在本地搭建了一个稳定可靠的 DeepSeek API 桥梁并配置好了你的 Codex 客户端。现在你可以在熟悉的开发环境中享受高速、免费、强大的 AI 代码辅助功能了。这个方案不仅解决了网络和费用问题更将 AI 能力无缝融入你的本地工作流是提升开发效率的利器。如果在配置中遇到任何独特的问题欢迎在社区分享你的经验和解决方案。