| name | obsidian-wiki |
| description | 为 obsidian 构建、维护、查询 Wiki 知识库。 当以下情况时使用: (1) 用户提到"wiki"、"知识库" (2) 用户要求文章增加到wiki/知识库中 (3) 用户要求整理 obsidian wiki/知识库 (4) 用户要求查询、搜索 obsidian wiki/知识库 (5) 用户针对 Wiki 内容提问、对话、讨论 (6) 用户要求保存问答/讨论结果 |
Obsidian Wiki
为 Obsidian 文章构建 Wiki 知识体系:提取摘要、深写概念、构建索引。
使用场景
- 整理已有文章,提取概念并联网搜索完善
- 整理已有文章,写入结构化摘要
- 构建原文 → 摘要 → 概念的三层索引
- 定期健康检查,补全和更新概念库
- 搜索、查询、问答 Wiki 内容,并与用户讨论
- 将问答/讨论结果自动归档到 outputs 目录
前置条件
- 文章已保存在 Obsidian Vault 中
- 文章已经过
obsidian-backlinks 处理(已有 YAML frontmatter、tags、双链)
- 用户确认提取的概念列表(或授权自动判断)
目录结构
| 用途 | 路径 |
|---|
| 资源目录(原文) | <原文目录> |
| Wiki 根目录 | <原文目录>/Wiki/ |
| 摘要目录 | <Wiki 根目录>/Summaries/ |
| 概念目录 | <Wiki 根目录>/Concepts/ |
| 索引文件 | <Wiki 根目录>/INDEX.md |
| 日志文件 | <Wiki 根目录>/LOG.md |
| 已处理清单 | <Wiki 根目录>/.done.files |
| 概念归一化配置 | .concepts.yaml(workspace 中) |
| 问答目录 | <Wiki 根目录>/outputs/ |
| Vault 本地目录 | 通过 obsidian vault info="path" silent 命令获取 |
| Vault 名 | 如果用户不指定,默认obsidian vault info="name" silent |
核心规则
- ⚠️ 禁止修改资源目录中的原文件
- ⚠️ 概念过滤标准统一使用
.concepts.yaml 的 excluded 列表(与 obsidian-backlinks 共享)
- 操作 Obsidian 使用
obsidian CLI(参考 SKILL: obsidian-cli,注意带 silent 参数)
- 摘要只提炼、不创作;概念页可深度扩展 + 联网增强
- 一个标准概念 = 唯一一篇概念文章
- 所有页面必须带 References,形成可溯源链路
- 禁止泛概念独立成页(AI、模型、算法 等)
双链写入原则(摘要 & 概念文章统一遵守)
概念文章内部严格使用 .concepts.yaml standard 标准名,不新增别名
- 只对第一次出现的术语添加
[[...]]
- 同一概念后续出现一律不处理、不链接
- 标题中的概念算作第一次出现
- 已存在的双链不再重复处理
增加文章
步骤 0:去重检查
读取已处理清单,跳过已处理的文章:
obsidian read path="<Wiki 根目录>/.done.files" silent
.done.files 格式(每行一条):
2026-04-14|文章路径.md|5 concepts|summary
格式:日期|文章路径|概念数|处理类型
如果目标文章路径已存在于清单中,跳过并告知用户。
步骤 1:读取文章 + 提取概念 + 写摘要(一次读取)
一次性读取原文,同时完成概念提取和摘要编写,避免重复读取:
obsidian read path="文章路径.md" silent
1a. 提取候选概念(结构化解析,不需要语义理解)
从已经过 backlinks 增强的文章中纯结构化提取:
- tags:从 YAML frontmatter 的
tags 字段提取
- 双链:用正则
\[\[([^\]|]+)(?:\|[^\]]+)?\]\] 提取所有 [[概念]] 和 [[标准名|别名]] 中的标准名
- 去重合并:tags 和双链中的概念取并集
- 过滤:读取
.concepts.yaml 的 excluded 列表,排除泛概念
输出候选概念列表,等待用户确认(除非用户已授权自动判断)。
1b. 写结构化摘要
根据文章类型选择摘要框架:
| 文章类型 | 摘要框架 | 判断依据 |
|---|
| 学术论文 | IMRaD(Introduction / Methods / Results / Discussion) | 有 Abstract、References、实验章节 |
| 技术博客/教程 | WHAT-WHY-HOW(是什么 / 为什么 / 怎么做 / 关键结论) | 有代码示例、步骤说明 |
| 概念解析 | CONCEPT-MAP(定义 / 核心机制 / 对比 / 应用场景) | 围绕单一术语展开 |
| 实践笔记 | TIL(场景 / 问题 / 方案 / 收获) | 短篇、经验导向 |
摘要要求:
- 300-600 字,保留关键数据和结论
- 保留原文中的双链
[[概念]]
- YAML frontmatter 包含
source_path 指向原文
直接使用 write 工具操作文件,避免 Obsidian CLI 对于 \t、\n 的转义处理问题:
write(path="<Vault 本地目录>/<摘要目录>/文章名 - Summary.md", content="...")
步骤 2:编写概念文章(核心步骤)
对步骤 1a 确认的每个概念,执行以下流程:
2a. 联网搜索(必须)
搜索该概念的最新内容,关键字为:<概念名> 最新进展,提取 10 篇相关结果的标题、链接、摘要。
2b. 编写或更新概念文章
检查概念文章是否已存在:
obsidian read path="<概念目录>/概念名.md" silent
- 已存在:结合联网搜索的新内容,补充新论证、新观点、新进展,保留原有内容,增量不覆盖
- 不存在:写一篇完整文章,要求:
- 1500 字以上
- 结构:定义 → 核心原理(含数学推导/伪代码)→ 工程实践 → 对比方案 → 最新进展 → References
- 清晰的原理解释和证明
- 直接在生成内容中嵌入
[[双链]] 和 YAML tags(概念文章从零生成,agent 已知所有概念,无需再走 obsidian-backlinks 流程)
文章尾部 必须包含 References:
## References
- [[原文标题]] — Obsidian 内部文章
- [论文/博客标题](https://url) — 外部链接
写入概念目录,先获取 vault 根目录:
obsidian vault info="path" silent
直接使用 write 工具操作文件,避免 Obsidian CLI 对于 \t、\n 的转义处理问题:
write(path="<Vault 本地目录>/<概念目录>/概念名.md", content="...")
2c. 并行策略
- 概念文章之间互相独立,适合并行处理
- 当概念数 ≥ 3 时,使用 subagent 并行编写
- 每个 subagent 负责:联网搜索 + 编写/更新一篇概念文章(含内嵌双链和 tags)
- 主 agent 负责:汇总结果、更新索引、记录日志
步骤 3:更新索引
INDEX.md 使用以下固定结构:
# Wiki 索引
> 自动生成,请勿手动编辑。最后更新:YYYY-MM-DD
## 按分类
### 模型架构
- [[概念A]] — 一句话描述
- [[概念B]] — 一句话描述
### 训练方法
- ...
### 推理优化
- ...
### 位置编码
- ...
(按需增加分类)
## 摘要
- [[文章A - Summary]] ← [[文章A]]
- [[文章B - Summary]] ← [[文章B]]
## 统计
- 概念文章:XX 篇
- 摘要文章:XX 篇
- 最后更新:YYYY-MM-DD
分类不是固定的,根据概念的 tags 自动归类。一个概念可以出现在多个分类下。
obsidian create path="<Wiki 根目录>/INDEX.md" content="..." silent overwrite
步骤 4:记录已处理文件
追加到 .done.files:
obsidian append path="<Wiki 根目录>/.done.files" content="2026-04-14|文章路径.md|5 concepts|summary" silent
步骤 5:记录操作日志
追加到 LOG.md:
## 2026-04-14 16:00
**源路径**:文章路径.md
**处理文章**:[[RoPE 旋转位置编码]]
**摘要**:[[RoPE 旋转位置编码 - Summary]]
**新增概念**:[[RoPE]]、[[旋转矩阵]]、[[Position Interpolation]]
**更新概念**:[[Transformer]](补充 RoPE 相关内容)
**联网搜索**:10 条结果,5 条采纳
obsidian append path="<Wiki 根目录>/LOG.md" content="..." silent
健康检查
定期扫描 Wiki 概念库,检查和补全内容。
步骤 1:扫描现有概念文章
obsidian list path="<概念目录>" silent
获取所有概念文章列表。
步骤 2:逐项检查
对每篇概念文章执行以下检查:
2a. 内容新鲜度
- 读取概念文章,检查 YAML frontmatter 中的
date 或文章末尾的"最新进展"章节
- 阈值:超过 90 天未更新的概念,触发联网搜索
- 联网搜索该概念最新进展,关键字:
<概念名> 最新进展
- 有重要更新(新论文、新版本、重大变更)则补充到文章中
2b. 引用完整性
- 检查
## References 是否存在
- 是否至少包含 1 个 Obsidian 内部链接
[[...]]
- 是否至少包含 1 个外部 URL
[...](https://...)
- 缺失则标记为待修复
2c. 双链有效性
- 提取文章中所有
[[概念]] 链接
- 检查每个链接是否对应
<概念目录> 下已有的概念文章
- 不存在的链接收集为待创建概念列表
2d. 索引一致性
- 读取
<Wiki 根目录>/INDEX.md
- 对比概念目录和摘要目录的实际文件列表
- 检查是否有文章未收录在索引中
2e. 重复概念检查
- 根据
.concepts.yaml 的 aliases 检查是否存在同义不同名文件
- 如存在,标记为 需要合并
- 保留标准名,删除别名文件
步骤 3:输出检查报告
汇总后输出:
📋 Wiki 健康检查报告
✅ 正常概念:XX 篇
⚠️ 需要更新(超过 90 天):概念A、概念B
❌ 缺少 References:概念C
🔗 断链(概念文章不存在):概念D、概念E
📑 未收录在索引中:概念F
建议操作:
1. 更新 X 篇过期概念
2. 创建 X 篇缺失概念
3. 修复 X 篇引用
4. 重建索引
等待用户确认后再执行修复操作。
步骤 4:执行修复
根据用户确认的范围:
- 更新过期概念:联网搜索 + 补充内容(同增加文章的步骤 2c)
- 创建缺失概念:联网搜索 + 编写新文章(同增加文章的步骤 2b-2c)
- 修复引用:补全 References 章节
- 重建索引:同增加文章的步骤 3
- 记录日志:同增加文章的步骤 5
搜索与问答
步骤 1:接收用户问题
用户问题示例:
- KV Cache 为什么会爆显存?
- RoPE 和 ALiBi 区别是什么?
- 解释一下 Attention Sink
步骤 2:检索 Wiki 内容
从三个位置检索信息:
- 概念文章
- 摘要库
- 问答库
- INDEX 索引:关键词匹配
obsidian search path="<概念目录>" query="KV Cache" silent
obsidian search path="<摘要目录>" query="KV Cache" silent
obsidian search path="<问答目录>" query="KV Cache" silent
步骤 3:结合联网信息补充(必要时)
如果 Wiki 信息不足,自动联网补全。
步骤 4:生成结构化回答
遵循格式:
# 问答:KV Cache 为什么会占用大量显存?
## 简短结论
...
## 原理
...
## 关键机制
...
## 相关 Wiki 概念
- [[KV Cache]]
- [[PagedAttention]]
- [[Attention Sink]]
## References
- [[KV Cache]]
- [[论文:...]]
步骤 5:与用户多轮讨论
- 允许用户追问、扩展、对比、质疑
- 每轮回答都引用 Wiki 内链
[[...]]
- 不编造无来源结论
- 保持学术 / 工程风格
归档问答
步骤 1:结束讨论后自动归档
当用户说:
- 保存
- 归档
- 记录下来
- 写到 wiki outputs
自动执行保存。
步骤 2:生成归档文件
文件名格式:
YYYY-MM-DD-问答-关键词.md
示例:
2026-04-15-问答-KV-Cache-显存问题.md
内容结构:
---
title: "问答:KV Cache 显存占用问题"
tags: [KV Cache, 推理优化, 显存]
date: 2026-04-15
source: wiki-discussion
---
# 问答:KV Cache 为什么会爆显存?
(完整对话内容)
## 相关 Wiki
- [[KV Cache]]
- [[PagedAttention]]
## References
- [[KV Cache]]
- [https://...]]
步骤 3:写入 outputs 目录
使用 write 避免 LaTeX 乱码:
write(path="<Vault 本地目录>/outputs/2026-04-15-xxx.md", content="...")
步骤 4:更新索引 & 日志
## 问答归档
- [[2026-04-15-问答-KV-Cache-显存问题]]
- [[2026-04-15-问答-RoPE-vs-ALiBi]]