我用 importBundle() 一次性导入了 56 条 policies、19 条 world model、12 条 skills,导完顺手对了一下各表的 FTS: policies 56 policies_fts 56 world_model 19 world_model_fts 19 skills 12 skills_fts 0 skills 的行、向量、Viewer 显示都正常,只有 FTS 是空的。看起来是 skills 这条导入路径漏了,而不是"导入时统一不建 FTS"。 两个坑叠在一起,所以更不容易发现: 1) skills_fts 是独立的 FTS5 表,没有 content= 指回 skills。所以 INSERT INTO skills_fts(skills_fts) VALUES('rebuild'); 在这里是空操作,没有内容表可读。必须自己插: INSERT INTO skills_fts(skill_id, name, invocation_guide) SELECT id, name, invocation_guide FROM skills; 手动插完 12 行后,MATCH 查询立刻就能用了,说明表和查询路径都没问题。 2) 它的分词器是 trigram,查询词至少要 3 个字符才可能命中。像"白屏"这种 2 字中文查询永远返回 0, 索引半空这件事就更难被注意到。 期望:导入路径按 policies_fts / world_model_fts 同样的方式把 skills_fts 一起写掉;或者至少在文档里写明"skills 的导入需要自己补 FTS"。 环境:@memtensor/memos-local-plugin 2.0.20,Windows 11,Node 24(Electron 宿主)。
Activity