News

Claude Code持久记忆系统:让AI代理拥有长期上下文感知能力

Claude Code持久记忆系统:让AI代理拥有长期上下文感知能力

Claude Code 之前有一个痛点:它不记得任何事情。每次会话都从零开始——你上周解释的偏好、它在代码工作中发现的业务约束、你不得不纠正两次的问题。一切都会随着 /clear 命令消失。

虽然 CLAUDE.md 在一定程度上弥补了这一不足,你可以用它来编码项目约定、技术栈和部署规则。但 CLAUDE.md 难以处理一类信息:那些会随时间演变的内容。例如,本月做出的架构决策、会话中纠正的样式偏好,或者在生产环境中发现的棘手问题。这些信息的生命周期各不相同,并且并非所有都适合与项目一同版本化管理的文件。

正是针对这一需求,Claude Code 推出了持久记忆系统。

自动记忆的功能与局限

自动记忆系统由一组 Markdown 文件组成,存储在每个项目专属目录(~/.claude/projects/<project>/memory/)或全局目录(~/.claude/memory/)中。Claude 在会话开始时通过索引文件 MEMORY.md 读取它们,并可以在会话期间更新这些文件。

但它并非一个自动的会话日志。Claude 不会记录发生的一切。它是一个主动的工具——你必须明确告知它什么值得保留,或者要求它自己进行审计。

持久记忆与 CLAUDE.md 的区别至关重要。CLAUDE.md 描述的是项目本身:技术栈、约定、部署。而持久记忆描述的是工作关系:偏好、持续进行的决策,以及在特定时间点不那么显而易见的约束。

四种记忆类型

每个记忆文件都在其 frontmatter 中声明了一个类型。这并非表面文章——它决定了 Claude 何时会使用这些记忆。

  • user — 与你合作的对象:你的角色、技术水平和知识领域。这使得 Claude 无需每次会话都重新介绍,就能校准解释的深度。
  • feedback — 如何处理工作:哪些地方被纠正过,哪些地方被证实有效。“不要在消息末尾总结你刚刚做的事情”属于反馈。“在测试中始终使用真实的数据库,而不是模拟数据”也属于反馈。
  • project — 当前项目状态:活跃的决策、正在进行的计划、时间限制。这些信息变化很快,需要定期审查。
  • reference — 外部系统中信息的查找位置:“流水线 bug 在 Linear 项目 INGEST 中追踪”,“Grafana 延迟面板在 grafana.internal/d/api-latency”。

什么值得保留——什么不值得

记忆并非档案。进入记忆文件的内容必须是无法从代码或 CLAUDE.md 中推断出来的,并且在未来的会话中有用。

值得保留的:

  • 在会话中确认或纠正的样式偏好。
  • 工作中发现的真正的“坑”——例如隐性约束、反直觉的行为。
  • 尚未反映在代码中的活跃架构决策。
  • 你经常使用的外部资源指针。

不属于记忆的:

  • 任何在文件中可见的内容——Claude 会通过阅读代码找到它。
  • 会话详情——Git 日志在这方面更可靠。
  • 进行中的任务——它们不属于记忆。
↗ 阅读原文