本地 OpenClaw 知识库进阶:xlsx 检查项入库、PDF 试跑与一键 ingest
正文D2 把 8 份电力见证 docx 跑进了 memoryCLI 能搜、浏览器也能调工具。做到这儿我发现还缺几件事检查项那张 xlsx 一直没进库问「叶片」经常撞到「钢塔」每来一个新文件都要「转 md → 拷 workspace → 跑 index」三步太碎。D3 就是把这些补上另外顺手试了一条文字型 PDF电子发票看 Word 能不能直接抽字进库。整体思路D2 的链路不变只是中间多了一层「结构化」、末尾合成一条命令raw(docx/xlsx/pdf) → 转 md带 YAML 头→ workspace → memory index见证表 md 头部会写上device、doc_type、source_file这类字段后面检索时好区分。发票 PDF 我不打算整段正文入库只保留buyer_name、seller_name这些 facts 字段免得版式乱了以后更难搜。配置还是 D2 那套没大改memorySearch:{provider:ollama,model:nomic-embed-text,remote:{baseUrl:http://host.docker.internal:11434},extraPaths:[knowledge/power-witness],query:{maxResults:3}},tools:{profile:messaging,alsoAllow:[group:memory]},plugins:{slots:{memory:memory-core}}入库和验证我这边最后是10/10 files、222 chunks含 1 个 xlsx 1 个 PDFcd study\scriptsSet-ExecutionPolicy-ScopeProcess-ExecutionPolicy Bypass-Force.\d3-ingest.ps1-All cd openclaw docker compose exec-T openclaw-gateway node dist/index.js memory status--deep docker compose exec-T openclaw-gateway node dist/index.js memory searchdoc_type:checklist 检查项目单文件可以-File 检查项目(1).xlsx只改 metadata 不重新转 Office 用-MetadataOnly。踩坑与解决坑 1跑 ingest 提示找不到脚本现象PowerShell 报d3-ingest.ps1不是命令。原因D2 只有转换脚本一键入库脚本得单独写我当时以为已经有了直接跑。解决确认study\scripts\下有d3-ingest.ps1再执行。坑 2脚本里写中文PowerShell 直接语法错误现象一运行满屏红字elseif ($base -match 叶片)附近解析失败中文变成乱码。原因Windows 自带 PowerShell 5.1 吃 UTF-8 脚本很挑字符串里的中文容易炸。解决脚本主体尽量英文设备名、文件名映射放到单独的d3-file-map.json里用 UTF-8 读。坑 3md 有了 frontmatter但全是device: general现象转换是成功的YAML 头也在可设备类型没写上。原因规则在 PS 里匹配中文文件名没生效。解决改成 JSON 里按完整文件名映射跑一遍.\d3-ingest.ps1 -MetadataOnly重刷头信息。坑 4xlsx 转出来了索引还是 8/8现象demo-office\...\md\里能看到检查项目但memory status不变。原因md 没同步进容器挂载的workspace\knowledge\power-witness\或者Copy-Item *.md漏了带括号的文件名。解决复制时逐个-LiteralPath同步完再memory index --force。坑 5索引卡在 9/10或报 database locked现象compose run建索引失败提示 sqlite 被占用或者 status 差 1 个文件。原因Gateway 正在跑和临时容器抢同一个库。解决先docker compose restart openclaw-gateway再用exec进正在跑的容器索引docker compose exec-T openclaw-gateway node dist/index.js memory index--force--verbose坑 6搜「叶片」还是钢塔排前面现象D2 的老问题还在泛问容易撞到结构相近的见证表。原因钢塔那份 chunk 多向量一泛搜就偏。解决检索词写具体一点CLI 试过这两句差别很大# 容易偏memory search检查项目 叶片# Top1 比较稳memory searchdoc_type:checklist 检查项目memory searchsource_file:叶片设备见证情况表坑 7PDF 用 Word 打开正文挤成一行现象电子发票能抽出字但购销方两列糊在一起中间还有怪字符。原因PDF 版式丢了直接Content.Text不行。解决改用 Word 的表格读单元格发票只输出facts_only几行字段不保留大段原文。坑 8发票日期写成 2615-20-00现象文件名里明明有 20260302md 里日期却离谱。原因正则_(\d{8})先匹配到发票号里的 8 位数字了。解决改成匹配文件名末尾_(\d{8})\d*\.pdf$。小结D3 对我来说主要是三件事xlsx 和 PDF 也能进库了md 带上设备/文档类型检索没那么瞎新增文件一条命令跑完不用手动三步。当然还不完美扫描件 PDF 没碰泛问见证表还是会混浏览器里偶尔出现「工具返回对了、最终回答写歪了」——这个我打算放下一阶段专门做来源引用和禁止改写。后续计划对话回答固定带文件名出处raw 目录监控新文件自动 ingest扫描 PDF 走 OCR 管道还没开始