﻿---
title: "通过 DeepSeek 连接模型服务"
summary: "用户层 [model_providers.deepseek]，base_url 是 https://api.deepseek.com/，wire_api = responses。env_key 读 DEEPSEEK_API_KEY，不要把 sk- 写进 TOML。"
category: config
level: intermediate
surfaces: [cli, app, ide]
tags: ["model_providers", "DeepSeek", "wire_api", "profile"]
canonical: /tips/deepseek-codex-gateway/
---

# 通过 DeepSeek 连接模型服务

用户层 [model_providers.deepseek]，base_url 是 https://api.deepseek.com/，wire_api = responses。env_key 读 DEEPSEEK_API_KEY，不要把 sk- 写进 TOML。

DeepSeek 官方 Codex 网关：profile 写 [model_providers.deepseek]，base_url 是 https://api.deepseek.com/，密钥用 env_key 不要 experimental_bearer_token。

这是换 Codex **使用的模型**，流量打到 DeepSeek 原生 Responses 入口 `https://api.deepseek.com/`，不是添加 MCP 服务，也不是 Chat Completions 翻译层。官方给了一键脚本，会写 `~/.codex/models.json` 并改 `config.toml`：

```bash
bash <(curl -fsSL https://cdn.deepseek.com/api-docs/codex-deepseek-setup-en.sh)
```

Windows 是 `irm https://cdn.deepseek.com/api-docs/codex-deepseek-setup-en.ps1 | iex`。脚本会备份到 `~/.codex/backup-deepseek/`。菜单 1 配 `deepseek-flash`（带图），菜单 2 配 `deepseek-v4-pro`，菜单 9 还原。需要 Codex CLI 0.144+。跑完立刻把密钥从 TOML 挪走：官方示例用 `experimental_bearer_token`，那是把 `sk-` 写进文件。改成 `env_key`（变量**名**），在启动 Codex 的进程里 `export DEEPSEEK_API_KEY`。不要和 `experimental_bearer_token` / `requires_openai_auth` / `[model_providers.*.auth]` 叠在同一张供应商表。

不要把顶层 `model_provider = "deepseek"` 一上来写进用户 config，除非你就是要把**所有**会话都改走 DeepSeek。官方手册示例就是全局默认。更稳妥是独立 profile（用户层 `$CODEX_HOME`，不是项目 `.codex`）。0.134 起不要再写 `[profiles.deepseek]`。

```toml
# ~/.codex/config.toml
[model_providers.deepseek]
name = "deepseek"
base_url = "https://api.deepseek.com/"
env_key = "DEEPSEEK_API_KEY"
wire_api = "responses"
```

```toml
# ~/.codex/deepseek.config.toml
model_provider = "deepseek"
model = "deepseek-flash"
preferred_auth_method = "apikey"
forced_login_method = "api"
model_reasoning_effort = "high"
web_search = "disabled"
model_catalog_json = "/home/YOU/.codex/models.json"
```

```bash
export DEEPSEEK_API_KEY=YOUR_DEEPSEEK_API_KEY
codex --profile deepseek
```

`models.json` 从官方 Codex 页或脚本拿，**不要**把里面的人设 / `instructions_template` 抄进仓库或 TOML。官方手册把路径写成 `~/.codex/models.json`；若 `/model` 仍显示 Custom，改成绝对路径。目录键启动时加载，改完必须新开会话。自定义供应商必须 `wire_api = "responses"`。项目 `.codex/config.toml` 无法修改 `model_provider` / `model_providers`。不要写 `openai_base_url`。**Codex 不会在 `base_url` 里展开环境变量**，主机名要写成字面量。

配置说明：

- 不要再写 `[profiles.deepseek]` 或把 `experimental_bearer_token` 留在 TOML。
- 不要把这张表当成 MCP。DeepSeek 这页没有 `mcp add`。
- 不要抄博客里的 `wire_api = "chat"` 或 `codex-relay`。DeepSeek 自己说原生 Responses。
- 不要覆盖内置 ID `openai`、`ollama`、`lmstudio`。`deepseek` 是新 ID，可以。
- 不要写进项目 `.codex/config.toml`。
- 不要把 Kong / TrueFoundry / OpenRouter 的 `base_url` 抄进这张表。

改完新开会话。启动横幅出现 `model: deepseek-flash`，说明供应商、目录和密钥都进了这一进程。401 先看进程里有没有 `DEEPSEEK_API_KEY`。切回 ChatGPT 登录后，第三方会话会藏起来，并没有删。

## 来源

- [DeepSeek · Integrate with Codex](https://api-docs.deepseek.com/quick_start/agent_integrations/codex/)
- [DeepSeek · Using the Responses API](https://api-docs.deepseek.com/guides/responses_api)
- [DeepSeek · Responses API](https://api-docs.deepseek.com/api/create-response)
