issue: Background memory review never runs for streamed chats (assistant_message has no `content`)

在 Open WebUI 中启用 ENABLE_MEMORY_BACKGROUND_REVIEW=true 后,流式聊天(Stream Chat Response)的对话永远不会触发背景记忆审查,因为流式响应处理未向 assistant_message 传入 content 字段,导致 review

快速结论:在 Open WebUI 中启用 ENABLE_MEMORY_BACKGROUND_REVIEW=true 后,流式聊天(Stream Chat Response)的对话永远不会触发背景记忆审查,因为流式响应处理未向 assistant_message 传入 content 字段,导致 review_memory_after_turn 函数在空值检查时提前返回。优先排查是否使用了流式聊天模式(UI 默认开启),并确认 assistant_message 是否包含 content 键。

适用环境:Open WebUI v0.10.2(Docker ghcr.io/open-webui/open-webui:main,commit ecd48e2f7),操作系统 Debian 12,浏览器 Chrome。Ollama 版本未报告。

最快修复方案:升级到包含 PR #26705 修复的 Open WebUI 版本(如 v0.10.3 或更高版本)。该修复在流式响应处理中为 ctx['assistant_message'] 补充了 content 字段,使背景记忆审查能够正常运行。

注意事项:若手动修改代码(backend/open_webui/utils/middleware.py 约 L5274 处),需注意同时保留 outputcontent 键,并确保与后续审查逻辑的兼容性;官方修复经过验证,建议优先采用升级方式。

问题场景

用户在 Open WebUI 中启用背景记忆审查功能(配置 memories.background_review.enable=truememories.review_interval_turns=4)后,通过 UI 进行正常对话(流式聊天),但始终无法产生 meta.created_by = "background_review" 的记忆条目。该问题同样影响 Chat Completions API 和 Responses API,因为 UI 始终使用流式响应。

报错原文

issue: Background memory review never runs for streamed chats (assistant_message has no `content`)

无显式报错日志,调试发现 review_memory_after_turnassistant_messagecontent 检查处提前返回,函数未执行真正的记忆提取逻辑。

原因分析

根因位于 backend/open_webui/utils/middleware.py(约 L5274)的流式响应处理器中。该处理器构建 ctx['assistant_message'] 时仅写入 output 键和可选的 usage 键,未包含 content 键:

ctx['assistant_message'] = {
    'output': output,
    **({'usage': usage} if usage else {}),
}

review_memory_after_turn 函数在检查 assistant_content 时,因 content 键不存在(assistant_message.get('content', '') 返回空字符串),直接跳过后续所有记忆提取逻辑。该问题仅影响流式代码路径(非流式路径正常设置了 content 键)。

环境排查

celebrityanime
celebrityanime
文章: 15302

发表回复

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