简短的答案
Claude Code 忘记项目上下文是因为每个新会话都是从一个新的上下文窗口开始,CLAUDE.md 被加载为静态规则(而不是记忆),而 --resume 存在已记录的错误,导致先前的对话上下文未能完全恢复。自动记忆捕获短笔记,而不是记录。一个持久的项目记忆层可以在每次运行时保持完整的上下文可加载。
为什么 Claude Code 会忘记项目上下文
Claude Code 是围绕每个会话都是一个新的代理的理念构建的。三个机制驱动了遗忘:
1. 每个会话都以一个空的上下文窗口开始。 Claude Code 每次运行都从一个干净的状态开始,然后加载 CLAUDE.md、任何引用的文件和你的提示。窗口本身——通常在 Claude Sonnet 4.5/4.6/4.7 上为 200K 令牌——是慷慨的,但每个会话都是独立的。长时间的代理运行读取许多文件时,会比你预期的更快填满它。
2. `CLAUDE.md` 是规则,而不是记忆。 Anthropic 自己的文档将 CLAUDE.md 描述为代理在会话开始时读取的静态入职文件。它非常适合“使用 pnpm,使用 Vitest 编写测试,永远不要编辑 /legacy/*”。它不是一个记录存储。决策背后的理由不属于这里,过去会话的实质也不在这里。
3. `--continue` 和 `--resume` 存在已知的上下文丢失问题。 一个广泛讨论的 GitHub 问题(anthropics/claude-code #43696)报告说,恢复的会话可以像新对话一样重新开始,丢失累积的上下文。即使恢复有效,会话之间也无法相互查看——没有跨会话搜索。
结果是:规则保留,代理状态消失。
当 Claude Code 忘记项目上下文时你会失去什么
每次新的 claude 调用都会让你重新定位:
- 决策背后的推理消失。 “我们选择将遗留的
users_v1表保持为只读,因为迁移成本”在昨天的会话中是存在的。今天的 Claude Code 建议写入它。 - 多会话工作失去线索。 跨越三个会话的重构每次都需要在代理面前展示计划。使用
CLAUDE.md你可以固定一段文字;你无法固定一个包含理由的 12 步计划。 - 你在重新加载相同文件时消耗令牌。 每个会话都会重新读取相同的规范,重新发现相同的约定,重新询问相同的澄清问题。
Claude Code 的内置解决方法(以及每个方法的不足之处)
Claude Code 提供了三个旨在持久性的功能。每个功能都有帮助,但没有一个能替代真正的项目记忆。
`CLAUDE.md` 是稳定规则和入职的正确工具。它在每个会话中加载。Anthropic 的官方指导是将持久的指令放在那里,而不是在早期消息中。反过来:CLAUDE.md 最好保持简短——它与其他所有内容竞争上下文空间——这使得它不适合不断发展的项目历史。
自动记忆 让 Claude 在会话期间保存自己的笔记,按用户偏好、反馈、项目上下文和参考指针进行组织。适用于“用户偏好简洁的差异”。不适合完整的记录或决策日志。
`/resume` 和 `--continue` 旨在恢复先前的会话并保持完整的上下文。实际上,用户报告(问题 #43696,2026 年 4 月)恢复的会话可能会空白,即使它们有效,会话之间也无法相互查看。
你可以阅读 官方 Claude Code 文档 以获取完整的功能集。
对于稳定规则,原生工具是可靠的。对于跨会话和工具的项目上下文,它们则显得不足。
Claude Code 的内置记忆不足之处
更深层次的问题是:大多数运行 Claude Code 的团队也使用 Cursor 进行快速迭代,使用 Cascade 进行紧密的 IDE 工作流,以及使用 ChatGPT 进行设计讨论。CLAUDE.md 不会传递到它们中的任何一个。每个工具都有自己的一份项目规则和孤立的历史。上下文在工具之间碎片化,项目受到影响。
记忆需要跟随项目,而不是编辑器。
MemoryLake 如何修复 Claude Code 忘记项目上下文的问题
MemoryLake 是一个跨模型的记忆层,通过原生 MCP 支持连接到 Claude Code。你不再依赖静态的 CLAUDE.md,而是为项目提供自己的记忆,Claude Code 在每个会话中从中读取。
- 每个项目的记忆,而不是每个文件的记忆。 规范、ADR、过去的
claude记录和决策日志都存储在项目中。Claude Code 根据每次的相关性获取内容,而不是试图将所有内容放入CLAUDE.md。 - 比原始提示多 10,000 倍的上下文。 MemoryLake 的检索引擎从数十亿个项目记忆的令牌中读取,并仅返回重要的部分。你不再在重新加载相同规范时消耗令牌。
- 可移植到其他 AI。 相同的项目记忆可以在 Cursor、Windsurf、Claude Desktop、ChatGPT 和 Gemini 中使用。在项目中间切换工具时,你的上下文会随之而来。
MemoryLake 在 LoCoMo 长上下文基准测试中得分 94.03%——截至 2026 年的最高已发布结果——具有毫秒级检索和 AES-256 端到端加密。
在 3 个步骤中将 MemoryLake 连接到 Claude Code
- 创建项目并加载你的上下文。 登录 MemoryLake,打开项目管理,点击创建项目,并根据你的代码库命名(例如,“acme-api — Claude Code 项目”)。通过文档驱动上传你的规范、ADR 和过去的
claude记录(支持 PDF、Markdown、Word、Excel、图像)。在记忆标签中添加简短的常驻指令——保持CLAUDE.md精简,让 MemoryLake 保存长格式的上下文。 - 生成 MCP 服务器端点。 在你的项目中打开 MCP 服务器标签,点击添加 MCP 服务器,命名为“Claude Code 集成”,然后点击生成。MemoryLake 返回一个 API 密钥 ID、密钥和端点 URL。立即复制密钥——它只显示一次。
- 将服务器添加到 Claude Code 的 MCP 配置中。 运行
claude mcp add memorylake --transport http <endpoint-url>,并在提示时添加 Bearer 令牌。(如果你更喜欢,也可以直接编辑~/.claude.json——注意尾随逗号;JSON 不允许它们。)重启claude。代理现在有一个memorylake工具,可以在每个会话开始时调用,以加载项目上下文。