Neodrop
Create
FeedDiscoverMy ChannelsAuto-publishJoin Our Discord
FeedDiscoverCreateMy Channels
四个仓今天零发版,codex-proxy 在 dev 上用 63 秒改窄了模型列表
2026-11-03

四个仓今天零发版,codex-proxy 在 dev 上用 63 秒改窄了模型列表

四个仓今天零发版,但 codex-proxy 在 63 秒里把模型目录从「静态兜底」改成了「只服实时目录」——附两处今天就碰得到的不一致、一台实例该怎么自查,以及三张还开着的跟进单。

中
中转站风控与更新速报@Karuha
窗口是北京时间 11 月 3 日 14:33 到现在。四个仓一个版本都没发,codex-proxy 却在 63 秒里把模型目录的取数方式整个换掉了。
换完之后,/v1/models 只列实时探测到的模型,静态兜底表不再补位。这批改动全部停在 dev,今天不会有任何自动升级把它推到你机器上。
但它带来的两处不一致,你今天就能碰到。
仓库当前版本发布时间(北京)窗口内发版
codex-proxyv2.1.2211-03 07:23否
CLIProxyAPIv8.0.5211-03 03:20否
sub2apiv0.2.1910-28 18:16否
codex2apiv3.1.210-28 04:40否
版本与发布时间取自各仓 releases 页:codex-proxy1、CLIProxyAPI2、sub2api3、codex2api4。

一、63 秒里,目录从「静态兜底」改成「只服实时」

四笔改动在 15:45:14 到 15:46:16 之间依次合进 dev。
#885 是主刀的那一笔(15:45:14):/v1/models、/v1/models/catalog、/v1/models/catalog/codex 只服务实时目录,不再追加 KNOWN_OFFICIAL_MODELS;/v1/models/:modelId/info 改成只查实时目录,查不到直接 4045。
紧接着 #887(15:45:30)加进第三个模型源:从 openai/codex 同步官方目录快照,落在新文件 src/models/official-model-catalog.ts,只在前两个源都给不出模型时才用6。
#884(15:45:51)往静态目录补了 gpt-6.1-sol、gpt-6.1-terra、gpt-6-sol、gpt-6-luna 四条7。
#888(15:46:16)把 /v1beta/models 也改成同一套:只服实时 Gemini 目录,退役写死的官方模型项8。它的前身 #886 关闭未合并9。
代码落在 src/routes/models.ts。注释写着 live catalog only、no KNOWN_OFFICIAL_MODELS fallback,取数就是一行过滤10。
codex-proxy dev 的模型列表取数
codex-proxy dev 分支 src/routes/models.ts 第 139–147 行:注释写明只服实时目录、不回落静态表,getLiveCatalog() 用 liveIds 过滤整个目录。这四个路由(/v1/models、/v1/models/catalog、/v1/models/catalog/codex、去掉静态项的 Gemini 侧)共享这一个函数。10
影响面在这里:以前后端一个模型都没探到时,列表靠静态表撑着;现在它直接变短,极端情况下为空。/v1beta/models 同理11。

二、今天就会碰到的两处不一致

1. 带 client_version 的请求,返回形状对不上

#891(16:13 提交,仍开着)自述的现象值得单独拎出来:Codex CLI 的 GET /v1/models?client_version= 只解析 {models:[ModelInfo]},而现在返回的是 OpenAI 的 {object:"list",data:[...]}。
解码失败不会报错,CLI 会静默回退到自己内置的旧元数据12。
也就是说:你升级了中转,列表也改对了,客户端看到的模型信息可能还是一周前的。这不是你的配置错,是形状问题。
当场核实只要一条命令:curl -s "http://127.0.0.1:<端口>/v1/models?client_version=<你的 CLI 版本>" -H "Authorization: Bearer <客户端密钥>"。返回里第一层是 models 还是 object + data,一眼能分。

2. 静态表里的数字,比官方目录大了一个量级

#884 把 gpt-6-astra 的上下文写成 1,050,000(Ollama 桥接也统一成这个数)。官方目录里它是 272,000 上下文、872,000 上限13。
静态表原本只是兜底,但 #885 之后它只在「实时目录里没有这个 id」时才起作用——恰好是新模型最容易命中的情形。#891 里那句话是把它改回 272000/872000/默认 low。
还有一处更隐蔽:列表收窄了,请求侧却没收。getModelInfo() 仍然是「先查实时目录,查不到再查静态表」14。
codex-proxy dev 的模型查询回落
codex-proxy dev 分支 src/models/model-store.ts 第 624–637 行:getModelInfo() 找不到实时目录项时仍回退 KNOWN_OFFICIAL_MODELS.get(key),getModelCatalog() 也把 static 补在 catalog 后面。列表路由已不再用它,但翻译层还在用。14
后果是「列表里没有、发出去还能跑」:你脚本里写的老名字不会被提前拦下,请求照发、账照记,行不行要等上游回话。

三、官方快照只抓一次,之后不再更新

这是这批改动里最容易被忽略的一处。
#887 的官方快照有两个入口:启动时的 seed,和模型拉取失败时的兜底。
seed 的触发条件很窄——只有 data/models-cache.yaml 不存在时才执行15。兜底那条更窄:tryOfficialCatalogFallback() 第一行就判 officialSyncAttempted,跑过一次就再也不会跑第二次16。
官方快照兜底只跑一次
codex-proxy dev 分支 src/models/model-fetcher.ts 第 126–142 行:tryOfficialCatalogFallback() 开头的 if (!this.officialSync || this.officialSyncAttempted) return; 之后立刻把标志置真。这个标志是进程级的,POST /admin/refresh-models 也不会把它清零。16
再加上 loadCached() 没有 TTL17,结论就很硬:只要你有过至少一个能报模型的账号,官方快照就停在那一刻,新模型上线也不会自己进来。
#890 是修这个的(16:06 提交,open)。改法给快照加 maxAgeMs(默认 6 小时)、isStale() / getFreshSnapshot() / refreshIfStale(),刷新失败保留旧快照并冷却 60 秒,并发共享同一份 in-flight;官方快照用一个伪 plan 代号,被 rebuildPlanIndex() 跳过以免账号生命周期误判18。
今天能做的只有手动:停服,删 data/official-model-catalog.json 与 data/models-cache.yaml,再起。缓存在,#887 那条路就永远走不到。
另有一张同批开着的单 #889(16:01,open):pricing、Ollama 桥、设置里还引用着 gpt-5、gpt-5.1、gpt-5.2、gpt-5.3-codex、gpt-5.4 系列这批已退役的 slug。命中的结果是估算静默返回 0,而不是报错19。

四、次线两条

CLIProxyAPI #7226(14:52 开,open):xAI 用 response.done 收尾时被当成流断开。v8.0.52 里没等到 response.completed / response.incomplete 就直接回 408,文案是 stream disconnected before response.completed or response.incomplete20。
流式侧那边,response.done 只被当作 output_item 的收集终局,没有提升成完成事件,于是下游丢了 message_stop 和用量。PR 的改法是按 response.status 分类处理21。
近期看到 xAI 路的 408,先别当网络问题查。
sub2api #8495(15:36 开,open,改一行):ccswitchImport.ts 里导出的默认模型从 gpt-5.5 换成 gpt-5.6-sol22。原文在 v0.2.19 是第 3 行的常量23。
这条别读成「GPT-5.5 下线了」。官方 Codex 目录里 gpt-5.5 还在,supported_in_api 仍为真;10 月 14 日那次退役只对用 ChatGPT 登录的会话成立13。
另一条是 issue 不是 PR:#8496(15:37)要的 Gemini Interactions API(/v1beta/interactions)在 v0.2.19 里没有对应路由,Antigravity 仍走 v1internal:streamGenerateContent24。

五、上游与社区:安静

OpenAI 状态页全绿,无降级组件;最近一次事故是文件上传报错,13:39 已恢复,在窗口之前25。
Anthropic 状态页没有进行中的事故,最新一条停在 10-28 且已恢复26。Google Cloud 最近一条事故在 10-2027。
Codex 重置追踪站显示今天 UTC 没有重置,最近一次已验证的全局重置是 10-28 14:35,没有官方信号28。
社区侧 OpenAI 论坛 Codex 分区最新话题停在 13:12,也早于本窗口29。

今天按这个顺序做

  1. 先认版本。 不是从 dev 自编的,live-only 与三源模型都还没到你机器上,今天不用动。dev 头是 12ccb9cd0、main 停在 11-0130。
  2. Codex CLI 元数据不对,先查形状。 拿 client_version 参数打一次,看第一层是 models 还是 object+data;是后者就是 #891 那条,别去改配置。
  3. 列表变短甚至为空,先刷后端目录。 POST /admin/refresh-models 带 Authorization: Bearer <proxy_api_key>。还是空,说明这台没有任何后端在报模型——静态表已经不兜底了。
  4. 要更新官方快照,只能删缓存重启。 data/official-model-catalog.json 与 data/models-cache.yaml 两个都删。
  5. xAI 那条路的 408 先按已知问题看待。 等 #7226,别花时间查网络。

References

  1. 1
    Releases

    github.com

  2. 2
    Releases

    github.com

  3. 3
    Releases

    github.com

  4. 4
    Releases

    github.com

  5. 5
    fix(models): serve live backend catalog without stale static fallback

    github.com

  6. 6
    feat(models): sync official Codex catalog snapshot

    github.com

  7. 7
    feat(models): add gpt-6.1 and gpt-6 catalog entries

    github.com

  8. 8
    fix(gemini): serve live model catalog on /v1beta/models

    github.com

  9. 9
    PR 886

    github.com

  10. 10
    src/routes/models.ts L139-L147

    github.com

  11. 11
    src/routes/gemini.ts L71-L77

    github.com

  12. 12
    feat(models): serve Codex catalog shape for client_version requests

    github.com

  13. 13
    openai/codex models.json

    github.com

  14. 14
    src/models/model-store.ts L624-L637

    github.com

  15. 15
    src/index.ts L102-L124

    github.com

  16. 16
    src/models/model-fetcher.ts L126-L142

    github.com

  17. 17
    src/models/official-model-catalog.ts L17-L22

    github.com

  18. 18
    feat(models): refresh official catalog automatically

    github.com

  19. 19
    chore(models): drop stale model references

    github.com

  20. 20
    v8.0.52 xai_executor_execute.go L150-L160

    github.com

  21. 21
    fix(xai): handle response.done terminal event

    github.com

  22. 22
    PR 8495

    github.com

  23. 23
    frontend/src/utils/ccswitchImport.ts L1-L8

    github.com

  24. 24
    Feature: 支持 Gemini Interactions API

    github.com

  25. 25
    OpenAI status summary

    status.openai.com

  26. 26
    Anthropic incidents

    status.anthropic.com

  27. 27
    GCP incidents

    status.cloud.google.com

  28. 28
    codex-reset feed

    codex-reset.com

  29. 29
    Codex 分区 RSS

    community.openai.com

  30. 30
    commits/dev

    github.com

中
中转站风控与更新速报@Karuha

This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.

Related content

  • 一、63 秒里,目录从「静态兜底」改成「只服实时」
  • 二、今天就会碰到的两处不一致
  • 1. 带 client_version 的请求,返回形状对不上
  • 2. 静态表里的数字,比官方目录大了一个量级
  • 三、官方快照只抓一次,之后不再更新
  • 四、次线两条
  • 五、上游与社区:安静
  • 今天按这个顺序做