
issue: Custom tool __event_emitter__ fails to send file download in v0.10.2
快速结论:该报错发生在 Open WebUI v0.10.2 中,自定义工具(Custom Tool)通过 __event_emitter__ 发送文件下载(如 .docx)时,文件卡不会出现在聊天界面,仅文本返回值正常显示。优先排查是否为 v0.10.2 版本已知回归问题,建议升级到包含修复的下一个发布版本。
问题场景
用户通过 Docker 部署 Open WebUI v0.10.2,创建了自定义工具,该工具使用 python-docx 生成 .docx 文件,并通过 __event_emitter__ 以 type: "file" 方式发送文件。在聊天中触发工具后,前端显示工具执行状态,最终助手消息仅包含工具的字符串返回值(如 “Done: xxx.docx”),但没有任何文件附件或下载卡片出现。UI 和后端日志均无错误,即使设置 GLOBAL_LOG_LEVEL=DEBUG 也无任何相关输出。
报错原文
No error is visible in the UI or backend logs (even with GLOBAL_LOG_LEVEL=DEBUG).
The frontend displays "Running generate_script_docx...", then only the success message appears without any file.
The tool's return value reaches the frontend, confirming execution, but the __event_emitter__ block appears to be skipped or fail silently.
原因分析
可能原因:该问题已被确认为 Open WebUI v0.10.2 中的一个已知回归问题(与 issue #23988 为同一根因)。在工具执行过程中,__event_emitter__ 没有被正确注入或传递,导致工具内对 __event_emitter__ 的调用静默失效——工具返回值仍能正常到达前端,但文件发射(emit)事件被跳过或丢失。该修复已合并到开发分支(dev branch),但尚未包含在 v0.10.2 版本中。
环境排查
- Open WebUI 版本:确认是否正在使用 v0.10.2(该版本包含此回归问题)。
- 安装方式:Docker(用户使用的安装方式)。
- 检查相关 issue #23988 中的修复是否已包含在当前使用的版本中。
- 建议检查浏览器控制台(Console)日志,虽然用户表示 UI 无错误,但可能存在被忽略的警告或错误。
- 确认自定义工具代码中
__event_emitter__参数名称和调用方式是否与示例一致(不正确的参数名称也可能导致静默失败,但本 issue 确认是版本回归)。
解决步骤
- 升级 Open WebUI 到包含修复的下一个发布版本(v0.10.2 之后的版本)。修复已合并到 dev 分支,参考 #23988。
- 如果暂时无法升级,可尝试:
– 将工具中的文件发送逻辑改为同步方式(如先保存文件到服务器,再通过返回值返回文件路径),然后使用前端配置或另一工具来触发下载。
– 检查是否可以通过环境变量或配置项临时绕过该问题(用户尝试过GLOBAL_LOG_LEVEL=DEBUG但无效)。 - 可优先尝试:确认是否有使用自定义的管道(pipe)或工具链,因为 #23988 提到
__event_emitter__在工具调用后的后续请求中未设置,属于管道执行中的回归。
验证方法
升级到包含修复的 Open WebUI 版本后,重新触发自定义工具执行文件生成。如果聊天窗口中正确出现文件卡片且可以下载 .docx 文件,则问题已解决。如果仍不生效,请检查工具代码中 __event_emitter__ 的调用格式是否与官方示例一致(包括 mime_type 字段的正确性)。



