| 如果你还没用过 Codex: |
你有没有经历过这种时刻:
群里有人说「Codex 接 DeepSeek,一个月才花 7 块钱」。你不信,打开自己的 API 账单一看——一百多刀。
同一个工具,同样的用量,别人的费用是你的十五分之一。区别只在于中间多了一个不到 3MB 的小工具。
这个工具叫 codex-relay。
你不需要换编辑器,不需要学新命令,不需要改任何使用习惯。装好之后,Codex 还是那个 Codex,但背后驱动它的模型从昂贵的 OpenAI,变成了你选的任何一个国产模型。
为什么 Codex 用不了别的模型?
Codex 跟服务器交流,用的是 OpenAI 的「内部方言」——Responses API。这是 OpenAI 的私有协议,全世界只有 OpenAI 自己说这口方言。
而市面上所有其他厂商——DeepSeek、Kimi、通义千问、Mistral、Groq、xAI、OpenRouter——说的都是「普通话」:Chat Completions API。
一个说方言,一个说普通话,当然鸡同鸭讲。反映到屏幕上,就是一行:
codex-relay 做的事很简单:坐在中间当翻译。
Codex 发来方言 → relay 翻译成普通话 → 扔给 DeepSeek → DeepSeek 回复普通话 → relay 翻译成方言 → 还给 Codex。
整个过程你感觉不到。延迟?毫秒级。毕竟它就是用 Rust 写的——一种以速度和内存安全著称的语言。
缺的不是好模型,是有人把翻译的路走一遍。
不只 DeepSeek,七家厂商全支持
codex-relay 官方推荐了以下配置(注意端口号不能重复):
任何兼容 OpenAI Chat Completions 接口的服务都能接。
你只需要一个 relay,所有的模型都变成了你的备选项。不是「换不换」的问题,是「今天想用哪个」的问题。
五分钟配置教程(Windows 版)
以下步骤照着做,不用理解原理。命令行不熟也没关系,复制粘贴就行。
01 第一步:安装
打开命令行(Win+R → 输入 cmd → 回车),粘贴:
Python 版本需要 3.11 以上。看到 Successfully installed codex-relay-0.2.1 就行了。
装完之后,你甚至可以直接用 Python 代码控制它:
| from codex_relay import start proc = start(port=4446, upstream="https://api.deepseek.com/v1", api_key="sk-...")# 正常使用 Codex... proc.terminate() |
不想写代码?接下来用环境变量配置更简单。
02 第二步:设三个环境变量
大白话:环境变量就像给 relay 留了一张便条,告诉它三件事——去哪找 DeepSeek、用什么钥匙开门、在哪个门口等。relay 启动时先读这张便条,读完才知道往哪转发。
这是最容易出错的一步,名字必须一字不差。
1. 右键「此电脑」→ 属性 → 高级系统设置 → 环境变量
2. 在「用户变量」新建三条:
端口号用官方推荐的 4446(DeepSeek 专用)。
设置完成后,重启电脑。Windows 的环境变量不会自动刷新,重启是唯一靠谱的方式。
把问题归咎于「工具太复杂」之前,先检查:环境变量是不是设完没重启。在 Windows 的世界里,重启能解决 80% 的「明明改了啊怎么没用」的问题。
03 第三步:生成配置文件(比手写靠谱)
codex-relay 自带了一个神级命令:
它会自动打印一份完整的 Codex 配置文件,包含 model_properties(模型能力描述)。把这个输出直接覆盖到 C:\Users\你的用户名\.codex\config.toml 就行了。
为什么这一步重要?如果没有 model_properties,Codex 不认识 DeepSeek 的模型,会套用一个「兜底配置」,导致工具调用不准、上下文窗口管理出问题。
如果不想用自动生成,手动写的最小配置是:
| model = "deepseek-chat"model_provider = "deepseek-relay" [model_providers.deepseek-relay]name = "DeepSeek"base_url = "http://127.0.0.1:4446/v1"wire_api = "responses"env_key = "DEEPSEEK_API_KEY" |
注意:base_url 必须指向 127.0.0.1:4446,不是你本地的 DeepSeek 地址——它指向的是电脑上那个微型翻译器。写成 DeepSeek 官方地址,必报 404。
04 第四步:启动
双击运行 codex-relay,看到这行字就表示成功了:
窗口别关。启动 Codex,正常用就行了。
懒得每次输命令?建一个 BAT 文件,以后双击就行。
新建文本文件,改名 codex_relay.bat,右键编辑,粘贴以下内容:
| @echo off |
脚本做了四件事:设端口 → 设上游地址 → 从系统变量读取 API Key → 启动 relay。退出时按任意键关闭,不会闪退,方便排查问题。
它不只是个「转发器」
codex-relay 做了远比「转发请求」更多的事:
▸流式响应:完整的 SSE 流式输出,逐字蹦出,体验跟原生一样
▸工具调用:把流式 delta 累加成结构化的 function call,代码生成和文件操作完全正常
▸并行工具调用:多个连续 function call 合并进一条 assistant 消息,跟 OpenAI 行为一致
▸推理模型:支持 DeepSeek-R1 等推理模型,跨轮保留推理内容
▸模型列表代理:Codex 能直接查到上游有哪些模型可用
▸模型名映射:把 Codex 里写的模型名自动映射成你实际想用的模型(例如 gpt-5.4 → deepseek-v4-pro)
它不只是搭了座桥,它是把桥两边的路面都铺平了。
常见翻车现场
404 Not Found?
没走 relay,直接连了上游。检查 config.toml 里 base_url 是不是 127.0.0.1:4446。
401 Unauthorized?
API Key 没设对,或者设完没重启电脑。对——重启电脑。
提示「codex-relay 不是内部命令」?
Python 安装时没勾选「Add to PATH」。重装 Python 勾上。
改了配置不生效?
重启电脑。再说一次:重启电脑。
启动后提示「Model metadata not found」?
说明你没用 --print-config 生成配置。跑一遍第三步的自动生成命令即可。
到底能省多少?
▸ OpenAI o3/o4-mini:输入约 $1.10/百万 token
▸ DeepSeek V4:输入约 ¥0.5/百万 token(不到 $0.07)
价格差 15 倍以上。
一个月花 100 刀在 Codex 上,同样的用量换成 DeepSeek,不到 7 刀。
工具的终点不是越贵越好,是够用就好。模型智商到一定程度之后,边际收益急剧下降——多花 15 倍的钱,换不来 15 倍的好代码。
一张图看懂全流程
你写需求 → Codex 发送 Responses API → 127.0.0.1:4446 (relay 在监听)│codex-relay 翻译协议│┌──────┬──────┐▼ ▼ ▼DeepSeek Kimi 通义千问(4446) (4447)(4448)
配置就三件套:
▸环境变量(便条)—— UPSTREAM 去哪 / API_KEY 钥匙 / PORT 哪个门口
▸config.toml—— base_url 指本地 / wire_api 用方言 / model 选模型
▸codex_relay.bat—— 双击一键启动 / 闪退自动暂停 / 排查方便
核心就一句话:Codex 永远只跟 127.0.0.1 说话,relay 负责翻译给上游。出了 404,就是中间这根链断了。
最后
codex-relay 是个社区项目,Rust 写成,MIT 开源,跟 OpenAI 没有任何关系。作者是 GitHub 上的 MetaFARS,贡献者来自社区。
它解决的问题很单纯:Codex 是个好工具,但你不应该被绑在一家模型上。
如果你也觉得 OpenAI 的账单有点疼,转发给你们组里用 Codex 的同事。他会谢你的。
关注「米学编程」,没有一篇,只写「有人替你踩过坑」的效率工具指南。
不想照着文章手敲配置? 关注「米学编程」,回复关键词 「config」,直接拿到本文的完整 config.toml 模板,复制粘贴就能用。
附:极简备忘(存手机里照着做)
1. pip install codex-relay
2. 设三个系统环境变量(UPSTREAM / API_KEY / PORT=4446)
3. codex-relay --print-config → 覆盖 config.toml
4. 运行 codex-relay(或双击 codex_relay.bat)
5. 重启电脑,启动 Codex
夜雨聆风