分层记忆系统规范
August 14, 2026 · View on GitHub
本文件是 dsh-memory-pack 的方法论内核,说明「为什么这样分层」「每层放什么」「元数据怎么标」。它是给作者、维护者和想理解这套系统的人读的;给 agent 读的路由规则在
skills/memory-pipeline/SKILL.md。
一、一句话定位
dsh-memory-pack 是一套文件式、可 git、可审计、带污染防护的 agent 持久化记忆方法。它不是一个数据库,而是一组目录约定 + 元数据契约 + 导航规则:agent 把记忆写成普通 Markdown 文件放进约定目录,用 frontmatter 标注来源和审查状态,进入记忆时先读索引层。
它和「向量记忆 / 自动记忆」那类产品是互补关系:那些产品追求「自动记住一切」,本方法追求「你能看得见 agent 到底记了什么、从哪来的、有没有被外部内容污染、能不能一键回滚(git)」。
二、分层模型
根目录固定为 memory/,内部按内容语义分 11 层:
| 层 | 路径 | 放什么 | 不放什么 |
|---|---|---|---|
| 收件箱 | 00-Inbox/ | 人类的原始想法、灵感、未分类输入 | AI 生成的结论、摘要 |
| 原始证据 | 10-Raw/ | 对话原文、导入的原始材料、逐字节保全的证据 | 蒸馏、总结、概念提取 |
| 正式蒸馏 | 20-Distilled/ | 已审查、可读、有来源、有判断的正式笔记 | 未审查的原始材料 |
| 候选缓冲 | 25-Candidates/ | 待审查的认知、候选经验、审查索引 | 已完成且目标层明确的正式产物 |
| 写作输出 | 30-Writing/ | 人类原创 / 草稿 / AI 辅助 / 定稿 | 只有来源证据、没有写作产物的内容 |
| 概念层 | 40-Concepts/ | 可复用的模型、原则、主题 | 单次笔记的简单摘要 |
| 行动层 | 50-Action/ | 待办、任务卡片、提醒 | 纯知识、已完成成果 |
| 成果层 | 60-Achievement/ | 已完成、值得以后检索的成果 | 仍在进行的开放工作 |
| 导航层 | 80-Maps/ | 各层的索引、目录、导航地图 | 内容判断、正文 |
| 附件 | 90-Attachments/ | 对话附件、图片、文件证据 | 导出的 .md 对话原文(那属于 10-Raw) |
| 归档 | 99-Archive/ | 已归档、不再活跃的材料 | 活跃内容 |
主链
00-Inbox / 10-Raw / 25-Candidates
-> 20-Distilled
-> 30-Writing | 40-Concepts | 50-Action | 60-Achievement
这不是强制线性流水线。40-Concepts 可选:只有当产出的是可复用、能改善未来判断的模型/原则/主题时才建概念,不要为每篇蒸馏笔记都强行建概念。
三、Maps-first 导航原则
进入记忆时,先读 memory/80-Maps/ 的索引,再按需深入具体层,不要全量扫描 memory/ 整棵树。
- 索引是「导航」,不是「内容判断」——索引只告诉你「东西在哪、状态是什么」,不替你做「该不该用」的判断。
- 找不到索引时,退化到读最小的相关层,并显式说明「索引缺失」。
四、元数据契约
每个耐久 Markdown 文件应带 frontmatter,至少包含:
producer: human | assistant | agent | mixed | unknown
review_state: unreviewed | reviewed
canonical_status: raw | candidate | formal | archive
source_paths: [] # 来源路径列表,保持可追溯
contains_third_party_source: false # 污染防护标记
字段含义:
producer:这个文件是谁产生的(人 / 助手 / agent / 混合 / 未知)。身份必须可见,不能伪装成已审查。review_state:审查状态。unreviewed表示还没人确认,reviewed表示已人工确认。审查者是人,不是另一个 agent。canonical_status:正式度。raw(原始证据)→candidate(候选/待审)→formal(正式)→archive(归档)。只有人明确审查通过后,才能把candidate改成formal。source_paths:来源路径,保持可追溯。找不到来源就显式写空并说明,不要编造。contains_third_party_source:污染防护核心。凡含网页、第三方文章、外部导入材料,必须标true,未审查不得进入20-Distilled或formal。
这套契约是从「多 agent 协作元数据」退化而来的通用版:去掉了
review_owner: codex-controller这类绑定特定 agent 角色的字段。理由:通用用户没有 Codex/Claude Code/OpenClaw 三角色分工,审查责任落在「人」身上。
五、污染防护边界
核心规则:个人记忆与外部来源强制隔离,未经人工审查不得混入正式记忆。
- 凡来自网页、第三方账号、外部导入的内容,一律先标
contains_third_party_source: true,停留在10-Raw或25-Candidates。 - 只有经过人工审查、确认可吸收后,才能进入
20-Distilled或标canonical_status: formal。 - 不要把外部抓取数据直接当成个人正式记忆。
六、最小闭环
日常使用的四步闭环,覆盖「记、取、晋级、入库」:
experience-recall(取) -> 干活 -> experience-capture(记) -> distilled-memory-promotion(晋级)
外加一个「原始对话入库」的独立入口 raw-dialogue-ingress(只保全证据,不蒸馏)。
七、可移植性边界
本规范刻意去掉的耦合(以便任何 skill 驱动的 agent 运行时都能用):
- 不绑定 Codex / Claude Code / OpenClaw 等特定 agent 角色分工。
- 不硬编码任何绝对路径,全部用相对
memory/约定。 - 不依赖任何私有审计脚本、私有 docs 标准或 LLM Wiki。
- 不依赖「交给某 agent 后审」的交接闭环;审查责任归属人。
本规范刻意保留的内核:
- 分层模型、Maps-first、元数据契约、污染防护、最小闭环——这五者就是这套方法的全部可移植价值。