issue: user settings are wiped when a session that failed to load them saves over them

该问题发生在 Open WebUI 启动时获取用户设置( GET /api/v1/users/user/settings )失败后,会话仍以空设置对象运行;当任何自动或手动保存触发 updateUserSettings 全量覆盖写入时,数据库中的完整设置会被清空。优先排查启动时网络请求是否被中断(如

快速结论:该问题发生在 Open WebUI 启动时获取用户设置(GET /api/v1/users/user/settings)失败后,会话仍以空设置对象运行;当任何自动或手动保存触发 updateUserSettings 全量覆盖写入时,数据库中的完整设置会被清空。优先排查启动时网络请求是否被中断(如后端重启、代理超时),以及是否存在全量覆盖写入路径。

适用环境:已确认的环境为 Open WebUI v0.11.0(Docker 部署)、Ollama 0.32.1,客户端为 Windows 10 与 Android 上的 Firefox 152.0.4;此外在 Postgres 后端 + Docker Compose + Firefox 多容器标签页 + Watchtower 自动更新的环境中复现,代码基线与 ghcr.io/open-webui/open-webui:dev(commit 5caa91a49)一致。无证据表明必须跨设备触发。

最快修复方案:暂无确认的一步修复方案。Issue 中验证有效的处理方式为:在 Open WebUI 启动期间确保后端可用,避免设置请求失败;若已发生设置被清空,需从数据库备份恢复 user.settings 列(Issue 中未提供数据库恢复命令,仅描述现象与分析)。

注意事项:该分析基于开发者对 dev 分支的代码追踪,非官方发布补丁;多设备同时在线不是必要条件,任何设置请求失败后的会话保存都可能触发。相关 Issue(#24310、#24260)仅作参考,未在本文确认修复。

问题场景

用户通过 Docker 部署 Open WebUI v0.11.0,使用同一账号在 Windows 10 和 Android 设备上同时登录 Firefox。在 Android 上发起对话后,到 Windows 上打开同一会话并发送新消息或点击“重新生成”,刷新页面或进入设置面板后,全局用户设置(系统提示词、模型参数、主题等)全部恢复为默认值。开发者在后续分析中指出,跨设备并非必要条件:只要某次会话启动时设置加载失败,任何后续保存都会清空数据库中的完整设置。

报错原文

issue: user settings are wiped when a session that failed to load them saves over them

# 数据库中的 user.settings.ui 被缩减为:
{ "version": "0.11.0", "pinnedModels": [] }

# 浏览器控制台无显式错误;Docker 日志中仅有 get_models API 相关网络超时,无设置写入失败记录

原因分析

开发者通过数据库状态、服务端日志和代码追踪,将根因拆分为三个环节:

  1. 设置加载失败被静默吞掉:应用启动时 setUserSettings 调用 GET /api/v1/users/user/settings,若该请求失败(后端重启、代理 502、超时等),错误仅被记录,应用仍以空的默认设置对象(writable({}))正常运行,用户无感知。
  2. 每次设置保存都是全量覆盖:代码中有 13 处调用 updateUserSettings(localStorage.token, { ui: $settings }),后端不做合并,直接整体替换存储对象。
  3. 启动时存在自动保存路径:部分调用点在启动时自动触发,无需用户手动操作。一旦空对象被保存,用户设置即被清空。

环境排查

  • Open WebUI 版本是否为 v0.11.0 或同基线 dev 分支(commit 5caa91a49)。
  • 数据库类型:Issue 中确认 Postgres 后端可复现;其他数据库是否有同样行为未验证。
  • 部署方式:Docker Compose 是否启用自动更新(如 Watchtower),更新过程中是否可能导致后端短暂不可用。
  • 浏览器是否存在多容器标签页、代理或防火墙,可能使 GET /api/v1/users/user/settings 首次请求失败。
  • 在设置被清空前,是否观察到页面加载缓慢、接口超时或后端重启日志。

解决步骤

  1. 复现时开启浏览器开发者工具 Network 面板,检查应用启动时的 GET /api/v1/users/user/settings 请求是否返回 2xx;若为 5xx 或超时,即为触发条件。
  2. 若已发生设置清空,优先从数据库备份恢复 user.settings 列(具体备份恢复命令未在 Issue 中提供,需参考数据库文档)。
  3. 若要规避问题,可在 Open WebUI 启动期间确保后端服务稳定,避免自动更新与启动请求重叠;可考虑暂停 Watchtower 或调整更新窗口。
  4. 关注上游修复:开发者根因分析提交于 5caa91a49,请跟踪 dev 分支或后续发布版本中是否增加设置合并逻辑或加载失败重试。

验证方法

在修复后,重复“启动应用 → 强制让设置接口失败(如临时停后端)→ 再恢复并操作会话”的流程,进入设置面板确认主题、系统提示词、模型参数等未被清空;同时检查数据库 user.settings.ui 中应保留完整字段,而非仅剩 {"version": "0.11.0", "pinnedModels": []}

参考来源

open-webui/open-webui #27766

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 18925

发表回复

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