lili ec4a02ded2 feat(knowledge): 文本内容安全扫描,打通知识库摄入 scanning 关卡
实现 KnowledgeContentScanService(同步纯文本字符扫描),替换 KnowledgeFileFacade.materialize 恒 scanBlocked 占位:合法文本→scanStatus=passed→放行入 RAG,恶意字符→隔离,扫描异常→fail-closed。

范围:纯文本(txt/md/entry),内容只作检索文本、不渲染,故不做 HTML 消毒。
- L1 硬阻断:非法 UTF-8 / null 字节 / 危险 C0-C1 控制符 / Bidi 覆盖(Trojan Source) / 体量超限
- L2 规整:Unicode NFC + 去零宽 + 统一换行 → 干净内容入库/入 RAG
- L3 软策略:prompt 注入特征仅写 riskSummary 不阻断(误报高,真正防线是 P-A prompt 边界)
- 服务端权威 + fail-closed(对齐 SSOT 契约);特殊字符判定用十六进制码点,避免源码出现字面不可见字符
- MaterializedFile.scanBlocked 加 reasonCode/message;下游 isRagflowAllowed 总开关已就绪,无需改动

设计 spec:docs/agent-specs/2026-06-23-knowledge-content-scan-execution.md
验证:ScanService 9 + Facade 接线 3 + DocumentService 17(无回归) + P-B RetrievalApiImpl 11(无回归) 全绿。端到端真摄入(scan→RAGFlow→检索)验收待 rebuild 重启后补。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 10:28:19 -07:00
..