不墨 Router

发布于 2026 年 11 月 13 日 星期五

Codex CLI 接 DeepSeek / Kimi / Qwen:config.toml 八行配置,三个模型实测花费

OpenAI Codex CLI 接国产模型:在 ~/.codex/config.toml 加一个 Bumo Router 供应商(wire_api = responses),一个 Key 切 DeepSeek、Kimi、Qwen,附 3 个模型写代码跑测试的实测耗时、token 和花费。

Codex CLI 接 DeepSeek / Kimi / Qwen:config.toml 八行配置,三个模型实测花费

可以接。在 ~/.codex/config.toml 里加一个供应商,base_url 填 https://router.bumo.cc/v1,wire_api 填 "responses",Key 放进环境变量 BUMO_API_KEY,Codex 就能用 DeepSeek、Kimi、Qwen 写代码。 我们让三个模型各做一次「写函数 + 写测试 + 跑测试」,全部一次通过。最划算的是 qwen/qwen3.8-flash,这一次约 1 分钱;deepseek/deepseek-flash 约 2 分钱、速度最快;kimi/kimi-k3 约 0.23 元,适合难一点的活。

还没有 Key:到 router.bumo.cc/user/api-keys 注册并创建一把,充值后即可调用。国内直连,按人民币计费。

核验日期:2026-11-13,Codex CLI 0.159.2(npm 安装),Linux,用一个全新的 CODEX_HOME 目录从零照着本文做了一遍。

第 1 步:安装 Codex CLI

npm install -g @openai/codex
codex --version

第 2 步:写配置

编辑 ~/.codex/config.toml(没有就新建),加入下面 8 行:

model = "deepseek/deepseek-flash"
model_provider = "bumo"

[model_providers.bumo]
name = "Bumo Router"
base_url = "https://router.bumo.cc/v1"
env_key = "BUMO_API_KEY"
wire_api = "responses"

每一行的作用:

  • model:默认模型,必须是带厂商前缀的完整 ID,和 https://router.bumo.cc/v1/models 里一致。
  • model_provider:指向下面定义的 bumo 供应商。不写这一行,Codex 仍然会去连 OpenAI。
  • base_url:填到 /v1 为止,Codex 会自己拼 /responses。地址要用 router.bumo.cc。
  • env_key:Codex 从这个环境变量读 Key,配置文件里不出现明文 Key。
  • wire_api = "responses":新版 Codex 只支持 Responses API,Router 对国产模型也提供这个接口,本文三个模型都走它跑通。

这段配置和 Router 接入中心 里 Codex CLI 一栏一致,登录后在那里选模型、复制即可。

第 3 步:设置 Key,启动

export BUMO_API_KEY="你的 Router Key"
codex

想长期生效,把 export 那行写进 ~/.bashrc 或 ~/.zshrc。

不进交互界面、直接跑一个任务:

codex exec -s workspace-write "写一个 fizzbuzz 函数和测试,然后运行测试"

-s workspace-write 允许它在当前目录里写文件和执行命令,不加的话默认只读。

换模型

临时换用 -m:

codex -m kimi/kimi-k3
codex -m qwen/qwen3.8-flash

长期换就改 config.toml 里的 model。交互界面里也可以用 /model 切换。同一把 Key 对所有模型通用,不用为每家厂商单独开账号。

实测:三个模型各写一次代码

任务是同一句话:「写 fizz.py,定义 fizzbuzz(n);写 test_fizz.py 用 assert 测 n=15;运行 python3 test_fizz.py 确认通过。」每个模型在一个空目录里从零开始,codex exec -s workspace-write 非交互执行。跑完我们自己再运行一次测试文件,确认真的通过。

token 取自 Codex 本地会话日志($CODEX_HOME/sessions 里的 token_count 事件),花费按 Router 模型页的高峰价计算(缓存命中部分按缓存价):

DeepSeek Flash(deepseek/deepseek-flash)

  • 结果:一次通过
  • 耗时:21 秒
  • token:输入 29,366(其中缓存命中 25,600),输出 1,182
  • 花费:约 0.018 元

Kimi K3(kimi/kimi-k3)

  • 结果:一次通过
  • 耗时:50 秒
  • token:输入 19,350(其中缓存命中 12,288),输出 600
  • 花费:约 0.23 元

Qwen3.8 Flash(qwen/qwen3.8-flash)

  • 结果:一次通过,还自己多加了 n=0、n=3 两条边界断言
  • 耗时:42 秒
  • token:输入 21,835(其中缓存命中 13,312),输出 933
  • 花费:约 0.011 元

几点观察:

  • 输入 token 的大头是 Codex 自带的系统提示词和工具定义,一次小任务就有两三万 token,用户那句话只占几十个。所以小任务的花费主要看输入价和缓存价,缓存价便宜的模型更占便宜。
  • 日常写代码用 DeepSeek Flash 或 Qwen3.8 Flash,一次一两分钱;Kimi K3 单价高一个数量级,留给需要更强推理的任务。
  • DeepSeek Flash 有闲时价,工作日 912 点、1418 点以外半价,晚上跑批量任务更便宜。

常见问题

  • 启动时出现 Model metadata for ... not found. Defaulting to fallback metadata:Codex 内置的模型表里只有 OpenAI 自家模型,对其他模型都会打这条警告。实测三个模型都能正常读写文件、执行命令,可以忽略。
  • 401 Invalid or missing API key:没有在当前终端 export BUMO_API_KEY,或 Key 复制不完整。echo $BUMO_API_KEY 看一眼。
  • 还是去连了 api.openai.com:model_provider = "bumo" 没写,或写在了 [model_providers.bumo] 段下面。这一行必须放在文件顶部、所有 [...] 段之前。
  • 模型不存在:Model ID 漏了 deepseek/ 这类厂商前缀。
  • 地址写成了 api.bumo.cc:这个域名对 POST 请求会 301 跳转,跳转后 Key 会丢,表现为 401。一律用 router.bumo.cc。
  • 能不能用 GPT 或 Claude 模型:本文只覆盖国产模型。Router 当前的模型列表以 /v1/models 为准。

边界

本次验证了 Linux 上 Codex CLI 0.159.2 的 codex exec 非交互模式,三个模型各一次写文件、执行命令的任务。没有覆盖交互界面里的图片输入、MCP 工具和长时间多轮会话。价格以 Router 模型页为准,会随厂商调价变化。

想用图形界面一次配好 Claude Code、Codex、OpenCode 三个工具,可以看 magpie 一键接入不墨 Router。

前往不墨 Router 获取 Key。

继续阅读