聊天转 Obsidian 知识库笔记
任务目标
从当前 AI 聊天中提取有价值的技术内容,自动识别文档类型,按照 Obsidian 知识库的分类体系和格式规范,生成结构化的 Markdown 技术文档并保存。
核心工作流
Step 1:分析聊天内容
回顾当前对话,提取核心技术内容,判断文档类型:
| 文档类型 | 判断特征 | 典型场景 |
|---|---|---|
| 问题解决型 | 对话中包含报错信息、Bug 描述、排错过程、修复方案 | 调试 Bug、解决编译错误、修复配置问题 |
| 知识学习型 | 对话中包含概念解释、API 用法、原理讲解、教程式内容 | 学习新框架、理解某个概念、探索 API |
| 方案对比型 | 对话中包含多种方案讨论、优劣对比、技术选型 | 技术选型、架构决策、工具选择 |
如果对话内容跨多种类型,选择占比最大的类型。也可以拆分为多篇文档。
Step 2:推断分类目录
根据聊天涉及的技术领域,参照 references/obsidian-categories.md 中的分类映射表,推断最匹配的分类目录。
向用户确认分类,使用 ask_questions 工具展示:
- AI 推荐的分类目录(标记 recommended)
- 2-3 个备选分类
- 允许用户自由输入其他路径
Step 3:生成文档
根据文档类型,参照 references/document-templates.md 中的对应模板,从对话中提取内容填充各章节。
关键规则:
- Frontmatter 格式(必须遵循):
---
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:使用当前时间
- 内容提炼原则:
- 从对话中提炼精华,不是简单复制粘贴
- 代码片段保留完整可运行的版本
- 去除对话中的试错过程,只保留最终正确方案
- 补充必要的上下文(对话中可能省略的背景信息)
- Obsidian 双链:
- 扫描目标分类目录下已有的
.md文件 - 在「相关知识」章节中使用
[[文件名]]格式引用相关笔记 - 只引用确实存在的文件,不凭空创建双链
- 文件命名:
- 使用中文或中英混合标题(与知识库现有风格一致)
- 示例:
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. 索引文件已存在
- 读取索引文件内容
- 根据新文档主题,找到最匹配的
## 二级标题分组 - 在该分组末尾追加一行裸 wiki link:
[[新文件名]](不加-bullet,与现有格式一致) - 如果没有匹配的分组,在文件末尾追加新文档的 wiki link
5b. 索引文件不存在(新分类)
当整个分类目录是新建的,需要创建索引文件,格式如下:
---
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 中的「索引文件格式」章节:
- Wiki link 使用裸写格式(每行一个,不加
-bullet) - 按
## 二级标题分组 - 分组之间可选使用
---分隔线 - 中间层索引(如
Front-end.md)只列出子分类的 wiki link,无标题分组
Step 6:完成报告
保存完成后告知用户:
- 文件保存路径
- 文档类型
- 包含的章节概要
- 索引文件更新情况(更新了哪个索引文件,追加在哪个分组下)
章节适用性
不同文档类型包含不同章节,以下为各类型章节组成:
| 章节 | 问题解决型 | 知识学习型 | 方案对比型 |
|---|---|---|---|
| 背景(问题/动机) | ✅ | ✅ | ✅ |
| 环境信息 | ✅ | ⚪ 按需 | ⚪ 按需 |
| 原因分析 | ✅ | ❌ | ❌ |
| 核心概念 | ❌ | ✅ | ❌ |
| 方案概览 | ❌ | ❌ | ✅ |
| 对比分析 | ❌ | ❌ | ✅ |
| 结论 | ❌ | ❌ | ✅ |
| 解决方案 | ✅ | ❌ | ❌ |
| 用法详解 | ❌ | ✅ | ❌ |
| 关键代码/代码示例 | ✅ | ✅ | ✅ |
| 注意事项 | ✅ | ✅ | ✅ |
| 参考资料 | ✅ | ✅ | ✅ |
| 相关知识 | ✅ | ✅ | ✅ |
⚪ 按需 = 对话中包含相关信息时才添加
文档质量要求
- 标题明确:标题应能概括文档核心内容,支持搜索
- 背景充分:读者不看对话也能理解问题/需求的完整上下文
- 方案可执行:步骤清晰,包含必要的环境前提和依赖
- 代码可运行:代码片段完整,包含必要的 import 和上下文
- 链接有效:参考资料的链接应是真实有效的 URL
- 双链准确:
[[双链]]引用的文件必须在知识库中实际存在
资源索引