issue: notes over 2 MB (e.g. with pasted images) can no longer be edited since v0.12, edits are discarded without any error

该问题通常出现在 Open WebUI v0.12.x 中编辑体积超过 2 MiB 的协作笔记页面时(典型场景是笔记内联粘贴了 base64 图片)。客户端发出的 initialize 初始化更新被服务端以超出单文档体积预算为由拒绝,导致编辑器未进入 synced 状态,本地编辑被静默丢弃且无任何报

快速结论:该问题通常出现在 Open WebUI v0.12.x 中编辑体积超过 2 MiB 的协作笔记页面时(典型场景是笔记内联粘贴了 base64 图片)。客户端发出的 initialize 初始化更新被服务端以超出单文档体积预算为由拒绝,导致编辑器未进入 synced 状态,本地编辑被静默丢弃且无任何报错提示。优先排查笔记页面对应的 Yjs 文档体积是否超过 YdocManager.MAX_DOCUMENT_SIZE(2 × 1024 × 1024 字节)。

适用环境:Issue 已确认:Open WebUI v0.12.5(Docker,从 v0.11.4 升级)、Ubuntu 24.04.2 LTS 服务端、Chrome 156.0.8078.74、单容器 --network=host 部署于 Caddy 反向代理之后、SQLite 且未配置 DATABASE_URL、未使用 Redis / WEBSOCKET_MANAGER(默认配置,走内存版 YdocManager)。Python、CUDA、显卡版本在该 Issue 中未提及。

最快修复方案:暂无确认的一步修复方案。Issue 中的分析指向代码层面的单文档体积硬编码限制(无环境变量可调),报告者表示该现象在 v0.11.4 上不存在、v0.12.5 上出现,但 Issue 讨论中未给出经验证的回退版本或配置改法。

注意事项:该限制为硬编码值,Issue 中未确认存在可通过环境变量或配置项放宽的入口,因此“调大限制”的说法在当前证据下不可依赖。此外,客户端不会给出可见错误,用户往往误以为笔记已保存,存在静默丢失编辑内容的风险。Issue 中提及的限制值和相关代码位置均来自报告者对 v0.12.5 源码的引用,可能随版本变化。

问题场景

在 Open WebUI 的 Notes(笔记)功能中打开一个协作编辑页面,页面内容(以 Yjs 文档形式)超过约 2 MiB 时触发。报告的典型案例是:在 v0.11.4 时代创建的笔记中内联粘贴了大量截图,内容以 data:image/...;base64,... 形式存在,使笔记体积超过阈值。升级到 v0.12.5 后,打开该笔记输入文字无效,内容不会保存,切换页面时还会提示 Tab is not connected. Reconnect before leaving this tab.,但没有任何 toast 或界面错误说明原因。报告者指出,任何 Yjs 状态超过 2 MiB 的笔记页面都可能出现同样现象。

报错原文

WARNING | open_webui.socket.main:yjs_document_update:1277 - Update for document note:<id>:page:main:0 is invalid or over the size limit. Rejecting update.
Tab is not connected. Reconnect before leaving this tab.

原因分析

根据报告者的定位,最可能的原因是 #31603 引入的单文档体积预算:YdocManager.MAX_DOCUMENT_SIZE = 2 * 1024 * 1024,为硬编码值,未提供环境变量。当客户端为页面发送 initialize 种子更新时,若超过该预算,服务端会拒绝该更新并以 None 应答;客户端 Collaboration.initializeContent 因此提前返回,永远不会把 synced 置为 true。在 !synced && isConnected 状态下,filterTransaction 对每一次本地修改返回 false,于是输入不生效。体积检查发生在 append_to_updates 中。

可能原因还包括:笔记使用长期积累的内联 base64 图片导致文档膨胀,而非文本本身过大。Issue 讨论串中自动关联的其他 Issue(#26140、#28667、#28539)描述了笔记协作流程中其他形式的静默丢编辑问题,但根因不同,不能替代本 Issue 的结论。

环境排查

  • 确认 Open WebUI 版本是否为 v0.12.x(Issue 观察版本为 v0.12.5,且从 v0.11.4 升级后出现)。
  • 确认部署方式:Docker 单容器、是否使用 --network=host、反向代理是否正常转发 WebSocket(其他笔记可正常编辑说明 WebSocket 基础通路可用)。
  • 确认是否使用 Redis / WEBSOCKET_MANAGER;Issue 环境为默认配置,走内存版 YdocManager 分支。
  • 确认数据库与 DATABASE_URL 配置(Issue 为 SQLite、未设置 DATABASE_URL)。
  • 估算出问题笔记的 Yjs 文档体积,重点检查内容中是否存在大量内联 base64 图片。
  • 查看服务端日志中是否反复出现上述 over the size limit 警告,并核对 note:<id>:page:main:0 是否对应目标笔记。

解决步骤

  1. 先确认现象归属:在服务端日志中检索 invalid or over the size limit,确认警告中的文档 ID 与无法编辑的笔记一致。
  2. 评估笔记体积来源:检查该笔记是否因内联粘贴图片(data:image/...;base64,...)而超过约 2 MiB。这是报告中已确认的典型触发路径。
  3. 在 Issue 未给出官方修复前,可优先尝试规避而非改动限制:将笔记中的大体积内联图片改为文件引用、拆分超大笔记为多个较小页面,使单个 Yjs 文档低于 2 MiB 预算。
  4. 如确需恢复编辑,可优先尝试回退到报告者确认可正常编辑的 v0.11.4(同一数据卷),但该回退在 Issue 中仅被描述为升级前的状态,未被维护者验证为推荐方案,回退前应备份数据。
  5. 不建议依赖修改 MAX_DOCUMENT_SIZE 或寻找环境变量来放宽限制:Issue 明确指出该值为硬编码且无环境变量,报告中未提供任何已验证的配置化解决方案。
  6. 关注 Issue #33606 的关闭状态与后续讨论;若维护者给出限流放宽、错误提示或配置项,再按官方说明执行。

验证方法

处理后重新打开目标笔记并输入文字:若编辑可正常保存,且服务端不再出现 Update for document note:<id>:page:main:0 is invalid or over the size limit. Rejecting update. 警告,切换页面时也不再出现 Tab is not connected. Reconnect before leaving this tab.,说明该笔记的 Yjs 文档已回到体积预算之内。可同时检查其他大笔记页面是否仍可正常协作编辑,以确认问题只与文档体积相关。

参考来源

open-webui/open-webui #33606

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 32232

发表回复

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