- name
- jacky-wiki
- description
- 把 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", "知识库里…"
# 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. 存档文件里不加鼓励语
---
## 语言
- 用户用中文就用中文,用英文就用英文
- 文件内容遵循知识库规范:中文优先,术语保留英文,中英文之间加空格
Ver no GitHub