> ## Documentation Index
> Fetch the complete documentation index at: https://docs.token.poryf.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Codex

> 把 Codex CLI 接入再来点Token，用 DeepSeek、GLM 模型写代码。

[Codex CLI](https://developers.openai.com/codex/cli) 是 OpenAI 推出的命令行 AI 编程助手。它通过 OpenAI Responses 接口（`/v1/responses`）调用模型，本站的 DeepSeek、GLM 系列支持这个接口，写一个配置文件就能用。

| 模型系列 | Codex 可用 | 说明 |
| - | - | - |
| DeepSeek | 支持 | 对话、流式输出、工具调用均正常 |
| GLM | 支持 | 对话、流式输出、工具调用均正常 |

以上为 2026-09-28 使用 Codex CLI 0.157 实测结果。

## 给 AI 助手的一段话

已经有别的 AI 助手（例如 Claude Code、WorkBuddy）？把下面这段话发给它，它会帮你完成配置。这段话会包含你的完整密钥，接收它的 AI 服务会看到，请只发给你信任的 AI 助手。把 `YOUR_API_KEY` 换成你的密钥，`deepseek-v4-pro` 换成你要用的模型 ID。

<Tip>在控制台 [API 密钥](https://token.poryf.com/keys) 页面点密钥右侧的 **接入配置**，选 Codex 后点 **复制给 Agent**，复制到的内容已经填好了你的密钥。</Tip>

````text wrap theme={null}
请帮我把 Codex 接入再来点Token（OpenAI 兼容的 API 服务）。

1. 打开配置文件 ~/.codex/config.toml（Windows 为 %USERPROFILE%\.codex\config.toml），不存在就新建，所在目录不存在也一并创建。
2. 写入下面的内容。如果文件已存在，替换顶层的 model 和 model_provider，添加或替换 [model_providers.tokendiscount] 这一段，保留其他设置。

```toml
model = "deepseek-v4-pro"
model_provider = "tokendiscount"

[model_providers.tokendiscount]
name = "再来点Token"
base_url = "https://token.poryf.com/v1"
experimental_bearer_token = "YOUR_API_KEY"
wire_api = "responses"
```

3. 保存后运行 `codex exec --skip-git-repo-check "Reply with OK"` 验证，告诉我结果。

这段话里有我的 API 密钥：只把它写进本地配置文件，回复时不要完整复述，也不要提交到代码仓库。
````

## 准备

* 在 [API 密钥](https://token.poryf.com/keys) 页面创建一个密钥，并确认 [钱包](https://token.poryf.com/wallet) 有余额。
* 在 [模型广场](https://token.poryf.com/pricing) 选一个 DeepSeek 或 GLM 模型，复制模型 ID，例如 `deepseek-v4-pro`。

## 第 1 步：安装 Codex

<Tabs>
  <Tab title="npm（所有系统）">
    需要 Node.js 18 或更高版本：

    ```bash theme={null}
    npm install -g @openai/codex
    ```
  </Tab>

  <Tab title="macOS（Homebrew）">
    ```bash theme={null}
    brew install --cask codex
    ```
  </Tab>
</Tabs>

安装后运行 `codex --version`，能看到版本号就说明装好了。

## 第 2 步：写入配置

**1. 打开配置文件**，不存在时会自动新建：

<Tabs>
  <Tab title="macOS">
    ```bash theme={null}
    mkdir -p ~/.codex && touch ~/.codex/config.toml && open -e ~/.codex/config.toml
    ```
  </Tab>

  <Tab title="Linux">
    ```bash theme={null}
    mkdir -p ~/.codex && nano ~/.codex/config.toml
    ```
  </Tab>

  <Tab title="Windows">
    ```powershell theme={null}
    New-Item -ItemType Directory -Force "$env:USERPROFILE\.codex" | Out-Null; notepad "$env:USERPROFILE\.codex\config.toml"
    ```
  </Tab>
</Tabs>

**2. 粘贴下面的内容并保存**，把 `YOUR_API_KEY` 换成你的密钥，`deepseek-v4-pro` 换成你的模型 ID：

```toml theme={null}
model = "deepseek-v4-pro"
model_provider = "tokendiscount"

[model_providers.tokendiscount]
name = "再来点Token"
base_url = "https://token.poryf.com/v1"
experimental_bearer_token = "YOUR_API_KEY"
wire_api = "responses"
```

<Note>文件里已经有 `model` 和 `model_provider` 时，替换成上面的值；其他配置保持不变。</Note>

### 各配置项的作用

| 配置项 | 说明 |
| - | - |
| `model` | 默认使用的模型 ID，选 DeepSeek 或 GLM 系列 |
| `model_provider` | 指向下面定义的 `tokendiscount` 服务商 |
| `base_url` | 必须带 `/v1` |
| `experimental_bearer_token` | 本站 API 密钥，直接写在配置里，不用另外设置环境变量 |
| `wire_api` | 固定填 `responses` |

<Accordion title="不想把密钥写进配置文件？改用环境变量">
  把 `experimental_bearer_token` 这一行换成 `env_key = "TOKENDISCOUNT_API_KEY"`，再设置同名环境变量：

  <Tabs>
    <Tab title="macOS / Linux">
      把下面这行加到 `~/.zshrc` 或 `~/.bashrc`，然后重新打开终端：

      ```bash theme={null}
      export TOKENDISCOUNT_API_KEY="YOUR_API_KEY"
      ```
    </Tab>

    <Tab title="Windows">
      运行后重新打开终端：

      ```powershell theme={null}
      setx TOKENDISCOUNT_API_KEY "YOUR_API_KEY"
      ```
    </Tab>
  </Tabs>
</Accordion>

## 第 3 步：验证

**重新打开一个终端**，运行：

```bash theme={null}
codex exec --skip-git-repo-check "Reply with OK"
```

看到模型回答 `OK` 就说明接入成功。之后进入项目目录运行 `codex` 开始使用；临时换模型可以加 `-m` 参数，例如 `codex -m glm-5.3`。每次调用的用量和费用都可以在 [使用日志](https://token.poryf.com/usage-logs/common) 里查到。

## 常见问题

<AccordionGroup>
  <Accordion title="提示 “We're currently experiencing high demand”">
    这通常不是限流。Codex 会把服务端返回的 500 错误都显示成这句话，最常见的原因是所选模型不支持 Responses 接口。请换成上表中的 DeepSeek 或 GLM 模型。
  </Accordion>

  <Accordion title="报 404 或提示地址错误">
    `base_url` 要带 `/v1`，不要填成完整的 `/v1/responses` 地址。
  </Accordion>

  <Accordion title="提示缺少环境变量">
    你用的是环境变量方式：确认 `env_key` 和设置的变量名完全一致，并且是在设置之后新开的终端里运行 `codex`。
  </Accordion>

  <Accordion title="提示余额不足或密钥无效（401 / 403）">
    密钥填错、被禁用、过期或额度用完，都会返回 `Invalid token`。到控制台检查密钥状态和钱包余额，详见 [错误排查](/errors)。
  </Accordion>
</AccordionGroup>
