WSL 环境下 Codex CLI 看不到新模型?排查思路与解决方案
最近在折腾 WSL 环境下的开发工具时,发现一个挺有意思的现象:同一个账号,Windows 下的 Codex 桌面应用已经能顺利调用最新的模型了,但在 WSL 终端里跑 Codex CLI 时,死活看不到那个新模型的选项。
这种情况不仅让人搞不清楚是不是自己账号炸了,更怕是环境配置哪里有坑。今天咱们就掰开揉碎了聊聊,遇到这种「桌面端有、CLI 端无」的情况,到底该从哪儿开始排查。
一、先确认是不是「假」的版本号差异
首先要明确一点,CLI 工具和桌面应用的更新频率往往不同步。很多时候,桌面应用因为更新机制更激进,会优先接入新的 API 接口或者模型版本列表。而 CLI 工具,如果你是通过 npm、pip 或者包管理器安装的,可能还停留在旧版本上。
这里的第一步动作非常简单:检查你的 Codex CLI 版本。
在终端输入查看版本的命令(通常是 codex --version 或类似指令),对比一下官方最新的 Release Notes。如果 CLI 版本过旧,它很可能只是还没「认识」到新模型的存在,根本没去请求相关的 API 端点。这种情况下,执行更新命令通常能秒解。
二、配置文件与鉴权信息的隔离
如果版本是最新的,问题大概率出在「身份」上。
WSL 和 Windows 虽然文件系统互通,但它们的环境变量和配置文件往往是独立的。桌面应用可能将你的 API Token 存储在了 Windows 的注册表或者特定的用户目录下,并且通过图形界面自动处理了鉴权。
但在 WSL 中,CLI 工具通常会读取当前用户目录下的配置文件(例如 .codextrc、.config 文件夹下的配置等)。如果你是刚在 WSL 中安装的 CLI,很可能是处于「未登录」或者读取了本地缓存凭证的状态。
这就导致了一个尴尬的局面:你的账号虽然在新模型的白名单里,但 WSL 里的 CLI 根本不知道你是谁,或者拿着过期的凭证去请求模型列表,自然就被拦在了门外。
解决思路:
- 尝试在 WSL 终端中重新执行登录命令(例如
codex login),这会强制刷新本地的鉴权 Token。 - 检查环境变量。有些 CLI 工具依赖环境变量(如
CODEX_API_KEY)来覆盖配置文件。确保 WSL 的 Shell 配置文件(.bashrc或.zshrc)里没有写死旧的 Key。
三、网络环境与代理设置的「锅」
这是一个极其隐蔽但高频出现的问题。
Windows 桌面应用通常自带系统代理设置逻辑,或者能直接读取操作系统的代理配置。只要你的梯子开着,它就能顺利通过系统代理访问 API。
但 WSL 是个独立的 Linux 环境。默认情况下,WSL 不会 直接继承 Windows 的系统代理设置。如果你的网络环境需要代理才能访问 Codex 的服务,而 WSL 终端里又没配,那么 CLI 工具在请求模型列表时就会超时或者被重置,最终导致返回的数据不完整(比如缺了新模型),或者直接报错。
怎么验证是否是代理问题?
在 WSL 终端里试着用 curl 访问一下 Codex 的 API 地址。如果连不通,那就是网络的事儿。
临时解决方案:
你可以手动在终端里设置代理。比如,如果你的代理软件在 Windows 上开了 7890 端口,WSL 的网卡 IP 通常是固定的(可以通过 cat /etc/resolv.conf 查看 nameserver 之前的 IP),那么在终端里执行:
export https_proxy="http://<你的Windows IP>:7890"
export http_proxy="http://<你的Windows IP>:7890"
然后再试一次 Codex 命令,看看模型列表能否刷新。
如果要持久化,记得把这两行加进你的 .bashrc 或 .zshrc 里。
四、模型列表的缓存机制
还有一个容易被忽略的点:为了节省请求资源和提升响应速度,很多 CLI 工具会在本地缓存一份模型列表。
有时候,即使网络通了、鉴权对了、版本新了,但因为本地还存着一份「旧地图」,CLI 就懒得去服务器上拿新的。这通常发生在你长时间没有使用过该工具,或者工具的缓存清理机制有 Bug 的时候。
尝试清除 CLI 的缓存。通常会有类似 codex cache clean 或者 --refresh 的参数。如果没有现成的命令,可以试着查找隐藏的配置目录,手动删除缓存文件后重试。
写在最后
遇到这种「同一账号不同环境表现不一致」的问题,心态别崩。绝大多数情况下,都不是官方针对 WSL 做了限制,纯粹的只是环境配置没对齐。
按照 「版本更新 -> 重新登录鉴权 -> 检查代理网络 -> 清除缓存」 这个顺序排查,基本上 90% 的问题都能搞定。要是还不行,那可能就要考虑是不是 WSL 的网络模式(NAT vs Mirrored)在底层干扰了连接,这时候切一下 WSL 的网络配置或许会有奇效。
希望这篇排查笔记能帮到现在还在对着终端发愁的兄弟们!

评论已关闭