传统 AI 助手(ChatGPT、Cursor 等)的记忆能力大多停留在"记住你上次说的话"的层面。Claude Code 的做法完全不同:它将记忆拆分为四个层次,每一层有不同的存储位置、生命周期和管理方式,共同构成一个完整的认知架构。[1]
本报告从七个维度展开:Memory 全景(四层架构总览)、CLAUDE.md 详解(项目指令文件)、Auto Memory 系统(自动记忆与索引管理)、对话历史管理(compact / resume / task)、AutoDream(AI 的 REM 睡眠)、最佳实践、实战案例。[1][2]
Memory 系统全景:四层认知架构
从项目规范到自动整理,覆盖 AI 编程助手的完整记忆链路
Claude Code 的记忆系统由四个层次组成,每一层解决不同的问题。理解这四层的边界和协作方式,是高效使用 Claude Code 的前提。[1]
| 层次 | 名称 | 谁来写 | 存储位置 | 生命周期 | 加载时机 |
|---|---|---|---|---|---|
| L1 | CLAUDE.md | 开发者 | 项目根目录 / ~/.claude/ | 永久(随 Git 提交) | 每次对话开始时 |
| L2 | Auto Memory | Claude 自动 | ~/.claude/projects/*/memory/ | 永久(跨 session) | MEMORY.md 前 200 行启动加载 topic 文件按需读取 |
| L3 | Session Memory | Claude 自动 | 本地对话记录 | 单次 session(可 resume) | 对话过程中 / resume 时注入 |
| L4 | AutoDream | Claude 子代理 | 修改 L2 文件 | 周期性(约 24h / 5+ sessions) | 后台运行,无需手动触发 |
四层架构的设计哲学
这四层并非简单的叠加,而是模仿了人类认知的不同阶段。CLAUDE.md 相当于"入职培训手册"——新员工(新 session)到岗时第一时间阅读;Auto Memory 是"个人工作笔记"——随工作积累自动记录;Session Memory 是"工作台上的便签"——当前任务的临时记忆;AutoDream 是"晚上回家整理笔记"——定期清理、归并、更新。[1][3]
与其他 AI 工具的记忆机制对比
| 特性 | Claude Code | ChatGPT | Cursor |
|---|---|---|---|
| 项目级指令 | CLAUDE.md(多层级、Git 可控) | .cursorrules(单层) | .cursorrules / .cursor/rules |
| 自动记忆 | Auto Memory(结构化 frontmatter、topic 文件) | Memory(key-value 条目) | 无 |
| 记忆整理 | AutoDream(自动去重、合并、时间归一化) | 无(手动管理) | 无 |
| 上下文窗口 | 1M tokens(Opus 4.6) | 128K tokens | 依赖底层模型 |
| 上下文压缩 | 即时 compact(后台持续摘要) | 自动截断 | 手动清理 |
| 跨 session 恢复 | --continue / --resume | 需手动提示 | 重新开始 |
| 记忆持久化 | 文件系统(可 Git 管理) | 云端同步 | 无持久化 |
CLAUDE.md 详解:项目的"宪法"
开发者编写的持久化指令文件,每次对话自动加载
CLAUDE.md 是 Claude Code 记忆系统的基石。它是一个 Markdown 文件,放在项目根目录下,Claude Code 在每次新对话开始时自动读取。你可以把它理解为项目的"宪法"——定义了 AI 在这个项目中应该遵循的所有规则。[2]
多层级 CLAUDE.md 体系
Claude Code 支持在多个位置放置 CLAUDE.md,形成从全局到局部的层级体系。所有层级的内容会被合并加载——更具体的规则在冲突时优先级更高。[2][5]
| 层级 | 路径 | 作用范围 | 典型内容 |
|---|---|---|---|
| 企业级 | 系统目录(组织配置) | 公司所有项目 | 安全策略、代码规范、审批流程 |
| 用户级 | ~/.claude/CLAUDE.md | 当前用户所有项目 | 个人编码风格、通用偏好 |
| 项目级 | ./CLAUDE.md 或 ./.claude/CLAUDE.md | 当前项目 | 架构说明、部署流程、数据库结构 |
| 子目录级 | ./src/api/CLAUDE.md | 特定子模块 | 该模块的 API 规范、测试要求 |
应该写什么 vs 不该写什么
应该写进 CLAUDE.md
- 项目架构概览(技术栈、目录结构)
- 编码规范(命名、测试模式)
- 部署流程(命令、环境变量)
- 数据库结构(表名、字段说明)
- 不可违反的硬规则(如"禁止修改 docs/human/ 目录")
- 路由结构和权限控制
- 版本管理规范
- 外部 API 的使用方式
不该写进 CLAUDE.md
- 临时状态信息(应放 Auto Memory)
- 个人偏好(应放 ~/.claude/CLAUDE.md 或 memory)
- 过于频繁变化的数据(如当前数据库行数)
- 环境变量的值(安全风险)
- 大段代码(代码应在代码文件中)
- 对话历史和临时决策
实战案例:AI Insight 项目的 CLAUDE.md
以 AI Insight(ai-insight.org)项目为例,其 CLAUDE.md 超过 600 行,涵盖了一个生产级 Web 应用的完整上下文。以下是其关键结构片段:[2]
# AI Insight 项目开发规范
## 重要规则
- `docs/human/` 目录下的文件是 Vincent 本人手写的内容,AI 禁止修改
## 当前版本
- v1.6.0 — 资讯解读 + APP + 研报 + 短信切换(2026-03-28)
## 项目架构
ai-insight/
├── app.js # Express 主文件(路由 + 静态数据 + 中间件链)
├── auth.js # Google OAuth 认证
├── db.js # Supabase PostgreSQL 连接(pg Pool,17 表)
├── dashboard.js # 用户 Dashboard 路由
├── views/ # 203 个 EJS 模板
└── public/ # 静态资源
## 设计规范
- **配色**: Tailwind Stone 色系 + 琥珀强调色(#c4956a)
- **导航**: 首页 | 研报 | 播客/访谈 | 活动 | 资讯
## 数据库 (Supabase PostgreSQL, 17 表)
- 连接: `pg` Pool,环境变量 `SUPABASE_DB_URL`
- 表: news, videos, users, api_keys, custom_reports...
这份 CLAUDE.md 的特点是:结构化(清晰的层级标题)、可操作(包含具体的表结构和路由规则)、有边界(明确了"AI 禁止修改"的目录)。这使得每一个新 session 都能立即理解项目全貌。[2]
/init 命令,Claude 会扫描你的代码库并自动生成一份基础的 CLAUDE.md。建议以此为起点,逐步完善。[5]Auto Memory 系统详解:Claude 的自动笔记本
Claude 在工作中自动积累知识,无需你手动记录
如果说 CLAUDE.md 是"你写给 Claude 的指南",那么 Auto Memory 就是"Claude 写给未来自己的笔记"。当你在对话中纠正 Claude 的错误、表达偏好、或做出重要决策时,Claude 会自动判断这些信息是否值得记住,并将其保存到 memory 文件中。[1][3]
存储结构
Auto Memory 的存储位置位于 ~/.claude/projects/{project-path-hash}/memory/ 目录下。该目录包含一个 MEMORY.md 索引文件和多个按主题组织的 topic 文件:[1]
~/.claude/projects/-home-vansin-ai-insight/memory/
├── MEMORY.md # 索引文件(前 200 行启动加载)
├── daily-workflow.md # 日报工作流
├── video-rules.md # 视频制作规则
├── pro-business-status.md # 商业化状态
├── services.md # 外部服务依赖
├── team-report-workflow.md # 团队协作流程
├── sms-login-retrospective.md # SMS 登录复盘
└── ... (20+ topic 文件)
Frontmatter 格式
每个 topic 文件都以 YAML frontmatter 开头,包含三个元数据字段:[1][6]
---
name: daily-workflow
description: 机智流 AI 日报 = 推特资讯版(非 HF 论文日报)
type: feedback
---
五种记忆类型
用户个人偏好和习惯。如编码风格、沟通方式、工具选择。跨项目通用。
示例:用户偏好 TypeScript strict mode
用户纠正 Claude 后的经验教训。Claude 犯了错被纠正时自动记录,避免下次重犯。
示例:视频首帧必须是完整封面,不能有 fade-in
项目级别的状态和决策。如架构选择、商业数据、技术决策的原因。
示例:Pro 会员 20 人/周,需增长策略
参考资料和技术文档摘要。如 API 端点、数据库结构、服务配置清单。
示例:12 个外部服务的配置和环境变量清单
早期版本中用于存储代码片段,现已不推荐使用。代码应放在代码文件中,而非 memory 中。
已在 2026 年初弃用
MEMORY.md 索引:200 行上限的设计
MEMORY.md 充当整个 memory 目录的索引。Claude Code 在每次对话启动时只加载其前 200 行(或 25KB,取较小值),这意味着它不能无限增长。超过 200 行时,Claude 会收到警告并被要求将详细内容拆分到 topic 文件中。[1]
MEMORY.md 的核心职责是"索引",而不是"存储"。以下是 AI Insight 项目的 MEMORY.md 实际结构示例:
# AI Insight 项目记忆
## 商业化
- [pro-business-status.md](pro-business-status.md) — Pro 20人/周,需增长
## 日报工作流
- [daily-workflow.md](daily-workflow.md) — 机智流 AI 日报 = 推特资讯版
## 视频制作规则
- [video-style-preference.md](video-style-preference.md) — Style 2 + Style 3
- [video-rules.md](video-rules.md) — 首帧必须是完整封面
## 环境配置
- Node.js: v20.20.0 (via nvm)
- 部署: `vercel --prod --yes`
- 线上地址: https://ai-insight.org
每一条都是一行索引 + 简短描述,指向更详细的 topic 文件。Claude 在需要某个 topic 的详细信息时,会主动读取对应文件。[1]
实战示例:一个真实的 memory 文件
以下是 AI Insight 项目中 video-rules.md 的完整内容,展示了 feedback 类型记忆的典型结构:
---
name: video-first-frame-rule
description: 视频首帧必须是完整封面,不能有任何 fade-in
type: feedback
---
视频首帧必须是完整的封面图,可以直接用作 B 站/YouTube 封面截图。
**Why:** 用户明确要求"首帧一定要可以直接用为封面"。B 站/YouTube
的封面可以从视频帧截取,第 0 帧如果是空白或半透明就无法使用。
**How to apply:**
- Remotion 视频的第一个场景所有元素在 frame=0 时 opacity=1
- 不做任何 fade-in
- SceneWrapper 的 `skipFadeIn` prop 必须在第一个场景设为 true
注意其结构:结论先行(首帧必须完整)+ 原因(Why:平台截图需求)+ 操作指南(How to apply:具体代码级指导)。这种格式让 Claude 在未来遇到相同场景时能直接应用。[1]