知识库应该是 runtime,不是 storage
大多数知识库真正缺的,不是编辑器,不是双链,也不是再多一个 AI 总结按钮。
它缺的是运行时。
很多系统只解决了一件事:把东西存进去。
- 网页摘录存进去
- 聊天记录存进去
- 灵感片段存进去
- 会议纪要存进去
- 项目结论存进去
结果当然比散落在各处强。但做到这里,知识库最多只是一个 storage。
而对持续和 AI 协作的人来说,真正关键的问题不是“有没有存住”,而是:
这条知识在下一次检索、判断、执行和构建时,还能不能继续参与工作?
这才是 runtime 该回答的问题。
Storage 只解决“别丢”
我越来越觉得,很多知识库后面之所以越用越乱,不是因为记得不够勤,也不是因为工具不够强,而是因为它们默认的世界观就是 storage。
storage 的核心动作是保存。
- 先把内容留下来
- 以后再说怎么整理
- 以后再说怎么复用
- 以后再说怎么让 AI 理解
问题在于,“以后”通常不会自己发生。
信息一旦持续涌入,系统里很快就会混在一起:
- 原始来源和二手总结混在一起
- 临时判断和稳定结论混在一起
- 正在推进的项目和已经过时的输出混在一起
- 仍然有效的约束和早就失效的规则混在一起
这时候文件都还在,链接也未必断,但系统已经开始失去可解释性。
你会碰到几种非常常见的情况:
- 改了一个概念定义,却不知道哪些项目页还在沿用旧说法。
- 删除或覆盖一条来源后,才发现某个结论已经失去了证据链。
- 让 AI “基于知识库回答”,却根本不知道它拿到的是原始来源、整理后的概念,还是一篇早就过期的输出。
这些问题都不是“没存住”。
这些问题是:存住之后,系统并不会反馈它现在还能不能工作。
为什么很多笔记系统会一直重建
我之前写过一篇 《你的笔记系统为什么一直在重建?》,核心判断是:问题不在工具,而在你从来没有定义过什么值得记,什么该晋升,什么该淘汰。
现在我更想把这个判断再往前推一步:
很多知识系统之所以反复重建,不只是因为分类做得差,而是因为它从一开始就被当成 storage 来设计,而不是 runtime。
当你把知识库理解成 storage,你默认优化的是:
- 输入够不够快
- 记录够不够方便
- 页面够不够好看
- 组织方式够不够顺手
这些都重要,但还不够。
因为 runtime 关心的是另一组问题:
- 系统里到底有哪些对象类型?
- 它们的生命周期是什么?
- 一次改动会影响到谁?
- 哪些对象正在失效?
- 哪些链接已经断了?
- AI 读到的到底是哪一层知识?
如果这些问题没有被系统化回答,知识库就会越来越像一个“存量越来越大、反馈越来越少”的黑盒。
黑盒一大,人就会本能地想重建。
不是因为想折腾,而是因为旧系统已经不敢信了。
Runtime 和 storage 的区别,不是口号,是反馈结构
我现在更愿意这样区分两者:
| 维度 | storage | runtime |
|---|---|---|
| 主要目标 | 把内容存住 | 让知识持续参与工作 |
| 最小单元 | 一篇篇笔记 | 有类型的知识对象 |
| 结构关注点 | 文件怎么放 | 对象如何关联、流转、失效 |
| 改动后的反馈 | 基本没有 | 有检查、分析和状态更新 |
| 与 AI 的关系 | 喂一堆 Markdown 让它猜 | 给一套可查询、可验证的知识运行面 |
如果要让知识库变成 runtime,我觉得至少要有四层能力。
1. 对象模型
系统里不是只有“笔记”这一种东西。
来源、项目、概念、实体、决策、约束、输出,它们的职责和命运都不一样。
如果所有内容都以同一种文档形态堆在一起,后面就很难知道:
- 什么是证据
- 什么是结论
- 什么是上下文
- 什么是临时产物
对象模型的价值,不是为了分类得更漂亮,而是为了让系统知道自己在处理什么。
2. 生命周期
不是所有信息都值得长期维护。
有些内容停在 raw 就够了,有些需要 parsed、linked、promoted、maintained,有些最终会 superseded 或 archived。
生命周期不是形式主义。
它解决的是:哪些内容值得继续投入维护成本。
3. 健康检查
代码世界里,大家默认接受编译器、测试和 CI 的存在。
知识库也应该有类似的反馈:
- broken links
- orphan objects
- frontmatter 缺失
- 结构异常
- 过时对象
如果一个系统只能无限写入、不能持续检查,那它迟早会在沉默中退化。
4. 影响分析
这一点最像真正的 runtime。
改一个核心概念,不该只被理解成“改了一篇笔记”。
它实际上是在改系统中的一个事实节点。只要这个节点被项目、决策、输出复用,它就会产生传播效应。
所以系统应该能回答:
- 谁依赖这个概念?
- 谁引用这个决策?
- 谁会因为这次修改而需要一起更新?
只有当知识改动开始具备可观测性,知识库才真正从静态存储变成运行中的系统。
distill-vault:把知识库做成一套 runtime
distill-vault 就是我对这个问题的产品化回答。
它不是再做一个笔记工具,而是把 Obsidian 兼容 vault 变成一套可扫描、可解析、可建图、可检查、可分析、可被 AI 直接调用的知识库运行时。
目前这套 runtime 的骨架大概是这样:
对象层
知识先按对象进入系统,而不是先堆成一摞文件。
当前核心对象包括:
- 来源
- 项目
- 概念
- 实体
- 决策
- 约束
- 输出
这让系统第一次能区分“原始输入”“稳定认知”“项目上下文”和“对外产物”。
Pipeline 层
它的主干是一条 6 阶段流水线:
Scan → Parse → Graph → Analyze → Promote → Export
我很看重这条流水线,不只是因为它把步骤排出来了,而是因为它把知识处理变成了可重复执行的过程。
- Scan:扫描 vault,识别变化
- Parse:解析 Markdown、frontmatter、wikilink 和对象字段
- Graph:把对象和关系写入图数据库
- Analyze:做健康检查、社区发现、影响分析等分析任务
- Promote:给“来源 → 稳定对象”的晋升提供建议
- Export:导出报告、索引和给 Agent 使用的运行面
这条链路更像 CI,而不是“记完一篇笔记就结束”。
图谱层
底层我用了 KuzuDB。
因为真正重要的从来不是 Markdown 文件本身,而是:
- 有哪些对象
- 它们各自带着哪些属性
- 它们之间通过 wikilink 和 frontmatter 形成了什么关系
一旦这些关系进入图,很多过去只能靠人脑维护的事情就能落成查询:
- 一个概念被哪些项目复用?
- 某个决策依赖哪些来源?
- 哪些对象成了孤儿?
- 某次修改的 upstream / downstream 影响范围有多大?
检索与 Agent 接口层
如果知识库要成为 runtime,就不能只服务于“人打开来看看”。
它还要能被 AI 稳定调用。
所以我在 distill-vault 里把搜索、对象上下文、Cypher 查询、上下游影响分析、变更检测、pipeline 触发这些能力都暴露成了 MCP 工具。
这样 Agent 拿到的就不再只是“几篇可能相关的 Markdown”,而是一套:
- 有结构
- 有索引
- 有状态
- 有分析能力
的知识运行面。
AI 真正需要的不是更多文本,而是更可靠的上下文。
这不是概念图,它已经在真实 vault 上跑起来了
我不太喜欢只讲愿景,所以直接说几组已经跑出来的数据。
根据我当前维护的项目记录,distill-vault 现在的状态大概是:
- 当前版本:
v0.2.1 - 在真实
all_in_onevault 上,完整 6 阶段 pipeline 耗时约0.70s - 同一份 vault 上,hybrid 搜索约
0.66s - 健康检查约
0.39s - 当前对象规模记录为
274个对象、342个 Markdown 文件 - MCP Server、Skill System、Web UI、Git Hooks 都已经进入 stable 阶段
- 项目记录里,相关测试总数已经收口到
296全绿
这些数字不代表项目已经到终局。
但它们足够说明一件事:这不是一个停留在“概念很好”的 demo,而是一套已经打通了对象模型、图数据库、搜索、健康检查、影响分析、Agent 接口和自动化钩子的系统。
对我来说,更重要的不是“又做了一个工具”,而是终于把这句话落实成了能运行的东西:
知识库不是用来堆东西的,它是下一次构建的运行时。
为什么这件事在 AI 时代更重要
AI 把信息进入系统的速度放大了。
这既是机会,也是压力。
过去你一天可能只整理几条笔记。现在你可能同时在让 Agent:
- 读资料
- 总结结论
- 写方案
- 跑分析
- 生成输出
- 更新文档
如果知识库还是 storage 逻辑,结果通常是输入越来越多,噪声越来越厚,AI 也越来越容易在错误的层上工作。
它可能会:
- 引用过时输出当事实
- 把临时判断当稳定结论
- 在缺失证据链的情况下继续推理
- 忽略一个改动已经影响到的上下游对象
所以 AI 时代的知识库,不只是“更需要搜索”。
它更需要:
- 让知识分层
- 让状态可见
- 让变更可查
- 让影响可观测
- 让 Agent 拿到的是运行面,而不是噪声堆
这也是我为什么会把 Distill 放在整套系统的底层。
Technical Knockout 给我外部样本,Agent Workflow 负责执行闭环,而 Distill 负责把内部知识变成可维护、可复用、可继续参与工作的资产。
它不是配套件。
它是底盘。
如果只记一件事
很多知识库的失败,不是因为你没有记下来。
而是因为你记下来之后,系统再也没有告诉你:
- 它还是否可信
- 它还影响着谁
- 它是否已经过时
- 它能不能继续参与下一次构建
storage 只能回答“东西还在不在”。
runtime 回答的是另一件更重要的事:
这套知识,现在还能不能工作。
如果你也在用 Obsidian 管知识、用 AI 做检索、分析、写作或开发,那我越来越相信:知识库应该像代码仓库一样被治理。
至少对我来说,distill-vault 正在把这件事从判断,慢慢变成现实。