Skip to content

fix: media timeouts + Qwen-Image-2.1 fixes + unified Team chat search - #327

Merged
jsyqrt merged 3 commits into
mainfrom
feat/ui-optimize-0920
Sep 21, 2026
Merged

jsyqrt merged 3 commits into
mainfrom
feat/ui-optimize-0920

Conversation

@jsyqrt

@jsyqrt jsyqrt commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

Summary

Three commits on top of v0.10.0, targeting the 0.10.1-rc.0 line:

  1. feat(llm): 多模态生成接口默认超时统一放宽至 10 分钟(OpenAI/MiniMax/DashScope/Fireworks/Markus 五 Provider 的图像/TTS/STT/视频请求,覆盖本地自托管推理冷加载场景;decide 保持 60s)
  2. fix(llm): Qwen-Image-2.1 本地接入复盘四大问题(capabilities 显式声明 + force 路由、媒体超时可配置、多模态 fallback 携带文本模型 id 修复、usable_models 口径统一;5 测试文件 174+ 用例通过)
  3. fix(web-ui): Team chat 搜索统一到一个面板 & macOS 不再劫持 Ctrl+F(Cmd+F 专属,服务端 FTS5 全历史结果并入,移除重复入口)

Test

  • backend: 新增 5 个测试文件(capabilities 声明优先/force/媒体超时/qualified-id 拆分/路由能力判定),174+ 用例全部通过
  • web-ui: 构建级验证(tsc)

…trl+F on macOS

- Keyboard: Team chat find only triggers on Cmd+F on macOS (Ctrl+F
  falls through to the native cursor-forward default); Win/Linux keep
  Ctrl+F. Matches the isMac pattern used in App.tsx.
- Merge the two search UIs: find-in-conversation now ALSO queries the
  server FTS5 index (debounced) and lists full-history results below
  the instant local matches. Removes the separate ChatSearchPanel
  entry point, its header button, and the duplicate affordance.
- ChatHistorySearch gains optional serverResults/serverLoading/
  onServerResultClick props + 'All history' section (en/zh-CN/es).
P0-1 模型能力声明缺失 → 本地/自托管模型无法路由到多模态能力:
- llm_add_model 新增 capabilities 参数(imageGeneration/vision/tts/stt/videoGeneration/decision),
  显式声明优先于模型 id 命名启发式,并持久化到 customModels
- llm_set_capability_routing 新增 force 开关:绕过命名启发式(仍尊重 catalog 显式声明)
- 校验提示给出三条出路:选可用模型 / llm_add_model 声明能力 / force 强制路由
- llm_list_providers 输出 capabilities 元数据;image_generation 命名模式扩展本地模型家族
  (qwen-image/hunyuan/stable-diffusion/nano-banana 等)

P0-2 硬编码媒体超时(120s 固定)→ 慢速本地推理被误杀:
- LLMProviderConfig 新增 imageGenerationTimeoutMs/ttsTimeoutMs/sttTimeoutMs/
  videoGenerationTimeoutMs/decisionTimeoutMs,OpenAI/MiniMax/DashScope/Fireworks/
  Markus Provider 全部接入(默认值与历史硬编码一致,可覆盖)
- llm_add_provider/llm_edit_provider 支持 *_timeout_ms 参数并持久化

P1-3 多模态 fallback 携带文本模型 id → 图像接口 404:
- router.resolveModalityProvider 非文本能力不再复用全局文本路由默认模型 id,
  仅当目录声明该模型具备对应能力时才携带 model
- multimodal 候选解析:限定 provider/model id(如 deepseek/deepseek-v4-flash-0731)
  拆分为显式 provider 走能力校验,报"不支持该模态"而非裸打图像接口
- generate_image 失败提示点明"文本模型不是图像模型,查 usable_models"

P1-4 usable_models 与路由校验能力判定口径统一:
- 单一查找入口 findModelDeclaredCapabilities 供校验与展示共用

测试:新增 capabilities 声明优先/force/媒体超时/qualified-id 拆分/路由模型能力判定
共 5 个测试文件 174+ 用例,全部通过。
OpenAI/MiniMax/DashScope/Fireworks/Markus 五个 Provider 的图像生成、TTS、
STT、视频生成四类媒体请求默认超时从 120s/180s 统一提高到 600s(10 分钟),
覆盖本地/自托管推理服务器(diffusers、vLLM 等)首次请求需冷加载权重的场景。
decide(决策模型)非多模态,保持 60s 默认不变。

- LLMProviderConfig 注释同步;llm_add_provider/llm_edit_provider 工具描述更新
- 新增 OpenAIProvider/MarkusProvider 默认值断言测试
@jsyqrt
jsyqrt merged commit b301980 into main Sep 21, 2026
2 checks passed
@jsyqrt
jsyqrt deleted the feat/ui-optimize-0920 branch September 21, 2026 15:46
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