Codex CLI
Codex CLI 是 OpenAI 官方推出的命令行编程助手。它支持通过 ~/.codex/config.toml 配置自定义 OpenAI 兼容服务商,把请求路由到 Sakrylle。
- 仓库:https://github.com/openai/codex
- 文档:https://developers.openai.com/codex
- 当前版本:0.133.0(2026-05-21)
前置准备
- 已按官方说明安装 Codex CLI
- 在 Sakrylle 控制台 创建一个 API Key
配置步骤
1. 把 Key 写到环境变量
export SAKRYLLE_API_KEY="<你的 Sakrylle Key>"放进你的 shell 配置(~/.zshrc / ~/.bashrc)让其长期生效。
2. 编辑配置
如果文件不存在就新建一个,加入:
model = "gpt-5.6-sol"
model_provider = "sakrylle"
[model_providers.sakrylle]
name = "Sakrylle API"
base_url = "https://api.sakrylle.com/v1"
env_key = "SAKRYLLE_API_KEY"
wire_api = "responses"字段说明:
model:默认使用的模型名model_provider:顶层指针,指向下面的[model_providers.X]块;不能用openai/ollama/lmstudio等保留名base_url:Sakrylle 的 OpenAI 兼容入口,带/v1env_key:CLI 读取 API Key 的环境变量名wire_api:responses表示走 OpenAI Responses API;如果你想强制走 Chat Completions,可以改成"chat"(Sakrylle 两个端点都支持)
3. 验证
codex进入交互后跑一个简单问题,比如让它解释当前目录的文件结构。
多 profile
如果你既想用 Sakrylle,也保留官方 OpenAI 直连,可以用 profile:
[profiles.sakrylle]
model = "gpt-5.6-sol"
model_provider = "sakrylle"
[profiles.openai]
model = "gpt-5.4"
model_provider = "openai"
[model_providers.sakrylle]
name = "Sakrylle API"
base_url = "https://api.sakrylle.com/v1"
env_key = "SAKRYLLE_API_KEY"
wire_api = "responses"启动时用 codex --profile sakrylle。
远程压缩
Codex 在对话上下文接近窗口上限时会自动执行压缩(compact)——把冗长的历史摘要成一段更短的文本,以腾出空间继续对话。
默认情况下,压缩在本地完成(由 Codex CLI 自身调用当前模型来摘要)。但如果你的网关支持远程压缩,摘要工作会转移到服务端执行,客户端只需发一个请求即可拿回压缩结果——更快、更省 token。
开启远程压缩
要让 Codex 通过 Sakrylle 使用远程压缩,config.toml 中 model_providers 块的 name 必须设为 "OpenAI"(这是 Codex 识别远程压缩能力的信号):
model = "gpt-5.6-sol"
model_provider = "sakrylle"
[model_providers.sakrylle]
name = "OpenAI"
base_url = "https://api.sakrylle.com/v1"
env_key = "SAKRYLLE_API_KEY"
wire_api = "responses"name = "OpenAI" 与 -openai-compact 的关系
当 name 设为 "OpenAI" 时,Codex 在需要压缩时会自动向网关请求 {base_model}-openai-compact 模型(例如 gpt-5.5 → gpt-5.5-openai-compact)。Sakrylle 的 GPT-Pro / GPT-Pro-Special 分组均已支持这些 -openai-compact 变体,价格与对应基础模型一致。
如果网关不提供 -openai-compact 模型(例如你用的不是 Sakrylle,或者该分组未收录),把 name 设为 "OpenAI" 会在压缩时报错。此时应改回自定义名称(如 "Sakrylle API")来走本地压缩。
压缩模型与基础模型的关系
-openai-compact 是 OpenAI 为远程压缩场景定义的模型后缀,它不是独立模型,而是基础模型的压缩专用别名:
| 基础模型 | 压缩模型 |
|---|---|
gpt-5.5 | gpt-5.5-openai-compact |
gpt-5.4 | gpt-5.4-openai-compact |
两个变体的价格完全相同——Sakrylle 不对压缩请求额外收费。
如果你希望压缩时使用其他模型(而非自动匹配),可以在模型名中去掉 -openai-compact 后缀,Codex 会回退到本地压缩。
常见问题
Provider 'openai' is reserved报错:model_providers块名不能用openai,改成sakrylle这种自定义名- 401 / 鉴权失败:检查
SAKRYLLE_API_KEY环境变量是否真的导出来了(echo $SAKRYLLE_API_KEY);以及env_key字段名跟环境变量名要一致 - 404 / model not found:把
model改成 模型与计费 里列出的有效名 - Responses API 报错:把
wire_api改成"chat"试试;如果该模型只支持其中一种 API,Sakrylle 的错误码会告诉你 - 402 余额不足:到 控制台充值
- 压缩时报错 / compact 失败:如果你的
config.toml中name = "OpenAI"但该分组不支持-openai-compact模型,Codex 的远程压缩会失败。把name改成非"OpenAI"的值(如"Sakrylle API")即可回退到本地压缩。详见上方远程压缩章节
