一套用于在 Windows 上把 Codex 桌面端切换到 DeepSeek、本地 OpenAI 兼容代理或原生 OpenAI 登录的配置与脚本集合。
项目包含三部分:
config.toml:Codex 配置模板,预置本地 DeepSeek relay provider。start.ps1+model-proxy.py:一键启动 DeepSeek 本地代理链路。switch-provider.ps1:在 OpenAI、DeepSeek 本地代理、ChatGPT 中转站之间切换。codex-relay/:Responses API 到 Chat Completions API 的 Rust relay 实现源码。
Codex 默认使用 OpenAI Responses API。DeepSeek 等大多数兼容服务提供的是 Chat Completions API,因此本项目使用两层本地服务做适配:
Codex Desktop
-> model-proxy.py http://127.0.0.1:4445/v1
-> codex-relay http://127.0.0.1:4446/v1
-> DeepSeek API https://api.deepseek.com/v1
model-proxy.py 负责把 Codex 可能发出的 OpenAI 模型名映射到 DeepSeek 模型名;codex-relay 负责把 Responses API 请求转换为 Chat Completions API 请求。
| 路径 | 说明 |
|---|---|
README.md |
GitHub 项目说明文档 |
config.toml |
Codex 配置模板,可复制到 %USERPROFILE%\.codex\config.toml |
start.ps1 |
一键启动本地 DeepSeek relay 和模型名代理 |
switch-provider.ps1 |
修改 Codex 配置,在三种模型提供商之间切换 |
model-proxy.py |
本地 HTTP 代理,处理模型名映射并转发请求 |
配置指南.md |
早期中文配置指南 |
codex-relay/ |
Rust relay 源码、测试、Python 包装入口 |
- Windows 10/11
- PowerShell
- Python 3.x
- Rust/Cargo(仅在需要从源码编译
codex-relay时使用) - DeepSeek API Key(使用 DeepSeek 本地代理模式时需要)
如果直接安装发布版 relay,可以使用:
pip install codex-relay如果要从本项目源码构建:
cd codex-relay
cargo build --release把 DeepSeek API Key 保存到用户级环境变量:
[Environment]::SetEnvironmentVariable("DEEPSEEK_API_KEY", "你的DeepSeek-API-Key", "User")设置后建议重启 PowerShell 或重新登录系统,让环境变量生效。
推荐直接安装:
pip install codex-relay安装完成后确认命令可用:
codex-relay --help将根目录的 config.toml 复制到:
%USERPROFILE%\.codex\config.toml
该模板默认启用 deepseek-relay:
model_provider = "deepseek-relay"
model = "deepseek-v4-pro"
review_model = "deepseek-v4-flash"
[model_providers.deepseek-relay]
name = "DeepSeek"
base_url = "http://127.0.0.1:4445/v1"
env_key = "DEEPSEEK_API_KEY"在项目根目录运行:
.\start.ps1脚本会启动两个后台任务:
codex-relay:监听127.0.0.1:4446model-proxy.py:监听127.0.0.1:4445
看到“全部就绪”后,打开或重启 Codex 桌面端即可使用。
运行:
.\switch-provider.ps1可选择:
| 选项 | 模式 | 说明 |
|---|---|---|
1 |
OpenAI 账号登录 | 使用 Codex 内置 OpenAI 登录 |
2 |
DeepSeek 本地代理 | 使用 start.ps1 启动的本地代理链路 |
3 |
ChatGPT 中转站 | 使用 OpenAI 兼容中转地址,需要 OPENAI_API_KEY |
切换后需要重启 Codex 桌面端。
实测发现:如果一开始直接使用 ChatGPT 中转站 API,Codex 中的插件功能可能不可用;但先切换到 OpenAI 账号登录模式,让 Codex 完成账号态初始化后,再通过 switch-provider.ps1 切换到 ChatGPT 中转站模式,插件功能可以继续正常使用。
推荐顺序:
1. 运行 switch-provider.ps1,选择 [1] OpenAI 账号登录
2. 重启 Codex,并确认插件功能可用
3. 再次运行 switch-provider.ps1,选择 [3] ChatGPT 中转站
4. 重启 Codex,继续使用中转站 API 和插件功能
这个现象可能与 Codex 的账号登录态、插件权限初始化或本地缓存有关。脚本本身只修改模型 provider 配置,不会写入 API Key,也不会修改插件配置。
model-proxy.py 会自动处理以下模型名映射:
| Codex 请求模型 | 转发给 DeepSeek 的模型 |
|---|---|
gpt-5.4-mini |
deepseek-v4-flash |
gpt-5.4 |
deepseek-v4-flash |
gpt-5.5 |
deepseek-v4-pro |
gpt-5 |
deepseek-v4-pro |
如果请求中的模型名已经是 DeepSeek 模型名,则会原样转发。
- 不要把真实 API Key 写进
config.toml或脚本。 - 本项目通过
DEEPSEEK_API_KEY/OPENAI_API_KEY环境变量读取密钥。 .gitignore已排除.env、本机.claude/settings.local.json、日志和构建产物。- 发布到公开仓库前,建议再次搜索
sk-、api_key、token等敏感词。
首次运行可能需要允许当前用户执行本地脚本:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned说明用户环境变量未设置或当前终端还没读取到新变量。重新设置后,重启 PowerShell:
[Environment]::SetEnvironmentVariable("DEEPSEEK_API_KEY", "你的DeepSeek-API-Key", "User")检查 API Key 是否正确、账户余额是否充足,以及 Codex 当前是否切换到了预期的 provider。
确认 start.ps1 已经运行,且 model-proxy.py 正在监听 127.0.0.1:4445。Codex 应该访问 4445,而不是直接访问 4446。
可以先切到 OpenAI 账号登录模式并重启 Codex,确认插件可以正常加载;然后再用 switch-provider.ps1 切回 ChatGPT 中转站模式并重启 Codex。这个流程通常可以保留插件能力,同时让模型请求走中转站 API。
默认端口:
4445:模型名代理4446:codex-relay
如果端口被占用,请关闭旧进程,或同步修改 start.ps1、model-proxy.py 和 config.toml 中的端口。
运行 Rust 测试:
cd codex-relay
cargo test本地调试 relay:
$env:CODEX_RELAY_UPSTREAM = "https://api.deepseek.com/v1"
$env:CODEX_RELAY_API_KEY = $env:DEEPSEEK_API_KEY
$env:CODEX_RELAY_PORT = "4446"
codex-relay另开一个 PowerShell 启动模型代理:
python .\model-proxy.py根目录脚本按项目用途发布;codex-relay/ 子目录保留其原始 MIT License。
A handy tool to help users easily manage and organize different subscription services. Check out their GitHub Guide.