跳到主要内容Claude Code 持久化记忆插件 claude-mem 完全指南 | 极客日志JavaScriptNode.jsAI大前端
Claude Code 持久化记忆插件 claude-mem 完全指南
介绍 claude-mem 插件,用于解决 Claude Code 上下文遗忘问题。它通过生命周期钩子捕获对话,利用 SQLite 和 ChromaDB 存储记忆,支持自然语言搜索和历史追溯。文章涵盖安装配置、工作原理、Web 管理界面使用及隐私保护机制,帮助开发者实现 AI 编程助手的长期记忆能力。
FlinkHero28 浏览 Claude Code 持久化记忆插件 claude-mem 完全指南
一、开篇:AI 编程助手的"失忆症"困境
相信每一位使用过 Claude Code 的开发者都有过这样的体验:
你和 Claude 协作了一整天,它帮你写了几千行代码,修复了十几个 Bug,你们配合得天衣无缝。然后你关掉终端,第二天满怀期待地打开 Claude Code,准备继续昨天的工作——
"抱歉,我不知道你在说什么。"
所有的上下文、所有的讨论、所有的项目背景——全部被清零了。就好像你在和一个失忆症患者合作写代码,每天早上都需要从头解释一遍:这个项目是干什么的、我们昨天做到哪里了、哪些问题还没解决......
这不是 Claude 的问题,而是大语言模型天生的局限性。Claude Code 的上下文窗口大约是 20 万 Token,说实话,对于复杂项目来说这点容量少得可怜。很多时候让它运行十几二十分钟,上下文就直接用满了。
这个痛点,正是 claude-mem 项目要解决的核心问题。
二、claude-mem 是什么?
claude-mem 是一个专门为 Claude Code 打造的持久化记忆压缩系统。它能够自动捕获你和 Claude 的对话上下文,让 AI 拥有真正的长期记忆能力。
简单来说,它的工作方式类似于给 Claude 配备了一个"私人秘书"——这个秘书会默默记录每次对话中发生的重要事情,当你下次开始新对话时,秘书会把相关的历史信息重新告诉 Claude,让它能够"记起"之前的工作内容。
2.1 项目基本信息
2.2 核心特性一览
1. 持久化记忆
上下文会在会话之间自动保存,不需要手动操作。每次你结束一个编程会话,claude-mem 都会自动生成语义摘要,为下次会话做好准备。
2. 渐进式披露(Progressive Disclosure)
这是 claude-mem 的核心设计哲学。它采用分层记忆检索策略,模拟人类的记忆模式:
- 首先加载轻量级的"索引"——标题、类型、时间戳
- 只有在需要深入细节时,才获取完整的观察记录
- 这种方式既节省 Token,又不会在需要时显得"浅薄"
3. 智能搜索
可以通过自然语言搜索项目历史。比如你可以直接问 Claude:
- "上次我们修复了什么 Bug?"
- "我们之前是怎么实现用户认证的?"
"这个 Bug 之前修过吗?"
- 查看记忆流
- 浏览所有记忆内容
- 按类型过滤(决策、Bug 修复、功能实现等)
- 切换不同项目
- 调整各种设置
你可以排除敏感内容,完全掌控哪些信息被存储。通过 <private> 标签包裹的内容不会被记录。
无需手动干预,后台透明运行,自动完成所有记忆管理工作。
三、claude-mem 的工作原理深度解析
要真正理解 claude-mem 的价值,我们需要深入了解它的技术架构。这一部分内容稍微偏技术向,但本文尽量用通俗的语言来解释。
3.1 整体架构概览
claude-mem 的核心设计理念是:它不会中断或修改 Claude Code 的行为,而是从外部观察,通过生命周期钩子提供价值。
┌─────────────────────────────────────────────────────────────┐
│ Claude Code 会话 │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 生命周期钩子 (Lifecycle Hooks) │
│ SessionStart → UserPromptSubmit → PostToolUse → Stop │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ Worker 服务 (后台处理) │
│ 通过 Claude Agent SDK 提取学习内容 │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 双数据库存储系统 │
│ SQLite (结构化) + ChromaDB (向量化) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 下次会话开始时自动注入相关上下文 │
└─────────────────────────────────────────────────────────────┘
3.2 五大生命周期钩子详解
claude-mem 使用 5 个生命周期钩子来捕获和处理会话信息。这些钩子会在 Claude Code 的关键时刻自动触发。
钩子一:SessionStart(会话开始)
触发时机: Claude Code 启动时(包括 startup、clear 或 compact 操作)
- 检查并安装必要的依赖(如果需要)
- 启动 Worker 服务
- 从数据库中检索最近的观察记录
- 将相关上下文注入到新会话中
这是最关键的钩子之一,它确保每次你开始新会话时,Claude 都能"记起"之前的工作内容。
钩子二:UserPromptSubmit(用户提交提示)
钩子三:PostToolUse(工具使用后)
- 捕获工具执行的详细信息
- 记录文件操作(读取、写入、编辑)
- 记录 Shell 命令执行
- 记录代码搜索操作
- 记录 Web 操作
- 文件操作:Write、Read、Edit
- Shell 命令:Bash
- 代码搜索:Grep、Glob
- Web 操作:WebFetch、WebSearch
- 笔记本编辑:NotebookEdit
钩子四:Stop(会话停止)
- 生成当前会话的 AI 驱动摘要
- 记录已完成的工作
- 标记待处理的任务
<summary>
<request>用户的原始请求</request>
<investigated>检查了什么</investigated>
<learned>关键发现</learned>
<completed>已完成的工作</completed>
<next_steps>剩余任务</next_steps>
<files_read>
<file>path/to/file1.ts</file>
</files_read>
<files_modified>
<file>path/to/file2.ts</file>
</files_modified>
<notes>额外上下文</notes>
</summary>
钩子五:SessionEnd(会话结束)
触发时机: Claude Code 会话完全结束时
- 标记会话为已完成
- 清理临时资源
- 确保所有数据持久化
3.3 异步处理架构:快速响应 + 后台处理
claude-mem 采用了一个巧妙的架构设计来确保不影响 Claude Code 的响应速度:
┌─────────────────────────────────────────────────────────────┐
│ HOOK (快速层) │
│ 1. 读取 stdin (< 1ms) │
│ 2. 插入队列 (< 10ms) │
│ 3. 返回成功 (总计 < 20ms) │
└─────────────────────────────────────────────────────────────┘
↓ (队列)
┌─────────────────────────────────────────────────────────────┐
│ WORKER (慢速层) │
│ 1. 每秒轮询队列 │
│ 2. 通过 Claude SDK 处理观察 (5-30 秒) │
│ 3. 解析并存储结果 │
│ 4. 标记观察已处理 │
└─────────────────────────────────────────────────────────────┘
- 钩子执行极快(毫秒级),不会阻塞 Claude Code
- 真正的 AI 处理在后台进行
- 即使后台处理失败,也不会影响用户体验
3.4 双数据库存储系统
位置:~/.claude-mem/claude-mem.db
- 存储观察记录
- 存储会话信息
- 存储摘要
- 支持全文搜索(FTS5)
- 存储向量嵌入
- 支持语义搜索
- 根据含义(而非关键词)查找相关内容
这种双数据库架构使得 claude-mem 既能进行精确的关键词搜索,也能进行"模糊"的语义搜索。
3.5 记忆分类系统
claude-mem 会自动将每个观察分类为以下类型之一:
| 类型 | 英文 | 说明 |
|---|
| 决策 | decision | 架构选择、技术决策 |
| Bug 修复 | bugfix | 问题诊断和修复 |
| 功能实现 | feature | 新功能开发 |
| 重构 | refactor | 代码重构 |
| 发现 | discovery | 关于代码库的发现 |
这种分类使得后续搜索更加精准。比如你可以问:"上周我们修复了哪些 Bug?"
四、安装配置完全指南
下面将带你一步步完成 claude-mem 的安装和配置。
4.1 系统要求
| 要求 | 说明 |
|---|
| Node.js | 18.0.0 或更高版本 |
| Claude Code | 最新版本(需支持插件功能) |
| Bun | JavaScript 运行时(会自动安装) |
| SQLite 3 | 用于持久化存储(已打包) |
| 内存 | 至少 4GB RAM |
| 磁盘空间 | 至少 100MB 可用空间 |
4.2 方式一:通过插件市场安装(推荐)
/plugin marketplace add thedotmack/claude-mem
/plugin install claude-mem
- 全局安装(推荐):在任何目录下使用 Claude Code 都能使用这个记忆工具
- 当前项目安装:只在当前项目中使用
安装完成后,重启 Claude Code 让配置生效。
按 Tab 键切换,你应该能看到 claude-mem 插件已经出现在列表中。
4.3 方式二:从源码安装(进阶)
如果你需要进行开发测试,或者想要修改源码,可以选择从源码安装:
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
4.4 配置文件详解
claude-mem 的配置文件位于 ~/.claude-mem/settings.json,首次运行时会自动创建默认配置。
{
"provider": "claude",
"model": "claude-sonnet-4-5-20250929",
"workerPort": 37777,
"dataDir": "~/.claude-mem",
"logLevel": "info",
"contextObservations": 10
}
| 配置项 | 说明 | 默认值 |
|---|
| provider | AI 提供商 | claude |
| model | 使用的模型 | claude-sonnet-4-5-20250929 |
| workerPort | Worker 服务端口 | 37777 |
| dataDir | 数据存储目录 | ~/.claude-mem |
| logLevel | 日志级别 | info |
| contextObservations | 注入上下文的观察数量 | 10 |
这里可能有人会疑惑:为什么要在配置中设置模型?需要配置 API Key 吗?
claude-mem 会作为 Claude Code 的子进程运行,它会复用 Claude Code 的登录认证,通过 Claude Code 来调用 AI 模型。所以只要你能正常启动 Claude Code,claude-mem 就能正常工作。
4.5 环境变量配置(可选)
如果你需要自定义某些配置,可以通过环境变量来覆盖:
export CLAUDE_MEM_DATA_DIR=/custom/path
export CLAUDE_MEM_WORKER_PORT=8080
export CLAUDE_MEM_CONTEXT_OBSERVATIONS=15
export CLAUDE_MEM_SKIP_TOOLS="ListMcpResourcesTool,SlashCommand"
4.6 验证安装是否成功
或者查看日志文件:~/.claude-mem/logs/worker-YYYY-MM-DD.log
~/.claude-mem/claude-mem.db - 数据库文件
~/.claude-mem/.worker.pid - Worker 进程 ID 文件
~/.claude-mem/.worker.port - Worker 端口文件
~/.claude-mem/settings.json - 配置文件
五、实战演练:从零开始体验持久化记忆
现在让我们通过一个完整的实战案例来体验 claude-mem 的强大功能。
5.1 第一次对话:创建项目
请帮我创建一个美发预约网站,需要包含以下功能:
1. 用户注册和登录
2. 服务项目展示
3. 在线预约功能
4. 个人中心
- 项目初始化过程
- 文件创建记录
- 代码编写过程
- 目录结构搭建
等 Claude 完成项目后,你可以结束会话。此时 claude-mem 会:
- 生成会话摘要
- 存储所有观察记录
- 为下次会话准备上下文
5.2 第二次对话:见证记忆的力量
步骤 1:开启全新的 Claude Code 会话
完全关闭之前的终端,打开一个新的终端,启动 Claude Code:
在这个全新的对话中(没有任何上下文),问 Claude:
你会看到 Claude 开始查找之前的项目记录。它会回答类似这样的内容:
"根据历史记录,我们上次一起做了一个美发预约网站,实现了以下功能:
- 用户认证系统:包括用户注册、登录、注销功能
- 导航栏组件:响应式导航设计
- 首页展示:服务项目展示页面
- 预约功能:在线预约系统
- 个人中心:用户信息管理
整个网站使用了 [具体技术栈],项目结构如下......"
这就是 claude-mem 的神奇之处——新的对话中,Claude 依然能够"记住"之前的工作!
5.3 更多实用场景
Claude 会直接知道你说的是哪个项目,无需重新解释。
之前我们在用户登录功能上遇到过什么问题?是怎么解决的?
claude-mem 会搜索历史记录,找出相关的 Bug 修复记录。
我们为什么选择使用 JWT 而不是 Session?
如果之前有过相关讨论,Claude 能够找到当时的决策记录。
六、Web 管理界面使用指南
claude-mem 的 Web 界面是一个强大的管理工具,让我们详细了解它的功能。
6.1 访问界面
6.2 主要功能区域
- 时间戳
- 类型标签(decision、bugfix、feature 等)
- 涉及的文件
- 观察内容摘要
如果你有多个项目,可以在界面中切换不同项目的记忆。
- 观察类型(决策、Bug 修复、功能等)
- 时间范围
- 涉及的文件
- 应包含哪些观察类型
- 排除哪些内容
- 切换稳定版/测试版
点击某条记忆的"事实叙述"按钮,可以看到更详细的记录,包括:
6.3 Beta 功能:Endless Mode
claude-mem 提供了一个实验性功能叫 Endless Mode(无尽模式),这是一种仿生记忆架构,用于大幅延长会话长度。
标准的 Claude Code 会话在大约 50 次工具使用后就会触及上下文限制。每个工具添加 1-10k+ Token,而且 Claude 在每次响应时都会重新合成所有之前的输出(O(N²) 复杂度)。
- 分离工作记忆(Working Memory)和归档记忆(Archive Memory)
- 工作记忆:当前活跃的观察
- 归档记忆:存储在磁盘上的完整输出,可快速调用
- 复杂度从 O(N²) 降低到接近线性
在 Web 界面的 Settings 中切换到 Beta 版本即可尝试。
- Endless Mode 会增加延迟(每个工具约 60-90 秒)
- 目前仍处于实验阶段
- 适合需要长时间持续工作的场景
七、搜索功能深度使用
claude-mem 的搜索功能是其核心价值之一,让我们深入了解如何充分利用它。
7.1 自然语言搜索
最近对 worker-service.ts 做了什么修改?
7.2 结构化搜索
claude-mem 支持一个三层工作流模式来进行高效搜索:
search(query="authentication bug", type="bugfix", limit=10)
这会返回一个轻量级的索引,包含标题、类型和时间戳。
查看返回的索引,找到相关的记录 ID(比如 #123、#456)。
get_observations(ids=[123, 456])
7.3 高级过滤
type:decision file:auth.ts
"What decisions affected index.ts?"
"What do we know about auth?"
两种搜索方式都能工作:关键词搜索使用 SQLite 的 FTS5 引擎,语义搜索使用 ChromaDB 的向量匹配。
八、隐私保护机制
对于涉及敏感信息的项目,claude-mem 提供了完善的隐私保护机制。
8.1 使用 Private 标签
在你的代码或对话中,使用 <private> 标签包裹不想被记录的内容:
<private> 这里的内容不会被 claude-mem 记录
API_KEY="sk-xxxxx"
</private>
8.2 配置跳过的工具
export CLAUDE_MEM_SKIP_TOOLS="ListMcpResourcesTool,SlashCommand,AskUserQuestion"
8.3 手动清理记忆
九、常见问题与故障排除
9.1 Worker 服务无法启动
症状: 安装后 Worker 服务无法在端口 37777 启动
export CLAUDE_MEM_WORKER_PORT=8080
bun plugin/scripts/worker-service.cjs
9.2 记忆没有被保存
症状: 完成会话后,下次对话 Claude 依然不记得
ls -la ~/.claude-mem/claude-mem.db
9.3 依赖安装失败
cd ~/.claude/plugins/marketplaces/thedotmack npm install
9.4 上下文注入过多/过少
export CLAUDE_MEM_CONTEXT_OBSERVATIONS=5
export CLAUDE_MEM_CONTEXT_OBSERVATIONS=20
9.5 使用自动诊断功能
claude-mem 内置了自动诊断功能。如果遇到问题,可以直接向 Claude 描述问题,troubleshoot skill 会自动激活并提供修复建议。
cd ~/.claude/plugins/marketplaces/thedotmack npm run bug-report
十、进阶配置与优化
10.1 使用其他 AI 提供商
除了默认的 Claude,claude-mem 还支持其他 AI 提供商:
export CLAUDE_MEM_PROVIDER=openrouter
export OPENROUTER_API_KEY=your-api-key
export CLAUDE_MEM_PROVIDER=gemini
export GEMINI_API_KEY=your-api-key
10.2 自定义模式和语言
claude-mem 支持自定义模式文件,位于 ~/.claude-mem/modes/。可以为不同的编程语言或工作模式配置不同的提示词。
10.3 记忆导出与导入
10.4 与 Cursor IDE 集成
十一、技术架构图解
为了帮助读者更直观地理解 claude-mem 的工作方式,这里提供几张关键的架构图解。
11.1 数据流向图
用户输入 ↓
Claude Code 处理 ↓
PostToolUse 钩子触发 ↓
观察数据发送到 Worker ↓
Worker 调用 AI 提取语义 ↓
双数据库存储
├── SQLite (结构化索引)
└── ChromaDB (向量嵌入)
↓
下次会话 SessionStart 时检索 ↓
相关上下文注入新会话
11.2 组件交互图
┌─────────────────────────────────────────────────────────────┐
│ Claude Code IDE │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Lifecycle Hooks │ │
│ │ SessionStart → UserPrompt → PostToolUse → Stop → End │ │
│ └─────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
↓ HTTP
┌─────────────────────────────────────────────────────────────┐
│ Worker Service (:37777) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ SessionRoutes│ │ ObservationAPI│ │ ContextBuilder │ │
│ └──────────────┘ └──────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ AI Providers │
│ ┌──────────┐ ┌──────────────┐ ┌────────────────────┐ │
│ │ SDKAgent │ │ GeminiAgent │ │ OpenRouterAgent │ │
│ │ (Claude) │ │ │ │ │ │
│ └──────────┘ └──────────────┘ └────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ Database Layer │
│ ┌─────────────────────┐ ┌─────────────────────┐ │
│ │ SQLite │ │ ChromaDB │ │
│ │ (Structured + FTS) │ │ (Vector Search) │ │
│ └─────────────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
十二、与其他记忆方案的对比
12.1 为什么不直接用 CLAUDE.md?
Claude Code 本身支持通过 CLAUDE.md 文件来存储项目上下文。但这种方式有几个局限性:
| 特性 | CLAUDE.md | claude-mem |
|---|
| 自动化程度 | 需要手动维护 | 全自动 |
| 记忆粒度 | 宏观概述 | 精细观察 |
| 搜索能力 | 无 | 全文 + 语义搜索 |
| 历史追溯 | 无版本历史 | 完整时间线 |
| 适用场景 | 静态项目知识 | 动态工作记忆 |
CLAUDE.md 存储稳定的项目约定、架构决策
claude-mem 处理动态的工作记忆和历史追溯
12.2 与其他记忆插件的对比
市面上有一些其他的 AI 记忆解决方案,但 claude-mem 有几个独特优势:
- 专为 Claude Code 优化:深度集成生命周期钩子
- 语义压缩:不是简单存储日志,而是提取有意义的观察
- 隐私友好:支持细粒度的隐私控制
- 开源透明:代码可审计,数据完全本地化
十三、适用场景分析
13.1 最适合的场景
在进行跨越多天的复杂重构时,持久化记忆能帮助 Claude 记住:
- 重构的目标和动机
- 已完成的部分
- 待处理的问题
- 之前的决策依据
- 模块间的依赖关系
- 之前的架构讨论
- 各模块的实现细节
虽然 claude-mem 主要是个人工具,但在团队项目中:
- 每个人都有自己的记忆库
- 可以通过导出/导入分享关键决策
- 保持个人工作流的连续性
在学习新技术时,claude-mem 能帮你记住:
- 之前尝试过什么
- 什么方法有效/无效
- 学习过程中的关键发现
13.2 不太适合的场景
如果只是写一个简单的一次性脚本,记忆功能的价值有限。
尽管有隐私保护机制,但对于极度敏感的项目,任何形式的持久化存储都需要谨慎评估。
claude-mem 需要运行后台 Worker 服务,会占用一定的系统资源。在资源极度受限的环境中可能不太合适。
十四、升级与维护
14.1 自动升级
通过插件市场安装的 claude-mem 会自动升级。当有新版本可用时,SessionStart 钩子会自动检测并更新。
14.2 手动升级
/plugin update claude-mem
14.3 版本历史重要更新
- 修复了多个关键 Bug
- 设置文件首次运行时自动创建
- 修复了钩子执行问题
- 清理了大量冗余代码(删除 984 行)
- 简化了会话管理
- 修复了时间戳损坏问题
- 用原生 Bun 进程管理替换了 PM2
- 迁移过程自动完成
- 基于技能的搜索替换了 MCP 工具
- 每个会话节省约 2,250 Token
十五、开源协议说明
claude-mem 使用 AGPL-3.0 开源协议。这意味着:
- 如果你修改后作为网络服务提供给他人,必须开源你的修改
- 衍生作品必须使用相同的协议
对于普通开发者来说,直接使用没有任何限制。但如果你是企业用户,想要将 claude-mem 集成到内部平台并提供给第三方使用,建议进行法律评估。
十六、总结与展望
16.1 核心价值回顾
claude-mem 解决了 AI 编程助手的一个根本性问题:上下文遗忘。
- 告别每天重复解释项目背景的烦恼
- 让 Claude 记住你的编码习惯和项目架构
- 快速搜索历史工作内容
- 保持跨会话的工作连续性
16.2 最佳实践建议
- 安装后先进行一次完整的项目讨论,让 claude-mem 建立初始记忆库
- 定期查看 Web 界面,了解 Claude 记住了什么
- 善用隐私标签保护敏感信息
- 结合 CLAUDE.md 使用,静态知识放 CLAUDE.md,动态记忆交给 claude-mem
- 遇到问题时使用内置诊断功能
16.3 未来展望
根据项目的发展趋势,claude-mem 可能会在以下方向继续进化:
- 更智能的记忆压缩算法
- 团队共享记忆功能
- 更多 IDE 的支持
- 更强大的语义搜索能力
附录:相关资源链接
相关免费在线工具
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
- Mermaid 预览与可视化编辑
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
- 随机西班牙地址生成器
随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
- Keycode 信息
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
- Escape 与 Native 编解码
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
- JavaScript / HTML 格式化
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online