Codex CLI 国内怎么用:一个 Key 接 DeepSeek、GLM、通义,附 11 个国产模型实测
结论先说:Codex CLI 本身不用换,国内真正要换的是它默认连接的 OpenAI 接口。 把 base_url 指到支持 /v1/responses 的网关,写一个独立配置文件,再用一个 Router API Key,Codex 就能直接调用 DeepSeek、GLM、通义、MiniMax 等国产模型。我们用 Codex CLI 0.159.2 实测了 11 个国产模型,10 个能完成「读代码 → 改 bug → 写测试 → 跑测试」的完整流程,两次任务合计花费从 ¥0.017 到 ¥0.248 不等;腾讯混元会在多步任务里提前收尾,Kimi K3 这次没测成。下面是可直接抄的配置、实测表和选型建议。
为什么国内用 Codex CLI 要先把接口换掉
Codex CLI 是 OpenAI 出的命令行编码助手,能读你的仓库、改文件、执行命令、跑测试。它默认走 OpenAI 的账号和接口,在国内会遇到两个问题:网络不稳定,以及模型调用按美元计费、需要海外支付方式。
Codex CLI 调模型用的是 Responses API(路径 /v1/responses),不是很多人熟悉的 /v1/chat/completions。所以不是随便找个「OpenAI 兼容」中转站就能接:对方必须实现 Responses 这一套请求和流式事件。不墨 Router 的国内站已经支持该接口,模型列表和价格也公开可查,因此可以直接把 Codex 接过来,用人民币按量付费。
三步接上:安装、写配置、填 Key
第 1 步:安装 Codex CLI
npm install -g @openai/codex
codex --version
能打印出版本号就说明装好了。本文的实测环境是 0.159.2。
第 2 步:写一个独立配置文件
先到不墨 Router 的 API Key 页面创建一个 Key。然后执行:
mkdir -p ~/.codex && cat > ~/.codex/bumo.config.toml <<'EOF'
model_provider = "bumo"
model = "deepseek/deepseek-flash"
[model_providers.bumo]
name = "Bumo"
base_url = "https://router.bumo.cc/v1"
env_key = "BUMO_API_KEY"
wire_api = "responses"
EOF
这份配置单独放在 bumo.config.toml,不会覆盖你原来的 ~/.codex/config.toml。启动时用 --profile bumo,Codex 会把这份配置叠加到原配置上,原来的 OpenAI 配置仍然保留。
几个字段别写错:
base_url必须带/v1;wire_api必须是responses,写成chat会走错接口;env_key写的是环境变量名,和下一步export的名字保持一致;model填 Router 的完整模型 ID,带供应商前缀,例如deepseek/deepseek-flash。
第 3 步:填 Key 并启动
export BUMO_API_KEY="sk-你的Key"
codex --profile bumo
如果只想跑一次非交互任务,可以直接:
codex exec --profile bumo "先读一遍这个仓库,告诉我入口文件在哪"
想让配置长期生效,把 export 那一行写进 ~/.zshrc 或 ~/.bashrc。Key 不要提交进 git。
换模型只改一行
Codex 的模型由配置文件里的 model 决定。想换模型,只改这一行,然后重新启动:
model = "glm/glm-5.3"
常用模型 ID 如下,完整清单以 Router 模型列表 为准:
| 供应商 | 模型 ID |
|---|---|
| DeepSeek | deepseek/deepseek-flash、deepseek/deepseek-v4-pro |
| 智谱 | glm/glm-5.3、glm/glm-5.3-flash |
| 通义 | qwen/qwen3.8-max、qwen/qwen3.7-max、qwen/qwen3.8-flash |
| MiniMax | minimax/MiniMax-M3 |
| 阶跃 | stepfun/step-5-preview |
| 小米 | xiaomi/mimo-v2.6-pro、xiaomi/mimo-v2.6-flash |
| Kimi | kimi/kimi-k2.5、kimi/kimi-k3 |
| 腾讯混元 | tencent/hy4-preview |
模型 ID 写错时,接口会直接报「未知模型」,不会悄悄换成别的模型。所以换模型后先用一句简单的话试一次,确认能返回再进仓库干活。
实测:11 个国产模型,10 个能完整干活
测试方法不是问答题,而是让 Codex 真的做一次编码任务。每个模型跑两个任务:
- 只读任务:仓库里有一个
calc.py,让 Codex 读完文件后回答add(2, 3)的结果。 - 改代码任务:
subtract()里有一个 bug,让 Codex 修好、补一个 unittest,并自己运行测试。跑完后由脚本独立核对:subtract(5, 3) == 2、测试文件存在、python3 -m unittest通过。
第二个任务才是关键:它同时考察模型会不会读文件、发工具调用、改代码、执行命令,以及多步任务会不会中途放弃。
| 模型 ID | 两个任务 | 两次任务合计花费(按 Router 计费口径) |
|---|---|---|
deepseek/deepseek-flash | ✅ 全过 | ¥0.017 |
deepseek/deepseek-v4-pro | ✅ 全过 | ¥0.071 |
glm/glm-5.3 | ✅ 全过 | ¥0.157 |
glm/glm-5.3-flash | ✅ 全过 | ¥0.029 |
qwen/qwen3.8-max | ✅ 全过 | ¥0.216 |
qwen/qwen3.7-max | ✅ 全过 | ¥0.248 |
minimax/MiniMax-M3 | ✅ 全过 | ¥0.130 |
stepfun/step-5-preview | ✅ 全过 | ¥0.184 |
xiaomi/mimo-v2.6-pro | ✅ 全过 | ¥0.017 |
kimi/kimi-k2.5 | ✅ 全过 | ¥0.057 |
tencent/hy4-preview | ❌ 第二个任务失败 | ¥0.127 |
10 个模型两项任务全过。 这里的「全过」不是回答得像,而是改完的代码真的能跑、测试真的通过。花费是两个任务加起来的实际用量,不是包月价格,也不是单次对话的固定价;任务越复杂、上下文越长,费用会越高。
两个例外,如实说明
腾讯混元 tencent/hy4-preview 在第二个任务里说完「找到问题了,现在开始修」,就以正常结束(finish_reason: stop)收尾,没有发出修改文件的工具调用。把同一轮请求换成普通的 Chat 格式重放三次,结果一样,所以问题在模型自身:它在多步 Agent 场景里容易提前结束,不是接口转换的错。日常问答可以用,让它独立完成跨步骤的改代码任务要谨慎。
Kimi K3 kimi/kimi-k3 这次没有测成:本地环境缺少 Moonshot 官方通道的 Key,/v1/chat/completions 和 /v1/responses 都直接报缺少环境变量。同家的 kimi/kimi-k2.5 走百炼通道两项都过。K3 已经出现在 Router 模型列表里,配好 Key 后可以自己补一次冒烟测试,本文不替它下结论。
怎么选:按任务和预算分三档
日常改 bug、写脚本、单文件排错:先用 deepseek/deepseek-flash。两次任务 ¥0.017,是这次实测里最便宜的档位之一,两项任务都过,速度也快。小米 xiaomi/mimo-v2.6-pro 同为 ¥0.017,也可以作为备选。
跨文件改动、需要读整个仓库、长日志定位:用 deepseek/deepseek-v4-pro 或 glm/glm-5.3。上下文都是 100 万 token,前者两次任务 ¥0.071,后者 ¥0.157。通义 qwen/qwen3.8-max 也全过,两次 ¥0.216,适合你已经在用通义生态的情况。
大批量、预算敏感:glm/glm-5.3-flash(两次 ¥0.029)和 kimi/kimi-k2.5(¥0.057)都值得试。便宜档和旗舰档的差别通常不在「能不能改对」,而在复杂任务里要不要多来几轮、会不会漏掉调用点。
价格是官方同价、按量计费,单位是元 / 百万 tokens:
| 模型 ID | 输入 | 输出 | 上下文 |
|---|---|---|---|
deepseek/deepseek-flash | 2 | 8 | 1M |
deepseek/deepseek-v4-pro | 9 | 27 | 1M |
glm/glm-5.3 | 8 | 28 | 1M |
glm/glm-5.3-flash | 0.8 | 2.8 | 1M |
qwen/qwen3.8-max | 12 | 36 | 1M |
qwen/qwen3.7-max | 12 | 36 | 256K |
minimax/MiniMax-M3 | 4.2 | 16.8 | 1M |
stepfun/step-5-preview | 7 | 20 | 1M |
xiaomi/mimo-v2.6-pro | 3 | 6 | 1M |
kimi/kimi-k2.5 | 4 | 21 | 256K |
kimi/kimi-k3 | 20 | 100 | 1M |
DeepSeek 两个模型还有峰谷价:北京时间工作日 9:00–12:00、14:00–18:00 是高峰,其余时段按五折计费(周末和法定节假日全天按空闲价)。MiniMax-M3 按上下文长度分档,超过 512K 后单价翻倍。实际扣费以页面和账单为准。
四个容易踩的坑
- 用了
/v1/chat/completions的配置。Codex CLI 走的是 Responses 接口,wire_api必须是responses,否则请求格式对不上。 base_url少写/v1。正确写法是https://router.bumo.cc/v1,不是只写域名。- 模型名没带供应商前缀。要写
deepseek/deepseek-flash,不能只写deepseek-flash。 - 把 Key 写进配置文件。配置里只写环境变量名,Key 放在环境变量里,避免误提交。
现在就试
装好 Codex CLI 后,先拿最便宜的 deepseek/deepseek-flash 跑一个你手头真实的小任务:读一个文件、改一处逻辑、跑一次测试。跑通之后再按任务难度往上换模型,比先充一大笔钱更稳妥。
- 创建 API Key:router.bumo.cc/user/api-keys
- 查看实时模型与价格:router.bumo.cc/api/v1/models
- 接口文档:bumo.cc/docs/api
一个 Key、一份配置,Codex 在国内也能直接干活。