# 在 Codex 中切换 WanAPIs 的其它模型

> 接入 WanAPIs 后如何把 Codex 换成 DeepSeek、GPT 等模型。三端共用 ~/.codex/config.toml,含 profile 多套配置快速切换、新版 profile 文件格式与常见报错处理。

网页版:https://wanapis.com/docs/codex-switch-model

Codex CLI、VS Code 插件、桌面端读的是同一份 ~/.codex/config.toml —— 这意味着改一次,三端同时生效,不用分别配置。本文以 deepseek-v4.1-flash 为例,讲清临时切换、永久切换,以及用 profile 维护多套模型配置随时互换。

## 接入步骤

### 1. 先确认已接入 WanAPIs

config.toml 里应当已经有一个指向 WanAPIs 的 provider。下面的例子把它命名为 wanapis,密钥从环境变量 WANAPIS_API_KEY 读取。

**~/.codex/config.toml**

```
model_provider = "wanapis"
model = "gpt-5.5"

[model_providers.wanapis]
name = "WanAPIs"
base_url = "https://api.wanapis.com/v1"
wire_api = "responses"
env_key = "WANAPIS_API_KEY"
```

### 2. 命令行:临时切换(只影响本次)

加 -m 或 --model 启动即可,适合临时试模型。已经在会话里的话,输入 /model 可以直接调出选择器当场换 —— 注意这是命令行独有的,插件和桌面端没有斜杠命令,见下一步。

**shell**

```
codex --model deepseek-v4.1-flash

# 非交互执行也一样
codex exec -m deepseek-v4.1-flash '把这个函数改成异步的'
```

### 3. VS Code 插件 / 桌面端:用面板底部的模型选择器

图形界面里没有斜杠命令(输 /model 只会被当成普通文本发出去),切换入口是 Codex 面板【底部】的模型选择器 —— 点开就能同时选模型和推理强度。桌面端还可以按 Ctrl+Shift+M 直接调出它,VS Code 插件没有预设快捷键。

### 4. 选择器里没有你要的模型?这是正常的

选择器列的是 Codex 内置认识的那些模型(GPT-5.4 / 5.4-mini / 5.5 等),经自定义 provider 接进来的名字(比如 deepseek-v4.1-flash)默认不在里面。有个很实用的细节:选择器只改 model、不动 model_provider,所以你在 WanAPIs 这个 provider 下选中 GPT-5.5,请求依然发给 WanAPIs —— 这些型号我们都有,选了就能直接用。真正需要动配置的,只有选择器里压根没有的名字,见下一步。

### 5. 切到选择器里没有的模型:齿轮 → Open config.toml

不用离开编辑器:点 Codex 侧边栏的齿轮图标 → Codex Settings → Open config.toml,把 model 改掉再重启插件即可。配置三端共用,改完命令行和桌面端也一起变。要经常来回切的话,直接看下一步的 profile 做法更省事。

**~/.codex/config.toml**

```
model = "deepseek-v4.1-flash"
```

### 6. 推荐:用 profile 维护多套配置

经常在不同模型之间来回切的话,与其反复改 model 那一行,不如给每个模型建一个 profile。在 ~/.codex/ 下按 <名字>.config.toml 建文件,启动时用 --profile <名字> 选择。注意这是新版格式:老的 [profiles.xxx] 表写法已经不支持,继续用会直接报错并提示你迁移。

**~/.codex/ds.config.toml**

```
model = "deepseek-v4.1-flash"
model_provider = "wanapis"
model_reasoning_effort = "high"
model_context_window = 900000
```

### 7. 用 profile 启动

建好之后,一条命令切换整套配置(模型 + 推理强度 + 上下文上限)。可以按需要建多个,例如 ds / gpt / cheap 各一套。

**shell**

```
codex --profile ds
```

### 8. 进阶:把自定义模型注册进模型目录

如果你希望 Codex 把自定义模型当成「一等公民」—— 不再每次提示 Model metadata not found、上下文上限按真实值算 —— 可以用 model_catalog_json 指向一个模型目录文件,在里面为它写一条元数据。实测注册后那条警告确实消失、上下文按填写的值生效。条目里的 visibility 字段决定它是否列进选择器(list 显示 / hide 隐藏),不过图形界面是否一定会列出自定义条目跟客户端版本有关,没出现就仍按上一步改配置。

**~/.codex/config.toml**

```
model_catalog_json = "/Users/你的用户名/.codex/models.json"
```

### 9. ⚠️ 写模型目录的三个坑

一、格式很严:字段不全会直接报错,比如漏了 shell_type 就是 missing field `shell_type`。二、有些字段不接受 null(如 web_search_tool_type),填 null 会报 invalid type: null。三、也是最要命的 —— 目录文件解析失败会让 Codex 整个起不来(failed to parse model_catalog_json),命令行和插件一起罢工。所以最稳妥的做法不是从零手写,而是复制目录里一条已有条目,只改 slug、display_name、context_window 和推理强度这几项;改之前先备份。

### 10. 验证

启动后 Codex 会把当前配置打印在顶部,确认 model 和 provider 两行是你要的即可;也可以到 WanAPIs 控制台「日志」页核对最新一条的模型名与扣费。

**启动时的输出**

```
model: deepseek-v4.1-flash
provider: wanapis
reasoning effort: high
```

## 常见问题

### 提示 Model metadata for `xxx` not found 要紧吗?

不要紧,能正常对话。Codex 只内置了 OpenAI 自家模型的元数据,换成别的模型就会退回默认值。影响主要是它对上下文上限的判断 —— 在 profile 里加一行 model_context_window 指定即可。想彻底消掉这条警告,就用 model_catalog_json 给它写一条元数据(见上面的进阶步骤),实测注册后警告不再出现。

### deepseek-v4.1-flash 在 Codex 里的上下文能有多大?

我们在网关侧实测到单次请求 94 万 tokens 仍然正常返回,三条线路分别跑到过 94 万 / 85 万 / 72 万。配置里填 model_context_window = 900000 是个留了余量的稳妥值,比 Codex 在缺元数据时退回的默认值大得多。

### 报错说 [profiles.xxx] 是 legacy 配置怎么办?

新版 Codex 不再支持在 config.toml 里写 [profiles.xxx] 表。把那段配置移到单独的 ~/.codex/<名字>.config.toml 文件里,并从 config.toml 中删掉原来的 [profiles.xxx] 段落即可。

### VS Code 插件里输什么指令可以临时切换模型?

插件不支持斜杠命令,输 /model 只会被当作普通文本发出去。切换请点 Codex 面板底部的模型选择器,模型和推理强度都在那里选。要切的是 deepseek-v4.1-flash 这类自定义模型时,选择器里不会列出来,改用齿轮图标 → Codex Settings → Open config.toml(或 profile)改完重启插件。桌面端多一个 Ctrl+Shift+M 快捷键可直接调出选择器。

### VS Code 插件和桌面端要单独配置吗?

不用。三端读的都是 ~/.codex/config.toml,改一次全部生效。唯一要注意的是插件和桌面端需要重启才会重新读取配置。

### 换成便宜模型到底能省多少?

Codex 每一轮都会带上自己的系统提示词和工具定义,即使你只说一句话,输入也有一万多 token。正因为输入量大,换成单价低的模型省下来的绝对金额相当可观,控制台日志里可以逐条对比。

---

本文由 WanAPIs 官网生成,和网页版内容同步。全部教程的 Markdown 目录:https://wanapis.com/docs/index.md
