Claude Code 持久记忆系统 —— BM25 + 向量混合搜索,5 个 Hook 自动注入上下文

11 阅读2分钟

用 Claude Code 写项目最头疼的就是每次新会话都要重新解释上下文。CLAUDE.md 写多了 token 爆炸,写少了又记不住关键信息。

所以我做了一个持久记忆系统,核心思路是:不靠堆 CLAUDE.md,而是用搜索引擎的方式管理记忆。

它能做什么

  1. 混合搜索 —— BM25 全文检索(SQLite FTS5)+ 向量语义搜索(sqlite-vec + bge-m3 1024维嵌入),两路结果融合排序。既能精确匹配关键词,也能找到语义相关但用词不同的记忆。

  2. 4 通道自动检索 —— 不只是一个等你手动调用的 MCP 工具。通过 5 个 Claude Code Hook(UserPromptSubmit / PreToolUse / PostToolUse / PreCompact / SessionEnd),相关记忆会自动推送到上下文里,不需要你主动 ask。

  3. LLM 结构化 —— 原始记忆经过 LLM 处理,转成 <what>/<when>/<do>/<warn> 的 XML 结构,方便后续检索时精准匹配。

  4. 自动聚类 —— 相似的记忆会自动分组,当一个聚类积累了 5 条以上记忆,就会晋升为"技能(Skill)",永不衰减。

  5. 置信度 + 时间衰减 —— 每种记忆类型有不同的半衰期(事实 90 天、上下文 30 天、技能永不衰减)。通过 memory_validate 反馈,有用的记忆加分,没用的逐渐淡出。

  6. 完全本地 —— 所有数据存在 SQLite 里,不依赖任何云服务,代码上下文不会离开你的机器。

和同类项目的区别

本项目claude-memmemory-mcp
搜索方式BM25 + 向量融合ChromaDB 向量纯关键词
上下文注入5 个 Hook 自动推送5 个 Hook3 个 Hook
记忆结构化LLM → XML SchemaAI 压缩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,完全开源。