问题描述
KB 解析器路由(select_parser)与分块器(chunker)的格式白名单不一致,且部分常见格式完全无路由。
astrbot/core/knowledge_base/parsers/util.py 的 select_parser 只支持:.md/.txt/.markdown(TextParser)、.rst/.adoc/.xlsx/.docx/.xls(MarkitdownParser)、.epub、.pdf,其余一律抛「暂时不支持的文件格式」
astrbot/core/knowledge_base/kb_helper.py(约 336-337 行)的 Markdown 分块白名单还包含 .mdx、.mkd——这两个扩展名在 select_parser 中没有对应解析器,上传会在解析阶段直接失败,该分支实际是死代码,两侧自相矛盾
.html/.htm、.csv、.rtf 完全没有路由,但 MarkitdownParser(markitdown-no-magika)本身能解析 html/rtf/csv,能力被浪费
另外,上传链路只依赖文件名末尾扩展名(astrbot/dashboard/services/knowledge_base_service.py 约 577-579 行),没有任何 magic bytes 内容嗅探;astrbot/core/computer/file_read_utils.py 中针对 zip 头/mimetype 的嗅探逻辑在 KB 上传路径没有复用。
建议修复
- 对齐
select_parser 与 chunker 白名单(为 .mdx/.mkd 增加 TextParser 路由,或移除 chunker 侧死分支)
- 考虑将
.html/.htm/.csv/.rtf 路由到 MarkitdownParser,无 markitdown 依赖时优雅降级
- (可选)上传时用内容嗅探校验扩展名与真实格式一致
问题描述
KB 解析器路由(
select_parser)与分块器(chunker)的格式白名单不一致,且部分常见格式完全无路由。astrbot/core/knowledge_base/parsers/util.py的select_parser只支持:.md/.txt/.markdown(TextParser)、.rst/.adoc/.xlsx/.docx/.xls(MarkitdownParser)、.epub、.pdf,其余一律抛「暂时不支持的文件格式」astrbot/core/knowledge_base/kb_helper.py(约 336-337 行)的 Markdown 分块白名单还包含.mdx、.mkd——这两个扩展名在select_parser中没有对应解析器,上传会在解析阶段直接失败,该分支实际是死代码,两侧自相矛盾.html/.htm、.csv、.rtf完全没有路由,但MarkitdownParser(markitdown-no-magika)本身能解析 html/rtf/csv,能力被浪费另外,上传链路只依赖文件名末尾扩展名(
astrbot/dashboard/services/knowledge_base_service.py约 577-579 行),没有任何 magic bytes 内容嗅探;astrbot/core/computer/file_read_utils.py中针对 zip 头/mimetype 的嗅探逻辑在 KB 上传路径没有复用。建议修复
select_parser与 chunker 白名单(为.mdx/.mkd增加 TextParser 路由,或移除 chunker 侧死分支).html/.htm/.csv/.rtf路由到 MarkitdownParser,无 markitdown 依赖时优雅降级