Skip to content

Releases

v0.5.0 — 分层模型能力解析

Choose a tag to compare

@xiaokaizhou xiaokaizhou released this 11 Nov 13:31

首个打 tag 的版本。相对 0.3.0,核心变化是模型能力不再靠名字猜:改为分层证据解析,判定结果可见、可纠正、可探测。

亮点

之前 现在
每个模型只有一个类型标签 多标签:text + vision 可共存
名称子串匹配(h3 / wan / sd- 误伤) 词元边界正则 + 模型族规则
视觉候选池 0、nano-banana 被判成文本 vision 池 32、图像模型正确归类
显式模型不存在时静默换成别的模型 直接报错并列出候选
不能纠正判定 设置卡片里就地勾选,写入覆盖文件

新增

  • 分层能力解析引擎 lib/capabilities.js,证据优先级:人工覆盖 1.00 > provider 声明 0.90 > 自定义规则 0.85 > 规则/家族 0.85 / 0.60 > 在线元数据 0.80 > 兜底纯文本 0.30。
  • 模型能力矩阵:设置卡片按 provider 分组显示每个模型的模态 chip、置信度与证据来源,可勾选纠正 / 清除覆盖 / 逐 provider 重新探测。
  • 在线探测 POST /api/llm-multimodal/detect:拉取 GET {baseURL}/models 的元数据并合并,失败只降级不阻塞。
  • 新接口:GET /api/llm-multimodal/capabilities、POST /api/llm-multimodal/capabilities/override。
  • 真实目录校验器 npm run verify:capabilities(scripts/verify-capabilities.mjs)。
  • 文档 docs/capability-resolution.md,README 中英双语补充该章节。

修复

  • gemini-nano-banana-2.1 / gemini-3-pro-image / flux.2-klein-4b 等图像模型被误判为文本。
  • minimax/h3 等含 h3 的对话模型被误判为视频。
  • 视觉通道因候选池为空而完全不可用。
  • 混合网关把 claude-* / gemini-* 挂在原生端点导致自动挑选失败(现自动后置并解释原因)。
  • 空池时设置里的 defaultModel 无法兜底(新增 modelFromOverride)。
  • 模型下拉「选中后仍显示请选择」(本地草稿 + 重试 + 直写回落)。
  • 能力矩阵与选择器在注入样式未生效时排版塌陷(结构样式内联化)。

不兼容变更

  • 模型行的 type 现为 primary,并新增 modalities / primary / confidence / sources。
  • pickModel() 未命中返回 { model: null, requestedButMissing: true },不再静默回退。

验证

  • vitest:7 文件 159 例通过。
  • npm run verify:capabilities:真实配置 75 个模型、21 条期望 pass 21 / fail 0。
  • 运行中宿主实测池子:text 63 / image 8 / video 4 / vision 32 / tts 0 / music 0;generate_vision 自动选到 saygm:gpt-5.4 并正确识别红色测试图。

已知限制

  • 语音 / 音乐池为空是配置事实:默认 llm-pi-ai 未列任何 TTS / 音乐模型。补上 id(含 speech/tts/voice,或 music/song/lyric)并给该 provider 配 baseURL 即可出现。
  • 设置页 UI 尚未经受真实浏览器视觉验收(宿主 GUI 需鉴权 token)。

完整变更:CHANGELOG.md