---
name: chat-to-obsidian-note
description: 将 AI 聊天内容提炼为结构化技术文档并保存到 Obsidian 知识库。支持三种文档类型：问题解决型、知识学习型、方案对比型。自动推断知识库分类目录，生成符合 Obsidian 规范的 Markdown 文件（含 frontmatter、双链）。适用于：(1) 聊天中解决了技术问题后想记录下来，(2) 学到新知识想沉淀到知识库，(3) 对比了多个方案后想保存决策过程。触发条件：用户说"保存到知识库"、"导出到 Obsidian"、"记录到笔记"、"保存这次对话"、"转成文档"等。
---

# 聊天转 Obsidian 知识库笔记

## 任务目标

从当前 AI 聊天中提取有价值的技术内容，自动识别文档类型，按照 Obsidian 知识库的分类体系和格式规范，生成结构化的 Markdown 技术文档并保存。

## 核心工作流

### Step 1：分析聊天内容

回顾当前对话，提取核心技术内容，判断文档类型：

| 文档类型       | 判断特征                                           | 典型场景                             |
| -------------- | -------------------------------------------------- | ------------------------------------ |
| **问题解决型** | 对话中包含报错信息、Bug 描述、排错过程、修复方案   | 调试 Bug、解决编译错误、修复配置问题 |
| **知识学习型** | 对话中包含概念解释、API 用法、原理讲解、教程式内容 | 学习新框架、理解某个概念、探索 API   |
| **方案对比型** | 对话中包含多种方案讨论、优劣对比、技术选型         | 技术选型、架构决策、工具选择         |

> 如果对话内容跨多种类型，选择占比最大的类型。也可以拆分为多篇文档。

### Step 2：推断分类目录

根据聊天涉及的技术领域，参照 [references/obsidian-categories.md](references/obsidian-categories.md) 中的分类映射表，推断最匹配的分类目录。

**向用户确认分类**，使用 `ask_questions` 工具展示：

- AI 推荐的分类目录（标记 recommended）
- 2-3 个备选分类
- 允许用户自由输入其他路径

### Step 3：生成文档

根据文档类型，参照 [references/document-templates.md](references/document-templates.md) 中的对应模板，从对话中提取内容填充各章节。

**关键规则：**

1. **Frontmatter 格式**（必须遵循）：

```yaml
---
tags: [分类名]
parent: 父级分类名
author: SakumyZ
createTime: YYYY-MM-DD HH:mm:ss
modifiedTime: YYYY-MM-DD HH:mm:ss
---
```

- `tags`：使用文件所在目录名（如 `Vue`、`Git`、`Engineering`）
- `parent`：使用父级目录名
- `createTime` 和 `modifiedTime`：使用当前时间

2. **内容提炼原则**：

- 从对话中提炼精华，不是简单复制粘贴
- 代码片段保留完整可运行的版本
- 去除对话中的试错过程，只保留最终正确方案
- 补充必要的上下文（对话中可能省略的背景信息）

3. **Obsidian 双链**：

- 扫描目标分类目录下已有的 `.md` 文件
- 在「相关知识」章节中使用 `[[文件名]]` 格式引用相关笔记
- 只引用确实存在的文件，不凭空创建双链

4. **文件命名**：

- 使用中文或中英混合标题（与知识库现有风格一致）
- 示例：`Vue3 组件通信方式.md`、`Git rebase 交互式用法.md`、`解决 TypeScript 循环依赖问题.md`
- 避免特殊字符：`/ \ : * ? " < > |`

### Step 4：保存文件

文件保存路径：`D:\Documents\Knowledge Base\Readme\{分类目录}\{文件名}.md`

使用 `create_file` 工具写入文件。

### Step 5：更新分类索引文件

每个分类目录下都有一个与目录同名的 **索引文件**（如 `Git/Git.md`、`Web/Front-end/Vue/Vue.md`），用于汇总该分类下所有笔记的双链。保存文档后必须同步更新索引文件。

#### 5a. 索引文件已存在

1. 读取索引文件内容
2. 根据新文档主题，找到最匹配的 `## 二级标题` 分组
3. 在该分组末尾追加一行裸 wiki link：`[[新文件名]]`（不加 `-` bullet，与现有格式一致）
4. 如果没有匹配的分组，在文件末尾追加新文档的 wiki link

#### 5b. 索引文件不存在（新分类）

当整个分类目录是新建的，需要创建索引文件，格式如下：

```markdown
---
tags: [Index, {分类名}]
parent: {父级分类名}
author: SakumyZ
createTime: {YYYY-MM-DD HH:mm:ss}
modifiedTime: {YYYY-MM-DD HH:mm:ss}
---

# {分类名}

[[新文件名]]
```

同时检查父级目录的索引文件是否需要添加指向新分类索引的链接。例如新建 `Web/Front-end/Svelte/` 时，需要在 `Web/Front-end/Front-end.md` 中追加 `[[Svelte]]`。

#### 索引文件格式规范

参照 [references/obsidian-categories.md](references/obsidian-categories.md) 中的「索引文件格式」章节：

- Wiki link 使用**裸写格式**（每行一个，不加 `-` bullet）
- 按 `## 二级标题` 分组
- 分组之间可选使用 `---` 分隔线
- 中间层索引（如 `Front-end.md`）只列出子分类的 wiki link，无标题分组

### Step 6：完成报告

保存完成后告知用户：

- 文件保存路径
- 文档类型
- 包含的章节概要
- 索引文件更新情况（更新了哪个索引文件，追加在哪个分组下）

## 章节适用性

不同文档类型包含不同章节，以下为各类型章节组成：

| 章节              | 问题解决型 | 知识学习型 | 方案对比型 |
| ----------------- | :--------: | :--------: | :--------: |
| 背景（问题/动机） |     ✅     |     ✅     |     ✅     |
| 环境信息          |     ✅     |  ⚪ 按需   |  ⚪ 按需   |
| 原因分析          |     ✅     |     ❌     |     ❌     |
| 核心概念          |     ❌     |     ✅     |     ❌     |
| 方案概览          |     ❌     |     ❌     |     ✅     |
| 对比分析          |     ❌     |     ❌     |     ✅     |
| 结论              |     ❌     |     ❌     |     ✅     |
| 解决方案          |     ✅     |     ❌     |     ❌     |
| 用法详解          |     ❌     |     ✅     |     ❌     |
| 关键代码/代码示例 |     ✅     |     ✅     |     ✅     |
| 注意事项          |     ✅     |     ✅     |     ✅     |
| 参考资料          |     ✅     |     ✅     |     ✅     |
| 相关知识          |     ✅     |     ✅     |     ✅     |

> ⚪ 按需 = 对话中包含相关信息时才添加

## 文档质量要求

- **标题明确**：标题应能概括文档核心内容，支持搜索
- **背景充分**：读者不看对话也能理解问题/需求的完整上下文
- **方案可执行**：步骤清晰，包含必要的环境前提和依赖
- **代码可运行**：代码片段完整，包含必要的 import 和上下文
- **链接有效**：参考资料的链接应是真实有效的 URL
- **双链准确**：`[[双链]]` 引用的文件必须在知识库中实际存在

## 资源索引

- [分类映射表](references/obsidian-categories.md) — Obsidian 知识库完整目录分类及关键词匹配规则
- [文档模板](references/document-templates.md) — 三种文档类型的结构化模板

```

```
