告别每次重聊架构!用三档记忆系统让 Claude 记住你项目的真实进度
你有没有过这种体验?
早上打开 Claude Code,第一件事不是写代码,而是花 15 分钟给它“重讲一遍”:
– “我们用的是 Next.js + Prisma”
– “订单表不加软删除,因为查询太复杂”
– “Webhook 签名验证还没写,就卡在这儿了”
这不是你的错——是 Claude 的「上下文压缩」在悄悄吃掉你的记忆。
它每压缩一次(compaction),就清空一次对话中的“工作记忆”。而真实开发中,一个任务常要跨好几天、好几次会话才能做完。没保存的决策、没记录的思路、没同步的状态……全丢了。
这不是 bug,是物理限制:大模型的上下文窗口有限,压缩不可避免。
真正的问题是:没有一套轻量、可靠、开发者自己掌控的“外挂记忆”。
❌ CLAUDE.md 为什么失败?
很多人第一反应是建个 CLAUDE.md,把所有东西塞进去:架构、规范、当前任务、昨天的讨论……
结果呢?
– 文件越来越长(400 行+)
– 每次启动都硬加载全部内容 → 浪费 token,拖慢响应
– 静态规则(如“永远用 Prisma”)和临时决策(如“订单表跳过软删除”)混在一起 → 查不到重点,改着改着就把关键信息覆盖了
✅ 正确做法:把“记忆”分三层,各司其职:
🧠 三档记忆系统(不用插件,纯文件 + 约定)
L1:MEMORY.md —— 每次启动必读的“今日速查卡”
只保留 当下最需要的信息,控制在 120 行以内。Claude 每次打开都先读它。
作用:3 秒告诉你“我在哪?在干啥?下一步干啥?哪些雷不能踩?”
# [电商后台] Memory
> 最后更新:2026-03-17 14:30
## 当前状态
实现 Stripe Webhook 处理器。认证模块已完成。
下一步:编写签名验证逻辑。
## 当前任务
- 目标:完成支付集成
- 进度:进行中
- 下一步:`api/webhooks.ts` 中的 `verifySignature()` 函数
- 是否阻塞:否
## 关键规则
- 所有数据库操作必须用 Prisma,禁用原生 SQL
- API 响应格式严格按 `/docs/api.yaml` 定义
- 禁止直接向 main 分支提交代码
## 最近决策
- 2026-03-16:订单表跳过软删除 → 查询复杂度太高
- 2026-03-15:选择 Stripe 而非 Paddle → 团队已有使用经验
## L2 参考入口(需要时再读)
- 架构决策记录:`memory/decisions.md`
- 代码风格约定:`memory/patterns.md`
- 多日任务进度:`memory/progress.md`
✅ 提米哥说:L1 就像你的「晨会备忘录」——只写今天要做的事、刚定的规矩、刚做的决定。过期信息立刻移走!
L2:memory/*.md —— 按需加载的“知识档案馆”
不自动加载,只在 Claude 需要深度信息时才读。比如你问:“认证模块怎么设计的?” 它就会去翻 memory/decisions.md。
常见文件:
– memory/decisions.md —— 所有架构决策(含日期、对比选项、最终理由)
– memory/patterns.md —— 全项目通用写法(如:错误处理统一用 throw new ApiError())
– memory/progress.md —— 长周期任务的 checkpoint(例:“Webhook 已完成 3/5 步:✅路由注册 ✅事件订阅 ❌签名验证…”)
✅ 提米哥说:L2 是你的「Git 提交记录 + 技术文档」合体版——写得越细,下次回来越省力。
L3:你的代码库本身 —— 不复制,只引用
README、源码、PR 描述、Git 提交日志……这些就是事实源头。
✅ 正确写法:详见 api/webhooks.ts 第 42–58 行
❌ 错误写法:把整个 webhooks.ts 复制进 memory 文件
✅ 提米哥说:L3 是“地面真相”,L1 和 L2 只是它的索引卡。不重复、不冗余、不脱节。
⚙️ 5 个命令,5 分钟养成记忆习惯
| 命令 | 什么时候用 | 效果 |
|---|---|---|
/memory-load |
每次打开 Claude 的第一件事 | 自动读 MEMORY.md + 按需加载 L2 文件 → 立刻知道“现在在哪” |
/memory-save |
会话快撑不住 / 下班前 / 做完关键决策后 | 把新决策、新发现、新进度,结构化存回 MEMORY.md 和对应 L2 文件 |
/memory-update |
中途突然想到重要点(比如“API 响应要加 trace-id”) | 立刻追加到 memory/decisions.md,不等 session 结束 |
/memory-share |
和团队协作时,下班前执行 | 把 MEMORY.md 和整个 memory/ 目录 commit & push → 同事拉代码就能继承上下文 |
/memory-audit |
每月一次 | 扫描 L1 是否臃肿、L2 是否矛盾、哪些条目该归档 → 保持记忆干净有力 |
💡 实测:每天花 5 分钟做记忆维护,下次打开能省下 20 分钟“重新对齐”。
👥 团队协作?Git 就是你的记忆同步器
- 开发者 A 写完 Webhook,运行
/memory-save→/memory-share - Git 提交里就多了:
- 更新后的
MEMORY.md(显示“签名验证进行中”) - 新增的
memory/decisions.md条目(含日期和原因) - 开发者 B 拉最新代码,运行
/memory-load→ Claude 立刻说:
“当前任务:Stripe Webhook 签名验证(未完成);
关键决策:订单表跳过软删除(2026-03-16);
下一步:请编辑api/webhooks.ts中的verifySignature()函数。”
✅ 不用翻 Slack、不用找会议纪要、不用问同事——答案就在文件里,且带时间戳、可追溯、可版本比对。
✅ 提米哥提醒:把
MEMORY.md和memory/目录加入 Git,不要放进.gitignore。它们不是临时文件,是项目不可或缺的“活文档”。
🔑 本质你在解决什么?
不是让 Claude “不压缩”——那是不可能的。
而是让 每一次压缩之后,都能毫发无损地“接上上次”。
那 59+ 次压缩本身不是问题;
问题是你每次都要从零开始重建理解。
这套系统,就是给 Claude 装上「记事本 + 目录索引 + 自动归档」三件套。
它不依赖任何服务器、不绑定特定平台、不收费——只有你熟悉的文件、Git 和 Markdown。
直达网址:https://builtbyzac.com/memory-kit.html
