Codex CLI 是 OpenAI 的命令行编程助手。它默认连 OpenAI 官方,这篇教你把它改成连「章鱼烧的小店」,用小店的密钥和额度。全程只需要装一个软件、写两个小文件。还没注册的先看 快速上手。
第一步:安装 Node.js 和 Codex CLI
Codex CLI 用 npm 安装,所以先要有 Node.js 18 或更新的版本。
- 打开终端。Windows 按开始键,输入 PowerShell 回车(建议用 PowerShell,不要用 cmd);macOS 打开「终端」。
- 检查 Node.js:输入 node -v 回车。显示 v18、v20、v22 这类数字就可以。提示「找不到命令」就去 https://nodejs.org 下载 LTS 版安装,装完关掉终端重开。
- 安装 Codex CLI,再看一眼版本号:
npm i -g @openai/codex
codex --version第二条命令能打印出版本号,说明装好了。
第二步:到控制台拿配置
登录 控制台的「API 密钥」页。还没有密钥就点「创建」,分组选 openai 平台的分组,新手推荐「ChatGPT 【稳定分组 超高缓存 高并发 】」(怎么选看 分组说明)。密钥明文只显示一次,先复制存好。
点密钥旁边的「使用」按钮,弹窗选「Codex CLI」标签,上面还能切 Windows / macOS。弹窗会生成两个文件的内容,每块右上角有复制按钮。
第三步:找到 .codex 目录,写两个文件
Codex 的配置放在用户目录下的 .codex 文件夹里:
- Windows:按 Win+R,输入 %USERPROFILE%\.codex 回车。提示找不到,就先到 %USERPROFILE% 里新建一个叫 .codex 的文件夹。
- macOS:在终端运行 mkdir -p ~/.codex,再运行 open ~/.codex 打开它。
在这个目录里新建 config.toml,内容如下(model 用 gpt-6.1-sol 举例,可以换成分组里有的其它模型):
model_provider = "OpenAI"
model = "gpt-6.1-sol"
review_model = "gpt-6.1-sol"
disable_response_storage = true
network_access = "enabled"
windows_wsl_setup_acknowledged = true
[model_providers.OpenAI]
name = "OpenAI"
base_url = "https://api.zyuou.com/v1"
wire_api = "responses"
requires_openai_auth = true
[features]
goals = true几行关键的意思:
- base_url:请求发到小店。写到 /v1 为止,Codex 会自己在后面拼 /responses。
- wire_api = "responses":告诉 Codex 用 OpenAI 的 Responses 接口格式说话。小店的 /v1 两种格式都支持,但 Codex 只认这一种,必须写。
- requires_openai_auth = true:让 Codex 像连官方一样,去 auth.json 里读密钥。所以下面还要写 auth.json。
- model / review_model:平时对话和代码审查用的模型。其它几行照抄即可。
弹窗复制出来的版本可能多一行 model_catalog_url,那是远程模型目录(需要 Codex 0.156.0 以上),留着不影响。
同一目录再新建 auth.json:
{
"OPENAI_API_KEY": "sk-你的密钥"
}第四步:运行 codex 验证
- 重新打开终端,进到任意一个项目文件夹(没有就先 mkdir test 再 cd test)。
- 输入 codex 回车。如果它问是否信任这个目录,选是。
- 随便问一句,比如「用一句话介绍你自己」。有回答就通了。
- 回控制台 「使用记录」页,几秒后能看到这把密钥的一条消费。
常见坑
之前登录过 ChatGPT 账号
Codex 自带的 codex login 会把官方账号的令牌写进同一个 auth.json。它还在的话,你的密钥就不生效。先在终端运行 codex logout,或者直接删掉旧的 auth.json,再按上面重写。
报错对照
Codex 有时只显示状态码数字,比如「last status: 401」。对照下表:
| 状态码 | 小店返回的文案 | 原因和做法 |
|---|---|---|
| 401 | Invalid API key | 密钥抄错、少了字符,或 auth.json 没被读到。重新复制一遍。 |
| 401 | API key is disabled | 这把密钥在控制台被停用了。去 密钥页 看看。 |
| 403 | Insufficient account balance | 余额为 0。先去 充值兑换。 |
| 404 | Model "..." is not supported by any configured account in this group | 模型名拼错,或这个分组没有这个模型。改 config.toml 里的 model,或换分组。 |
| 429 | Concurrency limit exceeded for user, please retry later | 同时发出的请求太多。等几秒再试。 |
WebSocket 模式
弹窗里还有个「Codex CLI (WebSocket)」标签,模板只多两行:[model_providers.OpenAI] 下加 supports_websockets = true,[features] 下加 responses_websockets_v2 = true。新手用普通模式就够了。
还是不行?
先看 常见报错,里面有每个状态码的处理办法。还不行就加 QQ 群 1104498354(备注「新手」),把报错截图和 config.toml 的内容(去掉密钥那一行)发出来,或者直接找客服 QQ 3480261526。