aaihubhub
Claude Code 小白进阶课:从第一次对话到可靠协作 · 第 5 课 / 共 20 课 ↗ AI 教程

05|Memory 入门:让上下文跨会话保留下来

理解记忆层级、初始化命令和跨会话上下文的生命周期。

kimi
LESSON BRIEFING05 / 20

理解记忆层级、初始化命令和跨会话上下文的生命周期。

上下文像会议桌面:摊得下的材料有限。把所有文件都倒上去不会更聪明,只会让关键证据被淹没。高质量上下文是及时、相关、可验证的信息组合。

向 Claude Code 询问项目记忆

本课交付物

把同一需求分别写成“倾倒全部背景”和“目标+相关文件+约束+验收”两个版本,比较计划准确度、无关修改数和需要澄清的次数。


概览

Memory 让 Claude Code 在不同会话之间保留上下文。你可以把团队规范、项目规则、个人偏好和目录级约束写进 CLAUDE.md,让 Claude 在合适的时候自动加载。

Memory 命令速查

命令 作用
/init 初始化项目级 CLAUDE.md
/memory 打开并编辑记忆文件
# 快速把当前规则写入 memory

快速上手:初始化 Memory

使用 /init

在项目目录中运行:

/init

Claude 会根据当前项目生成一个 CLAUDE.md,通常包含类似如下结构:

# 项目配置
## 项目概览
## 开发规范

使用 # 快速更新记忆

当你想把一句规则写入 memory 时,可以直接在输入前加 #

# 这个项目始终使用 TypeScript 严格模式
# 优先使用 async/await,而不是 promise 链
# 每次提交前都运行 npm test
# 文件名统一使用 kebab-case

这会把规则加入当前会话能感知到的记忆中。

使用 /memory

/memory 会打开记忆编辑器,让你在不同范围之间切换:

  1. 受管策略记忆
  2. 项目记忆(./CLAUDE.md
  3. 用户记忆(~/.claude/CLAUDE.md
  4. 本地项目记忆

适合你把长期规则、项目规范和个人偏好分层管理。

Memory 架构

Claude Code 的记忆系统通常有以下层级:

层级 作用范围 典型内容
受管策略 组织级 合规、安全、统一流程
项目记忆 单个项目 架构、编码标准、工作流
目录记忆 子目录 模块约束、局部规范
用户记忆 单个用户 个人偏好、默认设置

记忆层级

Claude 会按更接近当前上下文的规则优先使用更具体的 memory。一般来说:

  • 组织级规则优先于普通偏好
  • 项目规则优先于个人偏好
  • 目录级规则优先于项目级通用规则

排除规则

如果某些 CLAUDE.md 不应该被自动加载,可以通过 claudeMdExcludes 之类的设置排除。

配置文件层级

项目设置、用户设置和企业托管设置会共同影响 memory 的加载方式。你可以把它理解为:

  1. 组织策略
  2. 项目设置
  3. 本地设置
  4. 临时会话输入

模块化规则系统

Memory 不一定要写成一个巨大文件。你可以把规则拆成多个目录文件,再按路径组织。

通过 YAML frontmatter 设置路径规则

# API Development Rules

子目录与符号链接

你可以用子目录和 symlink 把局部规则复用到多个项目区域。

Memory 位置表

常见位置包括:

  • 项目根目录的 CLAUDE.md
  • 用户目录的 ~/.claude/CLAUDE.md
  • 子目录的 CLAUDE.md

Memory 更新生命周期

一般流程是:

  1. 创建或编辑 CLAUDE.md
  2. Claude 重新加载
  3. 新规则在后续会话中生效

Auto Memory

Auto memory 让 Claude 根据当前目录自动寻找并加载合适的记忆文件。

工作方式

Claude 会根据当前工作目录、父目录和已配置路径,逐层查找相关 memory。

目录结构

project/
├── CLAUDE.md
├── src/
│   ├── CLAUDE.md
│   └── api/
│       └── CLAUDE.md

版本要求

某些 auto memory 行为依赖较新的 Claude Code 版本。

自定义 auto memory 目录

如果默认目录不适合你的项目,可以在设置中指定新的 memory 路径。

worktree 和仓库共享

在 worktree、monorepo 或多人协作场景中,auto memory 可以帮助保持规则一致。

Subagent 记忆

Subagents 也可以拥有自己的记忆范围,用于在各自职责内保持一致性。

控制 auto memory

# 当前会话禁用 auto memory

# 显式开启 auto memory

通过 --add-dir 添加额外目录

你可以用 --add-dir 把额外目录也加入 Claude 的可见范围,适合多目录协作。

实战示例

示例 1:项目记忆结构

# 项目配置
## 项目概览
## 架构

---

## 本站实战工作台

## 上下文不是越多越好

想象一张会议桌:系统规则、用户目标、仓库文件、命令输出和之前的对话都要争夺桌面。把整个仓库一次性倒上去,会让关键约束淹没在旧日志和无关代码里。上下文工程的目标不是“装满”,而是让当前决定所需的证据恰好在场。

相关性还会随步骤变化。规划时需要架构与接口,修复 CSS 时需要组件和设计 token,验证时需要测试命令与浏览器状态。昨天正确的上下文,今天可能只是噪声。

## 四层上下文清单

开始任务时按层准备:

- **恒定规则**:项目说明、安全边界、语言与设计约定。
- **任务契约**:目标、范围、禁止项、验收。
- **现场证据**:相关文件片段、Git 状态、错误输出。
- **阶段产物**:已确认事实、计划、差异、测试结果。

恒定规则应该短而稳定;现场证据应按需读取;阶段产物要压缩成可复用结论。不要反复粘贴整段终端日志。

## 做一次 A/B 上下文实验

选择同一小需求,创建两个新会话。A 会话粘贴长篇项目历史、多个无关文件和完整日志;B 会话只提供任务卡,并允许 Agent 先搜索再读取相关文件。

记录三项数据:计划中错误假设数、意外触碰文件数、需要返工的轮次。通常 B 不一定第一次回答更长,却更容易把每条结论接回证据。

## 如何压缩而不丢事实

当会话变长,创建一份阶段摘要:已完成、已证实、仍未知、当前改动、下一验收。摘要不要写“研究了很多文件”,而写“路由由 middleware/locale.global.ts 加前缀;无前缀请求 302 到中文;尚未验证查询参数”。

好的摘要保留决定和来源,删除探索过程中的死路。压缩后随机抽两条事实回到文件核对,防止摘要把推断固化成事实。

## 跑偏时不要继续堆提示

如果 Agent 开始重复旧结论或修改无关区域,暂停行动。重新声明当前唯一目标,给出最新 Git 状态和相关文件,把已失效计划明确标记为废弃。必要时新开会话,用阶段摘要恢复,而不是在混乱上下文上继续补丁。

“记住之前所有内容”不是可靠策略。可恢复的外部产物——任务卡、计划文件、测试输出、提交——比聊天记忆更稳定。

## 来源与时效

软件文档会变化。上下文中的命令必须带来源与版本日期;遇到 Claude Code 当前功能,以官方文档和本地 --help 为准。模型记忆、旧博客和截图只能用来提出线索,不能直接作为现在的事实。

## 本课练习

为一个跨前后端的双语缺陷制作 context-pack.md,只保留:一句目标、五条约束、相关文件地图、两个已知错误输出、验证命令。交给新会话,让它先指出缺失信息再计划。完成后检查它读取了多少无关文件,以及是否能解释每个读取动作。

## 完成标准

你能区分规则、契约、证据和阶段产物;能在长任务中写可核验摘要;能在跑偏时重建上下文;能说明为什么某份信息此刻相关。上下文不是模型的行李箱,而是当前决策的工作台。