llm-wiki-builder:把散落资料变成持续生长的知识库

前言

做个人知识库的人大多会遇到同一个问题:存了一堆 Markdown,检索靠全文搜索,越积越乱。传统 RAG 每次从零检索,交叉引用靠 LLM 临时拼接,矛盾点没有留痕,人工维护成本随规模上涨。llm-wiki-builder 走的是另一条路:维护一个持久的、复合增长的 wiki,交叉引用已经写进页面,矛盾显式标在 Contradictions 节,综合分析反映你读过的一切。

下面介绍这个 skill。它由社区开发者 user_7ffd653a 发布在 SkillHub,分类 knowledge-management,定位是 Karpathy 风格的 LLM Wiki 构建系统。

这是什么

llm-wiki-builder 是一个自托管的知识库构建工具,通过 init.py 一键生成目录结构、系统文件、页面模板、行为契约和健康检查脚本,并把知识库注册到全局注册表。知识分三层归属:raw/ 人类拥有、LLM 只读;wiki/ LLM 完全读写;CLAUDE.md 是双方共同维护的行为契约。

它解决的是「知识库的骨架和纪律」问题:目录怎么分、页面怎么命名、链接怎么写、哪些操作必须人工确认,都由脚本和契约预先定好,而不是每次让 LLM 临场发挥。

初始化:init.py 一键建库

先做初始化,再做后续操作。Agent 必须先询问用户知识库名称,然后执行:

python scripts/init.py <项目目录> --name "<知识库名称>"

脚本自动完成 10 步:创建 raw/、wiki/、outputs/、scripts/、.qmd/ 目录;生成 index.md、log.md、overview.md、QUESTIONS.md;生成 5 个页面模板;复制 schema.md;生成 CLAUDE.md 与 AGENTS.md;复制 lint.py(14 项检查)、registry.py、list-wikis.py;生成 .gitignore;最后注册到 ~/.llm-wiki/registry.json。

可选的语义搜索:qmd

qmd 提供 BM25 + 向量嵌入 + LLM 重排序的语义搜索,不安装不影响核心功能。先检测:

qmd --version

未安装则执行:

npm install -g @tobilu/qmd
qmd init && qmd collection add wiki wiki/
qmd embed

qmd embed 首次会下载约 2GB 模型,明细是 embeddinggemma-300M(约 300MB)、Qwen3-Reranker-0.6B(约 640MB)、qmd-query-expansion-1.7B(约 1.1GB)。qmd 不可用时,ingest、query、lint 仍可运行,搜索降级为读取 wiki/index.md,详见 references/setup-guide.md 的降级策略一节。

安装依赖与首次审计

依赖只有 PyYAML:

pip install pyyaml

初始化完成后跑一次审计,确认骨架可用:

python scripts/lint.py

日常操作:摄入、查询、检查

资料写进 raw/,剩下的交给 Agent。常用触发词如下:

触发词 操作
ingest / 摄入 / 处理这个 读取 raw 文件,提取概念,创建或更新页面
batch ingest 多 subagent 并行处理
直接提问 / 根据我的知识库 搜索 + 综合 + 溯源到 source 页
lint / 检查 14 项健康检查 + 报告
reflect / 综合分析 反向检验 → 模式扫描 → 合成 → 缺口分析
merge / 去重 页面去重,需确认
我想搞清楚 追踪到 QUESTIONS.md
audit 全系统核查

健康检查支持三种模式:

python scripts/lint.py              # 只检测
python scripts/lint.py --fix        # 交互修复
python scripts/lint.py --fix --auto # 自动修复安全项

14 项检查覆盖 YAML frontmatter、失效 wikilink、index 一致性、stub 页面、近重复概念、SHA-256 完整性、stale 页面、跨语言重复、wikilink 格式、孤立页、缺失反向引用、隐性盲区、source_count 一致性、dashboard 一致性。其中 index 一致性、source_count、dashboard 三类标为 safe,可用 --auto 自动修复,其余需要人工判断。

页面类型与置信度

页面分五类:wiki/sources/<slug>.md 记录来源摘要与 SHA-256;wiki/concepts/<slug>.md 是概念页,含定义、置信度、来源计数、演化日志;wiki/entities/<slug>.md 是人物、工具、机构、论文页;wiki/synthesis/<topic>-synthesis.md 是综合分析;raw/personal/ 放个人写作,不创建 source 页,不计入 source_count。

置信度分三级:low 是 1-2 个来源或有矛盾;medium 是 3 个以上来源且信息一致;high 需要多元来源且无矛盾,属于候选值,必须经用户确认后才能设置。时效分三级:AI、加密货币、科技新闻 90 天判 stale,法律、商业、政策 180 天,数学、哲学、历史 365 天。

注册表与多知识库管理

全局注册表在 ~/.llm-wiki/registry.json,一个机器上可以有多个知识库:

python scripts/registry.py list                  # 列出所有知识库
python scripts/registry.py add <路径> [名称]      # 注册新知识库
python scripts/registry.py use <名称>             # 获取知识库路径
python scripts/registry.py remove <名称>          # 取消注册(不删文件)
python scripts/registry.py rename <旧名> <新名>   # 重命名
python scripts/registry.py get-last               # 获取最近访问的知识库

配合列表脚本使用:

python scripts/list-wikis.py            # 文本格式
python scripts/list-wikis.py --json     # JSON 供 Agent 解析
python scripts/list-wikis.py --path <名> # 获取指定知识库路径

铁律与注意事项

三层所有权的边界是这套系统的关键,四条铁律:LLM 绝不自动执行不可逆操作(merge、删除、把 confidence 升到 high),必须等人类确认;人类绝不手动编辑 wiki/ 下的内容页,所有编辑通过 LLM 完成;人类只负责 raw/ 的文件管理;模板文件带 graph-excluded: true,按模板新建的页面必须删掉这个字段。

实际使用中要注意几点:知识库的质量取决于 raw/ 的整理,原文乱则页面跟着乱;qmd 的 2GB 模型下载是一次性开销,网络受限时可以先跳过;wiki/ 一旦交给 LLM 维护,就不要再用编辑器直接改,否则 lint 的一致性检查会反复报警;模板里的 graph-excluded: true 忘了删,页面会从图谱里消失。

适合想把阅读笔记、剪藏、论文整理成长期可检索资产的人,尤其是希望 LLM 承担维护而非只做检索的团队。不适合需要严格版本控制或多人并发写入的场景,那部分要靠 raw/ 走 git 管理。

结尾

llm-wiki-builder 的价值不在检索速度,而在把「知识库如何组织」这件事固化成脚本和契约,让 LLM 去维护一个持续生长的制品。官方地址:https://api.skillhub.cn/user_7ffd653a/llm-wiki-builder

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye