乐于分享
好东西不私藏

claude-mem深度测评:自动记忆插件,是帮手还是添乱?

claude-mem深度测评:自动记忆插件,是帮手还是添乱?


先区分两个问题

用Claude Code写项目,写到一半它开始提示”上下文已满”,或者直接截断后面的内容。

这不是claude-mem能解决的。

单会话太长,你需要的是更长窗口、手动摘要、或者把大项目拆成小会话。这是另一个问题。

claude-mem解决的是:

跨会话记忆丢失。

今天关掉Claude Code,明天再打开,它不记得你上周解决的问题、不记得你踩过的坑、不记得你和它花了两小时才调通的那个配置。

但是——这里有个重要的因果链要说清楚:

claude-mem不能延长单个会话的窗口长度,但它能让你更高效地在新会话中复用旧会话的精华,从而间接减少你因为窗口满而被迫开新会话的频率。

打个比方:你的项目有一个认证模块,上次花了3天才搞懂全部逻辑。窗口满了,你新建会话。以前你需要重头再理解一遍。新会话里塞入旧会话的精华摘要,你用5分钟复习,就能继续推进。

这就是claude-mem的价值——不是扩大窗口,而是让每个新会话起步更快


Claude Code自己的CLAUDE.md够用吗?

如果不装插件,Claude Code有个内置的CLAUDE.md文档机制(官方也叫Project Knowledge)。

在项目根目录创建CLAUDE.md文件(或.claude/CLAUDE.md),Claude Code启动时会自动读取。

你可以写项目背景、架构决策、编码规范。

优点:透明、可靠、官方原生

缺点:纯手动,不会跟着你的实际工作自动更新

claude-mem想做的事:把记忆从手动挡变成自动挡


claude-mem是什么?

一句话:

claude-mem是一个自动化记忆系统,在后台自动记录你与Claude Code的交互历史,生成语义摘要,在新会话时注入相关上下文。

工作流程:

  1. Hook埋点:利用Claude Code的Hook机制,在4个生命周期节点插入处理逻辑(SessionStart、UserPromptSubmit、PostToolUse、Stop)
  2. 记录:每次调用工具、遇到bug、解决问题,自动生成”观察记录”
  3. 压缩:用AI生成语义摘要,不是简单日志堆积
  4. 索引:摘要存SQLite,语义向量存Chroma向量数据库,支持FTS5快速全文搜索
  5. 注入:新会话开始时,从记忆库检索相关内容,注入上下文

额外能力

  • Folder Context Files:自动在项目文件夹里生成CLAUDE.md,记录活动时间线——这让记忆不仅是数据库里的数据,还沉淀成了可分享的文档
  • 多语言模式:支持28种语言,中文用户可以用 code –zh 模式
  • OpenClaw Gateway:支持一键部署到OpenClaw网关

安装指南

前置要求

  • Node.js 18.0.0+
  • Claude Code最新版

Windows用户常遇到的坑

  1. Node.js没加到PATH:去nodejs.org下载安装,重启终端
  2. 安装完没反应:完全退出Claude Code再重开,不是只关当前会话
  3. 端口37777被占用:在~/.claude-mem/config.json里手动指定端口(Windows路径为%USERPROFILE%\.claude-mem\config.json

安装方式

npx命令(推荐):

npx claude-mem install

插件市场:

在Claude Code里输入:

/plugin marketplace add thedotmack/claude-mem
/plugin install claude-mem

验证

重启Claude Code,观察输出:

[claude-mem] Memory loaded: X observations from previous sessions

健康检查命令:

npx claude-mem doctor

核心问题1:自动注入是如何判断”相关”的?

注入时机:会话开始时一次性注入,不是每次提问实时检索。

判断相关性的方式(基于官方文档和架构推测):

  • 读取当前项目的package.json、Cargo.toml等文件,识别语言/框架
  • 根据当前目录的绝对路径匹配
  • 存储时会关联项目路径,检索时过滤同项目或相邻项目的记忆

monorepo环境下能区分不同子项目吗?

我没有在真实monorepo里实测过。但这里有一个最简单的验证方案(以下适用于Linux/macOS,Windows用户可用WSL或手动创建目录):

# 1. 创建测试目录结构
mkdir -p /tmp/memtest/apps/a /tmp/memtest/apps/b

# 2. 在Claude Code里先进入 /tmp/memtest/apps/a,问"我是A项目"
# 3. 退出,新开会话,进入 /tmp/memtest/apps/b,问"我是B项目"
# 4. 再退出,新开会话,回到 /tmp/memtest/apps/a
# 5. 问Claude:"我刚才在哪个项目?"
# 6. 观察它回答的是A还是B,还是混淆了

如果回答正确,说明路径匹配有效;如果混淆,说明claude-mem在monorepo里可能需要额外配置(例如路径过滤)。


核心问题2:版本冲突怎么办?

我在一个测试项目里做了这个实验:

环境

  • CLAUDE.md里写:数据库用PostgreSQL
  • claude-mem历史记忆:之前在另一个会话里用过MySQL做了一次数据迁移

测试:新会话,什么都不补充,直接问”我应该用什么数据库?”

结果:Claude Code两边信息都提到了,然后建议”根据你的项目需求选择”,没有强制选某个。

结论:至少在”数据库选型”这种高层次决策上,CLAUDE.md当权威,历史记忆当辅助信息。

更复杂的冲突我未实测,但可以推测:

  • 如果两条矛盾信息都很具体:考虑到Claude Code作为LLM的本质,它可能会给出折中或模糊的建议,而不是报错
  • 时间敏感的决策(上周放弃方案X,昨天又重新启用X):如果记忆库里同时存在两个版本,最新的不一定被优先召回

建议:重要决策写进CLAUDE.md,让它有明确的权威来源;claude-mem记录过程性的”踩坑”和”发现”,不是结论性的”架构决策”。


核心问题3:隐私保护——claude-mem是否安全?

先说清楚一件事:claude-mem本身不增加额外风险

你的对话本来就要发给Anthropic的API服务器,claude-mem只是在本地多存了一份。所以隐私风险的来源是Anthropic,不是claude-mem。

关于Anthropic的数据使用政策,请查阅官方隐私条款。claude-mem没有改变这一点。

<private>标签解决的是本地文件泄露问题(电脑被偷、恶意软件读取~/.claude-mem/),不是云端API问题。

如果你的威胁模型包含Claude的云端服务器

  • 不要把真正敏感的信息发给任何AI助手——无论用不用claude-mem
  • <private>对Anthropic无效,因为对话内容在发送之前就到了云端

本地文件权限保护(防止本地恶意软件读数据库):

Windows:

icacls "$env:USERPROFILE\.claude-mem" /inheritance:r /grant:r "%USERNAME%:F"

Linux/macOS:

chmod 700 ~/.claude-mem

核心问题4:注入太多变慢怎么办?

有用户反馈大型项目里,新会话开始时要等好几秒。

原因:会话开始时注入的记忆太多。

解决方法:在~/.claude-mem/config.json里限制注入量:

{
"CLAUDE_MEM_CONTEXT_OBSERVATIONS"20,
"CLAUDE_MEM_SKIP_TOOLS"["bash""write"]
}
  • CLAUDE_MEM_CONTEXT_OBSERVATIONS:控制每次注入的观察数量(默认50条)
  • CLAUDE_MEM_SKIP_TOOLS:排除不想记录的tools,比如某些敏感操作

建议从20开始,如果搜索结果质量下降再调高。


核心问题5:Web查看器能做什么?

打开浏览器访问 http://localhost:37777 可以看到记忆流界面。

能做的

  • 查看所有历史观察记录
  • 搜索特定关键词
  • 看时间线,了解某个决策是什么时候做的
  • 查看Token开销:Progressive Disclosure界面会显示每次检索用了多少Token

不能做的(截至目前版本):

  • 在Web界面上直接删除记录——你得用命令行或直接操作SQLite

如果看到一条不准确的观察想删,可以在终端里跑:

# 查看观察ID和所属路径
sqlite3 ~/.claude-mem/claude-mem.db "SELECT id, title, narrative FROM observations LIMIT 10;"

# 删除特定ID
sqlite3 ~/.claude-mem/claude-mem.db "DELETE FROM observations WHERE id = 123;"

核心问题6:从提问到拿到结果需要多久?

我实测了一下各环节耗时:

  1. 提问输入:约5-15秒(取决于问题复杂度和网络)
  2. mem-search工具调用:约3-5秒
  3. 返回结果:约5秒

总计约15-30秒,不是”10秒问一句”那么轻量。

对于”上次那个bug怎么解决的”这种问题,比翻终端日志快,但不如直接问同事快。


竞品对比

功能
claude-mem
CLAUDE.md文档
Mem0
自动记录
手动整理文档
✅(支持mem-add)
✅(支持API)
自动写回项目CLAUDE.md
自然语言搜索
Web查看器+Token可视化
开源
N/A
部分
Claude Code原生集成
❌(API方式)
多IDE支持
✅(Claude Code/Gemini CLI/OpenCode)
多语言模式
✅(28种语言)

目标用户

愿意花半分钟问一句”上次那个bug怎么修的”,但不愿意花半小时写文档的人。

claude-mem的核心交互是”在Claude Code里用自然语言搜索”,不是独立App。如果你愿意打开Claude Code问问题,它能帮你自动化记忆记录和检索。

不太适合

  • 项目单一,每次会话能独立完成
  • 已经习惯维护CLAUDE.md,觉得手动整理更可靠
  • 对本地数据安全有极高要求

社区数据

  • GitHub Star:1300+(截至2026年5月)
  • 上榜Awesome Claude Code推荐列表
  • Discord社区运营中

快速安装命令

# 检查Node.js
node --version

# 安装
npx claude-mem install

# 重启Claude Code

# 健康检查
npx claude-mem doctor

# Web查看器
# 浏览器打开 http://localhost:37777

官网:https://docs.claude-mem.ai/ GitHub:https://github.com/thedotmack/claude-mem


总结

claude-mem解决的核心问题是跨会话记忆丢失,不是延长单会话窗口。

它让你更高效地在新会话中复用旧会话的精华,间接减少被迫开新会话的频率。

亮点功能

  • Folder Context Files:记忆不仅存在数据库,还会写回项目CLAUDE.md,可分享
  • Progressive Disclosure:Token开销可视化,分层检索省多少Token一目了然
  • 28种语言支持,中文体验友好

局限

  • 更复杂的版本冲突(如代码实现矛盾)存在风险,建议重要决策写进CLAUDE.md
  • 隐私保护是本地文件级,不是云端数据级
  • 在monorepo等复杂环境里的行为还需要更多验证
  • 搜索耗时约15-30秒,不是”10秒问一句”那么轻量

我的建议:先在一个非关键项目上试用两周,观察:

  1. 自动记录的观察质量如何
  2. 搜索结果是否相关(有没有误召回)
  3. 有没有明显的过时记忆干扰

如果质量过得去,再迁移到主力项目。


**我自己测过三个项目,最烦的是项目路径太深时,claude-mem会把隔壁项目的记忆误召回来。比如我在/workspace/backend/src/auth里工作,它召回了/workspace/frontend/的记忆。

目前最有效的解法是直接按路径删除不相关的记忆记录。但操作前建议先备份数据库

# 备份
cp ~/.claude-mem/claude-mem.db ~/.claude-mem/claude-mem.db.bak

# 删除 /workspace/frontend/ 相关的所有记忆
sqlite3 ~/.claude-mem/claude-mem.db "DELETE FROM observations WHERE narrative LIKE '%/workspace/frontend/%';"

你有没有遇到过类似的问题?怎么解决的?评论区说说。

既然看到了这里,如果觉得内容不错,欢迎点赞、在看、转发三连支持!不想错过更新,别忘了设为星标 ⭐。感谢阅读,下次再见!