issue: per-chat tool/skill/filter/feature toggles lost when navigating between chats

在 Open WebUI 中,从首页新建会话并启用工具/MCP、技能或过滤器后,发送消息再离开并返回该会话,这些开关会丢失。优先排查会话级开关是否只依赖 sessionStorage 输入草稿,以及草稿键名是否正确。

快速结论:在 Open WebUI 中,从首页新建会话并启用工具/MCP、技能或过滤器后,发送消息再离开并返回该会话,这些开关会丢失。优先排查会话级开关是否只依赖 sessionStorage 输入草稿,以及草稿键名是否正确。

适用环境:Open WebUI v0.11.4(官方 Docker 镜像,运行于 Podman);Fedora Workstation 44;Firefox 157.0。Issue 未提供 Python、CUDA、PyTorch 或显卡信息。

最快修复方案:暂无确认的一步修复方案。Issue 结论指向代码级持久化缺失,需要等待上游修复或自行打补丁。

注意事项:若所用模型配置了 meta.toolIds、meta.skillIds、meta.defaultFeatureIds 等默认值,加载时 setDefaults() 会重新套用默认值,可能掩盖症状,但用户手动选择的状态仍然会丢失。v0.11.4 中 #29762 的修复只覆盖页面重载时的草稿恢复,不覆盖“离开再返回”场景。

问题场景

在 Open WebUI 的首页新建会话(非侧边栏已有会话),在输入框的集成菜单中启用一个工具/MCP 服务器、技能或过滤器,再发送一条消息并等待回复。期间不继续输入,随后切换到其他会话或页面,再返回原会话时,工具、技能、过滤器开关被清空;Web 搜索、图像生成则回到模型默认状态。之后该会话的请求不再携带此前启用的 tool_ids/skill_ids/filter_ids,工具会在不知不觉中停止使用,且控制台没有报错。

报错原文

issue: per-chat tool/skill/filter/feature toggles lost when navigating between chats

原因分析

根据 Issue 中的根因分析,这类会话级状态(selectedToolIds、selectedSkillIds、selectedFilterIds、webSearchEnabled、imageGenerationEnabled、codeInterpreterEnabled、toolApprovalMode 等)没有被写入聊天记录。能够跨页面切换保留的自动保存逻辑 saveControls 只提交 params 和 files,遗漏了整组集成/功能开关。

离开会话时 navigateHandler 会把这组状态清零,返回时只能从 sessionStorage 的输入草稿恢复;找不到草稿时才调用 setDefaults(),而它只会按模型 meta.* 默认值回填。对于从首页新建的会话,草稿被写在错误的键 chat-input 而不是 chat-input-<chatId>,返回时按带后缀的键查找因而找不到,开关就保持为空。代码解释器是部分例外:navigateHandler 不清除它,但它同样缺少持久化。

环境排查

  • 确认 Open WebUI 版本是否为 v0.11.4,以及是否运行在官方 Docker 镜像 / Podman 环境。
  • 确认所用模型是否未配置 meta.toolIds、meta.skillIds、meta.defaultFeatureIds;配置了默认值的模型会掩盖部分开关的丢失现象。
  • 确认问题是否发生在“首页新建会话→发送消息→离开→返回”这一路径,而不是已有侧边栏会话。
  • 确认浏览器为 Issue 中的 Firefox 157.0,并检查浏览器控制台是否有 sessionStorage 相关异常(Issue 报告中无控制台报错)。
  • Issue 未涉及 Python、CUDA、PyTorch、Ollama 版本信息,无需作为排查项。

解决步骤

  1. 先按上述路径稳定复现:使用无模型级默认值的模型,从首页新建会话,启用一个工具/MCP 或技能,发送消息,等待回复后不输入任何内容,切换走再返回,观察开关是否被清空。
  2. 在浏览器开发者工具中检查 sessionStorage,对比首页新建会话下写入的键名 chat-input 与返回时查找的键名 chat-input-<chatId>,确认草稿键名不一致。
  3. 若确认是同一问题,可优先尝试:返回会话后手动重新开启所需工具/技能/过滤器,作为临时规避;该操作不会恢复已丢失的历史选择,需在每个受影响会话中重复。
  4. 关注上游修复。Issue 中建议将整组会话级开关纳入 saveControls 的持久化字段,并修正首页新建会话的草稿键名;在官方版本修复前,自行修改前端代码属于未验证方案,需自行承担风险。
  5. 如果所用模型配置了 meta.* 默认值,可暂时取消这些默认值以便观察真实症状,但这不是修复手段,取消后手动开关仍会丢失。

验证方法

按复现路径操作后返回原会话,确认工具/MCP、技能、过滤器开关仍保持此前启用状态,且后续消息请求中仍携带对应的 tool_ids/skill_ids/filter_ids;Web 搜索和图像生成也应保持用户选择而非回到模型默认值。若仍被清空,说明持久化问题未解决。

参考来源

open-webui/open-webui #32084

相关 Issue:#29760、#27624、#29050、#29602

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 29386

发表回复

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