
issue: With a knowledgebase of around 2500 documents, the kb_exec grep always returns Too many files
快速结论:该报错在知识库包含约 2500 个文件时触发,原因是内部工具 kb_exec grep 对 grep 结果数量有硬编码上限(MAX_GREP_FILES)。优先排查是否可通过调整 MAX_GREP_FILES 或 MAX_GREP_RESULTS 参数解决。
问题场景
用户使用 Open WebUI 的 Knowledgebase(知识库)功能,当知识库中包含约 2500 个文档时,调用 LLM 的原生函数调用(Native Function Calling)触发 kb_exec grep 工具进行搜索时,始终返回 “Too many files” 错误。即使通过 Docker Compose 为 Open WebUI 容器增加了 ulimits nofile 限制(soft/hard: 65536),问题依旧存在。
报错原文
Too many files (2596). Scope your search: grep ......
原因分析
根据 Issue 讨论,MAX_GREP_FILES 和 MAX_GREP_RESULTS 是 Open WebUI 内部工具 kb_exec grep 的硬编码限制参数,并非环境变量(env vars)。其设计目的是防止工具返回过多数据超出 AI 的上下文窗口。当知识库文件数(如本场景的 2596)超过该硬编码上限时,工具直接返回 “Too many files” 错误,而非执行搜索。
注意:增加系统级 nofile ulimit 对此问题无效,因为限制是从 Open WebUI 内部代码控制的。
环境排查
- Open WebUI 版本:v10.2(用户使用版本)
- 部署方式:Docker(用户使用 Docker Compose)
- 操作系统:Ubuntu 24.04(用户使用)
- 知识库文件数:约 2596 个文档
解决步骤
注意:截至 Issue 关闭时间(2026-07-24),MAX_GREP_FILES 是否为可配置环境变量尚未最终定论。以下步骤基于 Issue 讨论和关联提案(#26139)。
- 检查 Open WebUI 版本:确认你是否在使用 Open WebUI 的最新版本(或至少 v10.3+),因为硬编码限制可能在后续版本中被调整为可配置环境变量。
- 查阅相关功能请求:关注 open-webui/open-webui #26139 的进展,该 Issue 提议将
MAX_GREP_FILES和MAX_GREP_RESULTS添加为环境变量。如果该功能已实现,你可以通过 Docker Compose 的environment配置项设置。 - 可优先尝试:临时自定义构建(仅推荐有编译能力的用户):如果 Issue 中的硬编码限制尚未变为环境变量,你需要自行修改 Open WebUI 源代码中
MAX_GREP_FILES的值并重新编译。此方案较为繁琐且不便于维护。 - 临时减少知识库文件数:将知识库中的文件数量控制在 2000 个以下(或根据你实际遇到的硬编码上限调整),避免触发
Too many files限制。
验证方法
在调整 MAX_GREP_FILES 参数后(无论是通过环境变量还是自定义构建),重新触发涉及 2500 个文件的 kb_exec grep 搜索请求。如果不再返回 “Too many files” 错误,并正常返回 grep 结果,则问题已解决。

![[RFC]: Opt-in Media URL Cache for `MediaConnector`](https://www.chat-gpts.plus/wp-content/uploads/2026/07/37075-315181f6-768x403.jpg)

