﻿---
title: "通过 Coder AI Gateway 连接模型服务"
summary: "用户层 [model_providers.ai_gateway]，base_url 以 /api/v2/ai-gateway/openai/v1 结尾，env_key = OPENAI_API_KEY，wire_api = responses，supports_websockets = false。再用 ~/.codex/ai_gateway.config.toml 和 --profile ai_gateway。"
category: config
level: intermediate
surfaces: [cli, app, ide]
tags: ["model_providers", "Coder", "wire_api", "profile"]
canonical: /tips/coder-ai-gateway/
---

# 通过 Coder AI Gateway 连接模型服务

用户层 [model_providers.ai_gateway]，base_url 以 /api/v2/ai-gateway/openai/v1 结尾，env_key = OPENAI_API_KEY，wire_api = responses，supports_websockets = false。再用 ~/.codex/ai_gateway.config.toml 和 --profile ai_gateway。

Coder 官方 Codex 网关：profile 写 [model_providers.ai_gateway]，base_url 以 /api/v2/ai-gateway/openai/v1 结尾，env_key 读 OPENAI_API_KEY。

这是换 Codex **使用的模型**，流量打到 Coder 部署上的 AI Gateway，不是添加 MCP 服务。功能在 Premium 的 AI Governance 里。集中密钥那条：`env_key` 只能写变量**名** `OPENAI_API_KEY`，进程里填的是 Coder API 令牌 `YOUR_CODER_API_TOKEN`，不是 OpenAI 平台密钥。**Codex 不会在 `base_url` 里展开环境变量**，主机名要写成字面量。

供应商表放**用户** `~/.codex/config.toml`。项目 `.codex/config.toml` 无法修改 `model_provider` / `model_providers`。不要写 `openai_base_url`，也不要把总览页给通用客户端的 `OPENAI_BASE_URL` 当 Codex 主路径：内置 `openai` 会带客户端 `web` 命名空间。具名 `ai_gateway` 才是 Codex 专节。

网关不支持 Responses WebSocket。不写 `supports_websockets = false` 时，每一轮会先试 WebSocket、重试约 5 次再回落 HTTPS，日志是 `Falling back from WebSockets to HTTPS transport.`。把这项写进供应商表。

更稳妥是独立 profile（用户层 `$CODEX_HOME`，不是项目 `.codex`）：

```toml
# ~/.codex/ai_gateway.config.toml
model_provider = "ai_gateway"

[model_providers.ai_gateway]
name = "AI Gateway"
base_url = "https://YOUR_DEPLOYMENT/api/v2/ai-gateway/openai/v1"
env_key = "OPENAI_API_KEY"
wire_api = "responses"
supports_websockets = false
```

```bash
export OPENAI_API_KEY="YOUR_CODER_API_TOKEN"
codex --profile ai_gateway
```

0.134 起不要再写 `[profiles.ai_gateway]`。自定义供应商必须 `wire_api = "responses"`。密钥必须出现在**启动 Codex 的那个进程**里。从已经 export 的终端启动；Dock 打开的桌面读不到你刚改的 zshrc。

个人 OpenAI 密钥那条（BYOK）才加 `requires_openai_auth = true`，并用 `env_http_headers` 把头 `X-Coder-AI-Governance-Token` 指到变量名 `CODER_API_TOKEN`。这时 `OPENAI_API_KEY` 才是你的 OpenAI 密钥。ChatGPT 订阅那条把 `base_url` 换成 `https://YOUR_DEPLOYMENT/api/v2/ai-gateway/chatgpt/v1`，并 `unset OPENAI_API_KEY`；部署上必须有名为 `chatgpt` 的供应商，否则 `404 route not supported: POST /chatgpt/v1/responses`。

Coder Registry 模块 `enable_ai_gateway = true` 写的是另一张表：`[model_providers.aigateway]`（没有下划线），`base_url` 走 `/api/v2/aibridge/openai/v1`，`env_key = "OPENAI_CODER_AIGATEWAY_SESSION_TOKEN"`。不要和文档专节的 `ai_gateway` 表混抄。

配置说明：

- 不要写 `openai_base_url`，也不要覆盖内置 ID `openai`、`ollama`、`lmstudio`。`ai_gateway` 是新 ID，可以。
- 不要写进项目 `.codex/config.toml`。
- 不要把密钥写进 `http_headers` 或 TOML 字面量。

改完新开会话。`codex --profile ai_gateway` 启动后，发送一条简短请求验证连接。401 先看进程里有没有该变量。

## 来源

- [Coder · Codex CLI](https://coder.com/docs/ai-coder/ai-gateway/clients/codex)
- [Coder · AI Gateway clients](https://coder.com/docs/ai-coder/ai-gateway/clients)
- [Coder · AI Gateway reference](https://coder.com/docs/ai-coder/ai-gateway/reference)
