记忆持久化
记忆系统:跨对话持久记忆
·约 6 分钟阅读
默认情况下,每次对话都是独立的——Claude 不记得上次聊了什么。Memory 系统改变了这一点,让 Claude 可以跨对话保存和检索信息,构建个性化的长期记忆。
你将学到什么
- Claude 记忆系统的工作原理
- Memory Tool 的使用方式
- 记忆管理策略
- 构建具有记忆能力的应用
为什么需要记忆
没有记忆的 AI 助手每次对话都是"初次见面"。用户需要反复说明自己的偏好、项目上下文、工作习惯。
有了记忆,AI 可以:
- 记住用户偏好("我喜欢用 TypeScript")
- 积累项目知识("这个项目用 Prisma 做 ORM")
- 追踪长期任务("上周讨论的重构方案")
Claude Code 的记忆机制
Claude Code 使用文件系统实现记忆:
~/.claude/
├── CLAUDE.md # 全局指令和记忆
└── projects/
└── <project-hash>/
└── memory/
├── MEMORY.md # 项目记忆主文件
├── architecture.md # 架构相关记忆
└── debugging.md # 调试经验
MEMORY.md 会自动加载到每次对话的上下文中。Claude 在工作过程中会自动更新这些文件。
记忆的类型
1. 事实记忆(Facts)
- 项目使用 pnpm monorepo
- 数据库是 PostgreSQL + Prisma
- 部署在 Vercel
2. 偏好记忆(Preferences)
- 用户偏好简洁的代码风格
- commit message 不需要 Co-Authored-By
- 优先使用 TypeScript
3. 经验记忆(Lessons)
- 这个项目的 ESLint 配置严格,提交前要 lint
- API 路由需要在 middleware 中鉴权
- 模板字面量中的 $ 需要转义
API 层面的记忆实现
如果你在构建自己的 AI 应用,可以这样实现记忆:
import anthropic
import json
client = anthropic.Anthropic()
class MemoryStore:
def __init__(self, filepath="memory.json"):
self.filepath = filepath
self.memories = self._load()
def _load(self):
try:
with open(self.filepath) as f:
return json.load(f)
except FileNotFoundError:
return []
def save(self, key, value, category="general"):
self.memories.append({
"key": key,
"value": value,
"category": category,
})
with open(self.filepath, "w") as f:
json.dump(self.memories, f, ensure_ascii=False, indent=2)
def search(self, query, limit=5):
"""简单的关键词搜索"""
results = []
for m in self.memories:
if query.lower() in m["key"].lower() or query.lower() in m["value"].lower():
results.append(m)
return results[:limit]
def get_context(self):
"""将记忆格式化为 system prompt"""
if not self.memories:
return ""
lines = ["以下是关于用户的记忆信息:"]
for m in self.memories:
lines.append(f"- [{m['category']}] {m['key']}: {m['value']}")
return "\n".join(lines)
# 使用
memory = MemoryStore()
memory.save("技术栈", "TypeScript + Next.js + Prisma", "project")
memory.save("偏好", "简洁代码风格,少注释", "preference")
# 在对话中使用记忆
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=2048,
system=memory.get_context(),
messages=[{"role": "user", "content": "帮我创建一个新的 API 路由"}]
)
记忆管理策略
写入策略: 不要什么都记。只保存稳定的、跨对话有价值的信息。
更新策略: 信息可能变化。记忆应该可以覆盖更新,而不是无限追加。
清理策略: 定期清理过时的记忆。设置有效期或手动审查。
实战练习
Tip: 为你的 AI 应用添加记忆能力。
- 实现一个简单的 MemoryStore(如上面的示例)
- 在 system prompt 中注入记忆上下文
- 测试 AI 是否能利用记忆信息给出更好的回答
关键要点
Note: 本文核心总结
- 记忆让 AI 从"每次初次见面"变成"了解你的助手"
- Claude Code 用文件系统(MEMORY.md)实现持久记忆
- API 层面可以通过 system prompt 注入记忆上下文
- 记忆要有策略地写入、更新和清理