跳转到内容

Claude-Mem 持久记忆

Claude-Mem 是 Claude Code 的持久记忆压缩系统插件。它通过自动捕获工具使用观察、生成语义摘要,并在未来会话中注入上下文,让 Claude 在会话结束或重连后仍能保持项目知识的连续性。

持久记忆

上下文在会话间自动保存和恢复,Claude 不再”失忆”。

全自动运行

安装后无需手动操作,自动捕获、处理和注入上下文。

隐私控制

使用 <private> 标签排除敏感内容,精确控制存储内容。

多语言支持

支持 28 种语言,包括中文、日文、法语、西班牙语等。


  1. 在 Claude Code 终端中运行以下命令:

    Terminal window
    /plugin marketplace add thedotmack/claude-mem
    /plugin install claude-mem
  2. 重启 Claude Code。之前会话的上下文会自动出现在新会话中。

组件要求
Node.js18.0.0 或更高
Claude Code最新版本(支持插件)
BunJavaScript 运行时(自动安装)
SQLite 3持久存储(已捆绑)
Terminal window
git clone https://github.com/thedotmack/claude-mem.git
cd claude-mem
npm install
npm run build
npm run worker:start # 手动启动(通常自动启动)
npm run worker:status # 检查状态

数据存储在 ~/.claude-mem/

文件说明
claude-mem.dbSQLite 数据库
.worker.pidPID 文件
.worker.port端口文件
logs/worker-*.log日志文件
settings.json配置文件

可通过环境变量覆盖:export CLAUDE_MEM_DATA_DIR=/custom/path


┌──────────────────────────────────────────────┐
│ 会话启动 → 注入最近 10 个会话的上下文 │
└──────────────────────────────────────────────┘
┌──────────────────────────────────────────────┐
│ 用户输入 → 创建会话,保存用户提示 │
└──────────────────────────────────────────────┘
┌──────────────────────────────────────────────┐
│ 工具执行 → 捕获观察(Read, Write, Bash 等) │
└──────────────────────────────────────────────┘
┌──────────────────────────────────────────────┐
│ Worker 处理 → 通过 Claude Agent SDK 提取学习 │
└──────────────────────────────────────────────┘
┌──────────────────────────────────────────────┐
│ 会话结束 → 生成摘要,准备下次注入 │
└──────────────────────────────────────────────┘
组件说明
4 个生命周期 HooksSessionStart、UserPromptSubmit、PostToolUse、Stop
智能安装器缓存依赖检查的预 hook 脚本
Worker 服务Bun 管理的 HTTP API,端口 37777
SQLite 数据库存储会话、观察和摘要,支持 FTS5 搜索
MCP 搜索工具用自然语言查询历史上下文
Web 查看器实时可视化界面(SSE + 无限滚动)

每次 Claude 使用工具时,claude-mem 都会捕获并提取:

字段说明
Title简短描述发生了什么
Narrative详细说明
Facts关键学习要点(列表)
Concepts相关标签和分类
Type分类(decision、bugfix、feature 等)
Files读取或修改的文件

当 Claude 完成响应时(触发 Stop hook),自动生成包含以下内容的摘要:

  • Request — 你的请求
  • Investigated — Claude 探索了什么
  • Learned — 关键发现和洞察
  • Completed — 完成了什么
  • Next Steps — 下一步建议

上下文注入采用三层渐进式披露策略,高效利用 token:

显示观察标题和 token 成本估算,按时间顺序分组。

Token 成本:约 50-200 tokens

自然语言查询:「我们修复了哪些 bug?」或「X 是怎么实现的?」

Claude 自动调用 MCP 搜索工具获取完整详情。

Token 成本:约 100-500 tokens/观察

直接读取源文件获取完整信息。


Claude-Mem 提供 4 个 MCP 工具,遵循 token 高效的三层工作流:

Search → 获取紧凑索引(~50-100 tokens/结果)
Timeline → 获取感兴趣结果的上下文
Get Observations → 仅获取过滤后 ID 的完整详情

与传统 RAG 方法相比,节省约 10 倍 token。

搜索记忆,返回带 ID 的紧凑索引。

Terminal window
search(query="authentication bug", type="bugfix", limit=10)

参数querylimitoffsettype(bugfix/feature/decision/discovery/refactor/change)、projectdateStartdateEndorderBy

获取特定观察点周围的时间顺序视图。

Terminal window
timeline(anchor=12345, depth_before=5, depth_after=5)
# 或基于搜索
timeline(query="implemented JWT auth", depth_before=3, depth_after=3)

按 ID 获取完整的观察详情,始终批量请求。

Terminal window
get_observations(ids=[123, 456, 789])

调试问题

1. search(query="error database connection", type="bugfix", limit=10)
2. timeline(anchor=312, depth_before=3, depth_after=3)
3. get_observations(ids=[312, 489])

理解决策

1. search(query="authentication", type="decision", limit=5)
2. get_observations(ids=[相关ID])

在 Claude Desktop 中通过 MCP 工具访问 claude-mem 记忆数据库。

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json

{
"mcpServers": {
"mcp-search": {
"command": "node",
"args": [
"/Users/YOUR_USERNAME/.claude/plugins/marketplaces/thedotmack/plugin/scripts/mcp-server.cjs"
]
}
}
}

重启 Claude Desktop 后,自然语言查询即可搜索过去的工作记录。


使用 <private> 标签精确控制哪些内容不被持久化存储。

<private>
此内容不会被存储到记忆中
</private>

Claude 在当前会话中可以看到和使用该内容,但不会保存为观察记录。

敏感信息

请分析这个错误:
<private>
Error: Database connection failed
Host: internal-db-prod.company.com
User: admin_user
</private>
可能的原因是什么?

临时上下文

<private>
背景:这是明天要上线的紧急修复
</private>
帮我快速修复这个 bug。
被过滤不被过滤
用户提示存储会话摘要
工具输入参数Claude 的响应
工具响应输出
所有可搜索内容

Claude-Mem 可自动在项目文件夹中生成 CLAUDE.md 文件,提供目录级上下文。

编辑 ~/.claude-mem/settings.json

{
"CLAUDE_MEM_FOLDER_CLAUDEMD_ENABLED": "true"
}

每个文件夹的 CLAUDE.md 包含活动时间线:

<claude-mem-context>
# Recent Activity
### Jan 4, 2026
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #1234 | 4:30 PM | 🔵 | 实现用户认证 | ~250 |
| #1235 | " | 🔴 | 修复登录重定向 bug | ~180 |
</claude-mem-context>

用户内容保留<claude-mem-context> 标签外的内容在重新生成时不会被覆盖。

项目根目录排除:包含 .git 目录的根目录不会自动生成,避免覆盖手写的项目文档。

Terminal window
# 预览(不实际删除)
bun scripts/regenerate-claude-md.ts --clean --dry-run
# 实际清理
bun scripts/regenerate-claude-md.ts --clean

在不同 claude-mem 安装间共享知识,自动防止重复。

Terminal window
# 导出与 Windows 相关的记忆
npx tsx scripts/export-memories.ts "windows" windows-memories.json
# 导出 bug 修复
npx tsx scripts/export-memories.ts "bugfix" bugfixes.json
# 按项目过滤
npx tsx scripts/export-memories.ts "auth" auth.json --project=myapp
Terminal window
npx tsx scripts/import-memories.ts windows-memories.json

重复导入时自动跳过已存在的记录。

  • 重复预防 — 不会重复导入已有记录
  • 事务性 — 全部成功或全部回滚
  • 只读导出 — 导出脚本以只读模式打开数据库
  • 依赖排序 — 先导入会话,再导入观察/摘要

当 worker 崩溃或系统重启后,恢复卡在处理队列中的观察。

Terminal window
# 交互式检查和恢复
bun scripts/check-pending-queue.ts
# 自动处理(无提示)
bun scripts/check-pending-queue.ts --process
# 限制处理会话数
bun scripts/check-pending-queue.ts --process --limit 5
Terminal window
# 检查队列状态
curl http://localhost:37777/api/pending-queue
# 触发恢复
curl -X POST http://localhost:37777/api/pending-queue/process \
-H "Content-Type: application/json" \
-d '{"sessionLimit": 10}'
状态说明
pending已排队,等待处理
processing正在被 SDK agent 处理
processed成功完成
failed重试 3 次后失败

处于 processing 状态超过 5 分钟视为卡住,自动重置为 pending


Claude-Mem 支持三种 AI 提供商进行观察提取:

使用 Claude Agent SDK,Claude Code 订阅用户的默认选择。

{
"CLAUDE_MEM_PROVIDER": "claude",
"CLAUDE_MEM_MODEL": "sonnet"
}

可用模型简写:haiku(快速)、sonnet(平衡,默认)、opus(最强)

提供商切换:随时无需重启即可切换提供商。如果选择的提供商出错,自动回退到 Claude SDK。


Claude-Mem 也支持 Cursor IDE,无需 Claude Code 订阅

Terminal window
git clone https://github.com/thedotmack/claude-mem.git
cd claude-mem && bun install && bun run build
bun run cursor:setup # 交互式设置向导
命令说明
bun run cursor:setup交互式设置向导
bun run cursor:install安装 Cursor hooks
bun run cursor:uninstall移除 Cursor hooks
bun run cursor:status检查 hook 安装状态

Claude-Mem 通过模式系统适配不同工作流和语言。

{
"CLAUDE_MEM_MODE": "code--zh"
}
模式ID说明
Code(默认)code标准软件开发模式
Code Chillcode--chill减少观察,仅记录重要内容
Email Investigationemail-investigation邮件分析模式

使用 code--语言代码 格式切换语言:

语言模式 ID
中文code--zh
日语code--ja
韩语code--ko
法语code--fr
德语code--de
西班牙语code--es
俄语code--ru

支持共 28 种语言。模式使用 -- 分隔符实现继承,子模式覆盖父模式的特定配置。


实验性生物仿真记忆架构,大幅延长 Claude 的上下文保持能力。

标准 Claude Code 会话中,工具输出在上下文窗口中累积,约 50 次工具使用后上下文窗口填满(约 200k token),必须开新会话。这是 O(N²) 复杂度。

Endless Mode 采用两层记忆系统:

层级存储位置内容
工作记忆上下文窗口压缩观察(每个约 500 tokens)
归档记忆磁盘转录文件完整工具输出(可搜索)

每次工具使用后,阻塞等待 worker 生成压缩观察,替换完整输出,将 O(N²) 转为 O(N)。

Terminal window
cd ~/.claude/plugins/marketplaces/thedotmack/
git checkout beta/endless-mode
npm install
npm run worker:restart

设置默认值说明
CLAUDE_MEM_MODELsonnetAI 模型
CLAUDE_MEM_PROVIDERclaudeAI 提供商
CLAUDE_MEM_MODEcode活动模式
CLAUDE_MEM_CONTEXT_OBSERVATIONS50注入的观察数量
CLAUDE_MEM_WORKER_PORT37777Worker 服务端口
CLAUDE_MEM_SKIP_TOOLSListMcpResourcesTool,...排除的工具
设置默认值说明
CLAUDE_MEM_DATA_DIR~/.claude-mem数据目录
CLAUDE_MEM_LOG_LEVELINFO日志级别

Terminal window
npm run worker:status # 检查状态
npm run worker:logs # 查看日志
npm run worker:restart # 重启
lsof -i :37777 # 检查端口占用
Terminal window
curl http://localhost:37777/health # 验证健康状态
npm run worker:restart # 重启 worker
  • 确认 worker 正在运行:npm run worker:status
  • 访问 http://localhost:37777 检查是否有观察记录
  • 验证 API key 配置正确
Terminal window
rm ~/.claude/plugins/marketplaces/thedotmack/.install-version
cd ~/.claude/plugins/marketplaces/thedotmack && npm install --force