返回博客列表

llm-wiki-compiler:2 千星的'知识编译器',把原始资料编译成互链 Wiki

2026-09-20T14:00:00+08:00
llm-wiki-compilerLLM WikiKarpathy知识库知识编译Obsidian

Karpathy 的 LLM Wiki 模式(我之前专门写过一篇)提出一个命题:与其让 Agent 每次查询都从原始文件重新发现知识,不如让 LLM 把知识编译成持久的互链页面——知识被编译一次、持续更新,而不是每次重新推导。

llm-wiki-compiler 是这个模式最完整的 CLI 实现。仓库地址:https://github.com/atomicstrata/llm-wiki-compiler

它不是又一个 RAG 框架,而是一个**"知识编译器":原始资料进、互链 Wiki 出。官方定位一句话:"The knowledge compiler. Raw sources in, interlinked wiki out."** 这篇文章拆解它的工作原理、核心设计,以及它和 nashsu/llm_wiki(桌面 GUI)、传统 RAG 的区别。

本文 outline

  1. 什么是"知识编译器":把知识工作从查询时搬到编译时
  2. 两阶段编译管线:概念抽取 → 页面生成
  3. 增量编译:SHA-256 哈希,零 LLM 调用
  4. 混合检索:编译后的 Wiki 怎么被查询
  5. Lifecycle Profiles:1.0 的头牌特性
  6. 支持与输出:源类型、格式、MCP、SDK
  7. 与 nashsu/llm_wiki、RAG 的对比
  8. 适用场景与局限

1. 什么是"知识编译器":把知识工作从查询时搬到编译时

先理解核心思想。传统 RAG 的模式是:原始文档切成 chunk 存起来,查询时检索相关 chunk、重新组织答案。llm-wiki-compiler 反过来:编译时就把原始资料提炼成结构化的互链页面,查询时直接查这个编译产物。

关键区别在"工作什么时候做":

RAG 知识编译
工作时机 查询时(每次重新检索) 编译时(一次编译,持续复用)
产物 原始 chunk 的检索索引 编译好的互链 Wiki 页面
知识积累 无(每次从零) 有(页面持续更新、交叉引用)
交叉引用 有([[wikilinks]])
引用溯源 强(^[source.md] 行级引用)

官方明确说这是 RAG 的补充而非替代——它把工作从查询时挪到编译时,适合"知识值得被编译"的场景:持久的研究文件夹、代码库文档、团队手册、标准、决策日志。不适合高频变化的信息流和一次性检索。

2. 两阶段编译管线:概念抽取 → 页面生成

编译核心是两阶段 LLM 管线,这个设计很讲究:

第一阶段:概念抽取(Concept Extraction)。每个变更过的源文件发给 LLM 抽取概念。所有抽取完成之前不写任何文件——这消除了顺序依赖,编译器能看到完整的概念宇宙,包括跨源的重叠。

第二阶段:页面生成(Page Generation)。按概念生成页面,带 YAML frontmatter、正文和 [[wikilinks]]多个来源声称的同一概念会合并成一个页面(这是消除重复的关键)。页面类型:concept(概念)、entity(实体)、comparison(对比)、overview(概览)。

两阶段分离的价值:第一阶段看到全局,第二阶段才能做出正确的合并和交叉引用。如果边抽取边写,后面的源可能重复建页面。

3. 增量编译:SHA-256 哈希,零 LLM 调用

这是它作为"编译器"最像编译器的部分——增量编译

每个源文件都被 SHA-256 哈希,和 .llmwiki/state.json 里的记录对比。未变更的源永远不会再流经 LLM——重新编译一个未变化的语料库只需几秒、零 LLM 调用。内容哈希感知的 embedding 更新和缓存的引用判断也避免了重复计算。

还有一个新鲜度模型:页面状态分为 fresh(新鲜)/ stale(源文件哈希变了)/ orphaned(源文件被删了)/ unverified(未验证)。llmwiki refresh --stale 只修复变更过的所有者,不用全量重编。

对成本敏感的用户,这个设计意味着:只有你真正改动的部分才花钱。知识库规模越大、变更越少,增量编译的性价比越高。

4. 混合检索:编译后的 Wiki 怎么被查询

编译产物不是死的——它支持混合检索:chunk embedding 的余弦相似度 → BM25 重排 → wikilink 图扩展。供应商没有 embedding 端点时(如 GitHub Copilot)自动回退到词法检索。

检索的是编译后的页面,不是原始 chunk。这意味着查询天然受益于编译时的合并、交叉引用和引用溯源——比在原始文档上检索更"懂"知识结构。llmwiki query 还支持 --save,把好的回答存回 wiki(wiki/queries/),让查询也参与知识积累(compounding)。

5. Lifecycle Profiles:1.0 的头牌特性

1.0 的头牌是 Configurable Lifecycle Profiles(CLP)——一个验证过的 .llmwiki/profile.json 作为单一契约,定义:类型化实体/字段/关系、生命周期状态机、信任门(trust gates)、工作流、哈希固定的工件、连接器、内容层级、检索策略。

关键点:这些是**运行时强制(fail-closed)**的,不是靠提示词约定。内置模板:autosci(研究场景:论文/想法/实验/手稿/Crossref 导入)和 newsroom(编辑场景)。向后兼容——没有 profile.json 就用默认的"概念+查询"行为。

对需要把知识库结构化的团队,CLP 是把"知识怎么组织"从提示词里解放出来、变成可验证的配置。

6. 支持与输出:源类型、格式、MCP、SDK

源类型(自动检测):网页(任意 http(s) URL 含 Wikipedia)、arXiv 论文(摘要或 PDF)、YouTube 字幕、本地 PDF、图片(JPG/PNG/GIF/WebP/BMP/TIFF/SVG,LLM 描述)、字幕文件(VTT/SRT/TXT)、任意 Markdown/文本。还能 ingest-session 导入 Claude/Codex/Cursor 的会话导出。超过 10 万字符的内容会截断(在 frontmatter 记录)。

输出格式:主格式是带 YAML frontmatter 的纯 Markdown(Obsidian 兼容,[[wikilinks]]^[source.md] 行级引用标注)。可移植导出:Open Knowledge Format(OKF)(Google Cloud 倡议)、JSON、JSON-LD、GraphML(图)、Marp 幻灯片、llms.txt。还有本地只读浏览器查看器(搜索、图探索、新鲜度徽章、引用 chips、4 种主题)。

接口:CLI(llmwiki 命令)、SDK(createWiki({ root }))、MCP serverllmwiki serve --root <dir>)——Agent 可以直接通过 MCP 操作知识库。

LLM 供应商(默认 Anthropic):Anthropic、Claude Agent SDK(本地登录)、OpenAI Codex CLI(本地登录)、OpenAI 兼容、Ollama、GitHub Copilot 等。

7. 与 nashsu/llm_wiki、RAG 的对比

我之前写过 nashsu/llm_wiki(2.3 万星的桌面应用)和 LLM Wiki 模式。两者对比很清晰:

llm-wiki-compiler nashsu/llm_wiki
形态 CLI + SDK + MCP 桌面 GUI 应用
语言 TypeScript Python
定位 知识编译器(编译管线) 个人知识库应用
增量编译 SHA-256 哈希,零 LLM 调用 有(哈希跳过)
MCP/SDK 有限
多供应商 ✅ 多种
适用 团队/项目/代码库文档 个人笔记

vs RAG:RAG 存原始 chunk、查询时重建;llm-wiki-compiler 存编译后的类型化页面、带合并/引用/新鲜度/积累。但这不是"谁取代谁"——RAG 适合高频变化的内容,知识编译适合"值得沉淀"的内容。一个知识库可以两者结合:RAG 检索原始 + 知识编译沉淀长期知识。

8. 适用场景与局限

适合:持久的研究文件夹(论文、想法、实验)、代码库文档、团队手册、标准规范、决策日志、精选源包。这类"知识值得被编译"的场景是它的甜区。

局限(诚实版)

  • Node.js ≥ 24 要求(前沿运行时要求,部分环境不满足)
  • Windows 支持不完整——官方明确"Windows 原生验证和 CI 仍未完成",文件系统边界保证未验证,推荐在 Linux 上跑不受信任的项目
  • 仍是早期软件(5.5 个月、13 个 release),虽然文档文化异常强(完整文档站 + AGENTS.md + CLAUDE.md + lint/eval 质量门)
  • npm 下载量低(432 周下载 vs 2k 星)——受欢迎度集中在 GitHub 关注,实际采用还早
  • 已知 bug:MCP 非 ASCII slug 解码、viewer 性能、OrcaRouter embedding 验证等

一句话定位:llm-wiki-compiler 是 Karpathy LLM Wiki 模式最工程化的 CLI 实现——两阶段编译、增量编译、混合检索、Lifecycle Profiles、MCP 接入,把它从"个人笔记工具"提升到了"团队知识基础设施"的层面。对想把知识沉淀成可复用资产(而非每次重新 RAG)的团队,值得深入研究它的编译管线设计。

参考


作者: itech001 来源: 公众号:AI人工智能时代(the-ai-era) 网站: https://www.theaiera.top/ 关注每日最新AI新闻和技术博客,主页有更多的文章的AI 技术参考:https://www.theaiera.top

关注公众号,获取更多 AI 技术干货!

分享给朋友