
想用 Codex 这个强大的 AI 智能体却不想为 OpenAI 的 API 付费想接入 DeepSeek 享受国内高速、低成本的体验却在第一步就卡住了——找不到 CC Switch 或 Codex 的下载链接或者网络环境让你无法顺利访问 GitHub 和官方渠道如果你正面临这个困境那么这篇文章就是为你准备的。我们绕开那些依赖特定网络环境的“标准方案”直接提供一个更直接、更可靠的解决路径。核心思路很简单既然 CC Switch 的核心作用是协议转换那么任何能实现相同功能的工具都可以成为它的“平替”。本文将为你详细拆解 Codex 与 DeepSeek 的协议差异并手把手教你使用一个完全开源、易于获取的国产工具来完成接入整个过程无需复杂配置也无需依赖任何难以访问的外部资源。这篇文章将彻底解决“工具下载难”这个前置障碍让你把精力集中在真正的配置和使用上。读完本文你将能清晰地理解 Codex 的工作机制掌握一种不依赖 CC Switch 的通用接入方法并最终在你的电脑上成功运行起一个使用 DeepSeek 模型的 Codex。1. 核心问题拆解为什么需要“翻译官”在开始动手之前我们必须先搞清楚一个根本问题为什么不能简单地把 DeepSeek 的 API 地址填到 Codex 的设置里理解了这一点你就能明白所有“平替”方案的原理。Codex 作为 OpenAI 推出的智能体其底层通信严格遵循 OpenAI 定义的Responses API规范。你可以把它想象成一个只说“OpenAI 方言”的客户。而 DeepSeek、智谱、Kimi 等国内大模型提供的是业界更通用的Chat Completions API。这是两种不同的“语言”。它们的核心差异至少包括请求路径不同Responses API 调用/v1/responses而 Chat Completions API 调用/v1/chat/completions。请求体Request Body结构不同两者对于消息messages、工具tools、流式输出stream等参数的封装格式存在差异。响应体Response Body结构不同返回的数据字段和嵌套结构也不一致。因此当你让只说“OpenAI 方言”的 Codex 直接去和说“通用语”的 DeepSeek 对话时双方根本无法理解对方在说什么结果就是 Codex 会报出404 Not Found、502 Bad Gateway或402 Payment Required等错误或者根本刷不出模型列表。所以我们需要一个“翻译官”即协议转换代理。这个“翻译官”需要做三件事接收接收来自 Codex 的、符合 Responses API 的请求。转换将请求内容从 Responses API 格式“翻译”成 Chat Completions API 格式并转发给 DeepSeek。回译将 DeepSeek 返回的 Chat Completions 格式响应再“翻译”回 Responses API 格式返回给 Codex。CC Switch 就是一个优秀的、带图形界面的“翻译官”。但如果它难以获取我们的目标就是寻找或搭建另一个能完成同样核心转换功能的“翻译官”。2. 国产平替方案使用LocalAI与one-api构建转换层我们将采用一个完全开源、可自行部署的方案组合来替代 CC Switch。这个方案由两个核心组件构成它们都是 GitHub 上的明星项目你也可以通过国内镜像站轻松获取。方案核心LocalAI一个本地化的 AI API 服务器它最大的特点是能够将多种后端模型如 DeepSeek的接口统一模拟成 OpenAI API 格式。对于 Codex 来说LocalAI 就是一个“本地 OpenAI 服务”。one-api一个功能强大的 API 管理和聚合平台。它可以将多个模型供应商如 DeepSeek、OpenAI、Anthropic 等的 API 统一管理并对外提供标准化的 OpenAI API 格式接口。在这里我们主要利用其格式转换和路由转发能力。工作流程Codex - (认为自己在访问 OpenAI) - LocalAI (模拟 OpenAI API) - one-api (转换并转发) - DeepSeek 官方 API这个链条中LocalAI 负责“欺骗”Codex让它以为连接的是 OpenAIone-api 负责实际的协议转换和请求转发。这个方案虽然比 CC Switch 多一步但更加透明、可控且完全免费开源。3. 环境准备与工具获取在开始部署前请确保你的系统满足以下条件并准备好必要的工具。3.1 系统与环境要求操作系统Windows 10/11, macOS, 或 Linux (本文以 Windows 为例其他系统原理相同)。Docker Desktop这是运行 LocalAI 和 one-api 最简便的方式。请从 Docker 官网或国内镜像站下载并安装 Docker Desktop。安装后确保 Docker 服务已启动。网络需要能够正常访问deepseek.com以调用其 API。这通常是直连可用的。DeepSeek API Key访问 DeepSeek 开放平台 注册账号并完成实名认证。在控制台的API Keys页面创建一个新的 Key 并妥善保存。务必进行小额充值如10元否则 API 调用会因余额不足失败。3.2 替代工具的获取与验证由于主要工具均通过 Docker 运行我们无需从特定网站下载可执行文件。你只需要获取它们的 Docker 镜像或部署配置文件。获取 Docker 镜像在终端PowerShell 或 CMD中执行以下命令Docker 会自动从镜像仓库拉取。如果拉取速度慢可以配置 Docker 国内镜像加速器。# 拉取 LocalAI 的官方镜像我们使用一个轻量级、已包含必要功能的版本 docker pull quay.io/go-skynet/local-ai:latest # 拉取 one-api 的官方镜像 docker pull songquanpeng/one-api:latest执行后使用docker images命令确认两个镜像已成功下载。获取配置文件可选但推荐为了更方便地配置 LocalAI我们可以准备一个基础的配置文件。在你的工作目录例如D:\codex_proxy下创建一个名为localai-config.yaml的文件。如果不想手动创建也可以先运行容器后再将配置文件复制出来修改。4. 逐步部署搭建你的本地“翻译”服务接下来我们将按步骤启动和配置这两个服务。4.1 第一步启动并配置 one-api (API 网关与转换器)one-api 将作为我们面对 DeepSeek 的“前台”负责格式转换。启动 one-api 容器docker run -d \ --name one-api \ -p 3000:3000 \ -e TZAsia/Shanghai \ -v /path/to/your/data:/data \ songquanpeng/one-api:latest-p 3000:3000: 将容器的 3000 端口映射到本机的 3000 端口。one-api 的 Web 管理界面将通过http://localhost:3000访问。-v /path/to/your/data:/data: 将容器内的/data目录挂载到本机的一个路径用于持久化存储数据如数据库。请将/path/to/your/data替换为你本机的真实路径例如D:\codex_proxy\oneapi_data。执行后使用docker ps查看容器是否运行正常。初始化 one-api 并添加渠道打开浏览器访问http://localhost:3000。首次访问会进入初始化页面设置一个管理员账号和密码。登录后在侧边栏找到渠道-添加渠道。填写渠道信息类型选择DeepSeek名称自定义如DeepSeek-V3代理留空表示直连 DeepSeek 官方 API模型填写deepseek-chat(这是 DeepSeek 的主要对话模型也支持代码生成。如需最新模型如deepseek-v3请参考 DeepSeek 官方文档)。密钥填入你在 DeepSeek 平台获取的 API Key。点击提交。提交后在渠道列表中找到该渠道点击测试按钮确认状态显示为测试通过。这一步至关重要它验证了你的 Key 有效且网络连通。4.2 第二步启动并配置 LocalAI (OpenAI API 模拟器)LocalAI 将作为我们面对 Codex 的“后台”模拟一个 OpenAI 服务。准备 LocalAI 配置文件在之前的工作目录创建localai-config.yaml内容如下。这个配置告诉 LocalAI 将请求转发给我们在上一步搭建的 one-api。# localai-config.yaml models: - name: gpt-3.5-turbo # 对 Codex 暴露的模型名称Codex 认识这个名字 - name: gpt-4 # 可以同时暴露多个模型名 backend: openai # 指定后端类型为 openai即转发到兼容 OpenAI API 的服务 openai: base_url: http://host.docker.internal:3000/v1 # 指向 one-api 服务 api_key: dummy-key # one-api 配置了渠道密钥这里可以填任意值one-api 会用自己的密钥关键解释name: 这里填写gpt-3.5-turbo或gpt-4是因为 Codex 客户端默认会寻找这些它认识的 OpenAI 模型名称。我们通过 LocalAI “冒充”这些模型。base_url:host.docker.internal是 Docker 提供的一个特殊域名指向宿主机你的电脑。3000是 one-api 服务的端口。api_key: 由于我们在 one-api 的渠道里已经配置了真实的 DeepSeek API Key所以这里可以填写一个任意字符串。one-api 会忽略这个 Key 而使用渠道配置的 Key。如果你在 one-api 中设置了全局密钥验证则需要填写对应的密钥。启动 LocalAI 容器docker run -d \ --name local-ai \ -p 8080:8080 \ -v /path/to/your/localai-config.yaml:/etc/localai/config.yaml \ quay.io/go-skynet/local-ai:latest-p 8080:8080: 将 LocalAI 的 8080 端口映射出来。Codex 后续将连接到这个端口。-v ...: 将本机的配置文件挂载到容器内。请将/path/to/your/localai-config.yaml替换为你的配置文件实际路径例如D:\codex_proxy\localai-config.yaml。验证 LocalAI 服务等待容器启动后打开浏览器或使用curl测试curl http://localhost:8080/v1/models如果配置正确你会收到一个 JSON 响应其中包含id: gpt-3.5-turbo这样的模型列表信息。这证明 LocalAI 已成功启动并配置。5. 配置 Codex 客户端连接本地服务现在“翻译官”服务已经就绪。接下来需要告诉 Codex 不要去 OpenAI 官方而是来连接我们本地的这个“山寨 OpenAI”LocalAI。重要提示Codex 桌面客户端通常没有直接的图形界面来修改 API 端点。我们需要通过修改其配置文件或启动参数来实现。这里介绍一种通用方法使用系统环境变量。设置环境变量Windows打开“系统属性” - “高级” - “环境变量”。在“用户变量”或“系统变量”中点击新建。变量名OPENAI_BASE_URL变量值http://localhost:8080/v1(指向我们刚启动的 LocalAI)点击确定保存所有窗口。macOS / Linux在终端中执行仅对当前会话有效export OPENAI_BASE_URLhttp://localhost:8080/v1或者将上述命令添加到~/.bashrc或~/.zshrc文件末尾使其永久生效然后执行source ~/.bashrc。启动 Codex完全退出正在运行的 Codex 客户端。确保环境变量已生效对于 Windows可能需要注销并重新登录或者重启电脑。一个简单的测试方法是打开一个新的命令行窗口输入echo %OPENAI_BASE_URL%(Windows) 或echo $OPENAI_BASE_URL(macOS/Linux)查看是否正确输出。重新启动 Codex 客户端。验证连接启动 Codex 后它应该不再尝试连接 OpenAI 官方服务器。在 Codex 的界面中通常在输入框上方或设置中查看当前使用的模型。它现在应该显示为gpt-3.5-turbo或你在 LocalAI 配置中定义的其他名称。尝试向 Codex 提问例如“请用 Python 写一个快速排序函数。” 如果它能够正常回复并且回复内容符合 DeepSeek 的风格例如可能会在回复末尾附带“我是DeepSeek...”那么恭喜你整个链路已经打通6. 完整链路回顾与验证测试让我们梳理一下整个数据流并做一个端到端的测试来确认一切正常。请求链路你在 Codex 中输入问题“如何用 Python 读取 CSV 文件”Codex 客户端读取OPENAI_BASE_URL环境变量将请求发送到http://localhost:8080/v1/chat/completions(LocalAI)。LocalAI 收到请求根据配置将其转发给http://host.docker.internal:3000/v1/chat/completions(one-api)。one-api 收到请求识别出渠道类型为DeepSeek将请求体转换为 DeepSeek 官方 API 要求的格式并附上渠道中配置的 API Key发送给https://api.deepseek.com/v1/chat/completions。DeepSeek 处理请求并返回结果给 one-api。one-api 将结果转换回标准 OpenAI 格式返回给 LocalAI。LocalAI 将结果原样返回给 Codex 客户端。Codex 客户端渲染并显示回答。验证测试脚本可选你可以直接使用curl命令模拟 Codex 的请求来测试整个链路是否畅通。这有助于在 Codex 客户端出问题时进行排查。# 模拟一个简单的对话请求直接发送给 LocalAI curl http://localhost:8080/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer dummy-key \ -d { model: gpt-3.5-turbo, messages: [{role: user, content: 你好请介绍一下你自己。}], stream: false }如果一切正常你将收到一个包含 DeepSeek 回复的 JSON 响应。检查回复内容中是否包含 DeepSeek 相关的标识。7. 常见问题与详细排查指南在配置过程中你可能会遇到一些问题。下表列出了常见现象、原因及解决方法。问题现象可能原因排查步骤解决方案Codex 启动失败或无法连接1. 环境变量未生效。2. LocalAI 服务未启动。3. 端口冲突。1. 在新终端中执行echo $OPENAI_BASE_URL确认。2. 执行docker ps查看local-ai容器状态。3. 执行netstat -ano | findstr :8080(Win) 或lsof -i:8080(Mac/Linux) 查看端口占用。1. 重启终端或系统使环境变量生效。2. 检查docker run命令是否正确查看容器日志docker logs local-ai。3. 停止占用端口的进程或修改 LocalAI 的映射端口如-p 8081:8080并同步更新环境变量。Codex 能启动但模型列表为空或请求报错1. LocalAI 配置错误。2. one-api 渠道未配置或测试失败。3. DeepSeek API Key 无效或余额不足。1. 访问http://localhost:8080/v1/models看是否返回模型列表。2. 登录 one-api (localhost:3000)检查渠道状态是否为“测试通过”。3. 前往 DeepSeek 平台检查 API Key 状态和余额。1. 检查localai-config.yaml文件格式和路径重启 LocalAI 容器。2. 在 one-api 中重新测试或编辑渠道确保模型名称如deepseek-chat填写正确。3. 在 DeepSeek 平台充值并确保 Key 有效。请求超时或无响应1. Docker 容器内部网络不通。2. 防火墙阻止了连接。1. 进入 LocalAI 容器内部执行curl http://host.docker.internal:3000/v1/models测试连通性。2. 检查系统防火墙和 Docker 防火墙设置。1. 确保localai-config.yaml中的base_url正确使用了host.docker.internal。2. 临时关闭防火墙测试或在防火墙规则中允许 Docker 及相关端口的通信。返回错误码 404/502请求路径或格式在某一层转换失败。1. 逐层测试先测 one-api (curl localhost:3000/v1/models)再测 LocalAI。2. 查看各容器日志docker logs one-apidocker logs local-ai。1. 确认各服务配置的 URL 路径正确特别是/v1前缀。2. 根据日志错误信息调整配置例如 one-api 的模型名称必须与 DeepSeek 官方文档一致。Codex 显示旧模型如 GPT-4Codex 客户端可能有缓存。完全退出 Codex 进程包括后台进程并清除可能存在的本地缓存文件位置因安装方式而异然后重新启动。最有效的方法是设置好环境变量后重启电脑再启动 Codex。8. 最佳实践与进阶配置建议成功搭建只是第一步以下建议能让你的本地“翻译”服务更稳定、更强大。使用 Docker Compose 统一管理创建docker-compose.yml文件来定义和启动 one-api 和 LocalAI 服务便于一键启停和版本管理。# docker-compose.yml version: 3.8 services: one-api: image: songquanpeng/one-api:latest container_name: one-api ports: - 3000:3000 environment: - TZAsia/Shanghai volumes: - ./oneapi_data:/data restart: unless-stopped local-ai: image: quay.io/go-skynet/local-ai:latest container_name: local-ai ports: - 8080:8080 volumes: - ./localai-config.yaml:/etc/localai/config.yaml depends_on: - one-api restart: unless-stopped在文件所在目录执行docker-compose up -d即可启动所有服务。为 one-api 配置访问令牌增强安全在 one-api 的设置-令牌页面创建一个令牌。然后在 LocalAI 的配置文件中将api_key的值改为这个令牌。这样只有持有正确令牌的请求才能通过 one-api 转发。配置多模型支持在 one-api 中可以添加多个渠道如同时配置 DeepSeek、智谱 GLM、通义千问等。在 LocalAI 的models列表下配置多个模型名并在 one-api 中设置对应的模型映射和负载均衡策略即可让 Codex 一键切换不同的后端大模型。日志与监控定期查看容器日志 (docker logs -f container_name) 有助于发现问题。对于 one-api其管理界面提供了详细的请求日志和消费统计方便你监控 API 使用情况和费用。性能考虑LocalAI 和 one-api 作为转发层会引入极小的延迟。对于绝大多数应用场景这个延迟可以忽略不计。如果追求极致性能可以研究将两者功能合并到一个更轻量的代理程序中但这需要更高的开发能力。通过本文的步骤你已经成功绕开了对 CC Switch 等特定工具的依赖利用完全开源可控的组件构建了一个属于你自己的、功能更强的 Codex 到 DeepSeek 的接入桥梁。这个方案不仅解决了“下载不到”的初始问题更让你深入理解了 AI 工具链后端集成的原理赋予了你在模型选择、路由策略上更大的灵活性和控制权。下次当任何 AI 客户端遇到模型接入问题时你都可以尝试用类似的“协议转换”思路去寻找解决方案。