issue: side chat tab shows the parent conversation after a reload (copied context boundary is not persisted)

该问题出现在 Open WebUI 中已保存(非临时)的 Side Chat 上:侧边标签页在刷新前只显示侧聊内容,整页重载后却把父会话中被复制的上下文一起渲染出来。Issue 原文报错为:issue: side chat tab shows the parent conversation afte

快速结论:该问题出现在 Open WebUI 中已保存(非临时)的 Side Chat 上:侧边标签页在刷新前只显示侧聊内容,整页重载后却把父会话中被复制的上下文一起渲染出来。Issue 原文报错为:issue: side chat tab shows the parent conversation after a reload (copied context boundary is not persisted)。优先排查客户端在还原 side tab 时是否拿到了上下文/分支点信息。

适用环境:Open WebUI v0.13.3(也在当时的 dev 分支复现);Docker 安装;操作系统 Ubuntu。Issue 未提供 Python、CUDA、PyTorch、显卡、Ollama 或浏览器版本的确认信息。

最快修复方案:升级到包含 dev 分支提交 b01fe7fae 的构建。Issue 明确说明该问题已在 dev 上通过此提交修复,刷新或换设备后 side tab 只显示侧聊内容。

注意事项:Issue 未说明该修复是否已进入某个正式发布版本,因此以发布版本部署时需确认对应版本是否包含该提交;在修复版本上,正常从聊天列表打开已保存的侧聊分支仍会显示完整的 A1 + Q2 + A2,这是文档定义的预期行为,不是回归。

问题场景

在 Open WebUI 中使用启用了 Allow Side Chat 的账号操作“已保存”的聊天(不是 temporary side chat):先在聊天 A 中完成一轮对话 A1,再在 A 中打开 side chat 标签页提问得到 A2。此时侧边面板只显示 Q2/A2,聊天列表中出现已保存的侧聊 B。随后整页刷新(或在新页面/另一浏览器配置中重新打开该聊天)并打开恢复出来的 side tab,面板就变成了 A1 + Q2 + A2。

报错原文

issue: side chat tab shows the parent conversation after a reload (copied context boundary is not persisted)

浏览器控制台和服务器日志中均无报错,属于渲染/状态问题,而非请求失败。

原因分析

已保存的 side chat 本质上是父聊天的分支:其 history 以父会话副本 A1 开头,侧边面板原本依靠内存中的快照把这些被复制的消息隐藏起来。该快照不会随标签页持久化。

服务端其实已经保存了边界信息:GET /api/v1/chats/{B} 返回的 history 含 A1、Q2、A2,currentId = A2,同时带有 originalChatId = A 和 branchPointMessageId(A1 助手消息的 id)。但 GET /api/v1/chats/{A}/view 返回的 side tab 只有 { kind: "side", chatId, sideChatNumber, label },没有 context/branch point。可能原因即还原路径在前端无法据此重建可见分支边界,于是把整段 saved history 渲染出来。

同一 SPA 会话内切到其他聊天再切回不会触发,只有完整重载或新页面载入才会复现,这进一步指向页面加载时丢失了仅存在于内存的快照。

环境排查

  • 确认 Open WebUI 版本是否为 v0.13.3 或当时的 dev 分支;升级后确认构建中包含提交 b01fe7fae。
  • 确认安装方式为 Docker,并核对实际运行的镜像/版本是否与预期一致。
  • 确认测试用户已启用 Allow Side Chat,且使用的是已保存聊天而非临时 side chat。
  • 在浏览器开发者工具中分别检查 GET /api/v1/chats/{B} 的 originalChatId、branchPointMessageId 是否正常返回,以及 GET /api/v1/chats/{A}/view 的 side tab 字段。
  • Issue 未提供 Python、CUDA、PyTorch、显卡、Ollama 或浏览器版本,这些项无需作为本次问题的判断依据。

解决步骤

  1. 先按原步骤复现并留存“刷新前 side tab 仅显示 Q2/A2、刷新后显示 A1 + Q2 + A2”的对比记录,作为验证修复的基线。
  2. 确认当前部署不包含修复提交 b01fe7fae。
  3. 将 Open WebUI 升级到包含该 dev 修复的构建;若使用正式发布版本,先确认对应版本已合入此提交。
  4. 升级后重新执行:打开聊天 A,打开已保存的 side chat 标签页,整页刷新,再次打开恢复的 side tab。

验证方法

刷新后 side tab 只显示侧聊问答(Q2/A2),不再出现父会话 A1;再刷新一次仍保持一致;在其他浏览器配置/设备中打开同一聊天,恢复的 side tab 同样只显示侧聊内容。作为对照,从聊天列表直接打开已保存侧聊 B,应仍显示完整分支 A1 + Q2 + A2,这属于预期行为。

参考来源

open-webui/open-webui #34002

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 33969

发表回复

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