1. Windows 11 上 Codex 接入 DeepSeek 到底卡在哪
如果你最近在 Windows 11 上折腾 Codex,大概率会遇到一个很别扭的情况:Codex 本体装好了,登录界面也进去了,但想让它调用 DeepSeek 模型时,要么找不到填 API Key 的地方,要么填完 Key 之后一直转圈,要么干脆报一个看不懂的认证错误。这个问题的本质是,Codex 默认走的是它自己那套账号体系,而 DeepSeek 是另一套完全独立的 API 体系,两者之间需要一个"翻译层"来对接。
我先把结论说清楚:Codex 是一个命令行 AI 编码工具,它能读你本地的代码文件、执行命令、根据上下文改代码;DeepSeek 是模型服务方,提供 chat 和 coder 两类模型接口。你要做的事情,是让 Codex 把请求发到 DeepSeek 的接口上,而不是发到它默认的地址。中间这个"改地址 + 换 Key"的动作,就是接入的核心。
那 TaoToken 在这里扮演什么角色?它是一个统一 Key 和统一 API 通道的服务。你可以把它理解成一个"接口中转站":你只在 TaoToken 拿一个 Key,然后在 Codex 的配置里把 Base URL 指向 TaoToken 的 API 地址,模型 ID 填 DeepSeek 对应的模型名。这样 Codex 发出的请求会先到 TaoToken,再由 TaoToken 转发到 DeepSeek。好处是你不用在多个平台之间反复切换 Key,一个 Key 就能管多个模型。
适合谁看这篇?三类人:第一类是在 Windows 11 上刚装完 Codex、还没跑通任何模型的新手;第二类是之前用 DeepSeek 官方 Key 直连、但想换成统一通道减少管理成本的人;第三类是遇到 401、连接超时、模型列表读不出来这些报错、想快速定位问题的人。下面我会按"装 Codex → 拿 TaoToken Key → 写 auth.json → 验证请求 → 排错"的顺序,把每一步的命令和配置都给全,你照着敲就行。
需要提前说明一点:Codex 的配置文件和登录方式在不同版本里会有差异,有的版本走auth.json,有的版本走环境变量,还有的版本在首次启动时弹交互式登录。我下面给的配置以auth.json为主,因为这是目前最稳定、最容易复现的方式。如果你的版本界面不太一样,优先找"API 登录"或"自定义 Base URL"这类入口,逻辑是一样的。
2. 前置准备:TaoToken 统一 Key 与 Codex 安装确认
在动配置文件之前,先把两样东西准备好:一个是 TaoToken 的 API Key,一个是确认 Codex 已经正确安装。这两步任何一步出问题,后面都会卡住,所以别跳过。
先说 TaoToken 这边。打开官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,注册登录之后进入控制台。控制台里有一个"API Keys"的入口,点进去创建一个新的 Key。创建的时候会让你起个名字,随便起,比如codex-deepseek,方便以后区分。创建完 Key 会显示一次完整字符串,通常以sk-开头,复制下来存好,这个只显示一次,关掉页面就看不到了。
拿到 Key 之后,你还需要确认两件事:Base URL 和 Model ID。TaoToken 的 API 地址是 https://taotoken.net/api ,注意这里不带任何查询参数,就是纯地址。Model ID 这块,DeepSeek 常用的有deepseek-chat和deepseek-coder两个,前者偏通用对话,后者偏代码补全。你在 Codex 里做编码任务,建议先用deepseek-chat跑通,稳定之后再按需换deepseek-coder。如果你不确定当前有哪些模型可用,可以在控制台的模型列表页看一眼,或者直接用后面验证章节里的命令去拉模型列表。
再说 Codex 安装。Windows 11 上装 Codex 有几种方式,最省事的是用 npm 全局安装。前提是你机器上已经有 Node.js,版本建议 18 以上。打开 PowerShell,先确认版本:
node -v npm -v如果这两条命令能正常输出版本号,说明环境没问题。然后执行安装:
npm install -g @openai/codex装完之后验证一下:
codex --version能打印出版本号就说明装好了。如果你之前装过旧版本,建议先卸载再装,避免新旧配置打架:
npm uninstall -g @openai/codex npm install -g @openai/codex这里有个坑要提醒:有些教程会让你去下载某个网盘里的安装包,那种包来源不明,版本也未必是最新的,还可能夹带别的东西。我建议一律走 npm 官方源安装,干净、可追溯、升级方便。如果你所在网络访问 npm 慢,可以临时切到国内镜像源,但装完之后记得切回来,否则后续拉别的包可能版本对不上。
还有一点,Codex 首次运行时会尝试做一次登录流程。如果你还没配好auth.json,它可能会弹出一个浏览器授权页或者让你输入账号。这时候先别急着登录,直接 Ctrl+C 退出,因为我们接下来要用 API Key 的方式配置,不走账号登录。把这一步的顺序理清楚,能省掉很多来回折腾。
3. 可复制配置:auth.json 与 Base URL 完整片段
这一步是整篇的核心。Codex 读取配置的位置在用户目录下的.codex文件夹里,Windows 11 上完整路径是:
C:\Users\你的用户名\.codex\auth.json如果这个文件夹不存在,手动建一个。然后新建auth.json文件,把下面这段内容复制进去:
{ "OPENAI_API_KEY": "sk-你的TaoToken密钥", "OPENAI_BASE_URL": "https://taotoken.net/api", "model": "deepseek-chat" }三个字段逐个解释。OPENAI_API_KEY填你在 TaoToken 控制台创建的那个 Key,注意保留sk-前缀,不要有多余空格。OPENAI_BASE_URL固定填https://taotoken.net/api,结尾不要加斜杠,加了斜杠有些版本会拼出双斜杠导致 404。model填deepseek-chat,这是 DeepSeek 的通用模型 ID。
除了auth.json,Codex 有些版本还会读一个config.toml,位置在同一个.codex目录下。如果你发现只改auth.json不生效,就再加一个config.toml:
model = "deepseek-chat" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "OPENAI_API_KEY"这段 TOML 的作用是显式声明一个叫taotoken的模型提供方,把它的base_url指向 TaoToken,密钥从环境变量OPENAI_API_KEY读取。env_key这个名字要和你在系统里设置的环境变量名一致。如果你不想用环境变量,也可以直接在auth.json里写死 Key,两种方式选一种即可,不要同时配,否则容易冲突。
说到环境变量,Windows 11 上设置方式有两种。临时设置(只对当前 PowerShell 窗口有效):
$env:OPENAI_API_KEY = "sk-你的TaoToken密钥" $env:OPENAI_BASE_URL = "https://taotoken.net/api"永久设置(写进用户环境变量,重启终端后仍有效):
[System.Environment]::SetEnvironmentVariable("OPENAI_API_KEY", "sk-你的TaoToken密钥", "User") [System.Environment]::SetEnvironmentVariable("OPENAI_BASE_URL", "https://taotoken.net/api", "User")设置完永久变量后,记得关掉当前 PowerShell 重新开一个,否则读不到新值。你可以用echo $env:OPENAI_API_KEY确认一下有没有生效。
这里必须强调"三件套"的概念:Base URL、Key、Model ID,这三样必须同时正确,缺一个都会失败。Base URL 错了会连不上,Key 错了会 401,Model ID 错了会报模型不存在或者读不到 choices。很多人排错时只盯着 Key 看,其实另外两个同样关键。把这三样写进配置之后,先别急着跑复杂任务,下一节我们用一条最小命令验证它到底通没通。
4. 验证请求:最小命令与预期返回
配置写完了,怎么确认真的接上了 DeepSeek?最直接的办法是发一条最小请求,看返回里有没有正常的内容。有两种验证路径,一种是直接用 curl 打 TaoToken 的接口,另一种是让 Codex 跑一个简单任务。两种都做一遍,能帮你把问题范围缩小。
先看 curl 方式。打开 PowerShell,执行:
curl.exe https://taotoken.net/api/v1/chat/completions ` -H "Authorization: Bearer sk-你的TaoToken密钥" ` -H "Content-Type: application/json" ` -d '{\"model\":\"deepseek-chat\",\"messages\":[{\"role\":\"user\",\"content\":\"用一句话说明什么是递归\"}]}'注意 Windows 的 PowerShell 里curl是Invoke-WebRequest的别名,参数格式和 Linux 不一样,所以这里用curl.exe显式调用真正的 curl。反引号是 PowerShell 的换行符。如果你嫌转义麻烦,可以把请求体写到一个body.json文件里,然后用-d "@body.json"引用。
预期返回是一个 JSON,结构大概长这样:
{ "id": "chatcmpl-xxxx", "object": "chat.completion", "model": "deepseek-chat", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "递归是函数调用自身来解决问题的方法……" }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 20, "completion_tokens": 40, "total_tokens": 60 } }只要choices[0].message.content里有正常文字,就说明 Base URL、Key、Model ID 三样全对,通道是通的。如果返回里choices是空数组,或者报reading choices相关错误,那基本是 Model ID 写错了,回去检查model字段。
再看 Codex 方式。在 PowerShell 里进入你的项目目录,然后运行:
codex "解释一下当前目录下 README.md 的内容"如果配置正确,Codex 会读取文件、把内容发给 DeepSeek、再把模型返回的结果打印出来。第一次跑可能会慢几秒,因为要建立连接。看到它输出对 README 的解释,就说明 Codex 已经成功走 TaoToken 通道调用了 DeepSeek。
如果你想让 Codex 做更实际的编码任务,可以试:
codex "给当前目录的 main.py 添加一个读取配置文件的函数"它会先分析文件,再给出修改建议或直接改。这一步能跑通,说明整条链路在生产可用层面没问题了。
验证通过之后,建议你把这条 curl 命令存成一个test.ps1脚本,以后换 Key 或者换模型时先跑一遍,几秒钟就能确认通道状态,比直接开 Codex 试错快得多。这个习惯我在多个项目里都保留着,排障时特别省时间。
5. 常见报错排查:401、local proxy failed、reading choices
接入过程中最容易撞上的就那几个错,我把它们和对应原因列出来,你对着改就行。
401 Unauthorized。这个最直接,就是 Key 不对。可能的原因有:Key 复制时带了空格或换行;Key 已经过期或被删除;auth.json里字段名写错,比如写成了API_KEY而不是OPENAI_API_KEY;环境变量和auth.json同时配了但值不一样,Codex 读到了错的那个。排查方法:先用第 4 节的 curl 命令单独测 Key,如果 curl 也 401,那就是 Key 本身的问题,回 TaoToken 控制台重新创建一个;如果 curl 通了但 Codex 报 401,那就是 Codex 读配置的路径不对,确认auth.json是不是放在C:\Users\你的用户名\.codex\下。
local proxy failed / connection refused。这个通常不是 Key 的问题,而是网络层。可能是 Base URL 写错了,比如漏了/api或者多写了/v1;也可能是本机有别的程序占用了端口,或者系统代理设置干扰了请求。排查方法:先ping taotoken.net看能不能通,再用 curl 直接打接口。如果 curl 能通而 Codex 不通,检查 Codex 有没有读到你设的OPENAI_BASE_URL,有些版本会忽略这个变量,必须写在config.toml里才认。
reading choices / 返回空 choices。这个错误说明请求发出去了、也返回了,但返回体里没有choices字段。最常见原因是 Model ID 写错,比如写成了deepseek而不是deepseek-chat,或者写成了DeepSeek-Chat大小写不对。另一个原因是请求体格式不对,比如messages字段拼错。排查方法:把 Model ID 换成deepseek-chat再试,同时用 curl 打印完整返回体,看error字段里写了什么。
OAuth 相关报错 / 一直弹登录。这说明 Codex 还在走它默认的账号登录流程,没走 API Key 模式。解决办法是确认auth.json存在且格式正确,然后删掉.codex目录下可能存在的credentials.json或 token 缓存文件,重启 Codex。如果它还是弹登录,检查你装的 Codex 版本是不是把 API 模式藏在了启动参数里,试试codex --api或者进设置里找"Use API Key"选项。
模型列表拉不出来。有些版本的 Codex 启动时会先请求/v1/models拉模型列表。如果 TaoToken 这边没开放这个端点,或者你的 Key 没有列表权限,就会卡住。这种情况不用慌,直接在config.toml里写死model = "deepseek-chat",跳过列表拉取步骤即可。
把这几类错误和原因记住,下次再遇到就不会一脸懵。核心思路永远是:先用 curl 隔离出是"通道问题"还是"Codex 配置问题",再针对性修。
6. 长期使用建议与接入入口
跑通之后,如果你打算长期用 Codex + DeepSeek 做日常编码,有几个习惯值得养成。第一,把 Key 和 Base URL 用环境变量管理,不要硬编码在auth.json里,这样换 Key 时只改一处。第二,定期回 TaoToken 控制台看用量,避免 Key 额度用完导致突然报错。第三,模型 ID 别写死一个,deepseek-chat和deepseek-coder按任务切换,通用问答用前者,纯代码补全用后者,效果差别挺明显。
如果你还想验证别的模型是不是也能走通,可以直接用模型对话页面发几条消息试试,确认通道对多模型都生效:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。如果你准备把 Codex 用在长期项目里,或者想接 Agent 类工作流,建议了解一下 Coding Plan,额度和管理方式更适合持续使用:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。
日常管理 Key、查看用量、创建新 Key 都在控制台:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。需要单独管理 Key 列表时走这个入口:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。配置过程中如果对字段含义拿不准,接入文档里有完整的参数说明:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。
最后说个实际经验:Codex 这类工具最怕的不是配一次,而是换环境后配置漂移。我在台式机和笔记本之间同步项目时,会把.codex目录单独备份一份,换机器直接覆盖,省得重新配。另外每次升级 Codex 版本后,先跑一遍第 4 节那条 curl 验证命令,确认通道没被新版本改坏,再开始干活。这个动作花不了半分钟,但能避免你在写代码写到一半时突然发现模型调不通。