1. 从零构建智能知识库:LLM-Wiki插件开发全记录
作为Obsidian的重度用户,我一直在寻找让知识管理更高效的方法。传统笔记系统最大的痛点在于:我们花费大量时间整理资料,但最终这些笔记往往变成难以维护的"数字废墟"。直到看到Karpathy关于"知识编译"的推文,我突然意识到——大语言模型(LLM)正是解决这个问题的钥匙。
这个插件本质上是一个自动化知识编译器。它把Obsidian Vault变成代码仓库,原始资料是源代码,LLM是编译器,最终产出结构化的wiki知识库。整个过程就像软件开发中的编译流程:你只管写代码(收集资料),编译器(LLM)负责将其转化为可执行文件(结构化知识)。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心架构设计解析
2.1 目录结构与所有权模型
知识库腐烂的根源往往在于"所有权混乱"。当人和AI同时修改同一批文件时,系统很快就会变得不可预测。我的解决方案是严格的目录隔离:
code复制Vault/
├── raw/ # 原始资料区(用户负责)
│ ├── tech/ # 技术类内容
│ ├── work/ # 工作文档
│ └── reading/ # 阅读笔记
├── wiki/ # 编译产出区(LLM专属)
│ ├── summaries/ # 摘要页
│ └── concepts/ # 概念页
└── legacy/ # 旧笔记存档(只读)
关键规则:
- raw目录:用户可自由添加文件,LLM负责自动分类
- wiki目录:完全由LLM维护,用户只读
- legacy目录:冻结状态,避免干扰新系统
实践心得:这种严格的职责划分消除了"谁该改哪里"的困惑。测试阶段尝试过混合模式,结果两周内就出现了LLM和用户互相覆盖修改的情况。
2.2 CLAUDE.md:编译器的"内核"
这个文件是整个系统的控制中心,相当于LLM的操作手册。它包含:
- 目录规范:每个目录的用途和权限
- Frontmatter模板:wiki页面的元数据格式
- 操作流程:ingest/query/lint的详细步骤
- 十条铁律:如"永远不修改raw内容"
最关键的优化点:
markdown复制# 铁律第三条:立即执行原则
当收到操作指令时,必须直接完成所有步骤,不要停下来讨论或确认。
开发早期版本时,LLM总会停下来询问"这样分类可以吗?",导致流程中断。加入这条规则后,效率提升了300%。
3. 核心功能实现细节
3.1 Ingest(知识摄入)流程剖析
完整的ingest过程包含7个步骤:
- 源文件读取:插件直接将文件内容嵌入prompt
- 摘要生成:创建wiki/summaries/下的摘要页
- 概念提取:识别文章中的核心概念
- 实体识别:人物、工具、框架等实体页面
- 交叉引用:自动添加双向链接
- 矛盾检查
