# Lesson 24.3: Agentic 知识库——产品主理人的「外挂大脑」

## 本课目标

- 理解从「被动 RAG」到「主动知识编译」的思维转换
- 掌握如何利用 Agent 维护一个永不过时的项目 Wiki
- 学习如何在 Obsidian 中可视化项目知识图谱

## 核心内容

### 为什么你需要「Agentic 知识库」？

作为产品主理人，你是否遇到过：
- 需求文档（PRD）是半年前的，代码已经是 3.0 版了，文档彻底失效。
- 新人入职，问你：“这个登录模块的逻辑是怎么设计的？”你得去翻 Git 提交记录。
- 你有一个关于产品未来方向的灵感，却找不到半年前讨论时的背景资料。

**Agentic 知识库（LLM Wiki）** 就是要把 AI 变成一个「永不疲倦的文档官」，让你的项目知识保持实时在线。

> **深度参考**：[Agentic Knowledge Base 技术架构与三层模型](../../../../../docs/wiki/agentic-knowledge-base.md)

### 思维转换：从 RAG 到知识编译

| 模式 | RAG (传统) | Agentic Wiki (新) |
|------|-----------|------------------|
| **本质** | 临时翻书 | 主动编写百科全书 |
| **状态** | 碎片、孤立 | 互联、结构化 |
| **价值** | 解决当下提问 | 积累项目资产 |

### 知识循环：产品主理人的三板斧

1.  **灌入 (Ingest)**：当你写完一份调研笔记，让 Agent 把它「编译」进项目。它会自动更新相关的需求页、技术实现页。
2.  **提问 (Query)**：当你需要决策时，问你的 Wiki。它能给出带引用的全景分析。
3.  **巡检 (Inspect)**：让 Agent 每天跑一次巡检，发现你文档里的逻辑漏洞。

### CLAUDE.md 就是你的 Wiki 首页

如果你从 Lesson 5 开始就在用 CLAUDE.md，你其实**已经在维护一个 LLM Wiki 了**——只是你可能没用这个名字叫它。

回看 `.claude/` 目录，它天然就是一个 Wiki 结构：

| LLM Wiki 概念 | 对应的文件 | 加载方式 |
|---------------|-----------|---------|
| **首页** | CLAUDE.md / AGENTS.md | 每次必读 |
| **专题文章** | skills/*.md | 用户触发时按需加载 |
| **行为规范** | rules/*.md | 全局或路径触发 |
| **工作笔记** | memory/*.md | 前 200 行自动加载 |
| **专家角色** | agents/*.md | 独立上下文启动 |

这个视角的价值是**统一心智模型**：当你写 CLAUDE.md 时，你不是在写一个"配置文件"，而是在写 Wiki 的首页——它应该精简、有导航性，把读者（Claude）引导到正确的专题页面去。

Wiki 有两个运作层面：

- **系统层面**：Wiki 把需求文档、产品文档、技术方案按结构存放，文档之间层层交叉引用形成知识图谱。再结合 QMD 这样的本地语义索引，AI 能在项目知识中主动发现关联——即使你没有明确指出。
- **微操层面**：你往往更清楚"这个需求和以前哪个决策有关"。这时候直接用 `@docs/xxx.md` 指向相关文档，让 AI 基于完整上下文做判断。Wiki 的价值在微操时体现为：你要指的文档，恰好已经被 Wiki 结构化地组织好了。

QMD 在这里的角色是**补全系统层面的搜索能力**。Wiki 的交叉引用是人工建立的强关联；QMD 的语义搜索能发现 Wiki 结构中隐含的弱关联——比如两份不同文档讨论了同一个概念但没有互相引用。

> 回到 [Lesson 5：CLAUDE.md](../stage-1/lesson-5.md) 复习首页的六段式模板和 Wiki 两个层面；回到 [Lesson 5.1：上下文治理分层](../stage-1/lesson-5.1.md) 复习如何把内容分配到 Wiki 的不同页面。

### 工具选型：Obsidian 是你的 IDE

在 cc4pm 的世界里，**Obsidian 不只是笔记软件，它是项目管理的仪表盘**。利用它的图谱视图，你可以直观地看到：
- 需求节点是如何连接到功能模块的。
- 哪部分知识还没有被 AI 充分理解（孤立节点）。

### QMD——本地优先的文档搜索引擎

上面介绍了 Ingest（灌入）和 Inspect（巡检），但**最高频的操作其实是 Query（查询）**：你有几百篇 Markdown 笔记、会议记录、技术文档，想找某个内容时只能用文件名硬搜。

[QMD（Query Markup Documents）](https://github.com/tobi/qmd) 由 Shopify CEO Tobias Lutke 开发，是一个**完全本地运行**的 Markdown 搜索引擎。它的核心价值：

```
传统搜索 (grep/Spotlight):
  你搜 “项目时间线” → 文档里写的是 “Q4 规划” → 搜不到

QMD 混合搜索:
  BM25 全文检索（精确匹配）+ 向量语义搜索（理解意图）+ LLM 重排序（精选结果）
  → 即使用词不同，也能找到相关文档
  → 全部在你的设备上运行，文档不上传到任何云端
```

**为什么产品主理人应该关注**：你的会议记录、竞品分析、内部讨论不适合上传到第三方 RAG 服务。QMD 让你在保证隐私的前提下，获得语义级别的搜索能力。

#### 快速上手

```bash
# 安装
npm install -g @tobilu/qmd

# 索引你的笔记目录
qmd collection add ~/notes --name notes
qmd collection add ~/Documents/meetings --name meetings

# 生成向量索引（首次需下载约 2GB 模型，之后缓存）
qmd embed

# 搜索——三种模式
qmd search “认证流程”                         # 关键词搜索（快）
qmd vsearch “用户怎么登录”                     # 语义搜索（理解意图）
qmd query “季度规划会议说了什么” -c meetings    # 混合搜索（推荐）
```

#### 集成到 Claude Code（MCP）

QMD 支持 MCP 协议，配好后 Claude 能直接搜索你的本地文档：

```json
{
  “mcpServers”: {
    “qmd”: {
      “command”: “qmd”,
      “args”: [“mcp”]
    }
  }
}
```

配置完成后，你可以直接问 Claude：”在我的笔记里搜一下关于用户增长的讨论”——Claude 会通过 QMD MCP 在本地文档中进行语义搜索，然后基于搜索结果回答你。

#### QMD vs 其他搜索方案

| 特性 | QMD | grep/Spotlight | 云端 RAG |
|------|-----|---------------|---------|
| 语义理解 | 有 | 无 | 有 |
| 隐私保护 | 本地运行 | 本地运行 | 需上传 |
| API 费用 | 无 | 无 | 有 |
| MCP 集成 | 支持 | 不支持 | 部分 |

> **适用场景**：个人知识库、团队内部文档、会议记录。如果你有大量 Markdown 笔记且在意隐私，QMD 是目前最好的本地搜索选择。注意它目前只支持 Markdown 格式，其他格式需先转换。

#### 与 Agentic 知识库的关系

```
Agentic 知识库的三板斧：
  灌入 (Ingest)  → Agent 把新知识编译进 Wiki    ← LLM Wiki 方法
  提问 (Query)   → 搜索已有知识获取答案          ← QMD 在这里
  巡检 (Inspect) → Agent 定期检查知识的一致性     ← LLM Wiki 方法
```

QMD 和 LLM Wiki 不是竞争关系——它们覆盖知识管理的不同阶段。LLM Wiki 负责「写」（让 AI 维护结构化知识），QMD 负责「搜」（在海量文档中找到你需要的内容）。两者结合，就是一个完整的本地优先知识系统。

> **拓展玩法**：本地索引的语料从哪里来？除了自己写的笔记，还可以接入**外部高质量信息源**——比如把"你在微信读书里的所有划线和想法"导出成 Markdown 喂给 QMD。详见 [Lesson 24.7：微信读书 Skill](./lesson-1.7.md)。

---

## 实操练习

### 练习 1：开启你的第一个 LLM Wiki

1.  在项目根目录下创建一个 `research/` 文件夹。
2.  告诉 Claude Code：”请根据 `docs/wiki/agentic-knowledge-base.md` 的架构，为我初始化一个项目研究知识库，并对我们刚才讨论的 Karpathy 观点进行一次 Ingest。”
3.  在 Obsidian 中打开 `research/` 文件夹，查看 AI 生成的第一个实体页面。

### 练习 2：用 QMD 索引你的文档

1.  安装 QMD：`npm install -g @tobilu/qmd`
2.  索引一个 Markdown 目录：`qmd collection add ~/your-notes --name notes && qmd embed`
3.  测试三种搜索：分别用 `qmd search`、`qmd vsearch`、`qmd query` 搜索同一个主题，对比结果差异。
4.  （可选）配置 QMD 的 MCP 集成，让 Claude Code 直接搜索你的本地文档。

---


## 下一步

请调用 `AskUserQuestion` 展示以下选项，让学习者点击选择；从每条中提炼 1-5 个词作为 label，其余写入 description，不要要求输入数字：

- 返回 Lesson 24：高级特性
- 前往 Lesson 25：完整项目实战
- 返回主菜单

---
*阶段 5 | Lesson 24.3/26 | 上一课: Lesson 24.2 - 插件与 SDK | 下一课: Lesson 24.4 - AI 绘图 (Draw.io)*
