上一篇讲 CLAUDE.md 只放不变量,那 memory 呢?我把这个项目当前真实运行的 5 条 memory 逐条 audit——哪些该留、哪些该删、顺带把 CLAUDE.md vs memory 的边界画清楚。
上一篇讲 CLAUDE.md 只放 Claude 看代码看不出来的东西。有读者立刻问:那 memory 呢?memory 也是上下文,和 CLAUDE.md 到底什么区别?
很多人用着用着就把 memory 当 CLAUDE.md 的"补充备份"——想到什么就塞一条。时间一长,memory 越堆越多,Claude 每个 session 都读一遍,结果基于过时信息做判断。
这篇不讲抽象定义,我把这个项目当前真实运行的 5 条 memory 打开,逐条 audit——哪些该留、哪些该删、哪些根本不该进 memory。顺便回答 CLAUDE.md vs memory 这个问题。
真正有用的判断不是"放哪",是"这条信息寿命多长、谁会改它"。
feedback_commits — 等我说 commit 再 commit
feedback_article_authenticity — 实战文章不能编
project_i18n_strategy — 所有语言同时上线的战略
project_howdev_plan — how2claude.dev 未完成的实现方案
project_article_workflow — 发文章流水线
按类型分组审一遍。
内容很短:"don't auto-commit, wait for user to confirm."
这是 memory 最高 ROI 的类型。单次纠正 → 跨 session 永久生效。
为什么不进 CLAUDE.md? 它不是项目规则,是我个人工作习惯。别的贡献者加入项目,他们不一定要遵守同样的规则。CLAUDE.md 是团队级的,memory 是"我和 Claude 之间"的。
为什么不每次对话开头说一遍? 因为跨 session 保留。Claude 下周帮我改代码时还记得。
触发条件很清晰:我纠正过一次,且希望永久生效。
这条 body 里特别具体:
2026-04-16 写 multi-agent 收尾文章时,我凭想象编了一个"3 个 Agent 做 webhook 功能"的故事⋯⋯全是伪造。用户问"是真实的还是编的"——这和前两篇方法论文章不同⋯⋯
关键:Why 字段不是抽象原则,是具体事件 + 日期 + 当时发生了什么。
为什么这么写?六个月后回来看"实战文章要有真实素材"这种抽象规则会疑惑——啥时候定的、为什么定。看到"4-16 我编了个 agent 故事被抓"能立刻想起来,也立刻能判断这规则还适不适用。
这是我 5 条里最"重"的一条。它不仅是规则,还是供 Claude 和我都能查的事故档案。
内容:这个项目为什么激进上线所有语言——翻译成本通过 Claude 趋近于零,官方文档只有英文是核心机会窗口。
代码里看不出来。代码里只有 19 个 locale 文件。为什么是 19 个、为什么同时上、日语韩语为什么优先度高,全在我脑子里。
memory 把"脑子里的决策"沉淀下来,让 Claude 将来建议功能时能判断「这个提议和 i18n 战略冲突吗」。
不是操作规则(不进 CLAUDE.md),是战略背景(进 memory)。
这条最临时:how2claude.dev 开发者站 9 个待改文件的详细方案,结尾写着「待下次会话继续」。
memory 最危险的类型——容易变成僵尸 memory。实现完忘了删,下次 Claude 还拿它当 todo,基于过时计划建议"还没做 step 3"。
这类 memory 需要明确的退场机制:how2claude.dev 上线后,我必须立即手动删掉。
这条信息密度最高,我一度以为是最有用的——直到仔细看:
/write-article 和 /publish-article 的存在 → 看 .claude/commands/ 就知道docs/drafts/ 一眼就懂.claude/publish-config.json 里有Claude 看代码全部能推出来。
真正 memory 能提供的只有最后一段「Accounts (production): zh → @how2claude, en → @howtoclaude」——而这条已经过时了,上个 session 发现生产实际是 zh=@howtoclaude。memory 记录的是几天前的状态,已经漂移。
结论:这条要删掉 90%,必要的部分("用 kamal 查实时账号")写进 CLAUDE.md 更合适,或者干脆不写——反正 memory 里写死的账号迟早过时。
1. memory 的真正作用是"给 Claude 开它进不了的房间"
2. Claude 能从代码看出来的,别进 memory
这和上一篇 CLAUDE.md 的原则一致。文件路径、API URL、目录结构——都是代码能回答的问题。懒得让 Claude grep 一次就塞进 memory,等于在赌这信息永远不变。
3. memory 会衰变
project_article_workflow 就是例子——几天前写的,账号信息已经不对了。memory 越老越不可信。定期 audit > 一直加。
4. Why 字段救命
对比我的两条 feedback 就看得出来:
feedback_article_authenticity 的 Why 是「4-16 我写 multi-agent 文章编了故事」——6 个月后我能立刻判断还适不适用feedback_commits 的 Why 只有「user wants to review」——6 个月后我不确定这是哪次纠正的产物后者比前者弱得多。抽象原则没人记得为什么要守。
新信息出现时,问三个问题:
第三个问题是陷阱。大部分你想记的"不会变"的东西代码里能看出来,你只是懒得让 Claude 再 grep。
过完一遍我看到几件事:
project_article_workflow 里 90% 的内容 Claude 看代码能推出来,这条最该动project_howdev_plan 是临时任务交接,理论上该有退场机制project_i18n_strategy 是战略判断,过段时间值得回头审feedback_commits 的 Why 写得比较弱,补一个具体事件会更保险顺带观察:我 5 条的 type 分布是 feedback×2 + project×3,一条 user 或 reference 类型都没有——这代表我还没跟 Claude 说过"我是谁、我从哪些外部系统读状态"。可能是下一批要补的。
memory 最大的陷阱不是「该记的没记」,是「记了一堆过时的」。5 条里只要 1 条漂移,Claude 就会基于过时信息做判断——而且它不会提醒你这条过时了。
我这 5 条里已经看到几个可以动的地方。你的几条呢?