第一部分:CLIProxyAPI

简介
CLIProxyAPI 是一个轻量级 AI API 代理服务器,核心功能是在 OpenAI Responses API 和 Chat Completions API 之间做双向格式转换。它使得仅支持 Responses API 的客户端(如 OpenAI Codex CLI)能够访问仅提供 Chat Completions API 的模型(DeepSeek、GLM、Kimi 等)。
工作原理

1 | Codex CLI |
- 请求方向:Responses → Chat Completions(
instructions→ system message,input→messages)
- 响应方向:Chat Completions 响应/流式 SSE → Responses 响应/流式 SSE
- 支持流式和非流式两种模式
安装
1 | cd ~/ai/codex-proxy |
启动与停止
1 | cd ~/ai/codex-proxy/CLIProxyAPI |
代理默认运行在 http://127.0.0.1:8317
配置文件

配置文件位于 ~/ai/codex-proxy/CLIProxyAPI/config.yaml,修改后代理会自动热加载,无需重启。
当前配置
1 | host: "127.0.0.1" |
添加新 Provider
在 openai-compatibility 下新增一段:
1 | openai-compatibility: |
添加新模型到已有 Provider
在对应 provider 的 models 下追加:
1 | models: |
选择 Provider
当配置了多个 provider 时,有两种方式指定使用哪个:
方式1:prefix 前缀路由(显式指定)
1 | comate/deepseek-v4-flash # 走 oneapi-comate |
方式2:alias 自动路由(省略 prefix)
当 alias 在所有 provider 中唯一时,可省略 prefix:
1 | deepseek-v4-flash # 自动匹配到 comate |
如果多个 provider 有相同 alias(如 glm-5.1 同时在 comate 和 glm-direct 中存在),必须用 prefix 显式指定,否则路由不确定。
关键配置项
| 配置项 | 说明 | 默认值 |
|---|---|---|
host |
绑定地址,127.0.0.1 仅本地 |
空(所有接口) |
port |
端口 | 8317 |
api-keys |
客户端认证 key 列表 | 无 |
request-retry |
请求失败重试次数 | 2 |
debug |
调试日志 | false |
proxy-url |
全局代理(支持 socks5/http/https) | 空 |
可用模型
Provider: oneapi-comate(百度内部网关,prefix: comate)
| alias | 上游模型名 | 说明 |
|---|---|---|
deepseek-v4-flash |
DeepSeek-V4-Flash | DeepSeek 快速 |
deepseek-v4-pro |
DeepSeek-V4-Pro | DeepSeek 推理 |
glm-5 |
GLM-5 | 智谱 GLM-5 |
glm-5-turbo |
GLM-5-Turbo | 智谱 GLM-5 快速 |
glm-5.1 |
GLM-5.1 | 智谱 GLM-5.1 |
kimi-k2.5 |
Kimi-K2.5 | 月之暗面 Kimi |
kimi-k2.6 |
Kimi-K2.6 | 月之暗面 Kimi |
minimax-m2-stable |
MiniMax-M2-Stable | MiniMax 稳定版 |
minimax-m2.1 |
MiniMax-M2.1 | MiniMax |
minimax-m2.7 |
MiniMax-M2.7 | MiniMax |
claude-sonnet-4.5 |
Claude Sonnet 4.5 | Claude (中转) |
claude-sonnet-4.6 |
Claude Sonnet 4.6 | Claude (中转) |
claude-opus-4.6 |
Claude Opus 4.6 | Claude (中转) |
claude-haiku-4.5 |
Claude Haiku 4.5 | Claude (中转) |
Provider: glm-direct(智谱官方直连,prefix: glm-direct)
| alias | 上游模型名 | 说明 |
|---|---|---|
glm-5.1 |
glm-5.1 | 智谱官方直连 |
glm-5-turbo |
glm-5-turbo | 智谱官方直连 |
验证与调试
1 | # 查看所有可用模型 |
如果你嫌自己配置麻烦,你还可以将 https://github.com/router-for-me/CLIProxyAPI/ 扔给智能体如Claude, 让它帮你按照和配置。
第二部分:Codex CLI 配置
为什么要使用 CLIProxyAPI z做一层代理呢,原因是 codex CLI 自 0.84.0 版本后就不再支持 Chat Completions 格式,而只支持 OpenAI 的 Responses API。因此,CLIProxyAPI 充当了一个中间层,将 Codex 的 Chat Completions 请求转换为 Responses API 格式。
codex这个影响还是巨大的,如果你使用智谱、Minimax、Kimi、Deeepseek 等模型,必须使用 CLIProxyAPI 才能正常使用 最新版的 codex CLI, 而一些新特性比如/goal斜杠命令只能在最新版的codex CLI 中才支持。
还好厂内的同学给我推荐了CLIProxyAPI, 解决了最近一直困扰我的问题。
前提
- CLIProxyAPI 已启动(参见第一部分)
- 代理运行在
http://127.0.0.1:8317
配置文件

我以厂内的大模型服务为例,演示如何使用CLIProxyAPI的代理服务配置codex。
编辑 ~/.codex/config.toml:
1 | model_provider = "oneapi" |
配置项说明
顶层配置
| 配置项 | 值 | 说明 |
|---|---|---|
model_provider |
"oneapi" |
使用下方 [model_providers.oneapi] 定义的 provider |
model |
"comate/deepseek-v4-pro" |
默认模型,可随时通过 --model 切换 |
disable_response_storage |
true |
不在 OpenAI 端存储响应(通过代理时无意义) |
model_reasoning_effort |
"xhigh" |
推理努力程度:low / medium / high / xhigh |
model_context_window |
1000000 |
上下文窗口大小(token 数) |
model_auto_compact_token_limit |
900000 |
自动压缩上下文的阈值 |
Provider 配置
| 配置项 | 值 | 说明 |
|---|---|---|
name |
"oneapi" |
provider 名称,需与 model_provider 一致 |
wire_api |
"responses" |
必须设为 responses。这是桥接的核心——让 Codex 发出 Responses API 格式请求,由 CLIProxyAPI 转换为 Chat Completions |
requires_openai_auth |
false |
不需要 OpenAI 官方认证,代理用自己的 api-key |
base_url |
"http://127.0.0.1:8317/v1" |
指向本地 CLIProxyAPI 代理地址 |
环境变量
Codex 需要 API key 做认证,值需与 CLIProxyAPI 的 config.yaml 中 api-keys 列表里的某一项一致:
1 | echo 'export OPENAI_API_KEY="sk-codex-proxy"' >> ~/.zshrc |
或者配置 ~/.codex/auth.json:
1 | { |
切换模型
临时切换(单次会话):
1 | codex --model deepseek-v4-flash |
永久切换:修改 ~/.codex/config.toml 中的 model 字段,例如:
1 | model = "glm-direct/glm-5.1" |
常见问题

Q: Codex 报 model not found?
A: 检查 CLIProxyAPI 的 config.yaml 中是否为该模型配置了 alias,且 alias 与 Codex 传入的 --model 参数一致。
Q: 两个 provider 有同名 alias 怎么办?
A: 使用 prefix 前缀消歧:comate/glm-5.1 vs glm-direct/glm-5.1。或者给其中一个换一个不同的 alias。
Q: Codex 连接代理报认证错误?
A: 确保 config.toml 中 requires_openai_auth = false,并设置环境变量 export OPENAI_API_KEY="sk-codex-proxy"。
Q: wire_api 设为 chat 还是用 responses?
A: 必须设为 "responses"。CLIProxyAPI 的工作方式就是接收 Responses API 请求再转为 Chat Completions,如果 Codex 直接发 Chat Completions 格式就不需要这个代理了。
Q: 如何开启调试日志?
A: 将 CLIProxyAPI 的 config.yaml 中 debug 改为 true,代理会自动热加载。
Q: 如何通过代理访问外网 API?
A: 在 CLIProxyAPI 的 config.yaml 中设置 proxy-url: "socks5://127.0.0.1:1080",或在单个 api-key-entry 上设置 proxy-url。
Q: 配置修改后需要重启吗?
A: CLIProxyAPI 的 config.yaml 修改后自动热加载,无需重启。Codex 的 config.toml 修改后下次启动 Codex 生效。
start.sh
1 | #!/bin/bash |
