兄弟们,今天这个发现属于是重量级的——GPT-5.6-Sol 有一个隐藏的内部路由模型 gpt-5.6-sol-wm,任意付费账号都能调用,而且完全不消耗额度、不计入消费明细。
这不是什么破解或者注入,而是 OpenAI 自己在模型目录中下发但隐藏的一个条目。我在本机的 Codex 缓存中直接抓到了它,并且在多个账号上实测成功。
核心结论:
- ^-^ 不是 API 调用,不走 API 额度
- ^-^ 不出现在 OpenAI 消费明细中
- ^-^ Plus、Pro、Team 账号均可用
- ^-^ Free 账号会被服务器拒绝
- ^-^ 调用返回的内容质量和 Sol 完全一致
本文基于 2026 年 8 月 14 日本机实测数据整理,所有证据均来自本地缓存文件,不涉及任何认证信息复制或权限绕过。
这东西到底是什么?
先说清楚 gpt-5.6-sol-wm 是什么:
属性 |
值 |
含义 |
|---|
slug |
gpt-5.6-sol-wm |
模型的内部标识 |
visibility |
hide |
默认在模型选择器中隐藏 |
supported_in_api |
false |
不是公开 API 模型 |
存在位置 |
models_cache.json |
由 OpenAI 服务器自动下发 |
关键信息:这个模型条目是 OpenAI 服务器主动推送到你本地的,不是我们自己编造的。打开你的 Codex 模型缓存文件,搜索 gpt-5.6-sol-wm,大概率就能找到它。
两个不同的判断
这里要分清两个完全独立的步骤:
- 本地显示:把
visibility 从 hide改成 list,这只是让模型选择器显示出来
- 服务器授权:你的账号是否有权限调用,这完全由服务器决定
改本地目录不等于获得权限。但实测发现,所有非 Free 账号都能成功调用。
实测证据
我在两台不同的机器上验证:
机器 A(主力账号):
缓存路径:F:\UserRelocate\codex\models_cache.json
第 97 行 slug: "gpt-5.6-sol-wm"
第 128 行 visibility: "hide"
第 129 行 supported_in_api: false
请求 gpt-5.6-sol-wm → 返回 WM_OK ✅
机器 B(独立账号测试):
缓存路径:C:\Users\yileina\AppData\Local\OpenAI\Codex\wm-account-test-20260813\models_cache.json
第 96 行 slug: "gpt-5.6-sol-wm"
第 127 行 visibility: "hide"
第 128 行 supported_in_api: false
付费账号请求 → 返回 WM_OK ✅
Free 账号请求 → 返回 "model is not supported" ❌
Free 账号虽然缓存里也有 WM 条目,但服务器会拒绝。只要你的账号是 Plus 以上,就能用。
完整配置教程
准备工作
项目 |
要求 |
|---|
Codex Desktop 或 CLI |
已安装且能正常使用 |
ChatGPT 账号 |
Plus / Pro / Team 任意付费方案 |
系统 |
Windows 或 macOS |
第 1 步:确认你的 CODEX_HOME 路径
打开 PowerShell,运行:
$CodexRoot = if ($env:CODEX_HOME) {
$env:CODEX_HOME
} else {
Join-Path $env:USERPROFILE '.codex'
}
$CodexRoot
Get-Item -LiteralPath $CodexRoot | Format-List FullName,LinkType,Target
Copy
记下输出的路径,后面要用到。
macOS 用户对应路径一般是 ~/.codex
第 2 步:检查缓存中是否已有 WM 条目
$CachePath = Join-Path $CodexRoot 'models_cache.json'
Select-String -LiteralPath $CachePath `
-Pattern '"slug": "gpt-5.6-sol-wm"','"slug": "codex-auto-review"'
Copy
看到了 gpt-5.6-sol-wm 且附近有 visibility: "hide":恭喜,继续下一步。
完全找不到:别慌,先正常使用一次 Codex 让它刷新缓存,然后再查。
第 3 步:生成 WM 可见目录(核心操作)
重要:先彻底退出 Codex,包括系统托盘那个小图标。
然后运行这段 PowerShell 脚本:
$CodexRoot = if ($env:CODEX_HOME) {
$env:CODEX_HOME
} else {
Join-Path $env:USERPROFILE '.codex'
}
$CachePath = Join-Path $CodexRoot 'models_cache.json'
$VisibleCatalog = Join-Path $CodexRoot 'models_wm_visible.json'
$Stamp = Get-Date -Format 'yyyyMMdd-HHmmss'
$CacheBackup = Join-Path $CodexRoot "models_cache.before-wm-$Stamp.bak"
if (-not (Test-Path -LiteralPath $CachePath)) {
throw "找不到模型缓存:$CachePath"
}
# 备份原始缓存
Copy-Item -LiteralPath $CachePath -Destination $CacheBackup
if (Test-Path -LiteralPath $VisibleCatalog) {
Copy-Item -LiteralPath $VisibleCatalog `
-Destination "$VisibleCatalog.before-$Stamp.bak"
}
# 复制一份作为自定义目录
Copy-Item -LiteralPath $CachePath -Destination $VisibleCatalog -Force
# 只把 WM 的 visibility 从 hide 改成 list
$Raw = [IO.File]::ReadAllText($VisibleCatalog)
$Pattern = '(?s)("slug"\s*:\s*"gpt-5\.6-sol-wm".*?"visibility"\s*:\s*)"hide"'
$Matches = [regex]::Matches($Raw, $Pattern)
if ($Matches.Count -ne 1) {
throw "预期精确找到 1 个隐藏 WM 条目,实际找到 $($Matches.Count) 个;已停止。"
}
$Regex = [regex]::new($Pattern)
$Updated = $Regex.Replace(
$Raw,
[Text.RegularExpressions.MatchEvaluator]{
param($Match)
$Match.Groups[1].Value + '"list"'
},
1
)
[IO.File]::WriteAllText(
$VisibleCatalog,
$Updated,
[Text.UTF8Encoding]::new($false)
)
Write-Host "已生成:$VisibleCatalog"
Write-Host "原始缓存备份:$CacheBackup"
Copy
这段脚本做了什么:
- 备份你的原始
models_cache.json
- 复制一份叫
models_wm_visible.json
- 只修改 WM 条目的
visibility 从 hide 改成 list
- 不碰其他任何模型,不碰原始缓存
第 4 步:验证没有误改
$Catalog = Get-Content -Raw -LiteralPath $VisibleCatalog | ConvertFrom-Json -Depth 100
$WM = @($Catalog.models | Where-Object slug -eq 'gpt-5.6-sol-wm')
$Auto = @($Catalog.models | Where-Object slug -eq 'codex-auto-review')
[pscustomobject]@{
WMCount = $WM.Count
WMVisibility = $WM[0].visibility
AutoCount = $Auto.Count
AutoVisibility = $Auto[0].visibility
}
Copy
正确结果应该是:
WMCount : 1
WMVisibility : list
AutoCount : 1
AutoVisibility : hide
WM 变成了 list,其他模型不受影响。
第 5 步:修改 config.toml
先备份当前配置:
$ConfigPath = Join-Path $CodexRoot 'config.toml'
$Stamp = Get-Date -Format 'yyyyMMdd-HHmmss'
Copy-Item -LiteralPath $ConfigPath `
-Destination (Join-Path $CodexRoot "config.toml.before-wm-$Stamp.bak")
Copy
用文本编辑器打开 config.toml,在顶层添加(注意把路径改成你自己的):
model = "gpt-5.6-sol-wm"
model_catalog_json = "C:/Users/你的用户名/.codex/models_wm_visible.json"
model_reasoning_effort = "max"
Copy
说明:
model_reasoning_effort = "max" 是推荐默认值,稳定性最好
- 如果你的版本支持
ultra,可以改成 ultra 获得更深度的推理
- 不需要改
supported_in_api,那个字段不影响 Codex 调用
- 不需要改
codex-auto-review,那是另一个内部审核模型
如果想开启快速模式,可以额外添加:
service_tier = "fast"
[features]
fast_mode = true
Copy
第 6 步:重启 Codex
- 从系统托盘彻底退出 Codex(不是点窗口右上角关闭)
- 重新打开 Codex
- 新建任务,打开模型选择器
- 你应该能看到 GPT-5.6-Sol-WM 出现在列表中
如果选择器里还是看不到,可以用 CLI 检查:
codex debug models
Copy
在输出中搜索 gpt-5.6-sol-wm,看看 visibility 是不是 list。
第 7 步:不改 UI 也能用
如果你不想改模型选择器,也可以直接用命令行指定模型:
# 直接用 WM 启动
codex --model gpt-5.6-sol-wm
# 加上 Fast 模式
codex --model gpt-5.6-sol-wm -c 'service_tier="fast"'
Copy
如果 config.toml 已经设了默认模型,新建任务时就不用再写 --model 了。
服务器最小探针(验证账号权限)
到这里你的本地已经配好了,但还不确定服务器是不是接受你的账号。跑一次这个最小探针:
codex --ask-for-approval never exec `
--ignore-user-config `
--ephemeral `
--json `
--skip-git-repo-check `
-C $env:TEMP `
--sandbox read-only `
--model gpt-5.6-sol-wm `
-c 'model_reasoning_effort="low"' `
-c 'approval_policy="never"' `
-c 'web_search="disabled"' `
-c 'features.shell_tool=false' `
-c 'features.multi_agent=false' `
-c 'project_doc_max_bytes=0' `
'Reply exactly WM_OK. Do not call any tool.'
Copy
看结果:
输出 |
含义 |
|---|
WM_OK + 退出码 0 |
服务器接受了你的账号,可以正常使用 |
model is not supported |
你的账号没有权限(大概率是 Free 账号) |
401 错误 |
登录过期了,重新登录 |
额度超限 |
不能据此判断 WM 是否可用 |
成功了就可以放心用了。