:安装、国内接入 DeepSeek / GPT-6、config.toml 配置与报错排查)
本文所有命令和输出都是 2026-09-28 在 Codex CLI 0.158.0当前最新版上实测的原样结果。网上 4 到 6 月写的教程有几处已经对不上新版了文中会标出来。先说 4 件老教程里没写的事config.toml里写[profiles.xxx]的老写法新版直接报错要改成单独的配置文件第 5 节GPT-6 系列gpt-6-sol / gpt-6-astra / gpt-6-luna已经进了 Codex 自带的模型目录不用再手动补DeepSeek 这类第三方模型还需要补第 3 节接第三方服务商时启动信息里的思考强度显示是none写代码建议手动调高第 4 节出错时会先重试 5 次屏幕上一直刷Reconnecting... 1/5很容易被当成网络问题真正的原因在 5/5 之后那一行第 7 节1. 安装Codex CLI 是一个 npm 包装好 Node.js16 以上就行npm install -g openai/codex codex --version输出codex-cli 0.158.0已经装过的升级也是这一句后面加latestnpm install -g openai/codexlatest2. 国内怎么用接一个 OpenAI 兼容的服务商Codex 不一定要登录 ChatGPT 账号它可以接任何支持 Responses 接口的 OpenAI 兼容服务商。国内用法就三步拿到服务商的 API key 和接口地址 → 写进配置文件 → 用 key 登录。2.1 配置文件在哪macOS / Linux~/.codex/config.tomlWindowsC:\Users\你的用户名\.codex\config.toml没有这个文件就新建一个。2.2 写配置本文以 wanapis 为例换成你用的服务商地址即可model_provider wanapis model gpt-6-sol [model_providers.wanapis] name wanapis wire_api responses requires_openai_auth true base_url https://api.wanapis.com/v1每个字段是什么意思字段说明model_provider默认用哪个服务商对应下面[model_providers.xxx]里的 xxxmodel默认模型名字要和服务商那边一字不差wire_api必须写responses。新版已经不支持chat写了配置直接加载失败requires_openai_auth写trueCodex 才会带上你登录的 keybase_url服务商的接口地址要带/v1但不要写到/v1/responseswire_api写成chat的话一启动就是这个报错Error loading config.toml: wire_api chat is no longer supported. How to fix: set wire_api responses in your provider config. in model_providers.wanapis.wire_api所以只提供 Chat Completions 接口、没有 Responses 接口的服务商新版 Codex 接不了。2.3 用 key 登录printenv OPENAI_API_KEY | codex login --with-api-key--with-api-key从标准输入读 key所以先export OPENAI_API_KEY你的key再用上面这句登录。成功会显示Successfully logged inWindows 在 PowerShell 里也一样用管道把 key 传给codex login --with-api-key。2.4 跑一下看通没通codex exec 只回复两个字母ok输出里看这几行OpenAI Codex v0.158.0 -------- workdir: /你的项目目录 model: gpt-6-sol provider: wanapis ... -------- user 只回复两个字母ok codex ok tokens used 2,776provider是你配的服务商、最后回了ok就通了。如果当前目录不是 git 仓库会报Not inside a trusted directory and --skip-git-repo-check was not specified.在项目目录里跑或者加上--skip-git-repo-check。3. 接 DeepSeek 等国产模型同一个服务商下换模型只要加-mcodex exec -m deepseek-v4.1-flash 只回复两个字母ok能跑通但会多一行警告warning: Model metadata for deepseek-v4.1-flash not found. Defaulting to fallback metadata; this can degrade performance and cause issues.意思是 Codex 自带的模型目录里没有这个模型只能用一套默认参数。消掉它要自己补一份模型目录三步第一步导出 Codex 自带的目录codex debug models --bundled ~/.codex/models.json0.158 自带 10 个模型里面已经有 gpt-6-astra、gpt-6-sol、gpt-6-luna、gpt-5.6-sol所以用 GPT-6 的不用做这一节。第二步打开~/.codex/models.json在models数组里把gpt-6-sol那一整条复制一份slug改成deepseek-v4.1-flashdisplay_name顺手改成DeepSeek V4.1 Flash。第三步在config.toml最上面加一行写绝对路径model_catalog_json /Users/你的用户名/.codex/models.json注意这一行要放在所有[xxx]小节的前面放到[model_providers.wanapis]下面就成了那个小节的字段不生效。再跑-m deepseek-v4.1-flash警告就没了。4. 思考强度第三方服务商默认是 none接第三方服务商时启动信息里有一行reasoning effort: none而 Codex 自带目录里gpt-6-sol 的默认值是 mediumgpt-6-astra 是 low。写代码建议在config.toml里显式写上model_reasoning_effort high重新启动就变成reasoning effort: high可选值有 low / medium / high / xhigh / max / ultra越往后想得越久、越慢、token 越多。日常写功能 medium 或 high 就够了。5. 多套配置来回切profile 的新写法老教程教的是在config.toml里加一段[profiles.ds]新版直接报错Error loading config.toml: --profile ds cannot be used while ~/.codex/config.toml contains legacy profile ds or [profiles.ds] config; move those settings into ~/.codex/ds.config.toml and remove the legacy profile selector/table. See https://developers.openai.com/codex/config-advanced#profiles for more information.新写法每个 profile 单独一个文件放在~/.codex/下文件名是名字.config.toml里面只写要改的项。比如建一个用 DeepSeek 的echo model deepseek-v4.1-flash ~/.codex/ds.config.toml codex -p ds启动信息里就是model: deepseek-v4.1-flash provider: wanapis记得把config.toml里老的[profiles.xxx]段删掉留着的话-p用到同名的 profile 就会报上面那个错。我自己是这么分的默认 gpt-6-sol 写功能、做 reviewcodex -p ds用 DeepSeek 跑测试、查资料、改格式这种不费脑子的活它出字快。6. 同一个会话里换模型不用开新会话恢复会话时加-m就行codex resume --last -m gpt-6-sol非交互模式对应的是codex exec resume --last -m gpt-6-sol 接着刚才的review 一下改动上下文、改过的文件、跑过的命令都还在只会多一行提醒warning: This session was recorded with model deepseek-v4.1-flash but is resuming with gpt-6-sol. Consider switching back to deepseek-v4.1-flash as it may affect Codex performance.这只是提醒不影响干活。我实测先用 DeepSeek 跑一轮让它记住「蓝莓」这个词再resume --last -m gpt-6-sol问它刚才记住了什么Sol 答出了「蓝莓」。上下文确实带过去了。我最常用它做交叉审查一个模型改完代码换另一个模型带着完整上下文来审。同一个模型审自己写的代码基本都觉得没问题。有一次 DeepSeek 修完一个价格解析的 bug切到 Sol 一审挑出了¥1,,299、¥12,34这种会被悄悄吞掉的输入。7. 报错速查0.158 实测原文先说一个行为出错时 Codex 会先自动重试 5 次屏幕上一直刷ERROR: Reconnecting... 1/5 ERROR: Reconnecting... 2/5 ERROR: Reconnecting... 3/5很多人看到这个就以为是网络问题去换梯子。其实要等到 5/5 之后下面那一行才是真正的原因5/5 之后那一行原因怎么改unexpected status 401 Unauthorized: Invalid tokenkey 错了或者没登录上重新codex login --with-api-keyunexpected status 503 Service Unavailable: ... 无可用渠道distributor模型名写错了或者这个服务商没有这个模型去服务商的模型列表核对名字一个字母都不能差unexpected status 404 Not Found: Invalid URL (POST /v1/responses/responses)base_url写到了/v1/responses改成只到/v1unexpected status 404 Not Found请求地址是/responsesbase_url漏了/v1在末尾补上/v1base_url漏/v1这一条不同服务商报的不一样有的直接说「少了 /v1」有的会返回一个网页Codex 那边就只剩一句stream disconnected before completion和网络不稳长得一模一样最难往地址上想。其它几个常见的报错原因怎么改Error loading config.toml: --profile ... legacy ... [profiles.xx]老的 profile 写法见第 5 节Error loading config.toml: wire_api chat is no longer supported新版不支持 chat改成wire_api responseswarning: Model metadata for ... not found模型不在 Codex 自带目录里能用想消掉见第 3 节warning: This session was recorded with model ...会话中途换了模型只是提醒可以忽略Not inside a trusted directory and --skip-git-repo-check was not specified.当前目录不是 git 仓库到项目目录里跑或加--skip-git-repo-check卡在Reading additional input from stdin...不动在脚本或 CI 里跑codex exec它在等标准输入命令末尾加 /dev/null8. 一份完整的配置~/.codex/config.tomlmodel_catalog_json /Users/你的用户名/.codex/models.json model_provider wanapis model gpt-6-sol model_reasoning_effort high [model_providers.wanapis] name wanapis wire_api responses requires_openai_auth true base_url https://api.wanapis.com/v1~/.codex/ds.config.tomlmodel deepseek-v4.1-flash日常用法codex默认 gpt-6-solcodex -p ds用 DeepSeekcodex resume --last -m 模型名会话中途换模型上下文不丢以上基于 Codex CLI 0.158.02026-09-28 实测。Codex 更新很快遇到和本文对不上的地方先codex --version看一下版本。