Claude Code 的每个会话都从全新的上下文窗口开始。你昨天解释过的东西:测试命令、从不碰的文件夹、你喜欢的提交信息写法,都会消失,除非有什么东西把它们带过去。Claude Code 有两种内置办法,而一旦你运行不止一个 agent,还会冒出第三个问题。本文三个都讲。
简短版
| CLAUDE.md 文件 | 自动记忆 | |
|---|---|---|
| 谁来写 | 你 | Claude |
| 内容 | 指令和规则 | 学到的经验和模式 |
| 范围 | 项目、用户或组织 | 每个仓库,各 worktree 共用 |
| 加载 | 每个会话 | 每个会话(前 200 行或 25KB) |
来源:Claude Code 的记忆文档,2026 年 10 月 9 日读取。两者都在每次对话开始时加载,Claude 把两者都当作上下文,而不是强制配置。
三列:新会话从全新的上下文窗口开始;CLAUDE.md 由你写、每个会话加载;自动记忆由 Claude 写、每个会话加载前 200 行或 25KB
哪些东西会带进新会话(示意图)。
1. CLAUDE.md:你想让 Claude 一直知道的事
CLAUDE.md 是一个写指令的 Markdown 文件。把你本来要反复说的东西放进去:怎么构建和测试、命名规范、禁区文件夹。
文档里要留意的几点:
- 保持简短。 目标是每个文件不超过 200 行。更长的文件占用更多上下文,遵循度也会下降。只对部分代码有用的指令,放进
.claude/rules/里按路径限定的规则,它们只在 Claude 处理匹配的文件时才加载。 - 导入能整理,不能瘦身。 CLAUDE.md 可以用
@path/to/file导入其他文件,但被导入的文件也在启动时加载,占用的上下文一样多。 - 要具体。 指令越具体、越简洁,Claude 遵循得越稳定。
2. 自动记忆:Claude 从你这里学到的
自动记忆是 Claude 根据你的纠正和偏好自己写的笔记。每个项目有一个目录 ~/.claude/projects/<project>/memory/,里面有一个 MEMORY.md 索引和每个主题一个文件。
- 只在本机。 同一 git 仓库的所有 worktree 和子目录共用一个自动记忆目录。这些文件不会在不同机器或云环境之间共享。
- 索引有上限。 每次对话开始时,加载
MEMORY.md的前 200 行或前 25KB,以先到者为准。超出的部分在会话开始时不会加载。每条写一行,细节放进主题文件。 - 会一直保留。 旧的会话记录在保留期过后会被清理,但记忆文件不在清理范围内,直到你或 Claude 编辑或删除它们。
- 你可以查看和修改。 这些文件是纯 Markdown。运行
/memory可以列出你的 CLAUDE.md 和记忆文件、打开自动记忆文件夹,或开关自动记忆。
四步:你纠正 Claude;Claude 保存笔记,每个主题一个文件;MEMORY.md 是索引,每条一行;新会话加载索引的前 200 行或 25KB
自动记忆放在哪,加载什么(示意图)。
一个可以先用起来的设置
- 在项目根目录写一个简短的 CLAUDE.md,放进你重复最多的五件事:构建命令、测试命令、规范、禁区文件夹、你希望怎么汇报工作。
- 运行
/memory,看 Claude Code 列出了哪些文件。你的 CLAUDE.md 应该在列表里。 - 确认自动记忆是开着的。
/memory的开关会显示状态。如果是关的,就打开,除非某个项目设置是有意关掉它的。 - 用平常的话纠正 Claude 一次。 例如:“这个仓库里我们用
check脚本跑测试,不用test。”然后去记忆文件夹里找保存下来的笔记。 - 一周后修剪。 打开
MEMORY.md,删掉过时的行,合并重复的。索引保持简短,才能完整加载。
要记住的规则
- 指令写进 CLAUDE.md,观察交给自动记忆。 如果你会把它写成规则,就自己写。
- 两者都不是护栏。 如果某件事绝对不能发生,别靠记忆文件。文档指向 PreToolUse hook,它能不管 Claude 怎么决定都拦住某个操作。
- 除非你提交,否则不会和别人共享。 项目的 CLAUDE.md 可以随仓库一起提交。自动记忆留在你的机器上。
当你运行一支 agent 团队
上面两种机制假设一个人同一时间只和一个 Claude Code 会话合作。一旦你运行多个 agent,有两件事会变:每个 agent 应该有自己的笔记,而且有些知识属于整个项目。
我们做的开源工具 Crewly,用 agent 调用的两个技能来处理:
remember保存一条笔记。范围要么是agent(只属于那个 agent),要么是project(项目里所有 agent 共享),类别说明它是哪种笔记:事实、模式、坑,或决策。recall按问题搜索保存的笔记,也可以限定在某个项目里。- 取代旧笔记。 当一个决策取代了更早的决策,新笔记可以用
--supersedes指向旧的,旧的会被标记为已取代,agent 不再把它当作当前答案。
记忆保存在你的机器上:agent 的记忆在 ~/.crewly/ 下,项目的记忆在项目自己的 .crewly/ 文件夹里。每个 agent 的启动流程会回忆它保存过的东西,所以重启后的 agent 不用从零开始。
它不做的事:它不替代 CLAUDE.md。Claude Code 仍会在每个 agent 的会话里读取它自己的 CLAUDE.md。Crewly 的笔记用于团队在工作中学到的东西,比如周二做的一个决策,周四另一个 agent 要用。
两列:单独用 Claude Code 是一个人一个会话,CLAUDE.md 和自动记忆在你的机器上;Crewly 多个 agent 有 remember、recall 和 supersedes,保存在你的机器上
一个会话,对比一支团队(示意图)。
试用 Crewly:请先安装 Node.js 22 或更新版本(nodejs.org 的安装包,或 Homebrew / 系统包管理器),再运行:
curl -fsSL https://crewlyai.com/install.sh | bash
然后打开一个新的终端,运行:
crewly start
想用 npm?如果你的 Node 来自 Homebrew 或 nodejs.org 安装包,npm install -g crewly 也可以。
完整的团队搭建见在 Claude Code 里同时运行多个 agent 的 4 种方法。
常见问题
Claude Code 会在会话之间记住东西吗?
每个会话都从全新的上下文窗口开始,但有两种机制把知识带过去:CLAUDE.md 文件,保存你写的指令;自动记忆,保存 Claude 自己写的笔记。两者都在每次对话开始时加载。
Claude Code 的自动记忆存在哪里?
在 ~/.claude/projects/<project>/memory/,里面有一个 MEMORY.md 索引和每个主题一个文件。它只在本机:同一 git 仓库的所有 worktree 共用,不会在不同机器之间共享。
MEMORY.md 能有多大?
每次对话开始时,加载前 200 行或前 25KB,以先到者为准。超出的部分在会话开始时不会加载,所以每条记忆写一行,细节放进主题文件。
怎么关掉自动记忆?
在会话里打开 /memory,用自动记忆开关,它会把 autoMemoryEnabled 保存到你的用户设置里。只想对某个项目关闭,就在该项目的设置里把 autoMemoryEnabled 设为 false。
CLAUDE.md 是硬性规则吗?
不是。Claude 把 CLAUDE.md 和自动记忆当作上下文,而不是强制配置。想不管 Claude 怎么决定都拦住某个操作,请改用 PreToolUse hook。
来源
Claude Code 的事实:How Claude remembers your project,2026 年 10 月 9 日读取。Crewly 的记忆:Crewly 仓库中的 remember 和 recall 技能定义、入门指南和 agent 启动恢复提示,2026 年 10 月 9 日核对。