1. 为什么国内开发者开始用 Codex CLI 替代 Claude Code
Claude Code 在命令行 AI 编程这块确实立了个标杆,但用过的人都知道两个现实问题:一是账号和网络门槛,二是额度消耗起来心里没底。我身边不少朋友一开始都是 Claude Code 的重度用户,后来慢慢转向 Codex CLI,原因很直接——OpenAI 把 GPT-5 塞进了命令行工具里,而且 Codex CLI 是开源的,配置自由度更高。
Codex CLI 是什么?简单说,它是 OpenAI 推出的代理式编程命令行工具,能读你本地的代码、改文件、跑 shell 命令,交互方式跟 Claude Code 几乎一个路子。你对着终端说“帮我把这个模块的重试逻辑抽出来”,它就去读文件、给 diff、等你批准后落盘。适合谁?适合那些已经在用命令行工作流、想让 AI 直接操作本地仓库、又不想被单一平台绑死的开发者。
它和 Claude Code 的核心差异在于模型侧。Codex CLI 默认走 GPT-5,推理和代码生成能力在复杂重构任务上表现很稳。但国内直连 OpenAI 官方 API 一直是个麻烦事,所以真正的落地路径是:Codex CLI + 一个国内可用的 OpenAI 兼容端点。这篇就按这个思路,从安装、auth.json 配置、Base URL 改到 TaoToken,一路打通到 curl 验证和报错排查,目标是一次跑通。
我试过在 Windows 和 macOS 上各跑一遍,踩的坑不太一样,下面会把两边都覆盖到。你跟着做,基本能在半小时内让codex命令在你的终端里跑起来 GPT-5。
2. TaoToken 前置准备:拿 Key、认端点、配环境
在动 Codex CLI 之前,得先把“后端”准备好。Codex CLI 本身只是个壳,它需要三个东西才能工作:一个 API Key、一个 Base URL、一个 Model ID。这三件套缺一不可,后面 auth.json 和 settings 里写的也是它们。
TaoToken 在这里扮演的角色是 OpenAI 兼容的 API 接入层。你注册后拿到 Key,把 Base URL 指向它的端点,Codex CLI 就以为自己在跟 OpenAI 官方说话,实际上请求走的是 TaoToken 的通道。国内直连可用,不需要额外折腾网络。
具体操作:打开官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,注册登录后进控制台。左侧菜单找 API Keys,新建一个令牌。额度建议先设个适中值,比如 10 美元等值,跑通了再调。创建完把sk-开头的 Key 复制下来,这个只显示一次,丢了就得重建。
端点地址记两个:
- Base URL:
https://taotoken.net/api(注意这个不带 UTM,配置里就写这个) - 模型对话入口:https://taotoken.net/api?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite
Model ID 这块,Codex CLI 默认用gpt-5,你也可以在命令里用--model指定别的。TaoToken 的模型列表在文档里有,接入文档地址是 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite ,建议先扫一眼确认gpt-5这个 ID 可用。
环境变量先配好,后面 auth.json 可以覆盖它,但留着当兜底没坏处。Windows CMD:
setx OPENAI_API_KEY "sk-你的TaoToken密钥" setx OPENAI_API_BASE "https://taotoken.net/api"macOS/Linux 写进~/.zshrc或~/.bashrc:
export OPENAI_API_KEY="sk-你的TaoToken密钥" export OPENAI_API_BASE="https://taotoken.net/api"配完记得重开终端,或者source一下。验证环境变量:
echo $OPENAI_API_KEY echo $OPENAI_API_BASEWindows 上用echo %OPENAI_API_KEY%。如果输出是空的,说明 setx 没生效,重开终端再试。
这里有个细节:Codex CLI 读配置的优先级是 auth.json > 环境变量。所以如果你后面 auth.json 写错了,环境变量也救不了你。建议先把环境变量配好,再写 auth.json,两边一致最稳。
3. 可复制配置:auth.json 与 settings 片段
这一步是核心。Codex CLI 的配置文件默认在~/.codex/目录下,Windows 是C:\Users\你的用户名\.codex\。里面有两个关键文件:auth.json和config.toml(有些版本叫 settings,逻辑一样)。
先建目录:
mkdir -p ~/.codexWindows PowerShell:
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.codex"然后写auth.json。这个文件管认证,格式是 JSON:
{ "OPENAI_API_KEY": "sk-你的TaoToken密钥", "OPENAI_BASE_URL": "https://taotoken.net/api" }注意字段名。有些版本 Codex CLI 认OPENAI_API_KEY和OPENAI_BASE_URL,有些认api_key和base_url。实测下来,较新版本(0.2x 以后)用大写这套更稳。如果你写完启动报 401,先检查这里字段名对不对。
再写config.toml,管模型和审批模式:
model = "gpt-5" provider = "openai" [providers.openai] base_url = "https://taotoken.net/api" api_key_env = "OPENAI_API_KEY" [approval] mode = "suggest"这个 TOML 里base_url和api_key_env是关键。api_key_env指向环境变量名,Codex CLI 会去读OPENAI_API_KEY的值。如果你不想用环境变量,也可以直接在 auth.json 里写死 Key,但 TOML 里就别再写api_key_env了,避免冲突。
三件套对照表,方便你核对:
| 配置项 | 值 | 写在哪 |
|---|---|---|
| Base URL | https://taotoken.net/api | auth.json 的 OPENAI_BASE_URL / config.toml 的 base_url |
| API Key | sk-你的TaoToken密钥 | auth.json 的 OPENAI_API_KEY / 环境变量 |
| Model ID | gpt-5 | config.toml 的 model / 命令行 --model |
写完检查一下文件编码。Windows 上用记事本存 auth.json 容易带 BOM,导致解析失败。建议用 VS Code 或 PowerShell 的Set-Content -Encoding utf8NoBOM来写。
@' { "OPENAI_API_KEY": "sk-你的TaoToken密钥", "OPENAI_BASE_URL": "https://taotoken.net/api" } '@ | Set-Content -Path "$env:USERPROFILE\.codex\auth.json" -Encoding utf8NoBOMmacOS/Linux 用 heredoc:
cat > ~/.codex/auth.json <<'EOF' { "OPENAI_API_KEY": "sk-你的TaoToken密钥", "OPENAI_BASE_URL": "https://taotoken.net/api" } EOF配完这两个文件,Codex CLI 启动时就会自动读。如果你之前配过环境变量,现在 auth.json 会覆盖它,两边保持一致就行。
4. 验证请求:curl 打通与 codex 启动实测
配置写完别急着跑 codex,先用 curl 验证 TaoToken 端点通不通。这一步能快速定位是网络问题还是配置问题。
curl -s https://taotoken.net/api/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer sk-你的TaoToken密钥" \ -d '{ "model": "gpt-5", "messages": [{"role": "user", "content": "回复一个字:通"}], "max_tokens": 10 }'如果返回类似{"choices":[{"message":{"content":"通"}}]}的结构,说明 Key、端点、模型 ID 三件套都对。如果返回 401,看下面排错章节。
curl 通了之后,装 Codex CLI。需要 Node.js v22 或更高:
node -v npm -v版本不够就去 Node.js 官网下新的。然后全局安装:
npm install -g @openai/codex验证:
codex --version能输出版本号就装好了。接着启动:
codex默认会读~/.codex/config.toml里的 model,也就是gpt-5。进去后你会看到一个交互式终端界面,直接输入自然语言指令,比如“列出当前目录的文件并解释每个文件的作用”。它会读文件、给建议,等你批准。
指定模型启动:
codex --model "gpt-5"三种审批模式对应命令:
codex # suggest 模式,默认,读文件+提议,需手动批准 codex --auto-edit # 自动编辑,写文件不用批,跑 shell 前要批 codex --full-auto # 完全自动,沙盒内自主读写执行实测下来,日常重构用--auto-edit最顺手,既不用每次点批准,又能在跑危险命令前拦一下。--full-auto适合修构建、跑测试这种长任务,但建议在 git 干净的工作区里用,方便回滚。
成功跑通的标志:你在 codex 里输入“帮我在当前目录建一个 hello.py,打印 hello”,它给出 diff,你批准后文件落盘,python hello.py能跑出结果。到这一步,命令行 AI 编程工作流就通了。
5. 常见报错排查:401、local proxy failed、reading choices
配置过程中最容易卡在几个报错上,我按实际遇到的频率排一下。
401 Unauthorized。这个最常见,九成是 Key 或 Base URL 的问题。先 curl 验证 Key 本身有没有效,如果 curl 也 401,说明 Key 错了或者被禁用了,去 TaoToken 控制台重新建一个。如果 curl 通了但 codex 报 401,那就是 auth.json 字段名不对,检查是不是写成了api_key而不是OPENAI_API_KEY。还有一种情况是 auth.json 带了 BOM,用xxd ~/.codex/auth.json | head -1看开头有没有efbbbf,有就重写。
local proxy failed。这个报错通常出现在你之前配过系统代理,Codex CLI 尝试走代理但代理没起来。解决方法是清掉代理环境变量:
unset HTTP_PROXY unset HTTPS_PROXY unset ALL_PROXYWindows 上检查set | findstr -i proxy,有就set HTTP_PROXY=清掉。TaoToken 是国内直连,不需要走任何代理,清干净反而更稳。
reading choices 相关报错。完整报错一般是error reading choices: unexpected end of JSON input或者reading choices: invalid character。这说明请求发出去了,但返回的不是标准 OpenAI 格式。原因通常是 Base URL 写错了,比如写成了https://taotoken.net/api/v1而 Codex CLI 自己会拼/v1,结果变成/api/v1/v1/chat/completions。正确写法就是https://taotoken.net/api,让 CLI 自己拼路径。检查 config.toml 里的base_url和 auth.json 里的OPENAI_BASE_URL是不是都写的这个。
OAuth 相关报错。如果你之前登录过 OpenAI 官方账号,Codex CLI 可能缓存了 OAuth token,优先用它而不是你的 API Key。清掉缓存:
rm -rf ~/.codex/auth.json rm -rf ~/.codex/sessions然后重新写 auth.json。Windows 上删%USERPROFILE%\.codex\下的 auth.json 和 sessions 目录。
模型不存在报错。报错类似model gpt-5 not found。去 TaoToken 文档确认模型 ID 拼写,有些平台写gpt-5,有些写gpt-5-turbo。用 curl 列一下可用模型:
curl -s https://taotoken.net/api/v1/models \ -H "Authorization: Bearer sk-你的TaoToken密钥"返回列表里找gpt-5,有就说明 ID 对,没有就换列表里的 ID。
排错顺序建议:先 curl 验证端点,再检查 auth.json 字段和编码,最后看 config.toml 的 base_url 有没有多拼路径。这三步能解决 90% 的问题。
6. 长期编码与 Agent 工作流:把 Codex CLI 用顺手
跑通只是开始,真正提升效率的是把它嵌进日常流程。Codex CLI 的定位是 agentic coding,意思是它不只是补全代码,而是能自主完成多步任务。用顺了之后,重构、写测试、修 bug 这些重复性工作可以大量交给它。
几个实用技巧。第一,在 git 仓库里用--full-auto前先git status确认工作区干净,这样它改完你能一眼看出 diff,不满意直接git checkout .回滚。第二,把常用指令写成 alias,比如:
alias cx='codex --auto-edit' alias cxf='codex --full-auto'第三,Codex CLI 支持截图和图表输入,遇到 UI 问题可以直接贴图让它分析。第四,长任务用--full-auto时,建议在独立分支上跑,跑完 review 再 merge。
如果你需要更稳定的长期编码额度,TaoToken 的 Coding Plan 值得看一下:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。它针对高频编码场景做了额度优化,比按量计费更适合每天跑 Codex CLI 的人。模型对话入口在 https://taotoken.net/api?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite ,API Keys 管理在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite ,接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。
最后说个实际经验:Codex CLI 和 Claude Code 不是非此即彼。我现在的做法是,复杂重构和需要长上下文推理的任务用 Codex CLI 走 GPT-5,快速补全和轻量编辑用 Claude Code,两边都配好,按任务切换。关键是 Base URL、Key、Model ID 这三件套在每个工具里都写对,剩下的就是熟练度问题。你把上面 auth.json 和 config.toml 配好,curl 验证通过,codex 能跑起来,这套工作流就算立住了。