核心价值:解决 Claude Code 的“健忘”问题
在使用 Claude Code 进行开发时,会话的短暂性(Ephemerality)往往是最大的痛点。一旦会话结束或达到 Token 上限,之前的调试思路、代码逻辑和探索过程往往难以在下一个会话中完美延续。
thedotmack/claude-mem 作为一个专为 Claude Code 设计的持久化记忆插件,通过自动化捕获、AI 压缩和语义检索,实现了编码上下文的无缝流转。目前该项目在 GitHub 已获得超过 8200 颗星,采用 TypeScript 编写,已成为 Claude Code 生态中提升生产力的核心工具之一。
技术原理与工作流程
claude-mem 的工作机制并非简单的日志记录,而是一个基于 AI 代理 SDK 的闭环处理系统:- 自动捕获:利用 Claude Code 的生命周期钩子(Hooks),在会话启动、用户输入、工具执行及会话结束等关键节点,自动捕获 Claude 的观察结果(Observations)。
- AI 驱动的压缩:通过 Claude 的
agent-sdk对冗长的工具输出进行语义化提取和压缩,保留核心决策、发现的问题及解决方案,而非原始的冗余数据。 - 持久化存储:数据存储在本地 SQLite 数据库中(利用 FTS5 实现全文本搜索),并可选配合 Chroma 向量数据库进行混合检索。
- 上下文注入:当开启新会话时,插件会自动将近期相关的观察结果注入上下文,使 Claude 能够“想起”之前的开发进度。
核心功能特性
- 持久化记忆 (Persistent Memory):跨会话保存项目知识,即使重新连接,开发逻辑也不会中断。
- 渐进式披露 (Progressive Disclosure):采用分层检索策略,在保证上下文相关性的同时,最大限度优化 Token 消耗。
- mem-search 技能:在 Claude 终端中,你可以直接通过自然语言提问(如 "我们上次是如何修复那个身份验证 bug 的?"),Claude 会自动调用此技能检索历史记录。
- Web 可视化界面:系统在本地
37777端口提供了一个 Web UI,开发者可以实时查看内存流、调试历史观察结果及配置参数。 - 隐私控制:支持使用
<private>标签,手动排除敏感信息,防止其进入持久化存储。
系统架构深度剖析
claude-mem 采用了现代化的本地服务架构:- Worker 服务:由 Bun 管理的高性能 HTTP API,负责处理繁重的压缩与检索任务,不阻塞编码主进程。
- 混合检索架构:结合了关键词搜索(SQLite FTS5)与语义搜索(Chroma),确保在处理代码决策、重构逻辑或功能发现时都能提供精准的参考。
- 7 个钩子脚本:覆盖了从
SessionStart到SessionEnd的完整生命周期,确保数据捕获无遗漏。
快速上手与配置
在 Claude Code 终端中,仅需两条命令即可完成安装:
BASH> /plugin marketplace add thedotmack/claude-mem > /plugin install claude-mem
重启 Claude Code 后,插件即刻生效。对于追求实验性功能的用户,该插件还提供了 Endless Mode (无尽模式),通过 beta 分支可以尝试更激进的上下文自动平衡机制。
总结
claude-mem 不仅仅是一个简单的日志插件,它本质上为 AI 编码助手构建了一个“长期记忆”层。通过减少开发者重复描述问题的成本,它让 Claude Code 从一个单次任务执行工具,进化为了一个真正理解项目演进过程的深度协作伙伴。