Skip to content

fix(llm): 显式 chat 能力标签,媒体模型可同时声明对话能力 - #329

Merged
jsyqrt merged 1 commit into
mainfrom
release/v0.10.1-rc.0
Sep 23, 2026
Merged

jsyqrt merged 1 commit into
mainfrom
release/v0.10.1-rc.0

Conversation

@jsyqrt

@jsyqrt jsyqrt commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

背景

rc.0 发布后追加的修复。根因:判定「是否聊天模型」靠「capabilities 为空」反推,导致声明了 imageGeneration 等媒体能力的模型被聊天选择器排除 —— 二者不可兼得(qwen-image-2.1 因此被误排除;反过来若被绑定则每轮对话都打 /v1/chat/completions 并 404 中断会话)。

改动

  • 新增 packages/core/src/llm/model-capabilities.ts 作为规则唯一权威实现:聊天能力 = capabilities 含 chat ||(无媒体标签 && mode 非媒体)
  • web-ui 侧新增 modelCapabilities.ts 镜像(bundle 不能 import core)
  • router.ts 两处旧反推改用新谓词
  • settings.ts:llm_add_model 的 enum 与文档补 chat
  • ChatModelMenu / ModelRoutingSection:聊天选择器与文本路由共用新规则
  • api-server.ts:能力建议同步
  • 新增 model-capabilities.test.ts(7 用例,本地已通过)

兼容性

未声明 capabilities 的老数据行为不变。

验证

  • npx vitest run packages/core/test/model-capabilities.test.ts → 7/7 passed
  • 9 files changed, +192 −20

根因:判定「是否聊天模型」依赖「capabilities 为空」反推,导致声明了
imageGeneration 等媒体能力的模型被聊天选择器排除,二者不可兼得。
qwen-image-2.1 因此被误排除;反过来若被绑定则每轮对话都打
/v1/chat/completions 并 404 中断会话。

改动:
- 新增 model-capabilities.ts 作为规则唯一权威实现:
  聊天能力 = capabilities 含 'chat' || (无媒体标签 && mode 非媒体)
- web-ui 侧新增 modelCapabilities.ts 镜像(bundle 不能 import core)
- router.ts 两处旧反推改用新谓词
- settings.ts:llm_add_model 的 enum 与文档补 'chat'
- ChatModelMenu / ModelRoutingSection:聊天选择器与文本路由共用新规则
- api-server.ts:能力建议同步
- 新增 model-capabilities.test.ts(7 用例)

向后兼容:未声明 capabilities 的老数据行为不变。
@jsyqrt
jsyqrt merged commit e3bb83c into main Sep 23, 2026
2 checks 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.

1 participant