分层记忆系统规范

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-Distilledformal

这套契约是从「多 agent 协作元数据」退化而来的通用版:去掉了 review_owner: codex-controller 这类绑定特定 agent 角色的字段。理由:通用用户没有 Codex/Claude Code/OpenClaw 三角色分工,审查责任落在「人」身上。

五、污染防护边界

核心规则:个人记忆与外部来源强制隔离,未经人工审查不得混入正式记忆。

  • 凡来自网页、第三方账号、外部导入的内容,一律先标 contains_third_party_source: true,停留在 10-Raw25-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、元数据契约、污染防护、最小闭环——这五者就是这套方法的全部可移植价值。