llm-wiki-obsidian

Personal knowledge base management skill based on Karpathy's LLM Wiki pattern. Build and maintain a persistent wiki through Obsidian CLI or direct file operations. **Triggers**: knowledge base, wiki, organize knowledge, Obsidian, ingest sources, query knowledge, personal knowledge management, Karpathy wiki pattern, cross-link, auto link, link wiki, add links.

Personal Knowledge Base Skill — llm-wiki-obsidian

Based on Karpathy's LLM Wiki pattern. Build and maintain a persistent wiki through Obsidian CLI or direct file operations.

Agent Compatibility

AgentSupportInterface
Claude Code✅ FullNative tools + Obsidian CLI
Cursor✅ FullBash + File operations
Windsurf✅ FullBash + File operations
Cline✅ FullBash + File operations
Aider✅ FullBash + File operations
MCP-compatible✅ FullMCP tools

See AGENT.md for detailed agent-specific instructions.

Core Concept

不是 RAG,是持久 Wiki!

RAG持久 Wiki
每次查询从原始文档重新发现知识知识被编译并持续保持最新
无积累,问5个文档的综合问题每次都要重新拼凑交叉引用已存在,矛盾已标注,综合已形成
NotebookLM、ChatGPT 文件上传Obsidian + LLM = IDE + 程序员

关键洞察:Wiki 是一个持久、复利的产物。每添加一份资料,Wiki 就变得更丰富。

人类的工作:策划来源、引导分析、提出好问题、思考意义。 LLM 的工作:其他一切(bookkeeping 工作:更新交叉引用、保持摘要最新、标注矛盾)。


何时使用此技能

当用户进行以下操作时激活此技能:

  • 构建知识库:要求建立或整理个人知识管理系统
  • Ingest(摄入):提供新资料(文章、论文、文档)要求整理到知识库
  • Query(查询):向知识库提问,寻求综合分析
  • Lint(体检):要求检查知识库的健康状况
  • 维护 Wiki:更新、修订、补充交叉引用
  • 讨论知识管理:关于如何组织知识、构建 Zettelkasten、卡片盒等方法论

架构(四层)

知识库/
├── clippings/              # 待处理剪藏(临时存放,处理后移走)
│   └── *.md               # Web Clipper 保存的网页剪藏
├── raw/                    # 原始资料(不可变,只读)
│   ├── minimind/          # 按主题/项目分类
│   ├── articles/          # 文章
│   ├── papers/            # 论文
│   └── assets/           # 图片、附件
├── wiki/                   # LLM 生成的 Wiki(AI 全权维护)
│   ├── entities/          # 实体页(人物、组织、项目、产品)
│   ├── concepts/         # 概念页(技术概念、理论、方法论)
│   ├── sources/          # 来源摘要页
│   └── synthesis/        # 综合分析页
├── index.md               # 内容目录
├── log.md                # 操作日志
└── AGENTS.md             # 规则文件

目录说明

  • clippings/ — 临时存放区,存放待处理的网页剪藏
  • raw/ — 已归档的原始资料,按主题分类,只读
  • wiki/ — LLM 维护的结构化知识,包含实体、概念、来源摘要和综合分析

核心操作

0. Sync(同步 Clippings)

每次整理时首先执行:将 Clippings 内容移动到 raw/

1. 检查 clippings/ 目录是否有待处理文件
2. 对每个文件:
   a. 读取内容,判断主题分类
   b. 生成合适的文件名(日期前缀 + 标题)
   c. 移动到 raw/ 对应子目录(articles/ 或按主题)
   d. 记录移动操作
3. 清空 clippings/ 目录
4. 继续执行 Ingest 流程

移动命令

# 使用文件系统命令移动
mv "clippings/剪藏标题.md" "raw/articles/2026-04-17-标题.md"

1. Ingest(摄入新资料)

当用户要求整理知识库或同步 Clippings 后:

1. 扫描 raw/ 目录,识别新增/未处理的文件
2. 对每个新文件:
   a. 阅读资料,提取关键信息
   b. 使用 obsidian create 创建来源摘要页 → wiki/sources/
   c. 更新相关实体/概念页(obsidian append)
   d. 标记文件已处理(在 frontmatter 添加 processed: true)
3. 更新 index.md
4. obsidian daily:append 记录到日志
5. 执行 Synthesize 流程

2. Synthesize(生成综合分析)

Ingest 完成后自动执行:根据知识库内容生成 synthesis

1. 读取 index.md,了解当前知识库全貌
2. 识别可以综合的主题:
   - 多个来源讨论同一概念
   - 相关实体之间的关联
   - 跨领域的话题连接
3. 对每个值得综合的主题:
   a. 读取相关页面(sources、entities、concepts)
   b. 综合分析,提取共同点、差异、洞察
   c. 创建 wiki/synthesis/综合分析页
   d. 更新相关页面的交叉引用
4. 更新 index.md 的 synthesis 部分
5. 记录到日志

Synthesis 页面内容

  • 核心发现(从多个来源提炼)
  • 观点对比(不同来源的异同)
  • 洞察与结论(LLM 的综合分析)
  • 来源引用(链接到相关页面)

3. Query(查询知识)

通过 Obsidian CLI 查询

# 搜索相关页面
obsidian search query="关键词" limit=10

# 读取页面内容
obsidian read file="页面名"

# 查看反向链接(谁引用了这个页面)
obsidian backlinks file="页面名"

回答流程:

1. obsidian search 搜索相关页面
2. obsidian read 读取匹配页面
3. 综合回答(带引用)
4. 有价值的新洞察 → obsidian create 创建 synthesis 页
5. obsidian daily:append 记录查询

重要:好的答案应该沉淀回 Wiki

4. Lint(知识库体检)

定期检查:

  • 矛盾:不同页面的信息是否冲突
  • 过时:是否有被新资料推翻的旧结论
  • 孤立:是否有页面没有被其他页面引用(用 obsidian backlinks 检查)
  • 缺失:是否有重要概念没有独立页面
  • 交叉引用:补充缺失的双向链接 [[]]

Obsidian CLI 命令参考

Vault 名称从 obsidian.json 获取,Obsidian 应用必须正在运行。

读取与搜索

# 读取笔记
obsidian read file="页面名"

# 搜索 vault
obsidian search query="搜索词" limit=10

# 查看反向链接(谁引用了此页面)
obsidian backlinks file="页面名"

# 标签统计
obsidian tags sort=count counts

# 获取每日笔记
obsidian daily:read

创建与更新

# 创建新笔记(多行用 \n)
obsidian create name="新页面" content="# 标题\n\n内容" silent

# 追加内容到现有笔记
obsidian append file="页面名" content="新段落"

# 设置属性
obsidian property:set name="status" value="done" file="我的笔记"

# 追加到每日笔记
obsidian daily:append content="- [ ] 新任务"

Vault 定位

# 指定 vault(当多 vault 时)
obsidian vault="个人知识库" search query="关键词"

实用标志

  • silent — 不打开文件
  • --copy — 复制输出到剪贴板
  • overwrite — 覆盖已存在的文件

Wiki 页面模板

Entity 页(wiki/entities/)

---
type: entity
category: person|project|organization
tags: [tag1]
date: 2026-04-17
---

# 实体名称

## 基本信息
- 属性1
- 属性2

## 关联
- [[相关实体]]
- [[相关概念]]

## 来源
- [[来源页]]

Concept 页(wiki/concepts/)

---
type: concept
tags: [tag1]
date: 2026-04-17
sources: [raw/原始文件.md]
---

# 概念名称

> 一句话定义

## 核心要点
- 要点1
- 要点2

## 相关概念
- [[相关概念]]

## 来源
- [[来源文件]]

Source 页(wiki/sources/)

---
type: source
date: 2026-04-17
url: https://...
tags: [LLM, RAG]
---

# 资料标题

## 摘要
2-3 句话概括

## 关键信息
- 要点1
- 要点2

## 关联
- [[相关实体]]
- [[相关概念]]

Synthesis 页(wiki/synthesis/)

---
type: synthesis
tags: [分析]
date: 2026-04-17
---

# 综合分析:XXX

## 核心发现
- 发现1
- 发现2

## 分析
[综合分析内容]

## 来源
- [[来源1]]
- [[来源2]]

Obsidian 语法规范

本技能专为 Obsidian 设计,必须遵循 Obsidian 语法规范。

Obsidian 链接语法

# 正确格式
[[页面名]] - 内部链接
[[页面名|显示文本]] - 带显示文本的链接(不推荐)

# 错误格式
[[文件名|路径]] - ❌ 错误格式

Obsidian Mermaid 流程图

Obsidian 内置支持 Mermaid 流程图渲染。使用方法:

基础语法

```mermaid
flowchart LR
    A[节点名称] --> B[目标节点]
    B --> C{判断节点}
    C -->|是| D[结果1]
    C -->|否| E[结果2]

### 关键规则

1. **必须使用 ` ```mermaid `** 三个反引号,不能是普通代码块
2. **节点名称避免特殊字符**:不要用中文在节点 ID 中,用 `A[中文]` 格式
3. **方向指示**:`LR`(左到右)、`TB`(上到下)、`RL`(右到左)
4. **避免连续箭头**:`A --> B --> C` 可能有问题,改为 `A --> B` 然后 `B --> C`
5. **子图谨慎使用**:Obsidian 对 `subgraph` 支持不稳定

### 正确示例

```mermaid
flowchart TD
    A[开始] --> B{判断}
    B -->|是| C[结果1]
    B -->|否| D[结果2]
    C --> E[结束]
    D --> E

错误示例(不要这样写)

```mermaid
flowchart TD
    A[开始] --> B[中间] --> C[结束]  <!-- 连续箭头可能不渲染 -->

代码块格式选择

内容类型推荐格式示例
流程图、架构图```mermaid流程图、系统架构
目录树、树形结构普通代码块 ```目录结构
代码示例普通代码块 ```pythonPython、JavaScript
配置、列表无序列表 - 部署建议、理由清单
对比信息表格 `col

常见错误

  • ❌ 用普通代码块画流程图 → 改为 ```mermaid
  • ❌ 用代码块写简单列表 → 改为无序列表
  • ❌ 用代码块写部署建议 → 改为无序列表
  • ❌ 链接格式 [[文件名|路径]] → 改为直接文件路径
  • ❌ 表格前没有空行 → 标题和表格之间需要空行

Markdown 表格格式

表格标题和表格之间必须有空行

## 示例标题

| 列1 | 列2 |
|-----|-----|
| 内容1 | 内容2 |

错误示例(没有空行):

## 示例标题
| 列1 | 列2 |
|-----|-----|

来源引用格式

优先使用:链接到来源页 [[来源-xxx]]

## 来源
- [[来源-Continuous Batching LLM推理]]
- [[来源-Quantization Aware Training]]

如果没有来源页:直接写原始文件路径

## 来源
- 原始文件:raw/articles/2026-04-17-xxx.md
- 参考:[外部链接](https://...)

错误格式

  • [[文件名|路径]] — 错误的链接格式
  • ❌ 直接写 raw 路径没有标注 — 应该加 "原始文件:" 前缀
  1. Clippings → Raw — 每次整理先移动 clippings/ 到 raw/
  2. Raw sources immutableraw/ 是只读的,绝不修改
  3. LLM owns wiki — 自动创建、更新、维护 Wiki
  4. Cross-reference everything — 双向 [[wikilinks]]
  5. Flag contradictions — 发现矛盾时标注 ⚠️ 与 [[X]] 矛盾
  6. Synthesize after ingest — 每次摄入后自动生成综合分析
  7. Keep index current — 每次变更后更新 index.md
  8. Append to log — 每次操作记录到 log.md
  9. Use Mermaid for diagrams — 流程图用 ```mermaid,不用普通代码块

index.md 格式

# 📚 个人知识库索引

## 最近更新
- [[页面名]] - 一句话描述 (2026-04-17)

## 实体
| 页面 | 摘要 | 来源 | 更新 |
|------|------|------|------|

## 概念
| 页面 | 摘要 | 来源 | 更新 |
|------|------|------|------|

## 来源
| 页面 | 摘要 | 日期 |
|------|------|------|

log.md 格式(追加到每日笔记)

## [2026-04-17] ingest | 资料标题
- 创建 wiki/sources/页面.md
- 更新 3 个实体页、2 个概念页
- 更新 index.md

## [2026-04-17] query | 用户问题
简要回答,涉及的页面

## [2026-04-17] lint
发现的问题,解决的孤立页面

实用技巧

Obsidian Web Clipper

浏览器扩展,将网页文章转 Markdown,快速获取资料到 raw/。

插件推荐

  • Dataview:查询页面 frontmatter,生成动态表格
  • graph view:查看 Wiki 结构,发现孤立页面
  • Marp:从 Markdown 生成幻灯片
  • Obsidian CLI:内置 CLI(1.9+),需在 obsidian.json 启用

Git 版本控制

Wiki 就是 Git 仓库,可以获得版本历史、分支和协作能力。


为什么有效

维护知识库最繁琐的部分不是阅读或思考,而是** bookkeeping(记账工作)**:更新交叉引用、保持摘要最新、标注矛盾、保持一致性。人类放弃 Wiki 是因为维护负担增长比价值快。LLM 不会厌倦、不会忘记更新交叉引用、可以一次触及 15 个文件。


快速开始

当用户要求整理知识库时(完整流程):

1. Sync:检查 clippings/,移动文件到 raw/
2. Ingest:处理 raw/ 新文件,创建 wiki 页面
3. Synthesize:识别综合主题,生成 synthesis 页面
4. Lint:检查知识库健康(可选)

当用户提供新资料要摄入时:

1. 请用户提供资料内容或 URL
2. 分析资料,提取关键信息
3. 确定放 raw/ 哪个子目录
4. obsidian create 创建 wiki/sources/ 来源摘要页
5. obsidian append 更新相关实体/概念页
6. 更新 index.md
7. obsidian daily:append 记录
8. 执行 Synthesize 生成综合分析

当用户向知识库提问时:

1. obsidian search 搜索相关页面
2. obsidian read 读取匹配页面
3. 综合回答并标注来源
4. 有价值的新洞察 → 创建 synthesis 页面

扩展与规模化

搜索增强

  • 小型 Wiki(<100 页)index.md + obsidian search 足够
  • 增长中的 Wiki:使用 qmd CLI
    • BM25 + 向量搜索 + LLM 重排
    • 更快的语义检索
    • LLM 可以帮助编写搜索脚本

性能优化

随着 Wiki 增长,可以考虑:

  • 分离高频访问的页面到独立索引
  • 使用 Dataview 插件生成动态索引
  • 定期 Lint 保持知识库健康

何时阅读参考资料

以下情况应查阅 references 目录:

  • 完整理解 Karpathy 模式:阅读 references/karpathy-kb-pattern.md
  • Obsidian CLI 完整命令参考:阅读 references/obsidian-cli.md
  • 遇到 CLI 问题:检查 Obsidian 是否运行、CLI 是否启用

参考资料