Claude Agents 记忆系统实战指南:Memory Store + Dreaming 完整教程
Claude Agents 记忆系统实战指南:Memory Store + Dreaming 完整教程
一句话总结:Claude Agents 默认是"孤岛"——每个会话独立,信息无法传递。通过Memory Store(持久化存储)和Dreaming(异步记忆优化)两个功能,可以让 Agent 跨会话记住信息,并自动整理、去重、丰富记忆内容,实现真正的"长期记忆"。
一、问题背景:Agent 的"失忆"困境
当前大多数 AI Agent 面临一个核心问题:每个会话(Session)都是孤立的。
- Agent 不会记住过去会话的信息
- 信息无法传递到未来的会话
- 每次对话都要重新交代背景
1.1 演示:没有记忆的 Agent
步骤 1:创建第一个会话,告诉 Agent 一些信息
# 创建无记忆的测试会话claude session create --agent-id<your-agent-id>--environment-id<your-env-id>--title"test with no memory"Prompt 1:向第一个会话发送信息
昨天我参加了一个关于 CMA 的讲座,关键词包括:multi-agent orchestration、multiple illustration outcomes 和 memory。我还认识了一个叫 Alex 的人。Agent 的回应通常是:“好的,谢谢你的信息。还有什么需要我帮忙的吗?”
步骤 2:创建第二个会话,询问刚才的信息
# 创建第二个无记忆会话claude session create --agent-id<your-agent-id>--environment-id<your-env-id>--title"test no memory - second session"Prompt 2:向第二个会话询问之前的信息
告诉我昨天 CMA 讲座的内容,以及我认识了谁。Agent 的回应:“我没有访问到这些信息,但我可以在以下方面帮助你……”
结论:信息没有跨会话传递,这就是 Agent 的"失忆"问题。
二、解决方案:Memory Store(记忆存储)
Memory Store 是一个持久化的类文件系统存储,可以附加到会话上,让 Agent 能够跨会话读取和写入信息。
2.1 核心特性
| 特性 | 说明 |
|---|---|
| 持久化 | 会话结束后数据不会丢失 |
| 类文件系统 | 使用目录结构组织记忆,支持bash、grep等工具操作 |
| 多会话共享 | 同一个 Memory Store 可以附加到多个会话 |
| 灵活边界 | 可按用户、工作区、项目定义存储边界 |
| 读写权限 | 支持read-write(默认)和read-only两种模式 |
2.2 创建 Memory Store
# 创建 Memory Storeclaude memory-store create--name"workshop-memory"--description"Memory for workshop sessions"创建后可在 Console 的Manage Agents → Memory Stores中查看,初始状态为空。
2.3 将 Memory Store 附加到会话
# 创建带 Memory Store 的会话claude session create --agent-id<your-agent-id>--environment-id<your-env-id>--memory-store-id<your-memory-store-id>--memory-prompt"Focus on workshop-related information"--memory-access"read-write"--title"test with memory"参数说明:
| 参数 | 必填 | 说明 |
|---|---|---|
--memory-store-id | 是 | Memory Store 的唯一标识 |
--memory-prompt | 否 | 引导 Agent 关注特定领域的信息 |
--memory-access | 否 | read-write(默认)或read-only |
2.4 演示:有记忆的 Agent
步骤 1:创建带 Memory Store 的会话,发送信息
# 创建带 memory 的会话claude session create --agent-id<your-agent-id>--environment-id<your-env-id>--memory-store-id<your-memory-store-id>--title"test with memory"Prompt 3:向带记忆的会话发送信息
昨天我参加了一个关于 CMA 的讲座,关键词包括:multi-agent orchestration、multiple illustration outcomes 和 memory。我还认识了一个叫 Alex 的人。此时 Agent 会:
- 先检查 Memory Store 是否有相关信息
- 发现没有后,将信息写入 Memory Store(通常保存为
sessions.md或类似文件) - 确认已保存
步骤 2:创建新会话,使用同一个 Memory Store,询问之前的信息
# 创建第二个带相同 memory 的会话claude session create --agent-id<your-agent-id>--environment-id<your-env-id>--memory-store-id<your-memory-store-id>--title"test with memory - second session"Prompt 4:询问之前保存的信息
告诉我昨天 CMA 讲座的内容,以及我认识了谁。此时 Agent 会:
- 先读取 Memory Store
- 使用
grep搜索关键词 “CMA” - 找到之前保存的信息
- 基于记忆内容回答问题
结论:信息成功跨会话传递!
2.5 Memory Store 的文件系统操作
因为 Memory Store 是以类文件系统挂载到会话容器的,Agent 可以使用强大的文件操作工具:
# Agent 可以执行的内部操作示例:# 1. 列出记忆文件ls/memory/# 2. 搜索关键词grep-r"CMA"/memory/# 3. 读取特定文件cat/memory/sessions.md# 4. 创建新文件echo"New insight">/memory/insights.md# 5. 编辑现有文件sed-i's/old/new/g'/memory/sessions.md2.6 管理 Memory Store
2.6.1 通过 CLI 管理
# 列出 Memory Store 中的所有文件claude memory-store list-files --memory-store-id<id># Memory Store 支持版本控制,每次修改都会创建新版本claude memory-store list-versions --memory-store-id<id>--file-path<path>2.6.2 通过 Console UI 管理
在 Console 的Manage Agents → Memory Stores中:
- 查看文件系统目录结构
- 直接编辑记忆文件(修正错误或补充信息)
- 手动添加新的记忆文件
2.6.3 手动添加记忆
# 通过 API 直接添加记忆文件claude memory-store add-file --memory-store-id<id>--file-path"notes/important.md"--content"This is a manually added memory."三、进阶方案:Dreaming(记忆优化)
3.1 问题:Memory Store 会无限增长
当 Agent 长期读写 Memory Store 时,会出现以下问题:
- 信息堆积:每次任务都往记忆里堆信息,没有整理
- 重复冗余:相同信息多次写入
- 信息过时:旧信息可能已失效,但仍占用空间
- 检索效率下降:记忆文件越来越庞大,Agent 查找困难
3.2 Dreaming 是什么?
Dreaming 是一个异步后台任务,本质上是一个多 Agent 协作系统,专门负责:
| 功能 | 说明 |
|---|---|
| 事实核查(Fact Checking) | 验证记忆中的信息是否准确 |
| 信息丰富(Enriching) | 补充缺失的细节、日期、上下文 |
| 去重整理(Deduplicating) | 合并重复信息,删除冗余 |
| 结构化组织(Organizing) | 创建索引文件,优化目录结构 |
| 过期清理 | 移除不再相关的旧信息 |
3.3 Dreaming 的核心架构
Dreaming 采用多 Agent 编排(Multi-Agent Orchestration)架构:
┌─────────────────────────────────────────┐ │ Dreaming Orchestrator │ │ (协调器,负责任务调度) │ └─────────────────────────────────────────┘ │ ┌───────────────┼───────────────┐ ▼ ▼ ▼ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ Sub-Agent│ │ Sub-Agent│ │ Sub-Agent│ │ (Session 1) │ │ (Session 2) │ │ (Session 3) │ │ 分析输入 │ │ 事实核查 │ │ 信息丰富 │ └─────────┘ └─────────┘ └─────────┘ │ ▼ ┌─────────────────────────────────────────┐ │ Output Memory Store │ │ (优化后的新记忆存储) │ └─────────────────────────────────────────┘- 协调器(Orchestrator):负责任务分发和进度管理
- 子 Agent(Sub-Agent):每个子 Agent 负责分析一个输入会话或执行特定优化任务
- 设计原则:穷尽式(Exhaustive)——给定 100 个会话,确保每个都被仔细审查
3.4 创建 Dreaming Job
# 创建 Dreaming Jobclaude dream create--model"claude-sonnet-4-7"--input-memory-store-id<input-memory-store-id>--output-memory-store-id<output-memory-store-id>--session-ids<session-id-1>,<session-id-2>,...,<session-id-n>--prompt"Focus on fact-checking dates and organizing by topic."参数说明:
| 参数 | 必填 | 说明 |
|---|---|---|
--model | 是 | claude-sonnet-4-7或claude-sonnet-4-6(成本更低) |
--input-memory-store-id | 是 | 需要优化的源 Memory Store |
--output-memory-store-id | 是 | 优化后的输出 Memory Store(非破坏性) |
--session-ids | 是 | 要分析的会话 ID 列表(支持 10~100+ 个) |
--prompt | 否 | 自定义提示,指导 Dreaming 关注特定方面 |
3.5 Dreaming 的自定义提示词(Prompts)
Prompt 5:指导 Dreaming 关注特定细节
Please focus on fact-checking these specific details: [具体细节列表]. Make sure to remember these for future reference.Prompt 6:指导 Dreaming 按特定结构组织
Please organize the memory files into this specific structure: [期望的目录结构]. I want the memory store to follow this format.3.6 监控 Dreaming 进度
创建 Dreaming Job 后,可通过以下方式监控:
# 查询 Dreaming Job 状态claude dream get --dream-id<dream-id>在 Console 中:
- 查看Manage Agents → Dreams
- 实时跟踪 Token 消耗
- 查看 Dreaming Agent 的详细执行日志(因为 Dreaming 本身也是基于 Claude Agents 构建的,你可以看到每个子 Agent 的思考过程)
执行时间:根据会话数量和记忆大小,从几分钟到几小时不等。
3.7 Dreaming 的输出结果
Dreaming 完成后,输出 Memory Store 中会包含:
3.7.1 索引文件(Index File)
# Memory Index ## Session Summaries - [session-001](session-001.md) - CMA talk, multi-agent orchestration - [session-002](session-002.md) - Workshop day 2 planning - [session-003](session-003.md) - Resource links and logistics ## People - Alex - Met at CMA talk, contact: alex@example.com ## Topics - Multi-agent orchestration - Memory systems - Dreaming processes索引文件的作用:让未来的 Agent 能更高效地检索信息,无需遍历所有文件。
3.7.2 优化后的记忆文件
Dreaming 会重新格式化原始记忆文件,添加:
- Slug(短标识):快速定位
- 描述(Description):内容摘要
- 元数据(Metadata):时间戳、来源会话等
- 丰富后的细节:补充原始记录中缺失的信息
3.8 Dreaming 的关键特性
| 特性 | 说明 |
|---|---|
| 非破坏性 | 不会修改输入 Memory Store,而是写入全新的输出 Memory Store |
| 异步执行 | 在后台运行,不阻塞正在工作的 Agent |
| 可审计 | Console 中展示完整的 diff,可人工审查 Dreaming 的修改 |
| 可扩展 | 支持 10~100+ 个会话,未来计划支持更多 |
| 高缓存命中率 | 约 85% 的 Token 消耗来自缓存,成本可控 |
四、三层架构:Session + Memory Store + Dreaming
┌─────────────────────────────────────────────────────────────┐ │ DREAMING LAYER │ │ (记忆优化:整理、丰富、去重、核查) │ │ ┌─────────────┐ │ │ │ Orchestrator │ │ │ │ + Sub-Agents │ │ │ └─────────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ MEMORY STORE LAYER │ │ (持久化存储:跨会话共享信息) │ │ │ │ ┌─────────────┐ ┌─────────────┐ │ │ │ Input Store │ ──▶ │ Output Store │ (After Dreaming) │ │ │ (原始记忆) │ │ (优化后记忆) │ │ │ └─────────────┘ └─────────────┘ │ │ │ │ 文件系统结构: │ │ /memory/ │ │ ├── index.md ← 索引文件(Dreaming 生成) │ │ ├── sessions/ │ │ │ ├── session-001.md │ │ │ └── session-002.md │ │ ├── people/ │ │ │ └── alex.md │ │ └── topics/ │ │ └── multi-agent-orchestration.md │ └─────────────────────────────────────────────────────────────┘ │ ┌───────────────┼───────────────┐ ▼ ▼ ▼ ┌─────────────────────────────────────────────────────────────┐ │ SESSION LAYER │ │ (隔离的会话实例,可附加 Memory) │ │ │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │Session 1│ │Session 2│ │Session 3│ │ │ │ +Memory │◀──▶│ +Memory │◀──▶│ +Memory │ │ │ └─────────┘ └─────────┘ └─────────┘ │ │ │ │ 每个 Session 是独立的 Agent 运行实例 │ │ 通过 Memory Store 实现跨会话信息传递 │ └─────────────────────────────────────────────────────────────┘五、实战流程:从创建到使用
5.1 完整流程图
Step 1: 创建 Memory Store └── claude memory-store create --name "my-memory" Step 2: 创建带 Memory 的 Session,积累信息 └── claude session create --memory-store-id <id> └── 与 Agent 对话,Agent 自动读写 Memory Step 3: 重复 Step 2,积累多个会话的记忆 └── Session A: 记录项目需求 └── Session B: 记录技术方案 └── Session C: 记录会议纪要和决策 Step 4: 创建 Dreaming Job,优化记忆 └── claude dream create --input-memory-store-id <input-id> --output-memory-store-id <output-id> --session-ids <id1>,<id2>,<id3> Step 5: 监控 Dreaming 进度 └── claude dream get --dream-id <id> └── Console 中查看 diff 和执行日志 Step 6: 使用优化后的 Memory Store └── claude session create --memory-store-id <output-id> └── 新会话能高效检索所有历史信息 Step 7: (可选)淘汰旧 Memory Store └── claude memory-store retire --memory-store-id <input-id> └── 保留输出 Memory Store 作为新的主存储5.2 演示:使用 Dreaming 优化后的记忆
步骤 1:查询 Dreaming 输出
# 获取 Dreaming Job 详情claude dream get --dream-id<dream-id># 获取输出 Memory Store 的 ID# 输出中包含 output_memory_store_id步骤 2:创建使用优化后记忆的新会话
claude session create --agent-id<your-agent-id>--environment-id<your-env-id>--memory-store-id<output-memory-store-id>--title"session with dreamed memory"Prompt 7:询问跨会话的整合信息
我参加了哪些讲座?资源链接是什么?我标记了哪些重点?此时 Agent 会:
- 读取优化后的 Memory Store
- 查看索引文件,快速定位相关记忆
- 读取具体的会话文件
- 给出整合后的完整回答(包含时间、主题、资源链接等丰富信息)
对比效果:
- 优化前:Agent 只能找到零散的信息片段
- 优化后:Agent 通过索引快速定位,信息完整、结构化、包含丰富细节
六、关键概念与最佳实践
6.1 Memory Store 的设计原则
| 原则 | 说明 |
|---|---|
| 边界清晰 | 按用户、项目或工作区定义 Memory Store 边界,避免信息混杂 |
| 权限控制 | 敏感场景使用read-only模式,防止 Agent 误写 |
| Prompt 引导 | 使用--memory-prompt引导 Agent 关注特定领域 |
| 人工干预 | 定期通过 Console 审查和编辑记忆文件,修正错误 |
6.2 Dreaming 的使用建议
| 建议 | 说明 |
|---|---|
| 定期执行 | 建议按天或按周执行 Dreaming,避免记忆堆积 |
| 会话数量 | 每次 10~100 个会话,根据记忆复杂度调整 |
| 自定义提示 | 针对业务场景定制 Prompt,指导 Dreaming 关注重点 |
| 人工审查 | 利用 Console 的 diff 功能,审查 Dreaming 的修改 |
| 渐进替换 | 确认输出 Memory Store 质量后,再淘汰旧存储 |
6.3 成本优化
Dreaming 的 Token 消耗较高,但已做以下优化:
- 85% 缓存命中率:大部分 Token 消耗来自缓存,实际成本可控
- 异步执行:不阻塞业务,可在低峰期运行
- Batch API 计划:未来可能提供类似 Batch API 的低成本调度方案
- 模型选择:使用
claude-sonnet-4-6代替4-7可降低成本
七、完整提示词速查表
| 编号 | 场景 | 提示词 / 命令 |
|---|---|---|
| 1 | 创建 Memory Store | claude memory-store create --name "workshop-memory" --description "Memory for workshop sessions" |
| 2 | 创建带 Memory 的会话 | claude session create --agent-id <id> --environment-id <id> --memory-store-id <id> --title "test with memory" |
| 3 | 向会话发送信息(自动保存到 Memory) | 昨天我参加了一个关于 CMA 的讲座,关键词包括:multi-agent orchestration、multiple illustration outcomes 和 memory。 |
| 4 | 询问跨会话的信息 | 告诉我昨天 CMA 讲座的内容,以及我认识了谁。 |
| 5 | 创建 Dreaming Job | claude dream create --model "claude-sonnet-4-7" --input-memory-store-id <id> --output-memory-store-id <id> --session-ids <id1>,<id2> |
| 6 | 指导 Dreaming 关注细节 | Please focus on fact-checking these specific details: [具体细节列表]. Make sure to remember these for future reference. |
| 7 | 指导 Dreaming 组织结构 | Please organize the memory files into this specific structure: [期望的目录结构]. I want the memory store to follow this format. |
| 8 | 查询 Dreaming 状态 | claude dream get --dream-id <dream-id> |
| 9 | 列出 Memory Store 文件 | claude memory-store list-files --memory-store-id <id> |
| 10 | 使用优化后的 Memory 创建会话 | claude session create --memory-store-id <output-memory-store-id> |
| 11 | 询问整合后的信息 | 我参加了哪些讲座?资源链接是什么?我标记了哪些重点? |
| 12 | 淘汰旧 Memory Store | claude memory-store retire --memory-store-id <input-id> |
八、常见问题 FAQ
Q1: Memory Store 的数据安全吗?
Memory Store 的数据存储在 Claude 平台,与 Session 容器隔离。你可以完全控制:
- 哪些会话可以访问
- 读写权限(
read-writevsread-only) - 手动编辑和删除记忆文件
Q2: 一个 Memory Store 可以附加到多少个会话?
没有硬性限制。同一个 Memory Store 可以附加到任意数量的会话,实现团队级别的知识共享。
Q3: Dreaming 会修改原始 Memory Store 吗?
不会。Dreaming 是非破坏性的,它会创建全新的输出 Memory Store,原始数据保持不变。
Q4: Dreaming 支持多少个会话?
目前支持 10~100 个会话,未来计划支持更多。建议根据记忆复杂度分批处理。
Q5: 如何降低 Dreaming 的成本?
- 使用
claude-sonnet-4-6代替4-7 - 利用高缓存命中率(85%),重复信息处理成本低
- 关注未来推出的 Batch API 和调度优化
Q6: 可以手动编辑 Dreaming 的输出吗?
可以。输出 Memory Store 和普通 Memory Store 一样,可以通过 Console 或 API 直接编辑。
Q7: Memory Store 和 RAG 有什么区别?
| 维度 | Memory Store | RAG |
|---|---|---|
| 存储方式 | 类文件系统,结构化 | 向量数据库,非结构化 |
| Agent 操作 | Agent 主动读写 | 被动检索 |
| 优化方式 | Dreaming(多 Agent 整理) | 依赖外部索引更新 |
| 可控性 | 高(可手动编辑) | 低(黑盒检索) |
九、总结
Claude Agents 的记忆系统通过Memory Store + Dreaming解决了 Agent "失忆"的核心问题:
| 层级 | 功能 | 解决的问题 |
|---|---|---|
| Session | 单次对话实例 | Agent 运行环境 |
| Memory Store | 跨会话持久化存储 | 信息孤岛问题 |
| Dreaming | 异步记忆优化 | 记忆膨胀、信息质量下降 |
核心收益:
- ✅ Agent 能记住跨会话的信息
- ✅ 记忆自动整理、去重、丰富
- ✅ 检索效率随时间提升而非下降
- ✅ 支持人工审查和干预
核心理念:就像人类需要睡眠来整理记忆一样,Agent 也需要 “Dreaming” 来优化记忆。这不是简单的存储,而是一个持续进化的记忆生态系统。
参考资源
- Claude Agents 官方文档
- Memory Store API 参考
- Dreaming 功能指南
- Workshop 仓库(包含本文所有示例代码)
