ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Codex 完整教程中文文档:从 auth.json 到 Base URL 改到 TaoToken 的配置实录

Codex 完整教程中文文档:从 auth.json 到 Base URL 改到 TaoToken 的配置实录 1. 为什么 Codex 用户需要关心 auth.json 和 Base URLCodex 是 OpenAI 推出的 AI 编程工具支持在终端、IDE 和桌面应用中使用能围绕本地项目目录完成文件创建、代码编辑、命令执行等任务。它的定位不是简单的代码补全而是一个可以操作真实文件的编程 Agent。适合谁用独立开发者、需要快速搭建原型的团队、以及想把 AI 编程能力接入统一 API 通道的工程师。但很多中文用户在配置 Codex CLI 时会卡在同一个地方auth.json 到底怎么写Base URL 改到哪里尤其是当你希望把 Codex 的请求统一走一个 API 通道时这两处配置就是关键。我实测下来Codex CLI 的认证配置集中在~/.codex/auth.json这个文件里而 API 端点则通过~/.codex/config.toml中的base_url字段控制。只要把这两处改对Codex 就能通过 TaoToken 的统一 Key 和 API 通道正常发起请求。这篇教程会交付三样东西一份可直接复制的 auth.json 字段模板、一个 Base URL 填写示例、以及一次完整的请求验证动作。你跟着做完就能确认配置是否生效。在开始之前先明确一个前提Codex CLI 需要 Node.js 18 以上环境。你可以用node -v检查版本。如果还没装 Codex CLI先执行npm install -g openai/codex安装完成后codex --version能输出版本号就说明 CLI 已经就位。接下来进入配置环节。2. TaoToken 前置准备拿到 Key 和 API 地址在改 auth.json 之前你需要先准备好两样东西一个可用的 API Key以及确认 API 端点地址。TaoToken 的 API 地址是https://taotoken.net/api注意这个地址不带任何路径后缀Codex 会自动在其后拼接/v1/responses或/v1/chat/completions等端点。如果你在 Base URL 里多写了/v1反而会导致 404。接下来去 TaoToken 控制台创建一个 API Key。访问 API Keys 管理页面https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite登录后点击创建新 Key复制生成的字符串。这个 Key 通常以sk-开头后面跟一长串字符。把它保存到安全的地方因为页面关闭后就不会再完整显示。关于模型选择TaoToken 支持多种模型 ID。在 Codex 场景下你需要确认自己要用哪个模型。常见的模型 ID 包括gpt-4o、gpt-4o-mini、o3-mini等。具体可用列表可以在模型对话页面查看https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite如果你打算长期用 Codex 做编码任务建议关注 Coding Plan 页面那里有适合高频调用的方案https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite准备好 Key 和模型 ID 之后就可以进入配置文件环节了。这里要提醒一点Codex 的 auth.json 和 config.toml 是两个独立文件前者管认证后者管端点和模型。两处都要改缺一不可。3. 可复制配置auth.json 字段模板与 config.toml 写法这一节是整篇教程的核心。我会给出完整的 auth.json 模板和 config.toml 配置片段你直接复制修改即可。3.1 auth.json 完整字段模板auth.json 的路径是~/.codex/auth.json。如果这个文件不存在手动创建即可。在 macOS/Linux 下mkdir -p ~/.codex touch ~/.codex/auth.json然后用编辑器打开写入以下内容{ OPENAI_API_KEY: sk-你的TaoToken密钥, OPENAI_BASE_URL: https://taotoken.net/api, OPENAI_ORG_ID: , OPENAI_PROJECT_ID: }逐字段说明OPENAI_API_KEY填入你在 TaoToken 控制台创建的 Key。注意不要加引号以外的空格也不要换行。OPENAI_BASE_URL固定填https://taotoken.net/api。这是 Codex 发起请求的根地址。OPENAI_ORG_ID和OPENAI_PROJECT_ID留空字符串即可。TaoToken 不依赖这两个字段做路由但 Codex 读取配置时如果字段缺失可能报解析错误所以保留空值更稳妥。保存后建议用cat ~/.codex/auth.json确认内容无误。特别注意 JSON 格式最后一个字段后面不能有逗号所有字符串必须用双引号。3.2 config.toml 配置片段config.toml 的路径是~/.codex/config.toml。这个文件控制模型选择、推理强度、审批模式等。最小可用配置如下model gpt-4o model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key OPENAI_API_KEY [profiles.default] model gpt-4o approval_policy on-request这里有几个关键点model_provider指向taotoken和下面[model_providers.taotoken]段名对应。base_url同样填https://taotoken.net/api。env_key告诉 Codex 从环境变量OPENAI_API_KEY读取密钥而 auth.json 里的OPENAI_API_KEY会被自动加载为环境变量。approval_policy建议先用on-request这样 Codex 在执行命令前会询问你。等你熟悉了再考虑放宽。如果你用的是 Codex CLI 的较新版本可能还需要在 config.toml 里显式指定wire_api[model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key OPENAI_API_KEY wire_api responseswire_api的值取决于你用的模型和 Codex 版本。如果请求报 404尝试改成chat再试。3.3 环境变量方式可选除了 auth.json你也可以通过环境变量直接注入export OPENAI_API_KEYsk-你的TaoToken密钥 export OPENAI_BASE_URLhttps://taotoken.net/api这种方式适合临时测试但重启终端后会失效。长期使用还是建议写进 auth.json。配置完成后用codex config get或codex --help确认 CLI 能正常读取配置。如果报配置文件解析错误优先检查 TOML 的段名和引号是否匹配。4. 验证请求发一次真实调用确认配置生效配置文件改完不代表生效必须发一次真实请求来验证。这一节我会给出完整的验证步骤和预期结果。4.1 用 codex exec 发一次非交互请求Codex CLI 支持exec子命令可以直接执行一次性任务。在终端运行codex exec 用一句话解释什么是递归如果配置正确你会看到 Codex 输出一段关于递归的解释。同时终端会显示请求的模型和 token 消耗。更直接的验证方式是让它做一个文件操作mkdir -p ~/codex-test cd ~/codex-test codex exec 创建一个 hello.py内容为打印 hello world执行后检查目录ls ~/codex-test cat ~/codex-test/hello.py如果hello.py存在且内容正确说明 Codex 已经通过 TaoToken 的 API 通道完成了文件创建。4.2 用 curl 直接验证 API 端点如果你想绕过 Codex 单独确认 TaoToken 的 API 是否可达可以用 curlcurl -s https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的TaoToken密钥 \ -H Content-Type: application/json \ -d { model: gpt-4o, messages: [{role: user, content: 回复OK}], max_tokens: 10 }预期返回一个 JSON包含choices数组其中message.content为OK或类似内容。如果返回 401说明 Key 无效如果返回 404说明 Base URL 路径不对。4.3 检查 Codex 日志Codex CLI 会在~/.codex/log/下写日志。如果请求失败查看最新日志ls -lt ~/.codex/log/ | head -5 tail -50 ~/.codex/log/最新日志文件日志里会显示实际请求的 URL、HTTP 状态码和错误信息。常见的成功日志会包含200 OK和response received。验证通过后你就可以正常使用 Codex 了。建议先跑几个简单任务确认文件读写、命令执行都正常再逐步加大任务复杂度。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth配置过程中最容易遇到四类报错。这一节逐个拆解原因和修复方法。5.1 401 Unauthorized报错原文通常是Error: 401 Unauthorized {error:{message:Invalid API key,type:invalid_request_error}}原因auth.json 里的OPENAI_API_KEY填错了或者 Key 已过期/被删除。修复去 TaoToken 控制台重新创建一个 Key替换 auth.json 中的值。注意不要有多余空格或换行。可以用echo $OPENAI_API_KEY | wc -c检查长度是否合理。5.2 local proxy failed报错原文Error: local proxy failed: dial tcp 127.0.0.1:xxxx: connect: connection refused原因Codex 尝试连接本地代理端口但代理没启动。这通常是因为环境变量里残留了HTTP_PROXY或HTTPS_PROXY设置。修复检查并清除代理环境变量unset HTTP_PROXY unset HTTPS_PROXY unset ALL_PROXY然后重新运行 codex。如果问题依旧检查~/.codex/config.toml里是否误写了 proxy 相关字段。5.3 reading choices 报错报错原文Error: reading choices: unexpected end of JSON input原因API 返回了非 JSON 内容通常是 Base URL 写错导致请求打到了错误端点。比如把https://taotoken.net/api写成了https://taotoken.net/api/v1Codex 再拼接/v1/responses就变成了/api/v1/v1/responses返回 404 HTML 页面。修复确认 auth.json 和 config.toml 里的base_url都是https://taotoken.net/api不带/v1后缀。5.4 OAuth 相关报错报错原文Error: OAuth token exchange failed原因Codex 尝试走 OpenAI 官方 OAuth 登录流程而不是用 API Key。这通常发生在 auth.json 格式不对Codex 回退到了默认认证方式。修复确认 auth.json 是合法的 JSON且OPENAI_API_KEY字段存在。如果文件里有tokens或oauth相关字段删掉它们。auth.json 只需要保留 API Key 方式。如果以上四类报错都排除了但请求仍然失败建议用第 4.2 节的 curl 命令单独测试 API 端点。curl 能通说明 TaoToken 侧没问题问题在 Codex 配置curl 不通说明 Key 或端点地址有误。另外如果你在 Codex 里配置了 MCP 服务注意 MCP 的连接配置和 auth.json 是独立的。MCP 的报错不会影响主请求但可能导致部分工具不可用。排查时先禁用 MCP 再测试。6. 接入文档与后续动作配置验证通过后建议把接入文档收藏起来后续换模型或调整参数时会用到https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite如果你需要管理多个 Key 或查看用量控制台入口https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite想快速测试不同模型的效果可以用模型对话页面https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite长期用 Codex 做编码任务的话Coding Plan 页面有更详细的方案说明https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite最后分享一个实用技巧把 auth.json 和 config.toml 加入你的 dotfiles 仓库换机器时直接同步。但注意 auth.json 里有 Key建议用环境变量注入的方式管理敏感信息或者用git-secret之类的工具加密后再提交。配置一次后续所有项目都能复用同一套 API 通道省去重复填 Key 的麻烦。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进