Skip to content
Built 26/04/17 09:31commit 4c9ce40

中文 | English

Mechanics

Claude Code Auto Dream 会整合记忆文件、修剪过时笔记并合并洞见。它就像给你的 AI agent 做一次 REM 睡眠。

Anthropic 悄悄为 Claude Code 发布了一项他们尚未正式公告的功能。它叫 Auto Dream,它解决了自动记忆最大的一个问题:随着时间推移而发生的衰减。

问题在于: Auto memory 曾是一次突破。Claude 终于会为你的项目自己记笔记了。但在 20 多次 session 之后,这些笔记就会变得一团糟。相互矛盾的条目不断堆积。像“昨天”这样的相对日期会失去意义。过时的调试方案引用的文件已经不复存在。原本应该帮助 Claude 记住事情的笔记本,反而变成了会让它困惑的噪声。

Quick Win: 检查你的环境里是否启用了 Auto Dream。在任意 Claude Code session 内运行 /memory。查看选择器里是否有 “Auto-dream: on”。如果你看到了,说明 Claude 已经在 session 之间于后台整合你的 memory files。

text
# Check your current memory state
/memory

# Look for:
# Auto-dream: on

如果 Auto Dream 已经可用并已打开,那你就设置好了。Claude 会定期审查项目中的每一个 memory file,修剪过时内容、解决矛盾,并重新组织其余内容。如果你还没看到这个开关,继续往下读。你也可以手动触发它。

为什么叫 “Dreaming”?REM 睡眠的类比

这个命名是刻意的,而且这个隐喻出人意料地准确。

白天时,你的大脑会吸收原始感官输入,并把它们存储成短期记忆。到了 REM 睡眠阶段,你的大脑会重放当天发生的事情,强化重要连接,丢弃无关内容,并把一切整理成长时记忆。缺乏足够 REM 睡眠的人会难以形成持久记忆。信息被输入了,但从未完成整合。

Auto memory 就像 Claude 的白天大脑。它在工作时做笔记:调试模式、构建命令、架构决策、你的偏好。每个 session 都会增加更多条目。但如果没有 consolidation 步骤,这些笔记就会像未经整合的短期记忆一样不断积累。矛盾会持续存在。过时条目会滞留。信噪比会随着每个 session 的增加而下降。

Auto Dream 就是 REM 睡眠周期。它会回看 Auto Memory 收集到的内容,强化仍然相关的部分,移除已经过时的部分,并把其余内容重新整理成干净、有索引的主题文件。没有 Auto Dream 的 Claude Code,本质上就像睡眠不足。它只是一味增加随机笔记,却从不清理。

Auto Dream 的四个阶段

当 Auto Dream 运行时,它会遵循一个结构化的四阶段流程。每个阶段都有明确目的,它们共同把零散的 session 笔记转化为有组织的项目知识。

阶段 1:定向

Claude 会读取当前 memory 目录,先盘点现状。它会打开 MEMORY.md(索引文件),扫描主题文件列表,并建立当前记忆状态的整体心智地图。

这个阶段要回答的是:“我已经知道什么,这些内容是怎么组织的?”

阶段 2:收集信号

在这个阶段,Auto Dream 会搜索你的 session transcripts(Claude 在本地为每个 session 存储的 JSONL 文件)。它不会逐字逐句从头到尾阅读每份 transcript。对于拥有数百次 session 的项目,这样做成本会高得无法接受。相反,它会针对特定模式做窄搜索:

  • 用户纠正: 你告诉 Claude 它错了,或要求它改变方向的时刻
  • 显式保存: 你说出“remember this”或“save to memory”的时刻
  • 重复主题: 在多个 session 中反复出现的模式
  • 重要决策: 架构选择、工具选择、工作流变化

这种窄搜索是刻意设计的。彻底阅读 500 多个 session transcript 会消耗大量 token 和时间,而收益却会快速递减。用类似 grep 的定向搜索,可以高效提取最高价值的信号。

阶段 3:整合

这是核心阶段。Claude 会把新信息合并进现有主题文件,并执行关键维护动作:

  • 把相对日期改为绝对日期。 “昨天我们决定使用 Redis” 会变成 “On 2026-03-15 we decided to use Redis.” 这样记忆随着时间推移也仍然可解释。
  • 删除被推翻的事实。 如果你三周前从 Express 切换到了 Fastify,那么旧的 “API uses Express” 条目就会被移除。
  • 移除过时记忆。 关于某个已在重构中删除文件的调试笔记已经没有用途,应被修剪。
  • 合并重叠条目。 如果三个不同 session 都记录了同一个构建命令怪癖,它们会整合成一条干净记录。

阶段 4:修剪并建立索引

最后一个阶段聚焦于 MEMORY.md 索引文件。之所以把它控制在 200 行以内,是因为那是 启动时会被加载 的阈值。第 4 阶段会更新 MEMORY.md,使其准确反映所有主题文件的当前状态:

  • 移除指向已不存在主题文件的指针
  • 添加在整合过程中创建的新主题文件链接
  • 解决索引与实际文件内容之间的矛盾
  • 按相关性和新近性重排条目

在整合期间不需要变更的文件会保持不动。Auto Dream 不会在每次运行时重写一切,它的处理是外科手术式的。

完整的系统提示

下面是驱动 Auto Dream 的真实 system prompt。当 dream cycle 启动时,Claude 收到的就是这个提示:

text
# Dream: Memory Consolidation

You are performing a dream - a reflective pass over your memory files.
Synthesize what you've learned recently into durable, well-organized
memories so that future sessions can orient quickly.

Memory directory: `~/.claude/projects/<project>/memory/`
This directory already exists - write to it directly with the Write tool
(do not run mkdir or check for its existence).

Session transcripts: `~/.claude/projects/<project>/`
(large JSONL files - grep narrowly, don't read whole files)

## Phase 1 - Orient

- `ls` the memory directory to see what already exists
- Read `MEMORY.md` to understand the current index
- Skim existing topic files so you improve them rather than creating
  duplicates
- If `logs/` or `sessions/` subdirectories exist (assistant-mode layout),
  review recent entries there

## Phase 2 - Gather recent signal

Look for new information worth persisting. Sources in rough priority order:

1. **Daily logs** (`logs/YYYY/MM/YYYY-MM-DD.md`) if present - these are
   the append-only stream
2. **Existing memories that drifted** - facts that contradict something
   you see in the codebase now
3. **Transcript search** - if you need specific context (e.g., "what was
   the error message from yesterday's build failure?"), grep the JSONL
   transcripts for narrow terms:
   `grep -rn "<narrow term>" <project-transcripts>/ --include="*.jsonl"
| tail -50`

Don't exhaustively read transcripts. Look only for things you already
suspect matter.

## Phase 3 - Consolidate

For each thing worth remembering, write or update a memory file at the
top level of the memory directory. Use the memory file format and type
conventions from your system prompt's auto-memory section - it's the
source of truth for what to save, how to structure it, and what NOT
to save.

Focus on:

- Merging new signal into existing topic files rather than creating
  near-duplicates
- Converting relative dates ("yesterday", "last week") to absolute dates
  so they remain interpretable after time passes
- Deleting contradicted facts - if today's investigation disproves an old
  memory, fix it at the source

## Phase 4 - Prune and index

Update `MEMORY.md` so it stays under 200 lines. It's an **index**, not a
dump - link to memory files with one-line descriptions. Never write memory
content directly into it.

- Remove pointers to memories that are now stale, wrong, or superseded
- Demote verbose entries: keep the gist in the index, move the detail into
  the topic file
- Add pointers to newly important memories
- Resolve contradictions - if two files disagree, fix the wrong one

---

Return a brief summary of what you consolidated, updated, or pruned. If
nothing changed (memories are already tight), say so.

这段提示里有几点值得注意。它明确要求 Claude 做窄 grep,而不是去读完整 transcripts。它强制 MEMORY.md 保持在 200 行以内。它还指示 Claude 要在源头解决矛盾,而不是只是把矛盾标出来。这个提示对记忆应如何组织有着鲜明立场,这也是为什么输出会持续保持整洁。

Auto Dream 何时运行

只有在以下两个条件同时成立时,整合周期才会触发:

  1. 自上次整合以来已经过去 24 小时
  2. 自上次整合以来已经发生了 5 个以上的 sessions

两个条件缺一不可。如果你在两天内只进行了一次很长的 session,Auto Dream 不会触发(session 数不够)。如果你在两小时内跑了 10 次很快的 session,它也不会触发(时间不够)。这个双重门槛避免了对轻度使用项目进行不必要的整合,同时保证活跃项目能得到定期清理。

为了给这个整合的重量级别一个参照:在一个实际观察到的案例里,Auto Dream 在大约 8 到 9 分钟里整合了 913 个 sessions 的记忆。这不算轻量,但因为它在后台运行,你几乎不会感知到这个成本。

安全保证

Auto Dream 运行时带有明确约束,用来防止事故发生。

对项目代码是只读模式。 在 dream cycle 期间,Claude 只能写入 memory files。它不能修改你的源代码、配置、测试或任何其他项目文件。整个 dream 过程被沙箱限制在 memory 目录内。

锁文件防止并发运行。 如果同一个项目同时打开了两个 Claude Code 实例,只有一个可以运行 Auto Dream。锁文件保证不会有两个整合进程同时操作,避免你的 memory files 出现合并冲突。

后台执行。 你可以在 Auto Dream 运行时继续在 Claude Code 里工作。它不会阻塞你的 session,也不要求你等待。整合发生在一个独立进程中。

如何手动触发一次 Dream

你不必等自动触发。如果你知道 memory files 需要清理(例如在一次大重构之后),你可以强制触发一次整合。

/dream 命令已经存在,但还没有向所有人推出。在那之前,你可以直接告诉 Claude 来手动触发:

text
"dream"
"auto dream"
"consolidate my memory files"

Claude 会识别这个意图,并执行同样的四阶段流程。这在项目发生大变化之后尤其有用,因为你可能希望立刻得到干净的 memory,而不是等到下一次自动周期。

前后对比:整合前后长什么样

下面是一个典型 memory 目录在 Auto Dream 运行前后的样子。

之前(混乱,30+ 次 session 的堆积)

text
~/.claude/projects/<project>/memory/
├── MEMORY.md              # 280 lines, over the 200-line limit
├── debugging.md           # Contains 3 contradictory entries about API errors
├── api-conventions.md     # References Express (switched to Fastify 2 weeks ago)
├── random-notes.md        # Mix of stale and current info
├── build-commands.md      # "Yesterday" used 6 times with no dates
└── user-preferences.md    # Duplicates entries from MEMORY.md

之后(完成整合)

text
~/.claude/projects/<project>/memory/
├── MEMORY.md              # 142 lines, clean index with links to topic files
├── debugging.md           # Deduplicated, only current solutions
├── api-conventions.md     # Updated to reflect Fastify migration
├── build-commands.md      # All dates absolute, no duplicates
└── user-preferences.md    # Merged with relevant MEMORY.md entries

random-notes.md 文件消失了。它的内容要么被合并进相关主题文件,要么因为过时而被修剪。MEMORY.md 从 280 行降到 142 行,重新回到了 200 行的启动阈值以内。矛盾被解决了。相对日期被转换了。

Auto Memory 与 Auto Dream:同一系统的两层

这两个功能是互补的,而不是竞争的。你可以把它们看成同一套记忆系统里的采集层和维护层。

维度Auto MemoryAuto Dream
角色收集新信息整合已有信息
运行时机每次 session 期间周期性运行(24h + 5 sessions)
实际行为写入关于发现模式的笔记修剪、合并并重新组织笔记
触发方式自动、持续自动或手动
输出memory files 中的新条目清理并重组后的 memory files
跳过风险错过有价值的信息记忆质量会随时间下降

没有 Auto Dream 的 Auto Memory,就像一个只会记笔记、却从不整理笔记本的人。没有 Auto Memory 的 Auto Dream,则根本没有可整合的素材。你需要两者都在运行。

四种记忆系统:完整图景

有了 Auto Dream,Claude Code 现在拥有四种不同的记忆机制。下面是在我们此前 auto memory 深入分析 的比较基础上,它们是如何彼此配合的:

维度CLAUDE.mdAuto MemorySession MemoryAuto Dream
由谁写入Claude(每个 session)Claude(自动)Claude(周期性)
用途指令与规则项目模式与经验对话摘要记忆整合
运行时机你手动编辑每次 session 期间后台,每约 5K tokens每 24h + 5 sessions
作用范围项目级或全局项目级单个 session项目级
启动时是否加载整个文件MEMORY.md 的前 200 行相关的过去 sessions不适用(在 session 之间运行)
存储位置./CLAUDE.md~/.claude/projects/<project>/memory/~/.claude/projects/<project>/<session>/session-memory/与 Auto Memory 相同
最适合标准、架构、命令构建模式、调试、偏好工作 session 之间的连续性保持记忆干净且准确
类比说明手册白天记笔记短期对话回忆REM 睡眠整合

最强的组合是四者全部使用。CLAUDE.md 提供由你控制的权威规则。Auto Memory 记录 Claude 在工作中学到的内容。Session Memory 维持不同工作 session 之间的对话连续性。Auto Dream 则让这些累积知识保持干净、最新且有组织。

实用建议

对大多数项目,让它自动运行即可。 默认触发条件(24h + 5 sessions)对活跃开发来说很合适。你不需要盯着它。

在重大重构后强制做一次 dream。 如果你重命名了半个代码库、迁移了框架,或者改了 API 结构,就手动触发一次 dream cycle。在整合前,旧的 memory 条目带来的困惑会多于清晰。

偶尔检查一下输出。 在 dream cycle 运行后,浏览一下你的 MEMORY.md。Auto Dream 很强,但并不完美。你可能会发现某些整合决策并不认同。文件本身就是普通 markdown,可以随意编辑。

把它和 context management 实践结合使用。 Auto Dream 能保持 memory files 干净,但你仍然需要管理活跃 session 的上下文。干净的 memory files 意味着 Claude 在启动时加载的噪声更少,也就给真实工作在 context window 里腾出更多空间。

下一步

  • 如果你还没有设置 CLAUDE.md,先把它设起来。Auto Dream 会整合 Auto Memory,但 CLAUDE.md 仍然是优先级最高的事实来源。
  • 理解 auto memory,看看 Claude 在 session 期间到底会捕获什么,这正是 Auto Dream 处理的原材料。
  • 了解 Session Memory,理解工作 session 之间的对话连续性。
  • 阅读 context engineering,理解所有这些记忆系统如何组成一套有意识的上下文策略。
  • 查看 Claude Code changelog,了解记忆系统的最新更新,包括 Auto Dream 何时向你的计划层级推出。
  • 如果你刚开始接触 Claude Code,请先按 installation guide 在 macOS、Windows 或 Linux 上完成安装,再去配置记忆系统。

Auto Dream 这个功能,把 Claude 的记忆从一堆不断增长的笔记,变成了一个会被主动维护的知识库。Auto Memory 捕获原始材料,Auto Dream 把它塑造成真正有用的东西。结果就是,Claude 不只是随着时间推移“记住得更多”,而是“记得更好”。Previous

[

Auto Memory

](https://claudefa.st/blog/guide/mechanics/auto-memory)[

Next

Output Formatting

](https://claudefa.st/blog/guide/mechanics/output-formatting)