--- name: llm-wiki-ops description: LLM Wiki 知识库运维技能。用于在飞书知识库中进行 LLM Wiki 的初始化、绑定、入库、查询、体检和词条管理。当用户要求操作 LLM Wiki 知识库、入库资料/文章、查询词条、体检知识库、管理索引/日志时使用。支持自动检测绑定状态,未绑定时引导初始化,已绑定时直接运维。 license: Apache-2.0 metadata: author: liucongg version: "1.0.0" --- # LLM Wiki 运维技能 在飞书知识库中运维 LLM Wiki——基于 Karpathy 的 LLM Wiki 模式:LLM 把原始资料持续编译成互相链接的持久化 wiki。 ## 第一步:检测绑定状态 **每次使用本技能前,必须先检测知识库绑定状态。** 1. 读取本技能目录下的 `config/wiki-binding.json`。 2. 如果文件存在且包含有效的 `space_id` 和 `nodes`,则视为**已绑定**,直接进入运维模式。 3. 如果文件不存在、为空或缺少关键字段,则视为**未绑定**,进入初始化流程(见 `references/init.md`)。 绑定文件路径:`/config/wiki-binding.json` ## 已绑定:直接运维 绑定后,所有操作基于 `wiki-binding.json` 中的节点 token 和 doc_id 执行。无需再让用户提供知识库地址。 ### 核心操作 #### 1. Ingest(入库) **原始资料入库**: 1. 读取用户提供的资料文件(全文,不跳过)。 2. 在「原始资料」区创建资料卡文档,保留原文链接。 3. 从资料中提取值得沉淀的实体/概念/方法论,在「词条」区创建词条文档。 4. 每个新词条必须同时建立与已有词条的**双链关系**(见下方「双链规则」)。 5. 更新「索引」文档(A-Z 排序,先英文后中文)。 6. 在「更新日志」追加 `ingest` 条目。 **文章入库**: 1. 判断是成稿还是草稿,分别放入「我的文章/成稿」或「我的文章/草稿」。 2. 清理文章中的无关内容(如视频播放器 UI 文字)。 3. 从文章中提取有价值的概念/实体创建词条(词条来源标注文章标题)。 4. 更新索引和日志。 详细流程见 `references/ingest.md`。 #### 2. Query(查询) 1. 先读「索引」定位相关词条和资料卡。 2. 深入阅读相关文档。 3. 综合出带引用的答案。 4. 有价值的答案(比较、分析、新连接)归档回 wiki 成为新页面,并更新索引与日志。 详细流程见 `references/query.md`。 #### 3. Lint(体检) 定期检查: - 页面间矛盾、过期论断 - **孤儿页**(无入链的词条)——发现后立即补全双链 - 提到但缺页的概念 - 缺失的交叉引用 - 事实标注是否完整(每条事实是否标注来源) - 索引与实际词条是否一致 结果记录到更新日志,类型为 `lint`。详细流程见 `references/lint.md`。 #### 4. 词条管理 - **新建词条**:必须包含定义、关键事实(标注来源)、与其他词条的关系(双链)、来源四个部分。 - **更新词条**:只改被点名的范围,保留未要求改动的内容。 - **删除词条**:需用户明确授权,删除后更新索引和相关词条的双链。 词条模板见 `references/entry-template.md`。 #### 5. 索引与日志维护 - **索引**:每次入库/删除后必须更新。按 A-Z 字母排序,每个字母下先英文后中文。包含原始资料、我的文章(成稿+草稿)、词条三个区域。 - **更新日志**:追加式记录,不修改历史。条目格式:`## [YYYY-MM-DD] <动作> | <主题>`,动作取值:`ingest`/`query`/`lint`/`init`/`update`。 ## 词条文档规范(强制) 每篇词条文档必须包含以下结构: 1. **定义**:一句话定义该实体/概念。 2. **关键事实**:列出从资料/文章中提取的事实。 3. **与其他词条的关系**:说明与其他词条的关联,**必须使用飞书文档双链链接**。 4. **来源**:标注来源文件名或文章标题。 ### 事实与来源规则(强制) - 所有事实必须来自用户提供的资料和文章,禁止编造。 - 每条事实必须标注来源,格式:`(来源:<文件名/文章标题>)`。 - 资料里没有的信息,明确写「暂无资料」,不得臆造。 ### 双链规则(强制) - 每个词条的「与其他词条的关系」部分必须使用飞书文档链接(`[词条名](https://.feishu.cn/docx/)`),不得使用纯文本。 - **禁止产生孤儿词条**:每个新词条至少链接到 1-2 个已有词条;被链接的词条也应在关系部分回链。 - 关系描述要具体,不能只写“相关”,要说明是什么关系(对比、基于、同属、被采用等)。 - 绑定文件 `wiki-binding.json` 中不记录每个词条的 doc_id;查询时通过索引或 wiki 节点列表获取。 ## 未绑定:初始化流程 如果检测到未绑定,按以下流程初始化: 1. 询问用户是否已有 LLM Wiki 知识库。 - **已有**:让用户提供知识库的 space_id 或 wiki 链接,自动解析节点结构,生成 `wiki-binding.json`。 - **没有**:在飞书创建新知识空间,建立标准目录结构(原始资料、词条、我的文章/成稿、我的文章/草稿、索引、更新日志、AGENT.md),生成 `wiki-binding.json`。 2. 初始化完成后,告知用户绑定成功,并可直接开始运维。 详细流程见 `references/init.md`。 ## 绑定文件格式 `config/wiki-binding.json` 必须包含: ```json { "wiki_name": "LLM Wiki", "space_id": "<飞书知识空间ID>", "space_url": "<知识库URL>", "root_node_token": "<根节点token>", "nodes": { "原始资料": { "node_token": "...", "obj_token": "..." }, "词条": { "node_token": "...", "obj_token": "..." }, "我的文章": { "node_token": "...", "children": { "成稿": { "node_token": "...", "obj_token": "..." }, "草稿": { "node_token": "...", "obj_token": "..." } } } }, "docs": { "索引": { "doc_id": "..." }, "更新日志": { "doc_id": "..." }, "AGENT.md": { "file_token": "..." } }, "created_at": "YYYY-MM-DD", "last_updated": "YYYY-MM-DD" } ``` ## 注意事项 - 本技能操作的是飞书知识库,需要飞书登录态。操作前确认 `lark-cli` 可用;如果 Agent 提供等价的飞书知识库和文档工具,也可以使用等价工具完成同一操作。 - 绑定文件是本技能的核心运行时状态,不要提交到版本库。如果知识库结构发生变化(如新增节点),必须同步更新绑定文件。 - 写入绑定前确保 `config/` 目录存在。可参考 `config/wiki-binding.example.json`,但不得把示例占位值视为有效绑定。 - 所有写入操作(创建文档、更新索引、追加日志)执行后,必须验证结果(列出节点确认数量、读取文档确认内容)。 - 用户可在对话中直接要求执行入库、查询、体检或词条管理,无需重复确认绑定状态(已在第一步检测)。