Repository navigation
DSCodex v1.3.0 — Live Model List
DSCodex v1.3.0 — Live Model List
v1.2.2 及更早版本安装后,Codex 的模型选择器停在安装那一刻:OpenAI 之后上线的 GPT 模型不出现,已经下架的模型也一直留着。这一版改成实时读取 ChatGPT 的模型列表,并修好了 Codex 重写配置后卸载删不干净的问题。
Highlights
- 🔄 模型选择器跟着 ChatGPT 实时更新。 旧版在
config.toml里写入model_catalog_json,Codex 对这个键只在启动时读一次,之后再也不去 ChatGPT 刷新。本机实测:旧快照停在 2026-09-10,其中 GPT-6 只有已下架的gpt-6-astra;而上游对桌面端 0.155 下发的是新的gpt-6-luna。现在 DSCodex 只写openai_base_url,Codex 按自己的刷新规则(5 分钟 TTL,加上每次响应带回的 ETag)经路由器请求/models。路由器带着客户端原有的 OAuth 请求头和client_version转发给 ChatGPT,插入🐳 DeepSeek Flash后返回,并保留上游etag。上游不同版本号返回的列表不同,路由器照原样透传。 - 🛟 ChatGPT 连不上时不丢 DeepSeek。 每次成功拉到的列表写进
~/.codex/dscodex-models.json。遇到网络错误或 5xx 时返回这份列表;遇到 401 这类 4xx 时原样透传,让 Codex 自己刷新登录。 - 🧹 卸载不再依赖标记注释。 Codex 桌面端重写
config.toml时会丢掉# DSCodex managed注释,旧版uninstall因此认不出自己的行:命令报成功,配置里却留下指向已关闭端口的openai_base_url和已删除文件的model_catalog_json,Codex 随之连不上。现在按值认领:带 43 位令牌的回环openai_base_url,以及指向dscodex-models.json的model_catalog_json,只可能是 DSCodex 写的。start会把它们补回标记并原位重写,uninstall会把它们删掉。用户自己写的openai_base_url和目录路径不受影响。 - ⬆️ 自动迁移。 升级后第一次
start会删掉旧的model_catalog_json,令牌和端口保持不变,不需要重新install。
升级
git pull --ff-only
npm install
node src/cli.mjs stop && node src/cli.mjs start
node src/cli.mjs doctor随后完全退出(⌘Q)并重开 ChatGPT 桌面端。选择器会在 Codex 下一次刷新时换成 ChatGPT 当前的模型列表。
验收
- 版本号在
package.json、src/constants.mjs、CITATION.cff、node src/cli.mjs --version四处对齐1.3.0。 - 本机测试:138 项,132 通过,0 失败,6 项 Windows 原生测试在 macOS 上跳过。
git diff --check干净。 - 端到端(隔离的
CODEX_HOME,真实 ChatGPT 登录,真实 chatgpt.com):- 按实际用户机器的状态构造旧配置(
model_catalog_json存在、标记注释丢失),start后该键被删、标记补回、令牌沿用。doctor其余五项 ok,catalog_present在 Codex 第一次经路由器拉取列表后转为 ok(这个隔离目录之前没有备用列表)。 codex debug models经路由器返回的列表与直连上游逐项一致,另加 DeepSeek Flash:桌面端 0.155.0 看到gpt-6-luna,CLI 0.154.0 看不到(上游按版本下发)。npm run smoke:picker通过。- 真实请求:
gpt-6-luna回复正确;deepseek/deepseek-flash工具循环通过(WS 握手 426 后两次 HTTP 200)。 - 测试中碰到一次 chatgpt.com
fetch failed,路由器返回上一份 7 个模型的列表,Codex 未受影响。 stop+uninstall后config.toml只剩用户自己的行。
- 按实际用户机器的状态构造旧配置(
未验收
npm run smoke:state需要真实~/.codex下已安装的 DSCodex,发布机当时处于卸载状态,未运行。- Windows 实机(桌面端 + 自启动)未在发布机上跑过,仅有 CI 覆盖。