解析 sources/ 中的新文件并增量更新知识库。 **输入**: `/lyxy-kb-ingest` 后的参数为项目名称。 **前置条件**: 查找并阅读名为 **lyxy-kb** 的 skill,了解知识库的完整规范。 **步骤** 1. **获取项目名称并验证结构** 从参数中获取项目名称。如果未提供参数,提示用户输入。 按照 lyxy-kb skill「结构完整性验证」规则检查项目目录,不完整则提示用户先 init。 2. **检查 office 文档解析能力** 按照 lyxy-kb skill「Office 文档解析」规则,查找当前环境中名为 **lyxy-reader-office** 的 skill。如果不存在且无其他可替代的文档解析 skill,则提示用户无法处理 office 文档并中止流程。 3. **读取 manifest.json** 读取 `/manifest.json`,获取已入库文件的信息。 4. **递归扫描 sources/ 目录** 按照 lyxy-kb skill「sources/ 扫描规则」,递归检查 sources/ 及其所有子目录中的文件。如果无任何文件,提示用户无待处理文件并终止。 5. **预检查** **空文件检测**:按照 lyxy-kb skill「空文件处理」规则,识别 0 字节文件,标记为跳过。 **同名不同扩展名冲突检测**:按照 lyxy-kb skill「同名不同扩展名冲突检测」中的两条检测规则执行。冲突文件标记为跳过。 如果有跳过的文件,列出详情(空文件 / 冲突文件分别列出)。如果所有文件都被跳过,终止流程。 6. **逐个处理文件** 对每个通过预检查的文件: **a) 解析**:按照 lyxy-kb skill「文件类型解析策略」判断解析方式。office 文档使用 lyxy-reader-office skill(查找并阅读该 skill 获取具体命令),其他文件直接读取。 **b) 写入 parsed**:按照 lyxy-kb skill「parsed 文件元信息标记」格式,在内容头部添加元信息注释,写入 `/parsed/<文件名>.md`(同名覆盖)。 **c) 归档**:按照 lyxy-kb skill「归档命名规则」,移动原始文件到 archive/(带时间戳后缀 `YYYYMMDDHHmm`)。 **d) 更新 manifest.json**:新文件追加条目,已有文件在 versions 数组追加新版本。使用 `sha256sum` 计算文件哈希。更新 `last_ingest`。 **e) 解析失败处理**:按照 lyxy-kb skill「解析失败处理」规则,失败文件保留在 sources/ 中不移动,报告错误,继续处理下一个文件。 7. **增量更新 project.md** 按照 lyxy-kb skill「增量追加」策略: - 对每个新处理的文件,读取其 parsed 内容生成简要摘要(1-2 句话) - 新文件:在文件索引表追加新行 - 已有文件更新:更新文件索引表中对应行 - 在更新记录追加本次 ingest 条目 - 不修改概述和关键信息部分 8. **输出结果** 汇总显示: - 成功处理的文件列表 - 跳过的文件(空文件 / 冲突文件 / 解析失败文件,分别列出) - 当前项目已入库文件总数 - 提示可使用 `/lyxy-kb-rebuild ` 更新概述和关键信息 - 提示可使用 `/lyxy-kb-ask ` 进行知识问答