Skip to content

Latest commit

 

History

History
131 lines (87 loc) · 4.47 KB

File metadata and controls

131 lines (87 loc) · 4.47 KB

36. Memory Taxonomy 与 Drift 防护

所属专题簇:记忆与上下文算法深挖

建议前读:21. 记忆系统:CLAUDE.md、Session Memory 与 Agent Memory

建议后读:29. Team Memory Sync 与 Shared Repo Memory

研究问题

Anthropic 如何定义“什么值得记忆”,以及如何防止 memory 逐渐变成过期、不可验证的谣言库?

一句话结论

Claude Code 通过 memory taxonomy 和 drift caveat,把“写什么 memory”与“怎么使用 memory”同时制度化:只有非可推导信息值得记忆,而所有 recall 都要面对可能漂移的现实。

这篇讲什么

这一章不讲 memory 文件怎么落盘,而讲记忆策略本身:四类 memory、private/team 作用域、哪些内容不该记、为什么相对日期要转绝对日期,以及 recall 时为何必须验证 drift。

如果你不看源码,只看这一章,应该记住什么

  • 不是所有有用信息都应该写进 memory。
  • Anthropic 明确禁止把可从代码、git、结构推导的信息塞进 memory。
  • memory 不是事实数据库,使用前要再验证当前状态。

源码依据

Mermaid 图:Memory 决策树

flowchart TD
    A["新信息"] --> B{"是否可由当前项目状态推导?"}
    B -- 是 --> C["不要保存为 memory"]
    B -- 否 --> D{"属于哪一类?"}
    D --> E["user"]
    D --> F["feedback"]
    D --> G["project"]
    D --> H["reference"]
    E --> I["默认 private"]
    F --> J["private 或 team"]
    G --> K["强烈偏向 team"]
    H --> L["通常 team"]
    I --> M["写入前考虑 drift / 使用前验证"]
    J --> M
    K --> M
    L --> M
Loading

taxonomy 的重点不是分类,而是排除

src/memdir/memoryTypes.ts 最值得注意的不是四类名字,而是开头第一段:

  • code patterns
  • architecture
  • git history
  • file structure

这些都被定义为 derivable from current project state,因此不应该存成 memory。

这说明 Anthropic 不是想把 memory 做成“大型知识库存档”,而是只保存当前会话和项目状态里难以再推导回来的信息。

四类 memory 对应四种不同价值

同一文件里定义了:

  • user
  • feedback
  • project
  • reference

它们分别对应:

  • 用户画像与视角
  • 如何合作的经验规则
  • 项目中的非代码背景事实
  • 外部系统入口和查找指针

这意味着 memory 并不是“一个 blob”,而是有明确用途分层。

private / team 边界被写得很具体

尤其是 feedbackproject

  • feedback 默认 private,只有项目级规则才升成 team
  • project 虽可 private 或 team,但强烈偏向 team

这反映出 Claude Code 已经把 memory 当作协作资源,而不只是个人记事本。

为什么一定要把相对日期转成绝对日期

project memory 的说明里明确要求:

  • "Thursday" -> "2026-03-05"

这很重要,因为 memory 的最大风险之一就是“脱离原始对话后,时间语义失真”。Anthropic 直接把这个问题制度化了。

drift 防护是 recall 侧规则

同一文件里的 MEMORY_DRIFT_CAVEAT 明确说:

  • memory 可能随着时间过期
  • 回答前要验证当前状态
  • 如果 memory 与当前观察冲突,应信当前状态
  • 并应更新或移除 stale memory

这说明 Anthropic 不把 memory 当成真相源,而把它当成“历史上下文线索”。

为什么这点很有研究价值

很多 memory 系统的问题不在“怎么存”,而在“模型会不会过度相信旧记忆”。Claude Code 在这里的做法很克制:

  • 写入阶段先严格限制内容类型
  • 读取阶段再强制提醒 drift 风险

这比单纯喊“memory 很有用”更成熟。

你真正应该记住的点

  • taxonomy 的核心价值是防止记忆泛滥。
  • drift caveat 的核心价值是防止模型把旧记忆当当前真相。
  • 这两者合起来,才是 Anthropic 的 memory policy,而不只是一个文件格式。

延伸阅读