Obsidian Brain — Agent 记忆系统
对话开始搜 agent memory,任务结束写回。读:L0→L1→L2。写:LLM提取→去重→碎片化。
碎片格式
文件名:{项目} - {YYYY-MM-DD} - {描述}.md
---
tags: [agent-memory]
project: 项目名
date: 2026-05-05
summary: 一句话概述(L0扫描用)
importance: 0.8
confidence: 0.9 # 可选
source: conversation # 可选
---
# 正文(agent压缩格式,见下方规则)
禁写字段: type related_fragments [[链接]]。碎片纯文本,不属KG图谱。用 project 字段分组代替关联。
碎片压缩规则
正文以agent解析效率为唯一目标,人类可读性忽略。
格式要求:
- 正文允许:事实列表(
- key: value)、短句(≤2行)、关键数据、显式关系(→⇒∵∴) - 正文禁止:段落叙事、
## 现象/## 根因/## 经验教训多级标题、过渡句、解释性装饰语 - 不再需要
# 标题(文件名已含标识)
缩写约定(不产生歧义时使用):
| 词 | 缩写 |
|---|---|
| agent memory → am | kg → kg |
| search_files → sf | read_file → rf |
| write_file → wf | patch → p |
| session → sess | memory → mem |
| 工具混淆 → tool-conf | 缺失 → miss |
示例(同一碎片,压缩前后对比):
❌ 旧格式(人类友好):
# agent-memory 设计 - 2026-05-06 - 读+写双重失效
## 现象
本会话既没读agent memory,也没写agent memory。
## 根因
...
## 经验教训
1. 任何用户输入都是新任务开始
2. system memory 和 agent memory 是两套存储
✅ 新格式(agent压缩):
**发现**:本sess既没读am也没写am
**根因-读**:用户发文件名→未触发AGENTS.md步0
**根因-写**:mem-tool满(2093/2200)→误判am也写不了(两者独立)
**教训**:①任意输入=任务开始→必须走步0 ②mem-tool≠am碎→容量不共享 ③📋模板从未加入回复格式
L0/L1/L2 分层
| 层 | 加载内容 | 时机 |
|---|---|---|
| L0 | frontmatter: summary tags importance | 搜到即加载 |
| L1 | 正文 | L0确认相关 |
| L2 | 同 project 其他碎片 | L1不够时 search_files |
写入
判断(什么该记): 决策/结论/价格数据、踩坑教训、调研发现 ✔ | 临时计算、一次性信息 ✘
流程: LLM从结果提取关键事实 → 去重(有相似碎片且度>0.8→合并更新)→ 写 .md
读出
顺序: agent memory/ → 知识库skill(agent_trigger) → 概念/某物(abstract) → 网络
排序: 相关性×0.5 + importance×0.3 + e^(-0.01×days)×0.2
维护
importance<0.3且 90天未访问 →_archive/- 同 project 碎片 > 20 → 生成 L2 总结合并
执行流程
0. ⚠️ 读 agent memory(不可跳过,结果可视化)
search_files → L0 → 相关则L1 → 注入上下文
**在回复开头必须报告:** `📖 agent memory:读取 N 个碎片 → [标题+summary → 相关/不相关]`
1~N. 执行任务(中途转向时重搜)
N+1. ⚠️ 写 agent memory + 📋 留位检查(不可跳过)
三问:决策/结论/发现?踩坑/教训?下次需要?
任一"是" → 立即写入,同轮次完成。不等不拖。
末尾加 `📋 agent memory:本次是否有需写入碎片?[有/无]`
N+2. ⚠️ 如果本技能(obsidian-brain)被编辑 → clawhub publish 新版本
触发约束
- AGENTS.md:对话开始强制搜 + 任务结束强制写
- 流程第0步:任务前必搜,优先于网络/知识库
- 📋 留位:每次回复末尾检查
- 失效保护:连续3次漏读/漏写 → 下次加载时回溯
速查
读: 任务前→搜碎片L0→L1→L2 写: LLM提取→去重→碎片化
禁: type/[[链接]]/related_fragments
排: 0.5×相关+0.3×importance+0.2×时间
维: <0.3且90天→archive >20碎片→总结
陷阱
- 忘读 → AGENTS.md 系统约束,不靠自觉
- 忘写 → 三问+同轮次+📋留位
- 碎片写type/[[链接]]/related_fragments → 禁止。纯文本
- 混淆 system memory 与 agent memory 碎片 → 两者是独立存储。system memory 用
memory工具操作(2200字符上限),agent memory 碎片用write_file写 Obsidian vault(无上限)。一个满了不影响另一个,不要用一个判断另一个。 - 用户发文件名/单字不算"任务开始" → 任何用户消息(即使只是一个文件名)都是对话开始信号,必须先执行第0步搜碎片。文件名≠跳过符。
- 混淆 system memory 与 agent memory → 见
references/storage-distinction.md。两者独立存储,容量不共享。看到 memory 满≠agent memory 不能写。