返回博客
AIMCPRAGOpen SourcePython

claude-rag:给 Claude Code 一份完全本地的长期记忆

我们做了一个小型开源 MCP Server,把本机所有历史 Claude Code 对话都索引起来,让 Claude 自己检索——不上云,不要 API Key,全部约 350 行 Python。

claude-rag:给 Claude Code 一份完全本地的长期记忆

问题

每天用 Claude Code 的人都会撞到同一堵墙:在单次会话里它很聪明,可一旦换到下周同一个仓库的新会话,它就什么都不记得了。你得反复解释同一套架构决策、那个偶发挂掉的测试要怎么绕、为什么当初选 A 库不选 B 库——一次又一次。

其实 Claude Code 早就把每一轮对话写到了 ~/.claude/projects/**/*.jsonl,原始记录就在那里。缺的,只是一种让 Claude 真的去查它们的能力。

我们做了什么

claude-rag 在这些本地对话之上加了一层很轻的 RAG,并以 MCP Server 的形式暴露出来,让 Claude 可以在 IDE 内部直接查询。

  • 解析 ~/.claude/projects/ 下的所有 JSONL,剥掉 IDE/系统提醒等包装,按字符分块(1500 字符一块,重叠 200)
  • 使用 sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 做嵌入,纯 CPU 跑,原生支持中文和英文查询
  • 向量存进本地 Chroma PersistentClient,cosine 相似度,跑几个月只占约 50 MB
  • 增量索引:只对 mtime/size 有变化的 JSONL 重新嵌入
  • MCP(stdio)Server 暴露三个工具:search_conversations、get_session_window、reindex

意义在哪里

注册之后,Claude 可以自己处理「你还记得我们之前是怎么决定 X 的吗?」或「回忆一下我之前是怎么处理 Y 的」——它自己去调 search_conversations,相关片段直接回到当前上下文,对话继续往下走。不需要手动复制粘贴,不需要切换到另一个工具。

这件事本身也是一个挺有用的范式:一个小而专的 MCP Server,没有 SaaS,没有遥测,跑在开发者自己的机器上。很容易 fork 一份再改造。

关于隐私

数据不出本机。嵌入模型在本地跑,向量库就是磁盘上的一个目录,MCP Server 只通过 stdio 与 Claude Code 通信。不需要任何 API Key,也确实没用任何 API Key。

Chroma 库里存的是分块原文,敏感等级和原始对话本身一致——所以它放在 ~/.claude-rag/ 下,默认不参与任何同步。

几个数字

  • 全部代码约 350 行 Python
  • 嵌入模型约 220 MB(首次下载,本地缓存)
  • 几个月日常使用后,索引约 50 MB
  • 首次全量索引在 CPU 上 5–10 分钟
  • 正常工作日的增量索引几秒搞定

试一下

项目已开源。clone 下来,用 uv 安装,跑一次索引,注册 MCP Server,Claude 的记忆就回来了。

也想做一个类似的项目?

JY Tech 为中美两地的初创公司和中小企业设计、上线并持续运营 Next.js + Vercel 产品。

聊一聊
Loading footer...