Claude-Mem:给 Claude Code 装上长期记忆
用 Claude Code 写代码时,最头疼的莫过于每次开新会话都要重新解释项目背景。我们借着 Claude-Mem 这个开源项目,聊聊为什么 AI 编程助手需要'长期记忆',它是怎么实现的,以及在工程上有哪些值得借鉴的地方。
概述
这篇文章主要写给三类人看:日常在用 Claude Code 或 VS Code AI 插件写代码的开发者、正在做 Agent 或 RAG 方向的工程师,以及对 AI 编程效率感兴趣的技术爱好者。
核心问题只有一个:如何用一个开源插件,把'金鱼记忆'的 Claude Code,改造成记得住你项目细节的'老同事'?
痛点:为什么 AI 编程助手必须要'长期记忆'?
场景有多难受?
周一你和 Claude 反复讨论微服务架构和数据库分片,周二为了修 Bug 切了分支,周三回来接着做架构,Claude 却一脸懵:'这是什么项目?'
这种体验在 GitHub 的 issue 里被直接称为'重大工作流程中断'。本质上,现在的 IDE 插件大多是'短期 + 纯上下文',而不是'长期 + 按需召回'。这导致项目一旦跨天,重复解释成本极高,多人协作时新人也无法顺畅接上历史上下文。
开发者已经开始自救
GitHub 上已经出现了 memory-mcp、mcp-memory-keeper 等自建方案。这说明痛点是真痛,社区已经在尝试给 AI 装记忆。Claude-Mem 恰好踩在这个需求点上:专为 Claude Code 设计,免费开源,装完就能用。
Claude-Mem 是什么?
一句话概括:这是一个给 Claude Code 用的本地持久化记忆插件。通过事件驱动、混合存储和三层渐进式检索,把你和 AI 一起做过的事压成结构化'长期记忆',在后续会话中按需注入,同时大幅减少 Token 消耗。
它是开源项目,由 @thedotmack 开发。截至 2026 年 2 月 7 日,GitHub Star 超过 2.2 万。官方数据显示,常规场景节省约 90% Token,'无尽模式'最高可达 95%,工具调用上限提升约 20 倍。对于一个'记忆插件'来说,这个量级说明它不只是玩具,而是踩到了真实需求。
整体架构:怎么把碎片操作变成记忆?
思路可以拆成三步:监听生命周期捕获观察记录、本地混合存储、新会话按需注入。
事件驱动:不干扰你的关键动作捕获
内部挂了 5 个生命周期钩子,对用户几乎隐形:
| 钩子 | 触发时机 | 作用 |
|---|---|---|
| SessionStart | 会话启动 | 初始化检索和上下文准备 |
| UserPromptSubmit | 用户提交问题时 | 记录用户意图和上下文 |
| PostToolUse | 工具调用完成之后 | 捕获文件读写、代码改动等 |
| Stop | 任务暂停 | 保存中间状态 |
| SessionEnd | 会话结束 | 触发总结、压缩与入库 |
重点记录的是'工具使用带来的变化',比如改了哪些文件、执行了什么命令。这些统称为'观察记录'(Observations),类似时间序列的项目事件日志。
本地混合存储:结构化 + 全文 + 语义
存储设计很务实:
- SQLite + FTS5:存结构化数据(会话 ID、文件路径、时间戳)和做全文检索。
- Chroma 向量库:把摘要向量化,处理模糊问题,比如'上周讨论的那个支付风控策略'。
所有数据统一存放在用户本地目录 ~/.claude-mem/ 下,不走云端。这对隐私敏感行业很重要。从工程角度看,部署成本低,查询灵活,且用户可见可控。
记忆压缩:别把原始流水账端给模型
只存不够,还得压。SessionEnd 阶段会调用 Claude Agent SDK,把累计的 Observations 汇总成结构化摘要,包含调研内容、学习成果、已完成工作和后续步骤。不再把完整原始历史塞进上下文,而是注入高度浓缩后的'记忆索引 + 摘要'。


