用 Claude Code 写项目最头疼的就是每次新会话都要重新解释上下文。CLAUDE.md 写多了 token 爆炸,写少了又记不住关键信息。
所以我做了一个持久记忆系统,核心思路是:不靠堆 CLAUDE.md,而是用搜索引擎的方式管理记忆。
它能做什么
-
混合搜索 —— BM25 全文检索(SQLite FTS5)+ 向量语义搜索(sqlite-vec + bge-m3 1024维嵌入),两路结果融合排序。既能精确匹配关键词,也能找到语义相关但用词不同的记忆。
-
4 通道自动检索 —— 不只是一个等你手动调用的 MCP 工具。通过 5 个 Claude Code Hook(UserPromptSubmit / PreToolUse / PostToolUse / PreCompact / SessionEnd),相关记忆会自动推送到上下文里,不需要你主动 ask。
-
LLM 结构化 —— 原始记忆经过 LLM 处理,转成
<what>/<when>/<do>/<warn>的 XML 结构,方便后续检索时精准匹配。 -
自动聚类 —— 相似的记忆会自动分组,当一个聚类积累了 5 条以上记忆,就会晋升为"技能(Skill)",永不衰减。
-
置信度 + 时间衰减 —— 每种记忆类型有不同的半衰期(事实 90 天、上下文 30 天、技能永不衰减)。通过 memory_validate 反馈,有用的记忆加分,没用的逐渐淡出。
-
完全本地 —— 所有数据存在 SQLite 里,不依赖任何云服务,代码上下文不会离开你的机器。
和同类项目的区别
| 本项目 | claude-mem | memory-mcp | |
|---|---|---|---|
| 搜索方式 | BM25 + 向量融合 | ChromaDB 向量 | 纯关键词 |
| 上下文注入 | 5 个 Hook 自动推送 | 5 个 Hook | 3 个 Hook |
| 记忆结构化 | LLM → XML Schema | AI 压缩 | Haiku 提取 |
| 自动聚类 | 有,支持技能晋升 | 无 | 无 |
| 存储 | 本地 SQLite | 本地 SQLite | 本地 JSON |
技术栈
Node.js / SQLite + FTS5 + sqlite-vec / bge-m3 嵌入模型 / Azure OpenAI(LLM 结构化用)
安装
git clone https://github.com/MIMI180306/claude-persistent-memory.git
cd claude-persistent-memory && npm install
还在早期阶段,欢迎试用和提 Issue。
GitHub: github.com/MIMI180306/…
MIT License,完全开源。