DigitalOcean Inference 当模型供应商:inference.do-ai.run 且 wire_api = responses
用户 config 写 [model_providers.openai_custom],base_url 是 https://inference.do-ai.run/v1,env_key = MODEL_ACCESS_KEY,wire_api = responses。再用 ~/.codex/digitalocean.config.toml 和 --profile digitalocean。这不是 DigitalOcean MCP,也不是 --oss。
这是换 Codex 背后那颗模型,不是再加一台 MCP。DigitalOcean Inference 的官方 Codex 入口是 https://inference.do-ai.run/v1。密钥走进程环境 MODEL_ACCESS_KEY(格式是 sk-do- 开头),不要写进 TOML。
供应商表放用户 ~/.codex/config.toml。官方 heredoc 会整文件覆盖,不要当主路径抄:
# ~/.codex/config.toml
[model_providers.openai_custom]
name = "OpenAI Compatible"
base_url = "https://inference.do-ai.run/v1"
env_key = "MODEL_ACCESS_KEY"
wire_api = "responses"
query_params = {}
env_key 是变量名。密钥必须出现在启动 Codex 的那个进程里。从已经 export MODEL_ACCESS_KEY 的终端启动;Dock 打开的桌面不会读你刚改的 zshrc。
官方参数列表把 Provider name 写成 digitalocean,但 TOML 表名就是 openai_custom。跟 TOML 走,不要改成 [model_providers.digitalocean]。也不要抄第二段里那些占位 URL。
不要把顶层 model_provider = "openai_custom" 一上来写进用户 config,除非你就是要把所有会话都改走 Inference。更稳妥是独立 profile:
# ~/.codex/digitalocean.config.toml
model_provider = "openai_custom"
model = "openai-gpt-4.1"
preferred_auth_method = "apikey"
model_reasoning_effort = "high"
codex --profile digitalocean
codex --profile digitalocean -m "openai-gpt-4o-mini"
0.134 起不要再写 [profiles.digitalocean]。自定义供应商必须 wire_api = "responses"。模型 ID 以 /v1/models 为准,例如 openai-gpt-4.1。换模型前先列目录:
curl -s \
-H "Authorization: Bearer $MODEL_ACCESS_KEY" \
https://inference.do-ai.run/v1/models \
| jq '.data[].id'
不要做这些:
- 不要把这张表当成 DigitalOcean MCP 或 App Platform skills。那是管 Droplet / App,不是换模型。
- 不要写进项目
.codex/config.toml。项目文件改不了model_provider/model_providers。 - 不要覆盖内置 ID
openai、ollama、lmstudio。openai_custom是新 ID,可以。 - 不要和
--oss/oss_provider混成一条。 - 不要发明
plugin add digitalocean@。 - 不要把密钥写进
http_headers或 heredoc。 - 不要把 ChatGPT 登录当主路径;官方给了
preferred_auth_method = "apikey"。
改完新开会话。codex --profile digitalocean 起得来,说明供应商和密钥都进了这一进程。401 先看进程里有没有 MODEL_ACCESS_KEY;404 再对照 /v1/models 改 model。