ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

把 Codex auth.json 改到 TaoToken:接入 DeepSeek 的配置与验证

把 Codex auth.json 改到 TaoToken:接入 DeepSeek 的配置与验证 1. 为什么要在 VSCode 里把 Codex 的 auth.json 改到 TaoTokenCodex 是 OpenAI 推出的终端 AI 编程工具能在 VSCode 里直接读代码、改文件、跑命令很多人拿它当 Claude Code 的平替。但它默认走 OpenAI 官方通道模型选择受限账单也不便宜。DeepSeek 的代码能力这两年进步很快价格又低所以「Codex 接 DeepSeek」成了不少人的刚需。问题在于Codex 的鉴权和模型路由都写死在auth.json里直接改官方文件容易在升级后被覆盖而且 DeepSeek 的接口协议和 OpenAI 并不完全一致硬填 Base URL 经常报 401 或者reading choices之类的错。我试过直接改环境变量结果 Codex 启动时还是读本地缓存白折腾半天。TaoToken 在这里扮演的是统一 Key 和 API 通道的角色。你只需要在 TaoToken 拿一个 Key把 Codex 的auth.json指向 TaoToken 的 Base URL模型 ID 填 DeepSeek 对应的名称Codex 就会把请求发到 TaoToken由它转发到 DeepSeek。这样做的好处是一个 Key 管多个模型切换模型不用改代码VSCode 里的 Codex 插件和终端 Codex 共用同一份配置。这篇教程面向的是已经在 VSCode 里装了 Codex、想换成 DeepSeek 但被auth.json卡住的人。我会给出可复制的auth.json字段、环境变量写法、Base URL 填写方式并用一次最小请求验证鉴权和模型返回。全程不需要动 Codex 的源码也不涉及任何网络工具就是纯配置。先说清楚 Codex 的配置文件在哪。Windows 下通常是C:\Users\你的用户名\.codex\auth.jsonmacOS 和 Linux 是~/.codex/auth.json。这个文件里存的是 API Key 和可选的 Base URL。Codex 启动时会优先读这个文件其次才是环境变量。所以改auth.json是最稳的方式。另外提醒一句Codex 和 Claude Code 的配置是分开的。Claude Code 读的是~/.claude/settings.jsonCodex 读的是~/.codex/auth.json。如果你两个都想接 DeepSeek需要分别配。这篇只讲 CodexClaude Code 的配法在最后一节简单带一下。2. TaoToken 前置准备拿 Key、认通道、装 Codex在改auth.json之前你得先有一个能用的 TaoToken Key。打开 https://taotoken.net/api 注册登录后进控制台在 API Keys 页面新建一个 Key。这个 Key 只显示一次复制下来存好后面填进auth.json的就是它。TaoToken 的 Base URL 是https://taotoken.net/api注意后面不要加/v1Codex 会自己拼路径。如果你在别的工具里看到有人写https://taotoken.net/api/v1那是给 OpenAI SDK 用的Codex 的auth.json里填不带/v1的版本更稳。模型 ID 这块要留意。DeepSeek 在 TaoToken 上的模型名通常是deepseek-chat和deepseek-coder具体以你控制台里模型列表显示的为准。Codex 默认会请求gpt-4o之类的名字所以你要么在auth.json里指定模型要么在 Codex 启动参数里加--model deepseek-chat。我建议直接在配置里写死省得每次敲命令。Codex 本身的安装很简单。VSCode 里搜 Codex 插件装上或者用 npm 全局装终端版npm install -g openai/codex装完后先别急着登录官方账号因为我们要走 TaoToken。如果你已经登录过官方先退出否则auth.json里的旧 token 会干扰。退出命令codex logout然后确认一下 Codex 版本太老的版本可能不认自定义 Base URLcodex --version建议用 0.2.x 以上的版本。如果版本太低升级一下npm update -g openai/codex准备工作就这三样TaoToken Key、Base URL、Codex 装好。接下来直接改auth.json。3. 可复制的 auth.json 配置Base URL、Key、Model ID 三件套找到~/.codex/auth.json如果文件不存在就手动建一个。用编辑器打开填入下面的内容。这是一个完整的、可直接复制的 JSON 片段{ OPENAI_API_KEY: sk-你的TaoTokenKey, OPENAI_BASE_URL: https://taotoken.net/api, model: deepseek-chat, provider: openai }逐字段说明。OPENAI_API_KEY填你在 TaoToken 控制台拿到的 Key注意保留sk-前缀如果你的 Key 没有前缀就按实际填。OPENAI_BASE_URL填https://taotoken.net/api这是 TaoToken 的统一入口。model填deepseek-chat如果你要写代码更强一点可以换deepseek-coder。provider保持openai因为 Codex 内部走的是 OpenAI 兼容协议TaoToken 会做转换。如果你不想把 Key 写进文件可以用环境变量。在auth.json里只留 Base URL 和 modelKey 通过环境变量传{ OPENAI_BASE_URL: https://taotoken.net/api, model: deepseek-chat, provider: openai }然后在 shell 里设置export OPENAI_API_KEYsk-你的TaoTokenKeyWindows PowerShell 用$env:OPENAI_API_KEYsk-你的TaoTokenKey注意环境变量的优先级低于auth.json如果两个都写了Codex 会用文件里的。所以要么全写文件要么文件里不写 Key。还有一个坑Codex 有些版本会读~/.codex/config.toml而不是auth.json。如果你改完auth.json没生效检查一下有没有config.toml有的话在里面加[model] provider openai name deepseek-chat [provider.openai] base_url https://taotoken.net/api api_key sk-你的TaoTokenKeyTOML 和 JSON 二选一即可不要同时写否则行为不确定。我实测下来新版 Codex 更认config.toml老版认auth.json。你可以两个都建但内容保持一致。配置写完保存完全退出 VSCode 再重开让 Codex 重新加载配置。这一步很关键Codex 插件会缓存配置不重启不生效。4. 验证请求一次最小调用确认鉴权和 DeepSeek 返回配置改完后先别在 VSCode 里点来点去用终端跑一次最小请求最快。打开终端输入codex exec print hello如果配置正确你会看到 Codex 把请求发到 TaoToken然后返回 DeepSeek 的响应。正常输出类似hello如果返回的是模型生成的代码或文字说明鉴权和路由都通了。这一步验证的是三件事Key 有效、Base URL 正确、模型 ID 被识别。想更直观地看请求细节可以加--verbosecodex exec --verbose print hello你会看到请求的 endpoint 是https://taotoken.net/api/chat/completions模型是deepseek-chat。如果 endpoint 里出现了api.openai.com说明auth.json没被读到回去检查文件路径和格式。再验证一下模型确实换了。跑codex exec 用一句话说明你是什么模型DeepSeek 通常会回答自己是 DeepSeek 系列。如果它说自己是 GPT-4那说明请求还是走了官方通道Base URL 没生效。VSCode 里的验证也简单。打开 Codex 面板输入一句「帮我写一个 Python 的快速排序」看它返回的内容。如果面板报错先看 VSCode 的输出面板Codex 的日志会打印具体错误。常见的是401 Unauthorized那就是 Key 填错了如果是model not found就是模型 ID 写错了。验证通过后你就可以正常用 Codex 写代码了。DeepSeek 的响应速度比官方 GPT-4 快不少尤其是代码补全场景延迟低很多。Token 消耗在 TaoToken 控制台能实时看到方便你控制成本。5. 常见报错排查401、local proxy failed、reading choices、OAuth配置过程中最容易撞的几个错我按出现频率排一下。401 Unauthorized。这是最常见的九成是 Key 问题。先确认auth.json里的 Key 和 TaoToken 控制台里的一致注意有没有多余空格。然后确认 Base URL 没写错https://taotoken.net/api后面不要加/v1。如果还报 401去 TaoToken 控制台看这个 Key 是不是被禁用了或者额度用完了。local proxy failed。这个错通常出现在你之前配过本地代理工具的情况下。Codex 会读系统代理设置如果代理指向了一个不存在的端口就会报这个。解决办法是清掉代理环境变量unset HTTP_PROXY unset HTTPS_PROXYWindows 下Remove-Item Env:HTTP_PROXY Remove-Item Env:HTTPS_PROXY然后重启 VSCode。注意这里说的是清掉系统里残留的代理配置不是让你去配代理方向别搞反。reading choices 报错。完整报错一般是error reading choices: unexpected end of JSON input或者cannot read property choices of undefined。这说明 TaoToken 返回的响应格式和 Codex 预期的不一致。原因通常是模型 ID 填错了比如填了deepseek而不是deepseek-chatTaoToken 找不到模型就返回了错误结构。回去检查model字段对照 TaoToken 控制台的模型列表填。OAuth 相关报错。如果你之前登录过 Codex 官方账号auth.json里可能残留了 OAuth token。Codex 启动时会优先用 OAuth导致你的 API Key 配置被忽略。解决办法是删掉auth.json里的tokens字段或者直接跑codex logout清掉登录态然后重新填 Key。还有一个不报错但很烦的问题配置改了但没生效。这通常是 VSCode 没完全退出。Codex 插件跑在 VSCode 的扩展宿主进程里关窗口不等于退出进程。你要在任务管理器里确认 Codex 相关进程都结束了再重开。macOS 下用CmdQ完全退出不是点红叉。排查顺序建议先看终端codex exec能不能通通了再去看 VSCode 插件。终端能通说明配置没问题VSCode 不通就是插件缓存或者版本问题。终端不通就回去查auth.json和 Key。6. 后续怎么用模型对话、Coding Plan 和 Claude Code 的配法Codex 接上 DeepSeek 之后日常写代码、改 bug、生成测试都能用。如果你想先试试模型效果再决定长期用哪个可以去 https://taotoken.net/api 的模型对话页面直接和 DeepSeek 聊几句看看它的代码风格合不合你胃口。这个页面不用配任何东西登录就能用。如果你打算长期在 VSCode 里用 AI 编程而且经常跑 Agent 类的任务比如让 Codex 自己读整个项目、改多个文件建议看一下 Coding Plan。它比按量计费更适合高频使用具体在 https://taotoken.net/api 的控制台里能看到。我自己的用法是日常小改动走按量大重构或者批量任务走 Coding Plan成本可控。Claude Code 的配法稍微不同。它读的是~/.claude/settings.json在里面加{ apiKey: sk-你的TaoTokenKey, baseUrl: https://taotoken.net/api, model: deepseek-chat, language: chinese }注意 Claude Code 的字段名是apiKey和baseUrl和 Codex 的OPENAI_API_KEY、OPENAI_BASE_URL不一样别混了。改完同样要完全退出 VSCode 再重开。最后说一个实用技巧。如果你同时用 Codex 和 Claude Code可以把 Key 和 Base URL 抽到一个公共文件里用脚本同步到两个配置。这样换 Key 的时候只改一处。不过对大多数人来说手动改两个文件也就一分钟的事没必要上脚本。配置这东西改完能跑通就别再动了。Codex 升级有时候会重置auth.json升级后如果发现又走回官方通道了把备份的配置覆盖回去就行。建议改之前先备份一份原始auth.json省得重装。
RELATED READING

延伸阅读

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