
issue: Assistant messages are stored with empty content, causing conversation context loss in v0.10.2
快速结论:该问题发生在 Open WebUI v0.10.2 Docker 部署环境中,助理回复的对话历史在后续请求中丢失。优先排查是否为模型上下文窗口(context window)限制导致,而非直接认为是 Open WebUI 数据库存储问题。
问题场景
用户使用 Docker 部署的 Open WebUI v0.10.2 连接本地 Ollama 实例(v0.31.1),在 Ubuntu 24.04 系统上通过 Edge 浏览器启动新对话。选择 gemma4:e4b 或 qwen3:8b 模型进行多轮对话时,助理无法记住前文内容。而在 Ollama CLI 中直接运行相同模型,对话历史正常保留。
报错原文
Assistant messages are stored with empty content:
{
"role": "assistant",
"content": ""
}
while the actual response is stored only inside:
output[].content[].text
原因分析
经过 Open WebUI 开发团队验证,从 v0.10.2 的 output-items 重构开始,助理回复文本被有意地存储在 output[].content[].text 字段中,而数据库中的 content 字段预期为空。后端在每次向模型发送请求时,会从数据库重新加载消息链并重建助理消息内容(包括为 Ollama 模型重包装 reasoning 内容到 <think> 标签中)。因此,SQLite 中 content 字段为空本身 不是 导致对话上下文丢失的原因。
如果实际出现上下文丢失,最可能的原因是模型自身的上下文窗口(context window)限制导致历史被截断,而非 Open WebUI 的数据库存储布局问题。
环境排查
- Open WebUI 版本:v0.10.2(Docker 部署)
- Ollama 版本:0.31.1
- 操作系统:Ubuntu 24.04 LTS(Docker 宿主)
- 浏览器:Edge
- 模型:gemma4:e4b、qwen3:8b(也建议测试其他模型)
- 需确认模型的 context window 大小及实际上下文长度是否超出限制
解决步骤
- 启用 Ollama 调试日志:在 Ollama 服务端开启 debug 级别日志(如设置环境变量
OLLAMA_DEBUG=1),捕获 Open WebUI 发送给 Ollama 的实际messages数组内容。 - 检查发送给模型的上下文:查看 Ollama 收到的请求中的
messages数组,确认对话历史(user 消息 + assistant 重建消息)是否完整传递到 Ollama。 - 如果上下文完整:说明问题出在 Ollama 一侧,可能是模型上下文窗口不足导致历史被截断。尝试缩短对话长度、减少 token 消耗(如限制响应长度),或使用更大上下文窗口的模型。
- 如果上下文不完整:说明 Open WebUI 后端在重建消息链时存在问题,可尝试清理浏览器缓存、重启 Docker 容器,或升级到更高版本(如有修复发布)。
- 直接使用 Ollama CLI 复现:在终端运行
ollama run <model_name>并进行相同对话测试,以排除模型本身的问题。
验证方法
在进行解决步骤后,开启新对话重复原始测试:先发送 Guarde este número: 7392.,再发送 Qual foi o número que eu acabei de informar?。如果助理能正确回答 7392,说明上下文恢复。同时检查 Ollama 调试日志,确认发送给模型的 messages 数组包含完整的用户/助理历史。



