三个模型进入菜单
让 Dev S、Dev T、Dev L 分别对应稳定的 dev-* 业务模型编号。
本次完成了本机模型清单配置、菜单筛选问题定位和各入口验证。Dev S / T / L 0.56 已在 Codex 命令行工具、桌面版测试副本和 VS Code 插件中显示或可切换,实际请求仍使用原始业务模型编号。
模型清单和服务入口已经正常工作;这里所说的客户端,是安装在每台电脑上的 Codex 桌面版、VS Code 插件或命令行工具(CLI),不包括服务器、new-api 账号与额度系统或中转站。本机软件在渲染模型菜单前,又按模型编号做了一次动态筛选。
模型清单里有两个关键字段:模型编号字段(slug)负责真实请求,显示名称字段(display_name)负责界面展示。此前 dev-* 已经能被 Codex 调用,但没有通过本地菜单的编号筛选,所以显示名称没有机会出现。现在桌面测试副本和 VS Code 插件已完成对应处理。
本次目标是让三个业务模型在本机可见、可切换、可调用,同时不改变 AI能量庄园现有服务入口、授权和业务路由。
让 Dev S、Dev T、Dev L 分别对应稳定的 dev-* 业务模型编号。
不改 AI能量庄园服务地址、授权、额度和中转站业务路由。
命令行、桌面版和 VS Code 插件都能看到模型并完成切换。
界面名称可以友好展示,但服务端最终仍收到对应的 dev-* 真实模型编号。
三种方案都能让用户看到可选模型,区别在于改动放在服务器、本机转发程序,还是 Codex 本机菜单。
| 方案 | 怎么做 | 优点 | 代价 / 本次结论 |
|---|---|---|---|
| 方案一:服务端别名转换备选方案 | 本机使用已经允许显示的编号作为菜单别名,中转站收到后再转换成真正的 dev-* 业务模型。 |
不需要修改每台电脑上的 Codex。 | 服务器、日志和统计要同时维护“别名”和“真实编号”。本次未采用。 |
| 方案二:本机转发改写备选方案 | 本机运行转发程序,在请求发往服务器前,把请求中的模型字段改成真实的 dev-* 编号。 |
不改 Codex 本体,服务器仍能按真实编号处理。 | 每台电脑都要运行、启动和排查转发程序。本次未采用。 |
| 方案三:放开本机菜单过滤本次采用并验证 | 保留官方桌面版不动,复制同版本程序到本机测试目录,只在测试副本中取消按模型编号拦截;模型清单仍决定哪些条目显示。 | 显示名称、实际编号和日志统计保持一致,不增加服务器映射。 | 桌面版和插件需要分别处理,客户端升级后要重新校验。 |
验证先从最基础的命令行开始,再对比桌面版和 VS Code 插件的菜单表现,最后确认服务端实际收到的模型编号。
读取模型清单文件 models.json,确认三个模型能被识别,并能向 AI能量庄园发起请求。
同一套配置在桌面版中无法看到 dev-*,说明问题发生在显示入口。
动态模型筛选名单(available_models)按编号拦截条目,显示名称因此没有机会出现。
切换模型后确认请求仍使用对应的 dev-* 真实模型编号。
服务器继续负责实际路由,本机只补齐模型清单和模型菜单入口。桌面版采用“复制后处理”:保留官方安装版,复制同版本程序到本机测试目录,只修改测试副本中的 app\resources\app.asar(桌面程序打包资源文件)里的本地筛选逻辑;授权、服务入口和真实模型编号都没有被替换。
models.json 不是登录文件,而是 Codex 的“模型清单”。三个部分分别回答:列表里有哪些模型、从哪里读取清单、哪些模型允许出现在菜单里。models.json做什么:给 Codex 的模型菜单提供条目。每条记录包含真实模型编号和界面显示名称,例如 dev-s-0.56x 对应 Dev S 0.56X。
为什么加:服务器能调用模型,不代表本地菜单已经登记了它;没有这条记录,桌面版就没有可显示、可切换的对象。
分发文件是公司提供的模型清单 models.json,安装时先备份本机文件(如果存在),再直接覆盖或创建 ~/.codex/models.json。Windows 中它通常对应当前用户目录下的 .codex\models.json,不与本机旧模型合并。
config.toml做什么:告诉 Codex 使用哪个模型清单、默认选哪个模型,以及请求发往哪个服务入口。
为什么改:让客户端确实读到新增清单并使用指定默认模型;服务地址、登录状态和授权信息保持原样。
本次关注的设置是 model_catalog_json(清单位置)和 model(默认模型)。
available_models做什么:Codex 在读完模型清单后,还会按模型编号再筛选一次,只有通过的条目才进入下拉菜单。
为什么要处理:dev-* 虽然已经写入清单,却被这道本地筛选挡住,导致名称仍然不显示。本次对桌面测试副本和 VS Code 插件分别处理。
插件的实际改动:脚本定位当前已安装的 openai.chatgpt 插件,在其 webview\assets 内嵌页面脚本中先创建 .company-original 备份,再把“按模型编号过滤”的判断改为只保留“是否隐藏”的判断。这样三个模型可以进入菜单,同时仍遵守模型清单中的隐藏设置。
它不是服务器配置,也不是 API 密钥(API Key);只影响本机菜单是否显示。
models.json 登记→本地模型筛选放行→菜单可见、可切换models.json 作为唯一模型目录,安装时备份并覆盖本机文件;模型列表和显示规则以该文件及 Codex 客户端规则为准。config.toml 中指定清单位置和默认模型,保留服务地址与授权。%LOCALAPPDATA%\CodexWhitelistTest\<版本>,定位测试副本的 app\resources\app.asar(桌面程序打包资源文件),先保存为 app.asar.original,再把按模型 ID 判断的筛选条件短路为不生效:跳过 n.has(r.model) 判断,同时保留 !r.hidden 隐藏设置。随后用独立用户目录和“Codex Studio”快捷方式启动。正式版安装目录不改,升级后可按新版本重新构建。openai.chatgpt 插件,在 webview\assets 脚本中备份原文件,再替换按模型编号过滤的判断,保留隐藏状态判断。必须完全退出并重新打开 VS Code,Developer: Reload Window 不会重新加载已缓存的插件资源。可以把下面三项理解成“使用哪个服务、从哪里读模型清单、打开时默认选哪个模型”。
model_provider = "intelalloc" # AI能量庄园的内部服务标识 model_catalog_json = "~/.codex/models.json" # 模型清单文件的位置 model = "dev-l-0.56x" # 默认使用的真实模型编号 Dev S 0.56X -> dev-s-0.56x # 界面名称 -> 实际调用编号 Dev T 0.56X -> dev-t-0.56x # 界面名称 -> 实际调用编号 Dev L 0.56X -> dev-l-0.56x # 界面名称 -> 实际调用编号
http://hub.thinvent.com/v1,中转站继续按业务模型编号路由。app\resources\app.asar,不是 Store 安装目录中的原文件,也不是 ChatGPT.exe。脚本只接受当前版本预期的筛选代码特征,匹配不到时会停止;因此升级后需要重新检查,避免误改其他版本资源。截图用于证明方案三已经落地:命令行能识别,桌面版和 VS Code 插件能显示友好名称,并且实际请求仍使用对应的 dev-* 模型编号。
命令行的模型选择器显示原始模型编号;界面中的 current 表示“当前使用”,对应配置的 dev-l-0.56x。这是显示方式差异,不是调用差异。
保留官方安装版不动,启动经过本地筛选处理的独立测试副本。测试副本使用独立用户目录,模型菜单显示 Dev S 0.56X、Dev T 0.56X、Dev L 0.56X,并可直接切换。
补丁定位当前 openai.chatgpt 插件的 webview\assets 内嵌页面脚本,先备份原文件,再去掉按模型编号过滤的判断。完全退出并重新打开 VS Code 后,菜单显示三个名称并可切换。
截图文件随本 HTML 放在同级的截图文件夹 report-assets 中;点击任意截图可查看原始 1920 × 1080 图片。
模型清单和业务口径一致,但不同客户端的显示层和程序文件位置不同。macOS 后续教程先覆盖命令行工具(CLI)与 VS Code 插件。
| 入口 | 当前状态 | 适配方式 | 维护边界 |
|---|---|---|---|
| Windows Codex 桌面版桌面测试副本 | 已验证自定义名称可见、可切换 | 复制 Microsoft Store 版本到本机测试目录,修改副本的 app\resources\app.asar,跳过模型 ID 白名单判断并保留隐藏设置;用独立用户目录启动,正式版保持不动 | 升级后检查版本并重新构建测试副本 |
| Windows VS Code 插件Codex 的 VS Code 插件 | 已验证模型菜单显示友好名称 | 定位 openai.chatgpt 的 webview\assets 脚本,备份原文件后去掉模型编号过滤,保留隐藏设置 | 插件升级后重新执行补丁,并完全退出再重启 VS Code |
| Codex 命令行(CLI)Windows / macOS 均适用 | 已验证可查看和切换模型 | 直接读取当前用户的 Codex 配置文件 | 命令行可能显示原始模型编号,这是正常现象 |
| macOS 桌面应用官方产品存在 | 暂不纳入本次分发当前没有 Mac 环境验证 | 后续单独适配 macOS 应用文件(.app)和应用签名 | 教程先覆盖命令行工具 + VS Code 插件,不复用 Windows 补丁 |
这部分用于说明上线后的维护成本,避免把客户端补丁误认为服务端改造。
桌面版升级后,旧测试副本不会自动变成新版本;快捷方式会检查版本,发现升级时重新复制、备份并构建。插件升级后,webview\assets 会被替换,需要重新执行补丁;脚本会保留原文件备份并在版本签名不匹配时停止。正式版安装目录保持不改。
服务入口地址、授权、额度、日志和中转站业务路由不因本地显示补丁改变。
模型清单和脚本不包含登录凭据文件(auth.json)、API 密钥或个人授权信息,每台电脑独立保留登录状态。
这些操作只会重新加载同一套配置或历史数据,无法改变本机软件内置的动态模型筛选名单(available_models)。问题定位到本地显示逻辑后,只有处理客户端资源或改用服务器别名映射,才能改变模型是否进入选择器。