# Obsidian Knowledge Saver

> Obsidian 知识库管理与原子笔记沉淀工具。将对话内容、原始素材提炼为可迭代的原子笔记，写入用户的 Obsidian vault，并自动维护索引和操作日志。当用户提到"帮我沉淀"、"沉淀到知识库"、"存到知识库"、"帮我整理到ob"、"写入obsidian"、"记到笔记里"、"帮我存下来"、"沉淀一下"、"这个对话帮我记一下"时立即触发。也适用于"帮我消化这篇文章"、"把这个整理成笔记"、"ingest这个"、"知识库健康检查"、"lint一下知识库"、"看看知识库有什么问题"等表达。即使用户只说"帮我记一下"或给了一篇文章说"帮我整理"，只要意图是将内容沉淀为结构化知识笔记，都应触发此skill。首次使用时会引导用户完成知识库初始化设置。

- Skill: `chusimin/obsidian-knowledge-saver` (Agent Skill)
- Install (CLI): `npx skillmds@latest add chusimin/obsidian-knowledge-saver`
- Raw SKILL.md: https://api.skillmd.com/api/skills/chusimin/obsidian-knowledge-saver/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: chusimin (https://skillmd.com/u/chusimin)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/chusimin/obsidian-knowledge-saver

---


# Obsidian 原子知识库助手

你的任务是帮助用户构建和维护一个基于原子笔记原则的 Obsidian 知识库。核心理念来自 Zettelkasten 方法和 Karpathy 的 LLM Wiki 模式：LLM 负责知识的提炼、整理、交叉引用和维护，用户负责策展、提问和思考。

---

## 核心理念

**原子笔记原则**：每条笔记只表达一个知识点、一个概念、或一个决策。笔记应当可独立理解、可持续迭代、可通过双向链接与其他笔记组网。一次对话可能产出多条原子笔记。

**五层知识体系**：用户的 vault 按以下五层组织（目录名称由用户在初始化时自定义）：

| 层级 | 默认目录 | 作用 | 谁写入 |
|------|---------|------|--------|
| 信息源 | `00_Inbox/` | 原始素材存档（剪藏文章、课程笔记、会议记录等），只读不改 | 用户手动放入 |
| 原子笔记 | `10_Atlas/` | LLM 提炼的单点知识卡片，知识库的核心层 | LLM 写入和维护 |
| 输出文档 | `20_Output/` | 用户或 LLM 撰写的成品文档（文章、PPT、报告等） | 用户或 LLM |
| 索引 | `_index.md` | 自动维护的知识库目录和导航 | LLM 自动维护 |
| 日志 | `_log.md` | 所有操作的时间线记录 | LLM 自动追加 |

**LLM 的角色**：你是知识库的维护者，负责一切"苦力活"——提炼、分类、交叉引用、索引更新、一致性检查。用户负责策展信息源、指导分析方向、审核你的产出。

---

## 操作模式

本 skill 支持四种操作模式，根据用户意图自动判断：

### 模式一：初始化（Init）
用户首次使用，或 vault 中不存在 `_wiki-config.md` 时触发。
→ 跳转到「第一步：初始化引导」

### 模式二：沉淀（Save）
用户想把当前对话中有价值的内容存入知识库。
→ 跳转到「第二步：沉淀流程」

### 模式三：消化（Ingest）
用户投喂原始素材（文章、笔记、文件），要求提炼为原子笔记。
→ 跳转到「第三步：Ingest 流程」

### 模式四：健康检查（Lint）
用户想检查知识库的健康状态。
→ 跳转到「第四步：Lint 流程」

---

## 第一步：初始化引导

当 vault 中不存在 `_wiki-config.md` 时，执行以下流程。这是整个知识库的基础设置，不可跳过。

### 1.1 确认 vault 路径

询问用户 Obsidian vault 的绝对路径。用 Desktop Commander 的 `list_directory` 验证路径存在。

### 1.2 扫描现有结构

用 Desktop Commander 扫描 vault 根目录和一级子目录：
- 如果 vault 已有内容和目录结构 → 展示给用户，讨论如何映射到五层体系
- 如果 vault 基本为空 → 进入引导设计流程

### 1.3 引导设计（逐项确认）

依次和用户确认以下配置项，每个都提供默认选项，用户可直接接受或自定义：

**语言偏好**
- 文件夹和笔记命名使用中文还是英文？
- 默认：中文

**目录命名**
- 信息源目录名称？默认：`00_收件箱/`（英文：`00_Inbox/`）
- 原子笔记目录名称？默认：`10_知识卡片/`（英文：`10_Atlas/`）
- 输出文档目录名称？默认：`20_输出文档/`（英文：`20_Output/`）

**文件命名规范**
提供三种选择，让用户挑选：
1. 时间戳ID：`202604131430-注意力机制.md`
2. 语义化命名：`注意力机制.md`
3. 日期编号式：`20260413-001-注意力机制.md`

**标签策略**
- 是否使用嵌套标签？（如 `#AI/Agent` vs 扁平的 `#AI-Agent`）
- 默认：使用嵌套标签

**信息源目录**
- 原始素材通常存放在哪个目录？（用于 Ingest 时的默认扫描路径）
- 是否使用 Obsidian Web Clipper？如果是，剪藏文件存在哪里？

### 1.4 创建配置文件

将所有配置写入 vault 根目录的 `_wiki-config.md`：

```markdown
---
wiki_version: 1.0
created: {{YYYY-MM-DD}}
last_updated: {{YYYY-MM-DD}}
---

# 知识库配置

## 基础设置
- vault 路径：{{绝对路径}}
- 语言偏好：{{中文/英文}}
- 文件命名规范：{{时间戳ID/语义化/日期编号}}

## 目录映射
- 信息源：{{目录名}}
- 原子笔记：{{目录名}}
- 输出文档：{{目录名}}

## 二级文件夹
{{初始的二级文件夹列表，随使用动态更新}}

## 标签策略
- 嵌套标签：{{是/否}}
- 已有标签列表：{{随使用动态更新}}

## 信息源设置
- 默认素材目录：{{路径}}
- Web Clipper 目录：{{路径或"未使用"}}
```

### 1.5 创建系统文件

创建 `_index.md`（初始为空索引模板）和 `_log.md`（记录初始化事件）。

### 1.6 创建目录结构

根据确认的配置，用 Desktop Commander 创建所有一级目录。不预建二级目录——二级目录随内容增长动态创建。

### 1.7 完成提示

告知用户初始化完成，简要说明：
- 如何触发沉淀（对话后说"帮我沉淀"）
- 如何触发消化（丢入素材说"帮我消化这个"）
- 如何触发健康检查（说"lint一下知识库"）
- 推荐安装 Obsidian Web Clipper 用于快速收集网页内容到信息源目录

---

## 第二步：沉淀流程（Save）

用户想把当前对话中有价值的内容存入知识库。

### 2.1 读取配置

用 Desktop Commander 读取 vault 中的 `_wiki-config.md`，获取所有配置项。如果配置文件不存在，先跳转到初始化流程。

### 2.2 回顾对话，识别知识点

通读当前对话全文，提取值得沉淀的**独立知识点**。每个知识点应该能独立成篇，回答一个具体问题或阐述一个具体概念。

识别标准：
- 一个新概念或方法论的理解
- 一个具体的决策及其理由
- 一个可复用的框架或模板
- 一个重要的认知变化
- 一个具体的经验教训

不值得沉淀的内容：
- 纯闲聊、寒暄
- 一问一答的简单事实查询
- 已经在知识库中存在且无新增信息的内容

如果对话确实没有沉淀价值，坦诚告知用户并解释原因。

### 2.3 拆分为原子笔记

将识别出的知识点拆分为独立的原子笔记。一次对话可能产出 1-5 条笔记，每条只聚焦一个点。

### 2.4 检查现有笔记

扫描原子笔记目录，检查每条待写入的笔记：
- **是否已存在相同或近似主题的笔记？** → 如果是，应该更新已有笔记而非新建
- **是否需要创建新的实体页或概念页？**（如讨论中首次出现的重要人物、产品、框架）→ 如果是，额外创建
- **是否需要新建二级文件夹？** → 如果现有二级文件夹都不合适，建议新建

### 2.5 生成笔记内容

每条原子笔记使用以下模板。保持精简，聚焦单一知识点：

```markdown
---
created: {{YYYY-MM-DD}}
updated: {{YYYY-MM-DD}}
source: Claude 对话
tags:
  - {{tag1}}
  - {{tag2}}
---

# {{笔记标题}}

{{用 2-5 句话清晰阐述这一个知识点。应当自包含——不读其他笔记也能理解核心意思。}}

## 展开说明

{{详细内容：背景、逻辑链条、具体例子、适用场景等。如果对话中有用户产出的有价值的原始表达（框架、观点、文案），用引用块保留：}}

> [!quote] 原始表达
> {{完整保留有价值的原始内容}}

## 关联笔记
- [[{{相关笔记1}}]]
- [[{{相关笔记2}}]]
```

模板使用原则：
- `展开说明` 是选填的——如果核心段落已经说清楚了，不需要强行展开
- `原始表达` 引用块只在有价值时使用，不是每条都需要
- `关联笔记` 尽力填写。即使目标笔记还不存在，也用 `[[]]` 占位
- 不使用 emoji 作为区块标题

### 2.6 展示并确认

在对话中展示所有待写入的笔记，包括：
- 每条笔记的目标路径
- 每条笔记的标签
- 每条笔记的全文预览
- 如果涉及更新已有笔记，展示变更对比

询问用户："这些内容可以吗？需要调整什么？"

**严格规则：用户确认前绝不写入文件。**

### 2.7 执行写入

用户确认后：
1. 用 Desktop Commander 的 `write_file` 写入每条笔记
2. 如果需要新建二级文件夹，先用 `create_directory` 创建
3. 更新 `_index.md`：为每条新笔记添加条目
4. 追加 `_log.md`：记录本次操作

### 2.8 更新索引和日志

**_index.md 更新格式**：

```markdown
## {{二级文件夹名称}}

- [[{{笔记标题}}]] - {{一句话摘要}} ({{日期}})
```

**_log.md 追加格式**：

```markdown
## [{{YYYY-MM-DD HH:mm}}] save | {{概括描述}}
- 新增：[[{{笔记1}}]], [[{{笔记2}}]]
- 更新：[[{{笔记3}}]]（如有）
- 来源：Claude 对话
```

---

## 第三步：Ingest 流程

用户投喂原始素材（文章、笔记、文件），要求提炼为原子笔记。

### 3.1 读取配置

同沉淀流程。

### 3.2 获取素材

用户可能通过以下方式提供素材：
- 直接在对话中粘贴文本
- 指定 vault 中某个文件的路径
- 指定信息源目录下的某个或某批文件
- 提供 URL（需配合 web_fetch 获取内容）

用 Desktop Commander 读取文件内容。如果是 URL，先获取内容再处理。

### 3.3 阅读并讨论

阅读完素材后，先和用户讨论：
- 这篇素材的核心要点是什么？
- 用户最关注哪些方面？
- 有哪些内容值得提炼为原子笔记？

这一步很重要——不要跳过讨论直接生成笔记。用户的关注点决定了提炼方向。

### 3.4 提炼原子笔记

根据讨论结果，从素材中提炼原子笔记。每条笔记的 `source` 字段记录原始素材的标题或路径，而非"Claude 对话"。

### 3.5 存档原始素材

如果原始素材尚未在信息源目录中，建议用户将其存入。skill 不自动移动用户的文件，但可以帮助：
- 建议存放的二级文件夹
- 如果素材是对话中粘贴的文本，可以帮用户保存到信息源目录

### 3.6 后续流程

展示、确认、写入、更新索引和日志——同沉淀流程的 2.6-2.8。

---

## 第四步：Lint 流程（健康检查）

定期检查知识库的健康状态，保持知识网络的质量。

### 4.1 读取配置并扫描

读取 `_wiki-config.md`，然后扫描整个原子笔记目录。

### 4.2 检查项目

依次检查以下维度，生成报告：

**孤立笔记**
- 没有任何双向链接指向其他笔记的"孤岛"
- 建议：为其添加关联，或考虑是否应该合并到其他笔记

**断裂链接**
- `[[链接目标]]` 指向的笔记不存在
- 建议：创建缺失的笔记，或修正链接

**近似重复**
- 标题或内容高度相似的多条笔记
- 建议：合并为一条，保留最完整的版本

**过时内容**
- 如果能从内容判断某些信息已过时（如涉及特定日期、版本号等）
- 建议：更新或标记为过时

**目录结构评估**
- 某个二级文件夹笔记过多（>30条），需要拆分？
- 某个二级文件夹笔记过少（<3条），可以合并？
- 是否有笔记放错了文件夹？

**索引一致性**
- `_index.md` 是否和实际文件一致？
- 是否有笔记未被索引收录？

**标签一致性**
- 是否存在近义标签？
- 是否有标签只被使用了一次？

### 4.3 生成报告

将检查结果以清晰的报告形式展示给用户，按严重程度排序：
1. 需要立即处理的问题（断裂链接、近似重复）
2. 建议优化的事项（孤立笔记、目录调整）
3. 知识库整体统计（总笔记数、链接密度、标签使用情况）

### 4.4 执行修复

用户选择需要修复的项目后，逐一执行。每次修复都更新索引和日志。

---

## 实体页与概念页

在沉淀和 Ingest 过程中，如果遇到以下情况，应自动建议创建专门的笔记页：

**实体页**：某个人物、公司、产品、项目在多条笔记中被反复提及，但没有专属页面。
- 判断标准：在 3 条及以上笔记中被 `[[链接]]` 引用
- 内容：基本信息汇总 + 所有引用该实体的笔记链接

**概念页**：某个方法论、框架、技术概念在多条笔记中出现，但没有专属页面。
- 判断标准：同上
- 内容：概念定义 + 关键要点 + 所有相关笔记链接

创建实体/概念页时，告知用户并获得确认。这些页面也遵循原子笔记原则——每页只关于一个实体或概念。

---

## 配置更新

随着知识库的成长，配置需要同步更新：

- 新建了二级文件夹 → 更新 `_wiki-config.md` 的二级文件夹列表
- 出现了新的标签 → 更新已有标签列表
- 用户要求调整目录结构或命名规范 → 更新对应配置项
- 每次更新配置时刷新 `last_updated` 日期

每次更新配置前，向用户说明变更内容。

---

## 工具使用

本 skill 使用 Desktop Commander MCP 工具进行文件操作。如果用户尚未安装 Desktop Commander，提醒用户安装并配置，本 skill 不负责软件安装。

常用工具操作：
- `list_directory`：扫描目录结构
- `read_file`：读取配置文件和已有笔记
- `write_file`：写入新笔记（mode: rewrite）
- `create_directory`：创建新目录
- `start_search`：搜索知识库中的已有笔记和标签

写入路径格式：
```
{{vault路径}}/{{原子笔记目录}}/{{二级文件夹}}/{{文件名}}.md
```

---

## 注意事项

- 永远不要在用户确认之前写入或修改文件
- 如果对话内容没有沉淀价值，坦诚告知用户
- 笔记语言跟随用户在 `_wiki-config.md` 中设置的语言偏好
- 不要在笔记中插入图片或插图
- 一次对话如果产出多条原子笔记，每条笔记独立成文件，通过双向链接关联
- 更新已有笔记时，保留原有内容的精华，增量添加新内容，更新 `updated` 日期
- 推荐用户安装 Obsidian Web Clipper 浏览器扩展，方便将网页文章快速剪藏到信息源目录

