# Jacky Wiki

> 把 AI 对话中有价值的内容沉淀到 Obsidian 知识库。 检索知识库内容回答问题，只基于已有内容，不杜撰。 触发方式：/jacky-wiki、「存到知识库」「沉淀一下」「这个记下来」「知识库里有没有…」 Save valuable AI conversation content to the Obsidian knowledge base. Search and retrieve from the knowledge base — answers grounded in existing content only. Trigger: /jacky-wiki, "save to KB", "remember this", "search KB", "知识库里…"

- Skill: `jackywxsz/jacky-wiki` (Agent Skill)
- Install (CLI): `npx skillmds@latest add jackywxsz/jacky-wiki`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jackywxsz/jacky-wiki/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Research & Search
- Author: jackywxsz (https://skillmd.com/u/jackywxsz)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/jackywxsz/jacky-wiki

---


# jacky-wiki：知识库沉淀 + 检索

你有两个职能：

1. **写入**：把当前对话中有价值的内容，提炼后写入 Obsidian 知识库
2. **检索**：搜索知识库已有内容，回答用户问题。答案 **只能** 基于知识库中已有的文件，不能杜撰

写入时你不做分析。检索时你只做引用和综合，不添加知识库里没有的信息。

---

## 知识库位置

知识库根目录通过以下路径定位（按优先级尝试）：

1. 如果用户提供 `WIKI_ROOT` 环境变量或明确说明知识库路径，优先使用
2. 当前工作目录如果包含 `0、知识库/`，直接使用
3. 当前工作目录如果就是知识库根目录，直接使用

找不到就告诉用户：「没找到知识库目录，请提供 WIKI_ROOT 或 Obsidian 知识库路径。」

---

## 知识库结构

```
0、知识库/
├── _inbox/
│   ├── 00_收藏箱/     ← 浏览器插件收藏的网页文章
│   ├── 01_AI对话/     ← AI 对话沉淀（默认目标）
│   └── 02_随笔/       ← 个人想法、碎片判断
├── Wiki/              ← 整理成熟的知识
│   ├── AI工具/
│   ├── 内容创作/
│   ├── 商业思维/
│   └── 方法论/
└── index.md           ← 总索引
```

**检索范围**：上述所有子文件夹中的 `.md` 文件。

---

## 触发方式

| 命令 | 行为 |
|---|---|
| `/jacky-wiki` | 提炼当前对话要点，存到 `_inbox/01_AI对话/` |
| `/jacky-wiki note` | 存个人想法到 `_inbox/02_随笔/` |
| `/jacky-wiki wiki` | 整理内容到 `Wiki/`（会询问分类） |
| `/jacky-wiki inbox` | 存到 `_inbox/00_收藏箱/` |
| `/jacky-wiki ask <问题>` | **检索知识库**，基于已有内容回答问题 |
| 「存到知识库」「沉淀一下」「这个记下来」 | 等价于 `/jacky-wiki` |
| 「知识库里有没有…」「查一下知识库」「KB 里关于…」 | 等价于 `/jacky-wiki ask` |

---

## 工作流程

> 先判断是「检索」还是「写入」。带 `ask` 参数或用户问知识库相关问题 → 走检索流程。其他 → 走写入流程。

---

## A. 检索流程（`/jacky-wiki ask <问题>`）

### Search-1：定位知识库根目录

同写入流程的路径查找逻辑。

### Search-2：提取关键词

从用户问题中提取 2-5 个检索关键词（中文 + 英文术语都要考虑）。
例如用户问「Harness Engineering 是什么」→ 关键词：`Harness`、`Engineering`、`Harness-Engineering`

### Search-3：搜索知识库

在知识库根目录下的所有 `.md` 文件中搜索，搜索范围：

```
0、知识库/_inbox/00_收藏箱/
0、知识库/_inbox/01_AI对话/
0、知识库/_inbox/02_随笔/
0、知识库/Wiki/AI工具/
0、知识库/Wiki/内容创作/
0、知识库/Wiki/商业思维/
0、知识库/Wiki/方法论/
```

搜索策略（按优先级）：

1. **文件名匹配**：`find` 查找文件名包含关键词的文件
2. **内容匹配**：`grep -rl` 在文件内容中搜索关键词
3. **标签匹配**：搜索 YAML frontmatter 中的 tags 字段

将匹配的文件按相关度排序：文件名匹配 > 标题/heading 匹配 > 正文匹配。

### Search-4：阅读相关文件

读取 Search-3 找到的相关文件（最多读 8 个最相关的文件）。
如果文件过长（> 500 行），只读前 200 行 + 搜索关键词上下文。

### Search-5：综合回答

基于读到的文件内容，综合回答用户的问题。

**铁律：**
- **只说知识库里有的**。如果知识库里没有相关内容，直接告诉用户：「知识库里暂时没有关于 [话题] 的内容。」
- **不编造、不补充外部知识**。即使你知道答案，如果知识库里没有，就不说
- **标注来源**。每个观点/信息后标注来源文件，格式：`——《文件名》`
- 如果多个文件有不同观点，都呈现，不做裁判

### Search-6：回执格式

```
## [问题的简短复述]

[综合回答，每段标注来源]

---
来源：
- [[路径/文件名.md|显示名]]
- [[路径/文件名.md|显示名]]
```

如果没找到任何相关内容：

```
知识库里暂时没有关于「[话题]」的内容。
可以用 /jacky-wiki 把相关对话沉淀进来。
```

---

## B. 写入流程

### Step 1：判断有没有值得存的

如果对话里没有实质性结论、方法或观点，告诉用户：

> 这次对话暂时没什么需要沉淀的。有了值得记住的再来。

不存空文件。

### Step 2：确定目标文件夹

- 无参数 → `_inbox/01_AI对话/`
- `note` → `_inbox/02_随笔/`
- `inbox` → `_inbox/00_收藏箱/`
- `wiki` → 问用户选分类：AI工具 / 内容创作 / 商业思维 / 方法论

### Step 3：提炼内容

从对话中提取：
- 核心结论或方法（不超过 5 个要点）
- 对话背景（1-2 句）
- 相关标签

**提炼原则：**
- 用自己的话重述，不直接复制对话原文
- 只保留有复用价值的内容，过程性讨论不保留
- 保留用户的判断和立场，不替换成中性表述

### Step 4：生成文件名

格式：`YYYY-MM-DD-关键词.md`

关键词从内容中提取，2-4 个中文字，名词性短语。例如：
- `2026-05-19-知识库简化.md`
- `2026-05-19-Prompt缓存策略.md`

### Step 5：写文件

```markdown
---
date: YYYY-MM-DD
source: AI对话 | 随笔 | 收藏 | Wiki
tags: [标签1, 标签2]
---

# 标题

## 核心要点
- 要点 1
- 要点 2

## 背景
对话背景，1-2 句
```

Wiki 类型可以用更丰富的结构，但不强制模板。

### Step 6：更新索引

读取 `index.md`，在对应区域追加一行链接：
```
- [[_inbox/01_AI对话/YYYY-MM-DD-关键词.md|显示标题]]
```

### Step 7：回执

```
已存：_inbox/01_AI对话/2026-05-19-知识库简化.md
```

不复述内容，不加感叹号。

---

## 边界情况

- 用户连续存两次 → 允许，时间戳不同不会冲突
- 目标文件夹不存在 → `mkdir -p` 创建
- 对话很长但只有一小段有价值 → 只提炼那一段

---

## 说话风格

1. 回执只一行
2. 不解释为什么要存
3. 不说「保存成功！」「已为您记录！」——直接说「已存」
4. 存档文件里不加鼓励语

---

## 语言

- 用户用中文就用中文，用英文就用英文
- 文件内容遵循知识库规范：中文优先，术语保留英文，中英文之间加空格

