
🎯 博主简介
CSDN 「新星创作者」 人工智能技术领域博主,码龄5年 ,累计发布
180+篇原创文章,博客总访问量24万+浏览!
🚀 持续更新AI前沿实战知识,专注于 AI 技术实战,多个专栏详细解析,包括:
- 🔥 生产级 RAG 系统--- 架构设计、多路召回、混合检索、生产优化
- 🤖 多 Agent 协作系统 --- Swarm 架构、任务编排、状态管理
- 🔌 MCP 协议 --- 协议规范与深度实现
- ⚡ OpenClaw超详细教程 --- AI 助手框架进阶应用
- ✨ Agent记忆系统 --- 深度解析Agent记忆系统
- ✨ Hermes Agent + Obsidian 打造第二大脑:14篇文章讲透第二大脑搭建!
同时也涉猎计算机视觉、Java 后端与 Spring 生态、Transformer 等深度学习技术。坚持从架构到代码、从原理到部署的实战风格。每篇文章配套代码与扩展资料,欢迎交流探讨。📱:
安逸Ai--- 每天一点AI:资料、笔记、工具、趋势,一起进步。
📑 目录
- [1. 为什么需要分层记忆](#1. 为什么需要分层记忆)
- [1.1 传统笔记的问题](#1.1 传统笔记的问题)
- [1.2 分层记忆的解决方案](#1.2 分层记忆的解决方案)
- [1.3 人类记忆的启示](#1.3 人类记忆的启示)
- [2. 四层记忆架构详解](#2. 四层记忆架构详解)
- [2.1 L0 工作记忆](#2.1 L0 工作记忆)
- [2.2 L1 短期记忆](#2.2 L1 短期记忆)
- [2.3 L2 长期记忆](#2.3 L2 长期记忆)
- [2.4 L3 知识图谱](#2.4 L3 知识图谱)
- [3. 分层流转机制](#3. 分层流转机制)
- [3.1 流转规则](#3.1 流转规则)
- [3.2 升级条件](#3.2 升级条件)
- [3.3 降级规则](#3.3 降级规则)
- [3.4 流转流程图](#3.4 流转流程图)
- [4. Obsidian 存储映射](#4. Obsidian 存储映射)
- [4.1 存储架构图](#4.1 存储架构图)
- [4.2 frontmatter 标记](#4.2 frontmatter 标记)
- [5. 标签体系与记忆层](#5. 标签体系与记忆层)
- [5.1 对应关系](#5.1 对应关系)
- [5.2 标签规范](#5.2 标签规范)
- [6. 检索策略](#6. 检索策略)
- [6.1 多维度检索](#6.1 多维度检索)
- [6.2 语义搜索](#6.2 语义搜索)
- [6.3 检索优先级](#6.3 检索优先级)
- [7. 知识图谱的价值](#7. 知识图谱的价值)
- [7.1 什么是知识图谱](#7.1 什么是知识图谱)
- [7.2 图谱自动生成](#7.2 图谱自动生成)
- [7.3 图谱的三个价值](#7.3 图谱的三个价值)
- [8. 每日整理流程](#8. 每日整理流程)
- [8.1 早晨流程](#8.1 早晨流程)
- [8.2 傍晚流程](#8.2 傍晚流程)
- [8.3 周末回顾](#8.3 周末回顾)
- [9. 实现代码](#9. 实现代码)
- [9.1 记忆层判断逻辑](#9.1 记忆层判断逻辑)
- [9.2 自动升级脚本](#9.2 自动升级脚本)
- [10. 常见问题 FAQ](#10. 常见问题 FAQ)
1. 为什么需要分层记忆
1.1 传统笔记的问题
我们通常的笔记方式:
笔记本
└── 堆满了各种笔记
├── 3年前的会议记录
├── 2个月前的读书笔记
└── 昨天随手记的想法
问题分析:
┌────────────────────────────────────────────────────────────────────────────┐
│ 传统笔记的四大问题 │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ 问题一:所有笔记混在一起,没有层次 │
│ └── 重要的和不重要的混在一起,难以区分 │
│ │
│ 问题二:无法区分重要程度 │
│ └── 昨天随手记的想法 和 年度总结 一样重要?不可能! │
│ │
│ 问题三:搜索效率低 │
│ └── 10,000 篇笔记,全文搜索慢,精准度低 │
│ │
│ 问题四:知识无法积累 │
│ └── 每次从头开始,历史知识无法复用 │
│ │
└────────────────────────────────────────────────────────────────────────────┘
1.2 分层记忆的解决方案
借鉴计算机科学的分层缓存思想,设计四层记忆架构:
┌────────────────────────────────────────────────────────────────────────────┐
│ 四层记忆架构 │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ L0 工作记忆 ────▶ ~7 项 ────▶ 会话结束清除 │
│ │ │
│ ▼ │
│ L1 短期记忆 ────▶ ~100 条 ────▶ 7 天自动过期 │
│ │ │
│ ▼ │
│ L2 长期记忆 ────▶ 无限 ────▶ 永久保留 │
│ │ │
│ ▼ │
│ L3 知识图谱 ────▶ 无限 ────▶ 自动演化 │
│ │
└────────────────────────────────────────────────────────────────────────────┘
1.3 人类记忆的启示
┌────────────────────────────────────────────────────────────────────────────┐
│ 人类记忆的三个层次 │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ 感官记忆 ────▶ 几秒钟 ────▶ 视觉、听觉等原始信息 │
│ │ │
│ ▼ │
│ 短期记忆 ────▶ 几分钟 ────▶ 当前注意力集中的信息 │
│ │ │
│ ▼ │
│ 长期记忆 ────▶ 几天到终身 ────▶ 重要、需要保留的信息 │
│ │
│ 关键洞察: │
│ • 不是所有信息都需要进入长期记忆 │
│ • 短期记忆中的高频访问会自动进入长期记忆 │
│ • 大脑会自动"遗忘"不重要的信息 │
│ │
└────────────────────────────────────────────────────────────────────────────┘
2. 四层记忆架构详解
2.1 L0 工作记忆
定义:当前正在处理的任务和上下文。
容量:~7 个项目(人类短期记忆的经典容量)
生命周期:会话结束自动清除
内容:
- 当前会话的问题
- 正在处理的任务
- 临时计算结果
- 最近一次对话的上下文
为什么需要:承载当前任务的上下文,不用每次都从零开始。
配置示例:
yaml
memory:
L0:
type: working
capacity: 7
ttl: session # 会话结束清除
# 保留最近 N 次对话的摘要
keep_summaries: 3
存储位置:
会话文件:session-2026-04-26-001.md
内容示例:
markdown
---
session_id: 2026-04-26-001
started_at: 2026-04-26T09:00:00
layer: L0
type: working_memory
---
# 会话 2026-04-26-001
## 当前任务
正在帮助用户整理 Obsidian 插件配置文档
## 上下文摘要
- 用户在构建 Hermes Agent + Obsidian 第二大脑
- 需要完成插件配置的详细指南
- 涉及 Templater、Dataview、QuickAdd
## 关键引用
- [[04-hermes-agent-obsidian-basics]]
- [[05-hermes-agent-plugins]]
## 临时变量
- current_article: "05-hermes-agent-plugins"
- word_count_target: 8000
- progress: 60%
2.2 L1 短期记忆
定义:最近 7 天内产生的信息。
容量:~100 条
生命周期:7 天后自动过期
内容:
- 每日日志
- 临时收集的素材
- 未完成的任务
- 草稿笔记
为什么需要:
- 最近的信息最可能再次用到
- 给"正式整理"留出缓冲时间
- 避免积累大量无用信息
配置示例:
yaml
memory:
L1:
type: short_term
capacity: 100
ttl: 7d
auto_promote: true # 自动升级到 L2
promote_conditions:
- access_count >= 3
- importance >= medium
- days_since_create >= 14
Obsidian 存储:
位置:1_日志/每日/
文件:2026-04-26.md
标签:#日志/每日
内容示例:
markdown
---
title: 2026-04-26
date: 2026-04-26
day: Sunday
tags: [日志, 每日]
layer: L1
created: 2026-04-26T08:30:00
expires_at: 2026-05-03T08:30:00
status: active
mood: 😊
weather: ☀️
---
# 2026-04-26 Sunday
## 🎯 今日重点
1. 完成 Hermes Agent 系列文章 04-06
## 📝 今日记录
### 上午
- 09:00 开始写文章
- 10:30 完成了 04 文章的扩充
### 下午
- 14:00 继续写 05 文章
- 16:00 完成 05 文章
## 💡 灵感
- 可以用状态机来管理记忆层的流转
## 📌 待办
- [ ] 完成 06 文章
- [ ] 更新系列目录
2.3 L2 长期记忆
定义:被显式保存的重要信息。
容量:无限
生命周期:永久保留(除非手动删除)
内容:
- 项目文档
- 读书笔记
- 经验总结
- 方法论沉淀
为什么需要:
- 知识需要长期积累
- 重要内容不会被遗忘
- 形成个人知识资产
配置示例:
yaml
memory:
L2:
type: long_term
capacity: unlimited
ttl: permanent
auto_archive: true
archive_conditions:
- days_since_access >= 365
- access_count == 0
Obsidian 存储:
位置:2_项目/、3_知识/
标签:#项目/xxx、#知识/方法论
内容示例:
markdown
---
title: Obsidian 双向链接完全指南
date: 2026-04-15
created: 2026-04-15
modified: 2026-04-26
tags: [知识, Obsidian, 方法论]
type: note
layer: L2
status: active
importance: high
access_count: 42
promotion_date: 2026-04-22
project: Hermes-Agent-Series
---
# Obsidian 双向链接完全指南
## 什么是双向链接
双向链接是指两篇笔记可以相互引用...
## 链接语法
```markdown
[[笔记名]] # 基础链接
[[笔记名|显示文字]] # 自定义显示文字
[[笔记#章节]] # 链接到特定章节
使用场景
-
写作时引用相关概念
-
复习时发现知识关联
-
项目管理中关联文档
2.4 L3 知识图谱
定义:概念之间的关联网络。
容量:无限
生命周期:持续演化
内容:
- 主题之间的关联
- 跨领域洞察
- 知识结构
为什么需要:
- 知识不是孤立的点,而是关联的网络
- AI 自动发现关联,人工难以做到
- 关联本身就是知识
存储形式:
┌────────────────────────────────────────────────────────────────────────────┐
│ 知识图谱存储 │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ 节点(Nodes): │
│ ├── id: "Obsidian" │
│ ├── type: "概念" │
│ └── properties: {描述、标签、创建时间} │
│ │
│ 边(Edges): │
│ ├── source: "Obsidian" │
│ ├── target: "双向链接" │
│ └── type: "包含" │
│ │
└────────────────────────────────────────────────────────────────────────────┘
**Obsidian 实现**:
```markdown
---
title: 知识图谱 - Obsidian 概念网络
date: 2026-04-01
tags: [系统, 图谱, L3]
type: graph
layer: L3
---
# 知识图谱:Obsidian 概念网络
## 核心概念
```dataview
LIST WHERE contains(tags, "概念") AND layer = "L2"
关联关系
| 源概念 | 关系 | 目标概念 | 强度 |
|---|---|---|---|
| Obsidian | 包含 | 双向链接 | 强 |
| 双向链接 | 包含 | 反向链接 | 强 |
| 双向链接 | 包含 | 块引用 | 中 |
| Obsidian | 支持 | Markdown | 强 |
| Markdown | 包含 | YAML | 中 |
---
## 3. 分层流转机制
### 3.1 流转规则
┌────────────────────────────────────────────────────────────────────────────┐
│ 记忆流转总览 │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ 新信息 ──▶ L0(工作记忆) │
│ │ │
│ ▼ 选择性保留 │
│ L1(短期记忆,7天) │
│ │ │
│ ▼ 定期整理 │
│ L2(长期记忆) │
│ │ │
│ ▼ 关联分析 │
│ L3(知识图谱) │
│ │
└────────────────────────────────────────────────────────────────────────────┘
### 3.2 升级条件
**L0 → L1**:
```python
def should_upgrade_L0_to_L1(item: MemoryItem) -> bool:
"""
判断工作记忆是否应该升级到短期记忆
"""
conditions = [
item.session_ended, # 会话已结束
item.value_score > 0.5, # 内容有价值
item.content_length > 50, # 内容达到一定长度
]
# 满足基本条件 + 有价值则升级
return item.session_ended and item.value_score > 0.5
L1 → L2:
python
def should_upgrade_L1_to_L2(item: MemoryItem) -> bool:
"""
判断短期记忆是否应该升级到长期记忆
"""
conditions = {
"访问频率": item.access_count >= 3,
"创建时间": item.days_since_create >= 14,
"重要性": item.importance in ['medium', 'high'],
"关联数量": item.link_count >= 2,
}
# 满足任意 2 个条件即可升级
score = sum(conditions.values())
return score >= 2
# 使用示例
item = MemoryItem(
title="Obsidian 双向链接",
access_count=5,
days_since_create=20,
importance="high",
link_count=3
)
result = should_upgrade_L1_to_L2(item)
print(f"应该升级到 L2: {result}") # True
L2 → L3:
python
def should_upgrade_L2_to_L3(item: MemoryItem, graph: KnowledgeGraph) -> bool:
"""
判断长期记忆是否应该进入知识图谱
"""
# 发现关联则升级
related = graph.find_related(item)
conditions = [
len(related) >= 2, # 有多个关联
item.is_concept, # 是概念性内容
item.is_summary, # 是总结性内容
]
return any(conditions)
3.3 降级规则
L1 → 清除:
python
def should_delete_L1(item: MemoryItem) -> bool:
"""
判断短期记忆是否应该被清除
"""
return (
item.days_since_access > 7 and # 超过7天未访问
item.value_score < 0.3 and # 内容价值低
item.access_count < 2 # 访问次数少
)
L2 → 归档:
python
def should_archive_L2(item: MemoryItem) -> bool:
"""
判断长期记忆是否应该归档
"""
return (
item.days_since_access > 365 and # 超过1年未访问
item.access_count == 0 # 从未被访问
)
3.4 流转流程图
┌────────────────────────────────────────────────────────────────────────────┐
│ 记忆流转流程图 │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ 新笔记创建 │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ 属于哪个层? │ │
│ └────────┬────────┘ │
│ │ │
│ ┌──────────────────┼──────────────────┐ │
│ ▼ ▼ ▼ │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ 临时 │ │ 每日 │ │ 正式 │ │
│ │ 内容 │ │ 日志 │ │ 文档 │ │
│ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ L0 │ │ L1 │ │ L2 │ │
│ │ 工作记忆 │ │ 短期记忆 │ │ 长期记忆 │ │
│ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘ │
│ │ │ │ │
│ │ ┌─────┴─────┐ │ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ 会话结束清除 访问≥3次 7天后清除 ▼ │
│ │ │ ┌───────────┐ │
│ ▼ │ │ L3 │ │
│ 升级到L2 │ │ 知识图谱 │ │
│ │ │ └───────────┘ │
│ ▼ │ │ │
│ ┌───────────┐ │ │ │
│ │ L2 │ │ │ │
│ └───────────┘ │ │ │
│ │ │ │
│ ▼ ▼ │
│ 归档/删除 自动关联分析 │
│ │
└────────────────────────────────────────────────────────────────────────────┘
4. Obsidian 存储映射
4.1 存储架构图
┌────────────────────────────────────────────────────────────────────────────┐
│ 记忆层与 Obsidian 存储映射 │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ L0 工作记忆 │
│ ├── 存储位置: 内存 / Redis │
│ └── 内容: 当前会话文件 session-*.md │
│ │
│ L1 短期记忆 │
│ ├── 存储位置: Obsidian 1_日志/每日/ │
│ └── 内容: 最近 7 天的日志 │
│ │
│ L2 长期记忆 │
│ ├── 存储位置: Obsidian 2_项目/、3_知识/ │
│ └── 内容: 重要笔记、方法论、项目文档 │
│ │
│ L3 知识图谱 │
│ ├── 存储位置: Obsidian .graph/ + PostgreSQL │
│ └── 内容: 节点 + 边关系 │
│ │
└────────────────────────────────────────────────────────────────────────────┘
文件结构示例:
Obsidian Vault/
├── 📁 0_临时/ # L0 工作记忆
│ └── session-2026-04-26-001.md
├── 📁 1_日志/ # L1 短期记忆
│ ├── 每日/
│ │ ├── 2026-04-20.md # 已过期(7天)
│ │ ├── 2026-04-23.md
│ │ ├── 2026-04-25.md
│ │ └── 2026-04-26.md # 今日
│ └── 周报/
│ └── 2026-W17.md
├── 📁 2_项目/ # L2 长期记忆
│ ├── Hermes-Agent/
│ │ ├── overview.md
│ │ └── notes/
│ └── 其他项目/
├── 📁 3_知识/ # L2 长期记忆
│ ├── 方法论/
│ │ └── 知识管理.md
│ ├── 概念/
│ │ └── 双向链接.md
│ └── 教程/
│ └── Obsidian入门.md
└── 📁 .graph/ # L3 知识图谱
├── nodes.json
└── edges.json
4.2 frontmatter 标记
yaml
---
# 层级标记
memory_layer: L2 # L0/L1/L2/L3
# 状态
status: active # active / archived / on-hold
# 重要程度
importance: high # low / medium / high
# 访问统计
last_accessed: 2026-04-26
access_count: 42 # 访问次数
promotion_count: 3 # 被提升次数
# 过期时间(L1 专用)
expires_at: 2026-05-03T08:30:00
# 关联图谱节点
graph_node_id: obsidian-001
# 别名(用于搜索)
aliases: ["Obsidian", "黑曜石"]
---
5. 标签体系与记忆层
5.1 对应关系
| 记忆层 | 标签前缀 | 示例 | 存储位置 |
|---|---|---|---|
| L0 | #临时/ |
#临时/会话20260426 |
0_临时/ |
| L1 | #日志/ |
#日志/每日、#日志/周报 |
1_日志/ |
| L2 | #项目/、#知识/ |
#项目/Hermes、#知识/方法论 |
2_项目/、3_知识/ |
| L3 | #洞察/ |
#洞察/跨领域、#洞察/关联 |
.graph/ |
5.2 标签规范
yaml
# ============================================
# 标签规范 - 按层级分类
# ============================================
# L0 - 临时
临时/
会话/ # 会话记录
草稿/ # 未完成的草稿
# L1 - 日志
日志/
每日/ # 每日日志
周报/ # 周报
月报/ # 月报
# L2 - 知识沉淀
知识/
方法论/ # 方法论
概念/ # 概念定义
教程/ # 教程
笔记/ # 学习笔记
项目/
{项目名}/ # 具体项目
# L3 - 洞察
洞察/
跨领域/ # 跨领域关联
规律/ # 发现规律
总结/ # 总结性洞察
# ============================================
# 状态标签
# ============================================
状态/
进行中/
已完结/
搁置/
# ============================================
# 重要程度标签
# ============================================
重要/
紧急/ # 需要立即处理
高/ # 重要度高
中/ # 重要度中
低/ # 重要度低
6. 检索策略
6.1 多维度检索
| 维度 | 示例 | 说明 |
|---|---|---|
| 标签 | #项目/Hermes |
按标签筛选 |
| 时间 | created:2026-04 |
按时间筛选 |
| 内容 | 关键词 |
按内容搜索 |
| 链接 | outgoing:[[笔记]] |
按链接筛选 |
| 层级 | memory_layer:L2 |
按记忆层筛选 |
| 重要性 | importance:high |
按重要程度筛选 |
Dataview 多维度查询:
markdown
```dataview
TABLE
title as 标题,
tags as 标签,
importance as 重要程度,
access_count as 访问次数
FROM ""
WHERE memory_layer = "L2"
AND status = "active"
AND importance != "low"
SORT access_count DESC
LIMIT 20
```
6.2 语义搜索
bash
# 普通搜索
hermes search "项目管理"
# 语义搜索
hermes search --semantic "查找关于团队协作最佳实践的内容"
# 语义搜索会理解意图,不只是匹配关键词
语义搜索原理:
┌────────────────────────────────────────────────────────────────────────────┐
│ 语义搜索原理 │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ 用户查询 │
│ │ │
│ ▼ │
│ Embedding 模型将查询转换为向量 │
│ │ │
│ ▼ │
│ 向量数据库检索相似向量 │
│ │ │
│ ▼ │
│ 返回语义相似的笔记 │
│ │
└────────────────────────────────────────────────────────────────────────────┘
6.3 检索优先级
┌────────────────────────────────────────────────────────────────────────────┐
│ 检索优先级 │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ 1. 精确匹配 ────▶ 标题/标签完全一致 │
│ │ │
│ ▼ │
│ 2. 链接关联 ────▶ 被当前笔记引用 │
│ │ │
│ ▼ │
│ 3. 同层检索 ────▶ 同记忆层、同文件夹 │
│ │ │
│ ▼ │
│ 4. 语义相似 ────▶ AI 理解意图 │
│ │ │
│ ▼ │
│ 5. 全文搜索 ────▶ 关键词匹配 │
│ │
└────────────────────────────────────────────────────────────────────────────┘
7. 知识图谱的价值
7.1 什么是知识图谱
传统笔记:
笔记A(独立存在)
笔记B(独立存在)
笔记C(独立存在)
知识图谱:
┌────────────────────────────────────────────────────────────────────────────┐
│ 知识图谱结构 │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ [核心概念] │
│ ↕ │
│ ┌─────┴─────┐ │
│ ↓ ↓ │
│ [笔记A] [笔记B] │
│ ↓ ↓ │
│ └───────┬───┘ │
│ ↓ │
│ [笔记C] │
│ │
│ 边(Edges)表示关系: │
│ - 笔记A → 笔记B:包含关系 │
│ - 笔记A → 笔记C:前置条件 │
│ - 笔记B + 笔记C → 笔记A:组合关系 │
│ │
└────────────────────────────────────────────────────────────────────────────┘
7.2 图谱自动生成
Hermes Agent 自动分析:
| 分析类型 | 说明 | 示例 |
|---|---|---|
| 双向链接关系 | [[链接]] 构成的链接网络 |
笔记A 引用笔记B |
| 标签共现关系 | 同一笔记中的标签组合 | #Python + #机器学习 经常一起出现 |
| 时间序列关系 | 按时间顺序创建的笔记 | 同一项目的系列文档 |
| 内容相似关系 | 语义相似的内容 | 同一概念的多次解释 |
7.3 图谱的三个价值
1. 发现隐藏关联
┌────────────────────────────────────────────────────────────────────────────┐
│ 隐藏关联发现 │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ 用户困惑: │
│ "这两篇论文看似无关,为什么我都引用了?" │
│ │
│ 图谱揭示: │
│ │
│ [论文A] ←──────── [论文C - 基础工作] │
│ │ │ │
│ └──────────► [论文B] ◄─┘ │
│ │
│ 真相:论文A和论文B都引用了同一篇基础工作 │
│ 它们比你想象的更相关! │
│ │
└────────────────────────────────────────────────────────────────────────────┘
2. 识别知识空白
python
def identify_knowledge_gaps(project_notes: list) -> list:
"""
识别知识图谱中的空白点
"""
# 获取核心概念
core_concepts = extract_core_concepts(project_notes)
# 获取已有笔记
existing_topics = [note.topic for note in project_notes]
# 找出缺失的概念
gaps = []
for concept in core_concepts:
if concept not in existing_topics:
gaps.append({
"concept": concept,
"reason": "核心概念但无专门笔记"
})
return gaps
3. 追踪知识演进
┌────────────────────────────────────────────────────────────────────────────┐
│ 知识演进追踪 │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ 时间线: │
│ │
│ 2026-03-01 ───▶ 创建 [[Obsidian入门]] │
│ │ │
│ ▼ │
│ 2026-03-15 ───▶ 创建 [[双向链接]] │
│ │ (发现关联:基于入门知识) │
│ ▼ │
│ 2026-04-01 ───▶ 创建 [[知识管理方法论]] │
│ │ (发现关联:综合了入门和链接) │
│ ▼ │
│ 2026-04-20 ───▶ 更新 [[Obsidian入门]] │
│ (认知升级:理解更深入了) │
│ │
│ 图谱价值: │
│ • 清晰看到"我是如何理解这个领域的" │
│ • 发现认知升级的节点 │
│ • 理解知识之间的依赖关系 │
│ │
└────────────────────────────────────────────────────────────────────────────┘
8. 每日整理流程
8.1 早晨流程
┌────────────────────────────────────────────────────────────────────────────┐
│ 早晨流程(5分钟) │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ 1. 查看 L1 今日日志(2分钟) │
│ └── 打开今日日志,回顾昨日记录 │
│ │
│ 2. 处理 inbox 中的新素材(2分钟) │
│ ├── 阅读昨天收集的内容 │
│ ├── 判断是否值得保留 │
│ └── 决定放到哪里(立即处理 or 稍后整理) │
│ │
│ 3. 标记重要内容(1分钟) │
│ └── 添加 #重要/紧急 或 #进行中 标签 │
│ │
└────────────────────────────────────────────────────────────────────────────┘
8.2 傍晚流程
┌────────────────────────────────────────────────────────────────────────────┐
│ 傍晚流程(15分钟) │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ 1. 处理 inbox(7分钟) │
│ ├── 逐条查看收集的内容 │
│ ├── 分类到对应文件夹 │
│ ├── 建立必要的链接 │
│ └── 删除不需要的内容 │
│ │
│ 2. 更新今日日志(5分钟) │
│ ├── 记录完成的事项 │
│ ├── 记录未完成的原因 │
│ ├── 计划明日重点 │
│ └── 标记需要升级到 L2 的内容 │
│ │
│ 3. 快速复盘(3分钟) │
│ └── 今天学到了什么? │
│ │
└────────────────────────────────────────────────────────────────────────────┘
8.3 周末回顾
┌────────────────────────────────────────────────────────────────────────────┐
│ 周末回顾(1小时) │
├────────────────────────────────────────────────────────────────────────────┤
│ │
│ 1. 查看本周日志(15分钟) │
│ └── 回顾每天的收获和困惑 │
│ │
│ 2. 发现关联(20分钟) │
│ ├── 打开本周创建的笔记 │
│ ├── 思考与其他笔记的关联 │
│ └── 建立双向链接 │
│ │
│ 3. 清理孤立笔记(10分钟) │
│ └── 用 Dataview 找出无链接笔记,建立关联 │
│ │
│ 4. 归档过期内容(15分钟) │
│ ├── 清理超过 7 天的 L1 内容 │
│ ├── 把重要的升级到 L2 │
│ └── 删除不重要的 │
│ │
└────────────────────────────────────────────────────────────────────────────┘
9. 实现代码
9.1 记忆层判断逻辑
python
from enum import Enum
from dataclasses import dataclass
from datetime import datetime, timedelta
class MemoryLayer(Enum):
L0 = "L0" # 工作记忆
L1 = "L1" # 短期记忆
L2 = "L2" # 长期记忆
L3 = "L3" # 知识图谱
@dataclass
class MemoryItem:
title: str
content: str
layer: MemoryLayer
created_at: datetime
last_accessed: datetime
access_count: int
importance: str # low, medium, high
tags: list
links: list
@property
def days_since_create(self) -> int:
return (datetime.now() - self.created_at).days
@property
def days_since_access(self) -> int:
return (datetime.now() - self.last_accessed).days
@property
def value_score(self) -> float:
"""计算内容价值分数"""
score = 0.0
# 长度贡献
score += min(len(self.content) / 1000, 1.0) * 0.3
# 链接贡献
score += min(len(self.links) / 5, 1.0) * 0.3
# 重要性贡献
importance_map = {"low": 0.1, "medium": 0.5, "high": 1.0}
score += importance_map.get(self.importance, 0) * 0.2
# 标签贡献
score += min(len(self.tags) / 5, 1.0) * 0.2
return min(score, 1.0)
def determine_memory_layer(item: MemoryItem) -> MemoryLayer:
"""
根据内容特征判断应该属于哪个记忆层
"""
# L0: 临时会话内容
if item.layer == MemoryLayer.L0:
if item.session_ended:
# 会话结束,尝试升级
if item.value_score > 0.5:
return MemoryLayer.L1
else:
return MemoryLayer.L0 # 清除
# L1: 短期记忆判断
if item.layer == MemoryLayer.L1:
# 检查是否应该升级到 L2
conditions = [
item.access_count >= 3,
item.days_since_create >= 14,
item.importance in ["medium", "high"],
len(item.links) >= 2,
]
if sum(conditions) >= 2:
return MemoryLayer.L2
# 检查是否应该清除
if item.days_since_access > 7 and item.value_score < 0.3:
return MemoryLayer.L0 # 标记为待清除
return MemoryLayer.L1
# L2: 长期记忆判断
if item.layer == MemoryLayer.L2:
# 检查是否应该进入知识图谱
if len(item.links) >= 3 or item.is_concept:
return MemoryLayer.L3
return MemoryLayer.L2
# 默认保持原层
return item.layer
9.2 自动升级脚本
python
import os
from datetime import datetime, timedelta
from pathlib import Path
class MemoryAutoPromoter:
"""自动升级脚本"""
def __init__(self, vault_path: str):
self.vault_path = Path(vault_path)
self.promoted_count = 0
self.deleted_count = 0
def scan_and_promote(self):
"""扫描并升级笔记"""
# 扫描 L1 文件夹
l1_folder = self.vault_path / "1_日志"
for note_file in l1_folder.rglob("*.md"):
item = self.parse_note(note_file)
if self.should_promote_to_L2(item):
self.promote_to_L2(note_file, item)
elif self.should_delete(item):
self.delete_note(note_file)
def should_promote_to_L2(self, item: MemoryItem) -> bool:
"""判断是否应该升级到 L2"""
conditions = [
item.access_count >= 3,
item.days_since_create >= 14,
item.importance in ["medium", "high"],
len(item.links) >= 2,
]
return sum(conditions) >= 2
def promote_to_L2(self, note_file: Path, item: MemoryItem):
"""升级到 L2"""
# 移动到 L2 文件夹
if "每日" in str(note_file):
new_path = self.vault_path / "3_知识" / "日志" / note_file.name
else:
new_path = self.vault_path / "2_项目" / note_file.name
# 更新 frontmatter
content = note_file.read_text()
content = content.replace('layer: L1', 'layer: L2')
content = content.replace('tags: [日志, 每日]', 'tags: [知识, 日志沉淀]')
# 写入新位置
new_path.parent.mkdir(parents=True, exist_ok=True)
new_path.write_text(content)
# 删除原文件
note_file.unlink()
self.promoted_count += 1
print(f"✅ 升级: {note_file.name} -> L2")
def should_delete(self, item: MemoryItem) -> bool:
"""判断是否应该删除"""
return (
item.days_since_access > 30 and # 超过30天未访问
item.access_count == 0 and # 从未被主动访问
item.value_score < 0.3 # 价值分数低
)
def delete_note(self, note_file: Path):
"""移动到回收站"""
trash_path = self.vault_path / "__垃圾桶__" / note_file.name
trash_path.parent.mkdir(parents=True, exist_ok=True)
note_file.rename(trash_path)
self.deleted_count += 1
print(f"🗑️ 删除: {note_file.name}")
# 使用示例
if __name__ == "__main__":
promoter = MemoryAutoPromoter("/Users/anyi/Documents/Hermes_KB")
promoter.scan_and_promote()
print(f"\n📊 统计:")
print(f" 升级到 L2: {promoter.promoted_count} 篇")
print(f" 删除: {promoter.deleted_count} 篇")
10. 常见问题 FAQ
Q1: 如何判断内容是否有价值?
markdown
# 价值判断标准
## 必须保留(高价值)
- ✅ 以后还会用到
- ✅ 和其他内容有关联
- ✅ 是方法论或概念
- ✅ 包含重要决策或结论
## 可选保留(中等价值)
- ⚠️ 以后可能用到
- ⚠️ 有一些关联但不确定
- ⚠️ 是临时记录但有参考价值
## 可以删除(低价值)
- ❌ 纯粹的情绪发泄
- ❌ 已经完全过时的信息
- ❌ 没有任何关联的孤立内容
- ❌ 可以轻易从网上找到的信息
Q2: L1 内容太多怎么办?
markdown
# 解决方案
## 1. 设置自动过期规则
- 超过 7 天未访问的自动清除
- 价值分数低于 0.3 的标记为待删除
## 2. 定期清理
- 每天傍晚花 5 分钟快速浏览
- 把重要的升级到 L2
- 把不重要的移到回收站
## 3. 分散处理
- 不要等到周末才整理
- 每天处理一点点
- 养成随手整理的习惯
Q3: 标签和层级冲突怎么办?
markdown
# 解答
标签和层级不冲突!
标签 = "这是什么类型的东西"
- #日志/每日 → 这是每日日志
- #知识/方法论 → 这是方法论知识
层级 = "这条信息的重要程度"
- L0 → 临时的、不重要的
- L1 → 短期的、待整理的
- L2 → 长期的、重要的
- L3 → 知识网络的一部分
## 实际使用
---
title: 2026-04-26 日志
tags: [日志, 每日] # 标签:这是日志
layer: L1 # 层级:短期记忆
---
# 2026-04-26 日志
## 内容
...
Q4: 如何防止知识孤岛?
python
# 检查孤立笔记的脚本
def find_orphaned_notes(vault_path: str) -> list:
"""
找出没有任何链接的孤立笔记
"""
orphaned = []
for note_file in Path(vault_path).rglob("*.md"):
content = note_file.read_text()
# 统计链接数量
links = re.findall(r'\[\[([^\]]+)\]\]', content)
# 统计标签数量
tags = re.findall(r'#[\w/]+', content)
if len(links) == 0 and len(tags) <= 1:
orphaned.append({
"file": note_file.name,
"path": str(note_file),
"reason": "无链接或标签"
})
return orphaned
# 运行检查
orphaned = find_orphaned_notes("/Users/anyi/Documents/Hermes_KB")
print(f"发现 {len(orphaned)} 篇孤立笔记")
for note in orphaned[:5]:
print(f" - {note['file']}: {note['reason']}")
Q5: 分层记忆会不会让笔记难以找到?
markdown
# 解答
不会!分层不影响搜索
## 搜索方式
### 1. 按标题搜索
Cmd + O → 输入标题 → 快速切换
### 2. 按标签搜索
#标签名 → 查看所有带此标签的笔记
### 3. 按内容搜索
Cmd + Shift + F → 全文搜索
### 4. 按记忆层搜索(Dataview)
```dataview
TABLE title
WHERE memory_layer = "L2"
关键原则
-
存储位置不重要(文件夹只是容器)
-
重要的是标签和链接
-
搜索会找到一切
Q6: 如何从零开始建立分层系统?
markdown# 从零开始的步骤 ## 第一步:创建文件夹结构 0_临时/ 1_日志/ 2_项目/ 3_知识/ ## 第二步:制定标签规范 - #日志/每日 - #项目/{项目名} - #知识/方法论 - #知识/概念 ## 第三步:建立迁移规则 ```yaml # 不需要手动迁移,规则如下: # 最近 7 天的日志 → L1 # 7 天前的日志 + 有价值 → L2 # 沉淀的方法论 → L2 # 建立关联的概念 → L3
第四步:日常执行
- 每天使用日志模板
- 傍晚整理 inbox
- 周末回顾和升级
第五步:渐进式迁移
-
不要一次性迁移所有旧笔记
-
新笔记用新系统
-
旧笔记在需要时再处理
📚 扩展阅读
- Obsidian 官方文档 - 双向链接
- Zettelkasten 知识管理法
- Building a Second Brain - Tiago Forte
- How to Take Smart Notes - Sönke Ahrens
下一篇预告:第七篇 - 自动化工作流实战