问题概览
在 ChatGPT 桌面版的 Codex 模式中,模型列表有时会只显示 GPT-5.6 Terra、GPT-5.6 Luna 等选项,而缺少 GPT-5.6 Sol。若账户和上游服务均支持 Sol,这通常不是模型被下线,而是本地的运行时模型缓存 models_cache.json 未包含 Sol 条目。
OpenAI 已将 GPT-5.6 Sol、Terra、Luna 作为 GPT-5.6 家族提供给 Codex;其中 Sol 是高能力档,Terra 偏均衡,Luna 偏速度与成本。具体可用性仍取决于产品、套餐、账户和工作区权限。官方说明见:
本文记录的是 Windows 上一次已验证成功的本地恢复方法:重建 Codex 的模型缓存后,重启桌面应用,模型列表恢复为包含 GPT-5.6 Sol、Terra、Luna 的完整状态。

先理解两份模型文件
Codex 中至少涉及两类模型信息:
- 内置模型定义:随 Codex CLI 发布,包含客户端已知的模型能力、名称、推理强度和可见性。
- 运行时缓存:
%USERPROFILE%\\.codex\\models_cache.json,由当前连接的服务端模型目录下发或更新,直接影响菜单显示。
OpenAI Codex 官方仓库的模型定义可在这里查看:
https://github.com/openai/codex/blob/main/codex-rs/models-manager/models.json
不要直接把 GitHub 的 models.json 原样覆盖到 models_cache.json。两者用途和外层结构并不完全相同。更可靠的方法是使用当前桌面版内置 CLI 的 debug models --bundled 命令,它会输出与本机 CLI 版本匹配的缓存格式。
修复步骤:从内置 bundled 列表重建缓存
先完全退出 ChatGPT/Codex 桌面应用。然后在 PowerShell 中运行以下命令。
$cli = "C:\\Users\\Administrator\\AppData\\Local\\OpenAI\\Codex\\bin\\8e8bf206e63ac436\\codex.exe"
$cache = "$env:USERPROFILE\\.codex\\models_cache.json"
$backup = "$env:USERPROFILE\\.codex\\models_cache.json.bak-$(Get-Date -Format yyyyMMdd-HHmmss)"
Copy-Item -LiteralPath $cache -Destination $backup
& $cli debug models --bundled | Set-Content -LiteralPath $cache -Encoding utf8 -NoNewline
完成后重新打开 ChatGPT 桌面应用,在 Codex 模型菜单中检查是否已出现:
这里使用的 CLI 路径是一次实测环境中的版本化安装路径。每次桌面版更新后,目录中的哈希可能变化。如果路径不存在,可先查找本机 CLI:
Get-ChildItem "$env:LOCALAPPDATA\\OpenAI\\Codex\\bin" -Recurse -Filter codex.exe |
Select-Object -First 1 -ExpandProperty FullName
将输出路径替换到 $cli 后再执行重建命令即可。
为什么 PowerShell 找不到 codex
不少 ChatGPT 桌面版用户会遇到下面的错误:
codex : 无法将“codex”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
这并不表示桌面版没有内置 Codex CLI。通常是因为 CLI 位于类似下面的版本化目录,但该目录未加入当前 PowerShell 的 PATH:
C:\\Users\\<用户名>\\AppData\\Local\\OpenAI\\Codex\\bin\\<版本目录>\\codex.exe
因此,最稳妥的办法是通过完整路径调用:
& $cli --version
& $cli debug models --bundled
如果你经常在终端使用它,也可以在当前会话临时加入目录:
$env:Path += ";$(Split-Path $cli)"
codex --version
不建议为了这一项操作永久修改系统级 PATH;桌面版更新可能改变版本化目录。
只保留 5.6 全系模型
debug models --bundled 会恢复该 CLI 内置的全部模型条目。如果希望菜单只保留 GPT-5.6 Sol、Terra 和 Luna,可在重建缓存后执行以下筛选。请先确认上一节已完成备份。
$data = Get-Content -Raw $cache | ConvertFrom-Json
$data.models = @(
$data.models | Where-Object {
$_.slug -in @("gpt-5.6-sol", "gpt-5.6-terra", "gpt-5.6-luna")
}
)
$data | ConvertTo-Json -Depth 100 | Set-Content -LiteralPath $cache -Encoding utf8
此操作只影响本地菜单的候选项,不会增加账户权限,也不会让上游不支持的模型变得可调用。实际请求仍由当前账户与所配置的上游服务决定。
多子代理的 Luna 与自动审查模型
在本次环境测试中,将 gpt-5.6-luna 和 codex-auto-review 的子代理模型版本配置改为 v2 后,Luna 能够参与多子代理运行。这个结论属于特定客户端版本、配置和上游兼容性下的实测经验,不应视为 OpenAI 对所有环境的通用承诺。
建议保留一份已验证可用的 models_cache.json 作为回滚基线,并记录对应的 Codex 桌面版与 CLI 版本。一个可参考的已验证样本已公开在:
https://github.com/MeowLove/CXT-Skills/blob/main/CXT-Agent-Config/ChatGPT/models_cache.json
长期稳定性与排查顺序
模型缓存可能在启动、登录状态变化或服务端目录刷新后被重新下发。因此,缓存重建适合修复显示层问题,但不应替代上游兼容性排查。
当 Sol 再次消失时,按下面顺序检查:
- 确认当前 ChatGPT 账户、套餐或工作区策略仍具备 Sol 权限。
- 确认自定义上游服务的模型目录确实返回
gpt-5.6-sol,并能正确路由该模型。 - 检查桌面版与内置 CLI 是否已更新,再用新版本的
debug models --bundled重新生成缓存。 - 对比备份与当前
models_cache.json中的models[].slug,确认 Sol 是被本地覆盖还是服务端下发时缺失。
最后,models_cache.json 只应保存模型元数据;不要把 API Key、Bearer Token 或完整认证配置上传到公开仓库。若自定义服务使用明文密钥,建议定期轮换,并使用服务支持的安全凭据管理方式。