GPT-5.6 明明已经接入,却死活不显示?我拆开桌面端,找到了那道“隐形门” 📅 2026/7/11 1:37:05 后台已经返回 GPT-5.6。配置文件里也能看到 GPT-5.6。命令行查询一切正常。但打开 ChatGPT/Codex 桌面端的模型菜单你看到的却还是GPT-5.5GPT-5.4GPT-5.4 MiniGPT-5.2GPT-5.6 去哪了一开始你可能会怀疑配置没生效、中转站不支持甚至重新填写 API Key、清理缓存、重启电脑。但真正的原因可能完全不在后端。模型已经到了桌面端门口却被前端的一张旧名单拦住了。真正的问题桌面端还有一道模型白名单ChatGPT/Codex 桌面端展示模型大致需要经过两层判断。第一层是后端是否真的返回了模型。例如gpt-5.6-sol gpt-5.6-terra gpt-5.6-luna第二层则是桌面端前端是否允许把这些模型显示出来。问题就出在第二层。即使 app-server 的model/list已经返回 GPT-5.6桌面端仍可能根据远程动态配置中的旧available_models白名单过滤菜单。换句话说后端说“这个模型可以用”前端却说“它不在我的名单里所以不能让用户看到”。这也解释了一个非常反常识的现象命令行能查到模型不代表桌面端菜单一定会显示模型。先判断你遇到的是不是同一个问题在终端执行/Applications/ChatGPT.app/Contents/Resources/codex debug models | grep gpt-5.6如果能看到gpt-5.6-*但桌面端模型菜单仍没有 GPT-5.6那么问题大概率不是后端配置而是前端过滤。如果命令行本身就查不到 GPT-5.6请先检查中转站、模型目录和~/.codex/config.toml。下面这个补丁不能让一个原本不存在的模型凭空出现。修复思路关闭旧白名单的显示门控关键逻辑位于应用的app.asar前端包中。原始代码类似loe!amazonBedrock当这道门控开启时菜单只展示旧白名单允许的模型。将它改为恒为false后桌面端会直接展示 app-server 返回的非隐藏模型。注意它不是“安装 GPT-5.6”也不是“破解模型权限”。它只是取消旧白名单对模型菜单的额外过滤。一键修复脚本新建文件patch-chatgpt-model-picker-gpt56.js写入#!/usr/bin/env node const fs require(node:fs); const asarPath process.argv[2] || /Applications/ChatGPT.app/Contents/Resources/app.asar; const oldText loe!amazonBedrock,ua.some; const newText lfalse ,ua.some; if (Buffer.byteLength(oldText) ! Buffer.byteLength(newText)) { throw new Error(Internal patch error: replacement must be byte-for-byte equal length.); } const oldBytes Buffer.from(oldText); const newBytes Buffer.from(newText); const buffer fs.readFileSync(asarPath); const matches []; let offset 0; while ((offset buffer.indexOf(oldBytes, offset)) ! -1) { matches.push(offset); offset oldBytes.length; } if (matches.length 0) { if (buffer.indexOf(newBytes) ! -1) { console.log(Patch already applied:, asarPath); process.exit(0); } throw new Error(Patch target was not found. The app bundle may have changed.); } if (matches.length ! 1) { throw new Error(Expected exactly one patch target, found ${matches.length}.); } const backupPath ${asarPath}.bak-gpt56-${new Date() .toISOString() .replace(/[-:T.Z]/g, ) .slice(0, 14)}; fs.copyFileSync(asarPath, backupPath, fs.constants.COPYFILE_EXCL); newBytes.copy(buffer, matches[0]); fs.writeFileSync(asarPath, buffer); console.log(Patched:, asarPath); console.log(Backup:, backupPath); console.log(Restart ChatGPT completely, then reopen the model menu.);退出应用、执行补丁并重新打开osascript -e quit app ChatGPT sudo node ./patch-chatgpt-model-picker-gpt56.js open -a ChatGPT重新打开模型菜单后正常情况下会出现GPT-5.6-Sol GPT-5.6-Terra GPT-5.6-Luna这里还有一个容易踩坑的细节菜单里不一定存在一个单独叫“GPT-5.6”的选项。真正的菜单项可能是 Sol、Terra 和 Luna 三个变体。只盯着“GPT-5.6”四个字很容易误以为补丁没有生效。补丁失败怎么办如果出现Patch target was not found这通常意味着桌面端升级后前端 bundle 已经变化原来的字节特征不再存在。不要强行修改也不要随便替换相似代码。脚本要求目标代码只能匹配一次正是为了避免误伤应用里的其他逻辑。此外桌面端更新可能覆盖app.asar届时需要针对新版本重新确认过滤逻辑。如何回滚脚本执行前会自动生成备份例如app.asar.bak-gpt56-YYYYMMDDHHMMSS需要恢复时执行osascript -e quit app ChatGPT sudo cp /Applications/ChatGPT.app/Contents/Resources/app.asar.bak-gpt56-YYYYMMDDHHMMSS \ /Applications/ChatGPT.app/Contents/Resources/app.asar open -a ChatGPT把时间部分替换成实际备份文件名即可。最后说清楚三件事第一这不是官方修复而是对本地桌面端前端包的修改。操作前必须备份并自行承担应用完整性、升级覆盖等风险。第二不要对来源不明的脚本直接执行sudo。先阅读代码确认它只修改目标文件。第三这个方法只解决“后端已经返回模型但菜单不显示”的问题。它不会修改 API Key、中转站地址、模型缓存也不会赋予账号原本没有的模型权限。这次问题最有意思的地方不是那一行代码。而是它揭示了 AI 客户端里一个很容易被忽视的事实你在界面上看不到不代表它不存在有时候能力已经准备好了只是产品还没允许你看见。