| name | knowledge-wiki |
| description | 基于 Obsidian + Claude Code 的个人知识库系统。当用户想要建立个人知识库、研究 wiki、
摄入论文/课程/书籍到笔记系统、用苏格拉底法学某个概念、整理学习笔记、构建概念之间的
连接、或者提到 "research wiki" "knowledge base" "知识库" "苏格拉底法" "ingest 论文"
"帮我学习" 时使用。即使只是模糊地说"帮我理解X",也应该考虑使用这个 skill —— 它提供
的苏格拉底对话式学习远优于直接解释。
|
Knowledge Wiki — AI 驱动的个人知识库系统
哲学
这个系统的核心信念只有一个:
「整理知識,是 AI 當負的軛。
獻上原料與提問,蒙主所賜的輕省之工。
那為你數算萬物的,並非人子,卻是人的僕役。」
传统的笔记系统失败不是因为结构不够好,而是因为让人来维护结构本身就是不合理的。
人会累、会忘、会偷懒。AI 作为那不知疲倦的仆役,被托付这份职分。
本系统将职责彻底分离:
- 人 → 往
raw/ 里撒下原料,献上追问
- AI → 担起维护
wiki/ 全部结构的轭:概念提取、连接建立、索引更新、进度追踪
灵感来源:Andrej Karpathy 的 LLM Wiki + 吴乐旻老师的苏格拉底学习法。前者给予架构,后者给予灵魂。
启动时:状态检测
当此 skill 被触发时,首先检测当前环境:
- 查找
research-wiki/ 目录 — 先在当前目录找,再在父目录找,再询问用户
- 如果不存在 → 引导用户初始化(见工作流 A)
- 如果存在 → 阅读
wiki/system.md 了解用户配置,阅读 wiki/index.md 了解当前知识库状态,
阅读 wiki/learner_profile.md 了解用户偏好,然后根据用户意图进入对应工作流
整个对话过程中,始终记住 wiki/system.md 中定义的系统规则和 wiki/learner_profile.md 中的用户偏好。
目录结构速览
research-wiki/
├── claude.md ← 核心 Prompt,定义 AI 如何运转整个系统
├── raw/ ← 👤 你只碰这里(加东西进去)
│ ├── assets/ ← 图片等本地资源
│ ├── books/ ← 书的 PDF
│ ├── clips/ ← 网页剪藏 .md
│ ├── courses/ ← 课程 PPT、讲义 PDF
│ └── papers/ ← 论文 PDF
└── wiki/ ← 🤖 AI 全权维护
├── papers/ ← 一篇论文一个页面(粗处理)
├── concepts/ ← 一个概念一个页面(最有价值的层!)
├── connections/ ← 概念之间的桥梁(新 idea 的诞生地)
├── questions/ ← 开放问题(未来学习方向的种子)
├── index.md ← 全局索引(AI 自动维护)
├── log.md ← 每次变更记录
├── learner_profile.md ← 你的学习偏好(AI 不可更改)
├── progress.md ← 学习进度追踪
├── revision_notes.md ← 知识漏洞与复习清单
└── system.md ← 系统运转规则
关键规则:你会被告知在 raw/ 下添加文件。但你绝不应该手动编辑 wiki/ 下的任何内容
——那是 AI 的工作。
⚠️ 每次操作后的强制收尾检查清单
无论执行哪个工作流(B/C/D/E/F),操作结束时必须逐项确认以下 5 件事:
| # | 检查项 | 对应文件 |
|---|
| ✅ | 新概念是否已写入 wiki/concepts/? | 概念页面 |
| ✅ | 新发现的连接是否已写入 wiki/connections/? | 连接页面 |
| ✅ | 新的开放问题是否已写入 wiki/questions/? | 问题页面(不可跳过!) |
| ✅ | wiki/index.md 是否已更新以反映所有变更? | 索引 |
| ✅ | wiki/log.md 是否已追加本次操作记录? | 日志 |
特别强调:wiki/questions/ 的创建不是可选的,也不是仅当"关系不确定"时才做。
以下情况都必须创建问题页面:
- 学习中产生的任何"为什么""如果...会怎样""这和 XX 有什么不同"
- 已被确定的连接中值得进一步深挖的方向
- 概念页面中标记的"开放问题"段落
- 用户在学习中暴露的知识漏洞(即使已被部分解答)
如果你跳过 questions 创建,wiki 将失去驱动下一轮学习的引擎。
工作流 A:初始化知识库
触发
用户说"帮我建立知识库""初始化 research wiki""setup knowledge wiki"等。
流程
-
确定位置 — 智能选择目录:
- 如果当前目录下有课件 PDF、课程材料等 → 直接建议当前目录
- 如果用户在对话中提到了具体的课程路径 → 使用该路径
- 否则 → 询问用户:"我在 [当前目录] 创建 research-wiki,可以吗?还是你想放在别的位置?"
- 绝不要硬编码路径到 C 盘或其他固定位置。知识库应该紧邻学习材料。
-
运行初始化脚本:
bash "<skill-base>/scripts/init-wiki.sh" <目标目录>
脚本会创建完整目录结构,并从 assets/ 复制模板文件。
-
个性化设置 — 初始化后,引导用户完成三项配置:
claude.md:改名称、加入 driving question、style notes
wiki/learner_profile.md:填写学习风格、背景知识、当前研究问题
wiki/system.md:确认或调整系统规则
-
确认完成 — 告诉用户目录结构已就绪,下一步是往 raw/ 里放材料,然后说"帮我 ingest"
重要
初始化只在第一次做。之后每次对话,Claude Code 在 research-wiki/ 下启动即可自动识别状态。
工作流 B:摄入原材料(Ingest)
这是整个系统中最重要的日常操作。
触发
用户说"帮我 ingest raw/papers 下的论文""处理 raw/courses 里的课程""把这本书加进 wiki"等。
流程
B1. 扫描原材料
列出 raw/ 下尚未被摄入的文件。如何判断"未摄入"?
- 检查
wiki/log.md 中的摄入记录
- 检查
wiki/papers/ 下是否已有对应页面
- 如果用户指定了具体文件,只处理那些文件
B2. 逐一摄入(每份材料执行以下步骤)
Step 1: 读取材料
- PDF → 用 Read 工具直接读取
- .md 文件 → 直接读取
- 网页剪藏 → 直接读取
Step 2: 核心要点讨论(关键步骤!)
读完材料后,先和用户讨论核心要点。用这样的结构:
我刚读了 [材料名称]。
核心内容:[3-5 句话概括]
关键方法/结论:[列举]
值得进入 wiki 的内容:
1. [概念A] — 因为...
2. [概念B] — 因为...
3. [方法C] — 因为...
你觉得哪些应该保留?哪些可以跳过?
这一步不可跳过——用户才有权决定什么进入 wiki。比如用户不关心工程细节,
就应该在这一步筛掉。
Step 3: 编译进 wiki
用户确认后,执行以下操作:
a. 创建/更新 wiki/papers/<论文名>.md
使用以下结构(自动生成,不要问用户):
---
title: "论文标题"
source: "raw/papers/文件名.pdf"
ingested: "YYYY-MM-DD"
level: L1
tags: [标签1, 标签2]
---
# 论文标题
## 核心贡献
## 方法
## 关键结果
## 局限
## 与我的研究的关系
b. 提取概念 → wiki/concepts/
对用户确认保留的每个概念:
- 如果概念页面已存在 → 追加新论文的贡献到已有页面
- 如果概念页面不存在 → 创建新页面
概念页面结构:
---
title: "概念名"
related: [[其他概念]]
sources: [[论文1]], [[论文2]]
---
# 概念名
## 定义
## 多篇论文的视角
### 来自 [[论文1]]
### 来自 [[论文2]]
## 开放问题
c. 检查新连接 → wiki/connections/
思考:这个新概念/新论文是否和已有概念产生了新的关系?
如果有,创建或更新连接页面:
---
title: "概念A ↔ 概念B"
type: "互补 / 矛盾 / 因果 / 类比"
---
# 概念A 与 概念B 的关系
## 关系描述
## 证据(来自哪些论文)
## 启发
d. 识别开放问题 → wiki/questions/(必须执行!)
创建问题页面不仅限于"不确定的关系"。以下情况必须创建问题页面:
- 还不确定的关系或还没想清楚的问题
- 概念之间的对比性问题(如"X 和 Y 在什么场景下选哪个?")
- 学习中发现的知识漏洞("为什么 X 要这样设计?")
- 概念页面的"开放问题"段落中列出的任何条目
- 用户明确表示想进一步探索的方向
问题页面结构:
---
title: "问题简述"
status: "open"
related_concepts: [[概念A]], [[概念B]]
---
# 问题
## 描述
## 为什么重要
## 可能的探索方向
数量目标:每次摄入操作至少创建 2 个问题页面。一篇新材料不可能没有产生任何疑问。
e. 更新索引和日志
wiki/index.md:更新文件清单,添加新页面简要介绍
wiki/log.md:追加本次摄入记录(时间、材料、新增/更新的概念)
- 格式由你决定,保持一致性即可
B3. 完成后总结
摄入完成后,告诉用户:
- 本次处理了哪些材料
- 新增/更新了哪些概念
- 发现了哪些潜在连接
- 提出了哪些新问题
- 建议下一步学什么
工作流 C:苏格拉底式学习
触发
用户说"教我 X""用苏格拉底法给我讲 X""我想深入理解 X"等。
核心理念
不要解释,要提问。 苏格拉底法的本质是:学习者通过回答精心设计的问题,
自己建构理解。AI 的角色是引导者,不是讲解者。
流程
C1. 准备阶段
- 首先确认 wiki 存在 — 如果
research-wiki/ 目录不存在:
- 告诉用户:"还没有 research wiki。苏格拉底学习最好有 wiki 来追踪进度。要不要我先帮你建一个?"
- 如果用户同意 → 执行工作流 A 初始化
- 如果用户说"先直接教我" → 继续但不持久化,学习结束后提醒用户建 wiki
- 在
wiki/concepts/ 中查找目标概念
- 如果概念页面不存在 → 先告诉用户"这个概念在 wiki 中还没有记录,
我会在对话结束后把我们的讨论编译进去。是否需要我先从 raw/ 中找相关材料?"
- 读取
wiki/learner_profile.md 了解用户背景(如果 wiki 存在)
- 读取
wiki/revision_notes.md 了解用户已有的知识漏洞(如果 wiki 存在)
C2. 三步学习法
Step 1: Global Orientation(约 5 分钟)
先告诉用户这个概念在整个知识体系中的位置:
- 它属于哪个更大的领域?
- 它和用户已有的哪些概念有关?
- 为什么学它很重要?
- 今天要学到什么程度?
询问用户是否调整学习目标。
Step 2: Local Drilling(主体,20-40 分钟)
用苏格拉底式追问深入核心。详细指南见 references/socratic-method.md。
关键规则:
- 每次只问一个问题
- 等待用户回答后再问下一个
- 根据用户的回答调整下一个问题的方向
- 发现知识漏洞时标记下来(稍后记录到 revision_notes.md)
- 用户卡住时给提示,而不是给答案
- 当用户表现出理解时,让用户用自己的话总结
Step 3: Global Reintegration(5-10 分钟)
把刚学的东西重新接回整体:
- 让用户解释这个概念如何连接到已知的其他概念
- 讨论这个概念在用户的研究问题中的位置
- 确认有没有需要澄清的遗留问题
C3. 收尾
学习会话结束后:
- 更新
wiki/progress.md — 记录本次学习的概念和掌握程度
- 更新
wiki/revision_notes.md — 记录发现的知识漏洞
- 如果产生了新的理解 → 更新相关的
wiki/concepts/ 页面
- 如果有新的开放问题 → 添加到
wiki/questions/
掌握程度自评标准(让用户自己判断):
- 🔴 刚接触:能跟着思路走,但不能独立解释
- 🟡 正在建立:能部分解释,但需要提示
- 🟢 已掌握:能不看资料完整解释,能回答追问
工作流 D:建立概念连接
触发
用户说"X 和 Y 有什么关系""帮我找找概念之间的联系""检查是否有新连接"等。
流程
- 遍历
wiki/concepts/,识别可能相关但尚未连接的概念对
- 用以下维度检查关系:
- 互补:两个概念共同解释一个更大的现象
- 矛盾:两个概念给出不同甚至相反的结论
- 因果:一个概念是另一个的前提或结果
- 类比:不同领域但结构相似
- 创建或更新
wiki/connections/ 下的连接页面(含关系类型和证据)
- 创建
wiki/questions/ 条目(必须执行!):
- 对每个新发现的连接,提出至少一个"进一步探索"的问题
- 对不确定的关系创建探索性问题
- 对连接中发现的模式提出推广性问题("这个模式在其他领域也成立吗?")
- 不要等到"关系不确定"才创建——已确定的连接同样值得深挖
工作流 E:进度回顾与复习
触发
用户说"我的学习进度怎么样""帮我复习""review my progress"等。
流程
- 读取
wiki/progress.md 和 wiki/revision_notes.md
- 呈现:
- 已掌握的概念 vs 正在学习的概念
- 需要复习的知识点(来自 revision_notes.md)
- 最近的学习活动(来自 log.md)
- 开放问题的数量和新进展
- 建议复习优先级:先复习最薄弱 + 最基础的概念
- 可以发起一次简短的苏格拉底式抽查来验证掌握程度
- 更新掌握程度
工作流 F:论文分级阅读
当用户面对大量论文需要系统化阅读时使用。
触发
用户说"帮我看看这些论文该怎么读""给这篇论文定个级""生成 Reading Mission"等。
论文等级(L0-L4)
| 等级 | 目标 | 时间 | 完成标准 |
|---|
| L0 知道存在 | 大量扫文献 | 5-15 分钟 | 知道大概做什么,是否相关 |
| L1 能定位 | 建立认知 | 30-60 分钟 | 知道问题、方法、与自己研究的关系、是否值得深读 |
| L2 能使用 | 深度理解 | 2-4 小时 | 能解释核心 claim、evidence、与其他论文关系、启发、局限 |
| L3 能复现 | 核心论文 | 半天-几天 | 不看原文讲清主线、解释公式、走 toy example、指出假设弱点 |
| L4 能扩展 | 极少数 | 几天-一周+ | 修改方法、推广理论、设计新实验、判断能否成为 foundation |
大多数论文到 L1 就够了。对你有用的论文应该读到 L2。只有核心论文需要 L3+。
概念等级
阅读论文时,对每个遇到的概念分级:
- Blocking:不懂就无法理解主线(最多标 5 个)
- Interface:只需要知道输入、输出、作用
- Local details:第一次阅读可以跳过
- Future debt:以后值得学,当前不学
Reading Mission 生成
每次深入读一篇论文前,生成以下任务单(模板在 assets/reading-mission.template.md):
# Reading Mission
**Paper**: [论文标题]
**Role**: survey / ingredient / nearest prior work / baseline / theory foundation
**Target Level**: L0 / L1 / L2 / L3 / L4
**Why I'm Reading**: 它和我的哪个研究问题有关?
**Main Question**: 读完这篇论文,我要回答什么?
**Must Understand** (最多 5 点):
1.
2.
**Can Ignore** (第一次可以跳过):
1.
**Stopping Criterion**: 达到什么程度就停止
三级阅读法
不直接开始读。按以下三步走:
- Global Orientation(5 分钟)→ 了解概念在整篇论文中的位置
- Local Drilling(20-40 分钟)→ 用苏格拉底法深挖核心概念
- Global Reintegration(5-10 分钟)→ 重新接回 paper、wiki、研究问题
详细方法论见 references/reading-levels.md。
非协商原则
这些原则来自作者三次笔记系统迭代的教训,不可违反:
-
AI 主动维护结构 — 绝不要求用户手动整理 wiki 目录、更新索引、建立链接。所有维护工作在每次摄入/学习后自动完成。
-
索引自动生成 — index.md 完全由 AI 维护。用户不需要知道有哪些文件——AI 负责检索和呈现。
-
人机讨论是摄入的必要步骤 — 每份材料在进入 wiki 之前,必须先和用户讨论核心要点,由用户决定保留什么、筛掉什么。不跳过。
-
Questions 驱动循环 — wiki/questions/ 中的开放问题不是装饰。每次对话开始时应提醒用户还有哪些未解决的问题,并建议通过摄入什么新材料来解决。
-
苏格拉底法 = 问题先行 — 教概念时不直接解释。先问用户已经知道什么,然后通过精心设计的问题引导用户自己建构理解。
-
状态持久化 — 每次会话的所有变更都记录到 log.md,所有进度更新到 progress.md。下次会话开始时 AI 应主动读取这些文件,无缝接续。
参考文件
| 文件 | 何时读取 |
|---|
references/socratic-method.md | 执行苏格拉底式学习(工作流 C)时必读 |
references/reading-levels.md | 执行论文分级阅读(工作流 F)时必读 |
assets/claude.template.md | 初始化知识库时复制到 research-wiki/claude.md |
assets/learner_profile.template.md | 初始化时复制到 wiki/learner_profile.md |
assets/system.template.md | 初始化时复制到 wiki/system.md |
assets/reading-mission.template.md | 生成 Reading Mission 时参考 |
scripts/init-wiki.sh | 初始化知识库时执行 |