Smart Memory Guard
一、记忆四类型分类
写入记忆前,先判断属于哪一类:
| 类型 | 内容 | 示例 |
|---|---|---|
user |
主人的角色/偏好/知识/习惯 | "bobooo 偏好 CC 做复杂任务" |
feedback |
主人的纠正/确认 | "不要自动规划任务" |
project |
进行中的项目/目标/决策 | "ClawHunt 内测中" |
reference |
外部系统/工具的指针 | "RunningHub API Key 在 personal-secrets.json" |
二、绝对不记的内容(NOT-to-save 列表)
以下内容即使主人说"记住"也不存入 MEMORY.md:
- ❌ 代码模式/架构/文件结构 —
grep/find可以查 - ❌ Git 历史/谁改了什么 —
git log/git blame权威 - ❌ 调试方案/修复步骤 — fix 在代码里,commit message 有上下文
- ❌ AGENTS.md / SOUL.md 已有内容 — 不要重复
- ❌ 临时任务状态/当前对话细节 — 完成后无价值
- ❌ 活动日志/PR列表汇总 — 问"哪部分出乎意料?",记那个
主人说"记住这个 PR 列表" → 不记列表本身,问"哪个发现是意外的?" → 记那个发现
三、反馈记忆必须带 Why
纠正/确认记录格式:
### [日期] 标题
- 规则: 具体做法
- **Why:** 原因(主人为什么这么说,什么事故/偏好导致的)
- **How to apply:** 在什么场景下应用这条规则
没有 Why 的反馈记忆 = 盲从规则,遇到边界情况会做错。
四、记忆漂移防护
基于记忆行动前,必须验证:
| 记忆内容 | 验证方式 |
|---|---|
| 提到文件路径 | 检查文件是否存在 |
| 提到函数/变量名 | grep 确认是否还在 |
| 提到 API/服务地址 | curl 测试是否可达 |
| 项目状态描述 | 对照当前代码/环境 |
"记忆说 X 存在" ≠ "X 现在存在"
记忆与当前观察矛盾时 → 信当前,更新或删除旧记忆
五、膨胀检查(Heartbeat 时执行)
- 检查 MEMORY.md 大小,超过 5KB 触发瘦身
- 瘦身优先级:
- 已完成任务 → 删除或归档
- 超过 7 天的对话摘要 → 精简合并
- 已晋升到 AGENTS.md 的纠正 → 删除
- 代码模式/架构描述 → 删除(违反 NOT-to-save)
- 永不删除:用户偏好、工作习惯、角色定位
六、写入决策树
收到新信息
├─ 是代码/git/调试信息? → ❌ 不记
├─ 已在 AGENTS.md/SOUL.md 中? → ❌ 不记
├─ 是纠正/确认? → ✅ feedback(带 Why + How to apply)
├─ 是主人偏好/角色? → ✅ user
├─ 是项目进展/决策? → ✅ project
├─ 是外部系统指针? → ✅ reference
└─ 不确定? → 问自己"6个月后这条还有用吗?"
├─ 有 → 记
└─ 没有 → 不记