快速结论: 该诉求是希望 AnythingLLM 支持上传包含子文件夹的文件夹(目录递归),目前桌面版和 Docker 版均未原生提供通过文件选择器上传文件夹的功能。优先排查:确认是否可通过拖拽文件夹到窗口实现部分效果;如需完整路径保留,需等待官方计划中的“Local folder”数据连接器。
适用环境: AnythingLLM Desktop app(原文提及)、Docker(评论提及),未明确操作系统与版本。无 Python/CUDA 依赖。
最快修复方案: 暂无确认的一步修复方案。官方在评论中明确表示该功能“比表面看起来复杂得多”,文件选择器目前仅支持一层深度的文件夹,改动可能引发大量下游问题。
注意事项: 拖拽文件夹已被部分用户验证可行(参见 Issue #1366),但拖拽后文件路径会被展平,无法保留子目录结构。本 Issue 并未给出任何已验证的解决步骤,所有描述均基于讨论推测。
问题场景
用户在 AnythingLLM 桌面版中准备将一个包含多级子文件夹的文档集合(如 Obsidian Vault、源代码目录)整体导入某个 Workspace,以充分发挥 RAG 的能力。当前产品只支持逐个文件上传,且文件选择器无法选中文件夹,导致操作繁琐且无法保留文件层级关系。
报错原文
[BUG]: How to upload a folder with subfolders with files to AnythingLLM?
此外用户报告了上传 .rtf 文件时“holds forever without success”的问题,但该问题与文件夹上传诉求本质无关,后续讨论未对此给出解释。
原因分析
可能原因:AnythingLLM 的文件选择器(Picker)架构目前只支持单层文件夹展示,若允许递归选择会显著增加 UI 复杂度和文档管理难度(如同名文件冲突、路径显示过长)。开发者评论指出“这不是不重要,而是工作量远比表面看到的大得多”,因此该功能长期未实现。
环境排查
- 确认 AnythingLLM 的版本(桌面版或 Docker 镜像版本)。
- 确认是否需要保留文件相对路径(如代码项目中 MVC 结构依赖路径)。
- 确认是否可接受通过拖拽文件夹方式导入(展平路径)。
- 如果使用 Docker,注意本地文件夹无法直接在浏览器中访问,只能通过挂载卷或添加“Local folder”数据连接器(待实现)。
解决步骤
本 Issue 未提供已验证的解决步骤。以下为讨论中提及的可能尝试方案(均为推测,尚未被官方确认有效):
- 临时方案:拖拽文件夹
从文件管理器直接将整个文件夹拖拽到 AnythingLLM 窗口的文档上传区域。这会导入所有文件,但所有文件会被展平到同一层级,不保留子目录结构。此方案在 Issue #1366 中被提及。 - 等待官方数据连接器
评论中建议新增一个“Local folder”数据连接器(仿照“GitHub Repo”连接器的工作方式),递归收集文件夹内所有文件并保留相对路径。但该功能尚未进入开发阶段。 - 使用 AnythingLLM API
部分用户询问桌面版是否有 API 可用于批量上传。官方未回应,若存在则可通过脚本递归遍历文件夹后逐个调用。 - 第三方工具辅助
对于超大代码库(如用户提到的 8000+ 文件),可考虑将文件夹压缩为 .zip 后上传?但 AnythingLLM 是否支持 zip 解包未在 Issue 中讨论。
注意:以上方案均未在本 Issue 中得到官方验证,请谨慎尝试。
验证方法
导入后进入 Workspace 的文档管理页面,检查所有文件是否全部出现在文档列表中。若需保留路径,验证文件名中是否包含相对路径(如 “subdir/file.txt”)。目前仅“GitHub Repo”连接器支持路径保留,本地文件夹拖拽不会保留。
参考来源
Mintplex-Labs/anything-llm #2235
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


