模型 ID 是入口相关的

**同一个模型在不同 agent 入口的模型清单里,注册的 ID 可能不一样(裸名 vs 带 provider 前缀)。报 `Invalid model name` / 404 时,第一步是查「该入口清单里这个模型到底写成什么」,而不是照搬另一条链路里能用的那个名字。**

实例

同一个 GPT-5.6-Sol,同一台机器上三家清单的写法不同:

入口清单里的 ID
Codexgpt-5.6-sol(裸名)
pi / Claude Codechatgpt/gpt-5.6-sol(带 provider 前缀)

而用户的中转网关真实模型 ID 是裸名。于是出现:

  • 原生 Codex 直连中转 → 裸名可用(Codex 自己会把短名解析成完整路由)
  • 平台网关(cindy_gateway 一类本地转发)→ 模型表只认它自己清单里的写法,传另一种就 400/404

结论

  • 模型名的合法性由末端网关的模型表决定,不由「你在别处能跑」决定。前缀是网关用来路由到某个上游 provider 的,不是装饰。
  • 因此「直连中转可用」不能推出「平台的网关链路可用」——两条链路的模型表是两份。
  • 排查顺序:先拿到该入口的模型清单(或清单来源),确认完整 ID;再看真正发出去的那次请求里的 model 字段是什么。
  • 这也解释了为什么「以前能用、最近坏了」常常不是模型坏了,而是入口换了(换了 agent、换了会话来源、换了网关)。

相关

  • 请求别名不等于实际模型ID —— 别名是请求侧的名字,实际 ID 以响应为准
  • 模型可见性按入口分批 —— 同一账号不同入口的模型可用性本就不同步
  • 能力被环境差异静默改变 —— 名字一样、路径不同的同族现象
  • Agent模型接入与额度机制