issue: channel mention list drops users matching the current query when a stale search response arrives late

该问题发生在 Open WebUI 的频道消息输入框中输入 @ 触发用户提及列表时,旧查询的搜索结果响应晚于新查询到达,会覆盖当前列表并丢失本应匹配的用户。优先确认是否已升级到包含修复提交 dcff244f9 的 dev 版本。

快速结论:该问题发生在 Open WebUI 的频道消息输入框中输入 @ 触发用户提及列表时,旧查询的搜索结果响应晚于新查询到达,会覆盖当前列表并丢失本应匹配的用户。优先确认是否已升级到包含修复提交 dcff244f9 的 dev 版本。

适用环境:Open WebUI(Git Clone 安装方式),dev 分支 @ 7229fac0c;前端竞态问题,与浏览器类型无关(Chromium 系浏览器验证);Ollama 不适用。

最快修复方案:升级到包含 dcff244f9 提交的 Open WebUI dev 版本。该修复在 getUserList 中通过 Svelte 的 getAbortSignal 将 abort 信号传递给两个请求,并在信号触发时直接返回、不再赋值 _users,从而取消过期请求。

注意事项:该修复已在 dev 分支验证(883c7434f),但尚未提及是否已合并到稳定版本;如果你使用的是非 dev 分支,可能需要等待版本发布或手动应用该提交。

问题场景

在 Open WebUI 的频道消息输入框中输入 @ 触发用户提及弹窗时,快速输入或退格导致查询条件变化,旧查询的搜索结果响应晚于新查询返回,弹窗列表被旧响应覆盖,丢失当前输入应匹配的用户。

报错原文

issue: channel mention list drops users matching the current query when a stale search response arrives late

原因分析

问题根因在 src/lib/components/channel/MessageInput/MentionList.sveltegetUserList 函数中:当搜索请求返回时,_users 被无条件赋值,没有检查当前查询条件是否仍与发起请求时的一致。在快速输入或退格时,较早请求的响应可能晚于较新请求返回,旧响应的数据覆盖新响应的数据,导致当前查询应匹配的用户从列表中消失。这是一个典型的竞态条件(race condition),而非浏览器特定问题。

环境排查

  • 确认 Open WebUI 版本是否为 dev @ 7229fac0c 或更早版本(该问题已在后续提交修复)。
  • 确认是否为 Git Clone 安装方式(Issue 中报告的环境)。
  • 检查浏览器是否为 Chromium 系(虽然 Issue 标记为“frontend race, not browser specific”,但复现环境为 Chromium 系)。
  • 确认 Ollama 不适用(本问题与 Ollama 无关)。

解决步骤

  1. 将 Open WebUI 升级到 dev 分支最新版本,确保包含提交 dcff244f9 或更新版本。
  2. 如果使用非 dev 分支,可尝试手动应用修复提交,或在 dev 分支上验证问题是否已解决。
  3. 升级后,在频道中复现原始场景(输入 @li 后立即退格为 @l),确认提及列表不会再被旧响应覆盖。

验证方法

按照 Issue 中的复现步骤操作:在频道中输入 @li 后立即退格为 @l,观察提及弹窗是否始终显示所有匹配当前输入的用户(如 LightOllama)。修复前,弹窗可能在旧响应到达后仅显示 Light;修复后应始终显示所有匹配用户。

参考来源

open-webui/open-webui #28883

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 19659

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注