Skip to content

[ac#1281] 两个已退役模型换成继任 id,并立一道「目录 id 上游还在不在」的持续判据 - #1283

Merged
jinjunnn merged 1 commit into
alphafrom
feat/1281-byok-liveness
Sep 8, 2026
Merged

jinjunnn merged 1 commit into
alphafrom
feat/1281-byok-liveness

Conversation

@jinjunnn

@jinjunnn jinjunnn commented Sep 8, 2026

Copy link
Copy Markdown
Owner

owner 2026-09-08 裁决:①替换成继任 id,不下架;②要一道持续判据。

① 替换(证据分两档,不混作一谈)

现 id 换成 依据 证据强度
kimi-k2 kimi-k3 vendor 一手文档明文退役(2026-05-25)+ 明文建议迁往 k3 强
moonshot-v1-128k kimi-k2.6 同页明文退役(2026-08-31,调用返 404);继任由我选(256k,保住目录原本「两档可选」的形状) 强(继任是判断)
qwen3.8-max-preview qwen3.8-max 阿里当前清单里没有 -preview;OpenRouter 也是 qwen3.8-max-0902 弱一档

第三行单列,因为它只是「清单里查不到」,没有退役声明 —— 和前两行不是一回事。

替换不消除「没 key 就验不了新 id」这个代价:它把「已知坏」换成「未验证」。②正是为这一格准备的。

② 持续判据 verify-byok-catalog.ts(alpha-check 第 [11/11] 步)

可行性是勘破出来的,不是设想:2026-09-08 实打,智谱 / DeepSeek 的 GET <baseURL>/models 带 key 均回 200 且列出真实 id。目录里每个 provider 都是 compat: "openai"(alpha-models.test.ts 钉着),所以这条路对全部 BYOK provider 成立。

三档结局照本仓 #890 已有形状,不新发明:

0 已验证   全部 provider 都验成且目录 id 都在册
1 真失守   某个目录 id 上游没有了 ← 这次的 kimi-k2 正是此类
2 未验证   有 provider 没验成(本机只有 2/5 家 key ⇒ 这是常态)

部分验证退 2 而不是 0,这一条是刻意的。 目录 8 个 id 本机只验得了 2 个;若退 0,末行会打 ✅ all local gates green —— 那句话把「没检查」读成「检查过了」,正是 #890 立三档要消灭的形态,也正是 kimi-k2 在目录里躺了三个多月没人发现的形态。未验证不拦 push,只是让总结行说实话。

两条「宁可判未验证也不判红」(误报比漏报贵):

  • 非 2xx(401 坏 key / 429 / 5xx)⇒ 未验证。401 说明我们的 key 不对,不是模型没了。
  • 响应不是 {data:[{id}]} ⇒ 未验证。上游改一次响应形状就把整个目录诬告成「全没了」—— 那是判据自己坏了却给出看起来正常的答案。

内建正样本自检:每个能真查的 provider 额外查一个结构上不可能存在的合成 id;它若被判在册 ⇒ 成员判断坏了,整脚本按失守退出。

变异验证

变异 结果
BYOK 段放一个上游没有的 id(两家各验) EXIT=1,点名该 id
真失守 + 同时有没验成的 EXIT=1(红压过未验证,不被 2 盖掉)
上游回 200 但形状不认识 EXIT=2 判未验证,不诬告目录
坏 key(401) EXIT=2 判未验证,不判红
全部 provider 都有 key 且都在册 EXIT=0(唯一该说绿的情形)
常态(2 验成 / 3 没验成) EXIT=2

⚠️ 第一次变异没打中被测对象:deepseek-v4-pro 在 platformModels 里也出现,replace(...,1) 命中的是那一处,BYOK 段根本没改 —— 于是闸「没红」。改成精确改 byokProviders 后重做,两家各验一次都红。变异没打中而读成「闸是好的」,和闸真坏了一样贵。

顺带

漂移锁抓到一处我自己的不一致:MiniMax-M2 已有 catalog 级读数却又被我写回 UNREAD,而 UNREAD 的语义就是「没有读数」—— 它想表达的「待升级成 probed」已由 grade 字段承载,两处都写就是第二个真源。已删。

门

scripts/alpha-check.sh:fail=0;末行按设计显示「有一步这次没验成」并逐条点名未验证的 provider 与 id。

Fixes #1281

🤖 Generated with Claude Code

https://claude.ai/code/session_0189TJTQjvPWFKZMTdPFTynv

owner 2026-09-08 裁决:①替换成继任 id,不下架;②要一道持续判据。

## ① 替换(证据分两档,不混作一谈)

  kimi-k2          → kimi-k3    vendor 一手文档**明文退役**(2026-05-25)+ **明文建议迁往 k3**
  moonshot-v1-128k → kimi-k2.6  同页明文退役(2026-08-31,调用返 404);继任由我选(256k,
                                 保住目录原本「两档可选」的形状,该页只笼统建议 k3)
  qwen3.8-max-preview → qwen3.8-max   **弱一档**:只是「阿里当前清单里查不到」,没有退役声明

第三行的证据比前两行弱,故单列。替换**不消除**「没 key 就验不了新 id」这个代价 —— 它把
「已知坏」换成「未验证」,而②正是为这一格准备的。

## ② 持续判据:packages/ui-mac/scripts/verify-byok-catalog.ts(alpha-check 第 [11/11] 步)

可行性是勘破出来的,不是设想:2026-09-08 实打,智谱 / DeepSeek 的 `GET <baseURL>/models` 带 key
均回 200 且列出真实 id(OpenAI 标准 `{object,data:[{id}]}`)。目录里每个 provider 都是
compat:"openai"(alpha-models.test.ts 钉着),所以这条路对全部 BYOK provider 成立。

三档结局照本仓 `#890` 已有形状,不新发明:
  0 已验证  **全部** provider 都验成且目录 id 都在册
  1 真失守  某个目录 id 上游没有了 —— 这次的 kimi-k2 正是此类
  2 未验证  有 provider 没验成(本机只有 2/5 家的 key ⇒ 这是常态)

**部分验证退 2 而不是 0**,这一条是刻意的:目录 8 个 id 本机只验得了 2 个,若退 0,末行会打
「✅ all local gates green」—— 那句话把「没检查」读成「检查过了」,正是 `#890` 立三档要消灭的
形态,也正是 kimi-k2 在目录里躺了三个多月没人发现的形态。未验证不拦 push,只是让总结行说实话。

两条「宁可判未验证也不判红」(误报比漏报贵):
  · 非 2xx(401 坏 key / 429 / 5xx)⇒ 未验证。401 说明我们的 key 不对,不是模型没了。
  · 响应不是 {data:[{id}]} ⇒ 未验证。上游改一次响应形状就把整个目录诬告成「全没了」,
    那是判据自己坏了却给出看起来正常的答案 —— 本仓最贵的一类。
内建正样本自检:每个能真查的 provider 额外查一个结构上不可能存在的合成 id,它若被判在册
⇒ 成员判断坏了,整脚本按失守退出。

变异验证(**第一次变异没打中被测对象**:deepseek-v4-pro 在 platformModels 里也出现,
replace(...,1) 命中的是那一处,BYOK 段根本没改 —— 改成精确改 byokProviders 后重做):
  BYOK 段放一个上游没有的 id(两家各验)      EXIT=1,点名该 id
  真失守 + 同时有没验成的                     EXIT=1(红压过未验证,不被 2 盖掉)
  上游回 200 但形状不认识                      EXIT=2 判未验证,**不**诬告目录
  坏 key(401)                                EXIT=2 判未验证,不判红
  全部 provider 都有 key 且都在册              EXIT=0(唯一该说绿的情形)
  常态(2 验成 / 3 没验成)                    EXIT=2

同批更新依赖旧 id 的处:alpha-models.test.ts 的 UNVERIFIED_TIERLESS 登记、
byok-output-cap.ts 的 UNREAD、byok-output-cap.test.ts、架构勘破文档、
docs/runbooks/model-catalog-updates.md(加 id 之后跑一次这个判据)、证据文档。

顺带被漂移锁抓到一处我自己的不一致:MiniMax-M2 已有 catalog 级读数却又被我写回 UNREAD,
而 UNREAD 的语义就是「没有读数」—— 它想表达的「待升级成 probed」已由 grade 字段承载,
两处都写就是第二个真源。已删。

scripts/alpha-check.sh:fail=0;末行按设计显示「有一步这次没验成」并逐条点名。

Fixes #1281

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0189TJTQjvPWFKZMTdPFTynv
@jinjunnn
jinjunnn merged commit d240c79 into alpha Sep 8, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG][P1] 「自带 Key」清单里挂着两个上游已退役的模型 —— 用户一选就是 404,不是输出短

1 participant