Add markdown sink for filtered knowledge notes

This commit is contained in:
zhuyongxin
2026-03-25 10:25:26 +08:00
parent ff3d15b8c4
commit cecf4d3ae7
10 changed files with 656 additions and 21 deletions
+105
View File
@@ -0,0 +1,105 @@
# Markdown Sink 设计
## 1. 目标
第一版 sink 不直接绑定外部平台,而是先落一个稳定的 `Markdown sink`。
原因:
- 可审计
- 可版本化
- 易迁移
- 可直接兼容 Obsidian / 通用 Markdown 知识库
## 2. 统一输入
Markdown sink 读取统一的 `SinkInput`:
- `item`
- `article`
- `summary`
- `filter_decision`
- `metadata`
这样未来扩展 Notion sink、Webhook sink 时,可以继续复用同一套上游输入结构。
## 3. 目录结构
当前建议目录结构:
```text
knowledge-base/
inbox/
review/
archive/
```
具体落盘规则:
- `keep` -> `knowledge-base/inbox/YYYY/YYYY-MM/`
- `review` -> `knowledge-base/review/YYYY/YYYY-MM/`
- `drop` -> `knowledge-base/archive/YYYY/YYYY-MM/`
## 4. 文件命名
文件名格式:
```text
YYYY-MM-DD-title-slug.md
```
例如:
```text
2026-03-21-kimi-cursor.md
```
## 5. Markdown 内容结构
输出采用:
- YAML frontmatter
- 摘要区
- 要点区
- 过滤决策区
- 原文信息区
- 正文摘录区
frontmatter 中保留:
- `title`
- `url`
- `source_id`
- `item_id`
- `extract_id`
- `category`
- `worth_keeping`
- `decision`
- `priority`
- `topics`
- `keywords`
- `labels`
- `published_at`
- `saved_at`
- `quality_flags`
## 6. 当前落地位置
- sink 模型:
- `src/summary_mcp/models/sink.py`
- Markdown sink:
- `src/summary_mcp/sinks/markdown.py`
- 本地运行脚本:
- `scripts/run_markdown_sink.py`
## 7. 当前阶段结论
第一版知识库不先绑定 Notion、Lumina 或数据库,而是先让过滤后的内容稳定进入 Markdown 知识库。
只要这层格式稳定,后续可以继续扩展:
- Obsidian Vault
- Logseq
- Notion
- Webhook
- 自定义数据库 sink