claude-mem
Claude-Mem: Claude Code 的持久化记忆压缩系统
概述
Claude-Mem 是一款专为 Anthropic Claude Code CLI 设计的持久化记忆压缩系统插件。该项目由 Alex Newman(@thedotmack)开发,采用 TypeScript 实现,于 2025 年 8 月首次发布,截至 2026 年 4 月已获得约 59,860 个 GitHub Stars,成为 AI 辅助编程工具领域的重要基础设施组件。
核心定位:自动捕获 Claude Code 编码会话中的工具使用行为,通过 Claude Agent SDK 进行 AI 压缩处理,并将语义化摘要注入后续会话,实现跨会话的上下文连续性。
问题背景与设计动机
核心问题:AI 编程助手的上下文断层
Claude Code 等交互式 AI 编程助手存在一个根本性缺陷——会话记忆的短暂性(Session Ephemeral Nature)。每个新会话均从零状态启动,导致:
| 问题类型 | 具体表现 |
|---|---|
| 上下文重复阐述 | 用户需反复解释项目背景、技术栈、编码约定 |
| 决策知识流失 | 已做出的架构决策、设计权衡在会话结束后消失 |
| Bug 修复轨迹断裂 | 已调试的 Bug 及其根因分析无法延续 |
| 编码模式不一致 | 后续会话可能采用与先前相矛盾的编码风格 |
解决方案架构
Claude-Mem 采用 “仿生记忆架构”(Biomimetic Memory Architecture)范式:
┌─────────────────────────────────────────────────────────────┐
│ Claude Code 客户端 │
│ ├── Hook 系统(5 个生命周期事件) │
│ ├── MCP 客户端(搜索工具) │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ CLI 层(Bun Runtime) │
│ ├── bun-runner.js(Node→Bun 桥接) │
│ ├── hook-command.ts(编排器) │
│ ├── handlers/(上下文、会话初始化、观测、摘要、会话结束) │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Worker Daemon(Express,端口 37777) │
│ ├── SessionManager(会话生命周期管理) │
│ ├── SDKAgent(Claude Agent SDK 集成) │
│ ├── SearchManager(搜索编排) │
│ ├── ProcessRegistry(子进程管理) │
│ ├── ChromaSync(嵌入向量同步) │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 存储层 │
│ ├── SQLite(claude-mem.db)—— 结构化数据 │
│ ├── ChromaDB(chroma.sqlite3)—— 向量嵌入 │
│ ├── MCP Server(Claude Code 接口) │
└─────────────────────────────────────────────────────────────┘
核心技术架构
1. 生命周期 Hook 系统
Claude-Mem 通过 Claude Code 的 Hook 扩展机制介入会话生命周期,实现无侵入式观测。
| Hook 事件 | 处理器 | 功能描述 | 超时配置 |
|---|---|---|---|
| Setup | setup.sh | 系统依赖安装检测 | 300s |
| SessionStart | smart-install.js + context | 依赖检查 + Worker 启动 + 上下文注入 | 60s |
| UserPromptSubmit | session-init | 会话注册 + SDK Agent 启动 + 语义注入 | 60s |
| PostToolUse | observation | 工具使用捕获 → 入队 Worker 处理 | 120s |
| Stop | summarize | 会话摘要生成请求 | 120s |
| SessionEnd | session-complete | 会话终止 + 待处理消息清空 | 30s |
Hook 注册配置示例(hooks.json):
{
"hooks": {
"SessionStart": [
{
"matcher": "startup|clear|compact",
"hooks": [
{
"type": "command",
"command": "node \"$_R/scripts/smart-install.js\"",
"timeout": 300
},
{
"type": "command",
"command": "node \"$_R/scripts/bun-runner.js\" \"$_R/scripts/worker-service.cjs\" start",
"timeout": 60
}
]
}
],
"PostToolUse": [
{
"matcher": "*",
"hooks": [
{
"type": "command",
"command": "node \"$_R/scripts/bun-runner.js\" \"$_R/scripts/worker-service.cjs\" hook claude-code observation",
"timeout": 120
}
]
}
]
}
}
2. Worker Service 架构
Worker Service(src/services/worker-service.ts)是基于 Express 的 HTTP API 服务,监听端口 37777:
- 异步处理:通过 Bun 管理的后台 Worker 执行 AI 处理任务
- 消息队列:
src/services/queue/管理待处理消息的入队、认领、确认流程 - SSE(Server-Sent Events):向 Viewer UI 推送实时观测数据
- 多 Provider 支持:兼容 Claude、Gemini、OpenRouter 等多种 AI 后端
核心会话类型定义:
export interface ActiveSession {
sessionDbId: number;
contentSessionId: string; // 用户 Claude Code 会话 ID
memorySessionId: string | null; // Memory Agent 会话 ID
project: string;
platformSource: string;
userPrompt: string;
pendingMessages: PendingMessage[];
abortController: AbortController;
conversationHistory: ConversationMessage[];
currentProvider: 'claude' | 'gemini' | 'openrouter' | null;
cumulativeInputTokens: number; // 发现成本追踪
cumulativeOutputTokens: number;
}
3. 数据库架构(SQLite3)
存储位置:~/.claude-mem/claude-mem.db
核心数据表
| 表名 | 功能 | 关键字段 |
|---|---|---|
| sessions | 会话追踪 | session_id, project, created_at_epoch, source, archive_path |
| memories | 压缩记忆块 | session_id, text, title, subtitle, facts, concepts, files_touched |
| overviews | 会话概览 | session_id, content, project, origin |
| diagnostics | 系统诊断 | session_id, message, severity(info/warn/error) |
| transcript_events | 原始对话数据 | session_id, event_index, event_type, raw_json |
SDK 集成专用表
| 表名 | 功能 | 关键字段 |
|---|---|---|
| sdk_sessions | SDK 会话映射 | content_session_id, memory_session_id, project, status, prompt_counter |
| observations | AI 提取观测 | type(decision/bugfix/feature/refactor/discovery/change), title, facts, concepts, files_read, files_modified |
| session_summaries | 会话总结 | request, investigated, learned, completed, next_steps, notes |
| user_prompts | 用户输入历史 | content_session_id, prompt_number, prompt_text |
4. 观测分类体系
观测记录按语义类型分类,支持细粒度的记忆检索:
type ObservationType = 'decision' | 'bugfix' | 'feature' | 'refactor' | 'discovery' | 'change';
export interface ObservationRecord {
id: number;
memory_session_id: string;
project: string;
text: string | null;
type: ObservationType;
title?: string;
concept?: string;
source_files?: string;
prompt_number?: number;
discovery_tokens?: number; // ROI 成本指标
}
5. 向量嵌入与语义搜索(ChromaDB)
存储位置:~/.claude-mem/chroma/
ChromaDB 用于存储观测记录的向量嵌入,实现:
- 语义相似性检索:基于向量距离的智能上下文匹配
- 混合搜索:FTS5 全文检索 + 向量语义检索的复合查询
- 上下文注入优化:按相关性筛选注入内容,控制 Token 成本
6. 渐进式披露(Progressive Disclosure)
Claude-Mem 采用三层渐进式披露架构,优化 Token 使用效率:
┌─────────────────────────────────────────────────────────────┐
│ 第一层:search │
│ 功能:返回紧凑索引(含 ID) │
│ Token 成本:~50-100 tokens/result │
└─────────────────────────────────────────────────────────────┘
│ 用户筛选感兴趣的 ID
▼
┌─────────────────────────────────────────────────────────────┐
│ 第二层:timeline │
│ 功能:获取特定观测周围的时序上下文 │
│ Token 成本:中等 │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 第三层:get_observations │
│ 功能:仅对筛选后的 ID 获取完整详情 │
│ Token 成本:~500-1,000 tokens/result │
└─────────────────────────────────────────────────────────────┘
Token 节省效果:相比直接获取全部详情,该架构实现约 10x Token 节省。
会话 ID 双轨架构
Claude-Mem 维护两种会话 ID 类型以实现跨会话追踪:
| ID 类型 | 标识符 | 说明 |
|---|---|---|
| contentSessionId | 用户会话 ID | Claude Code 对话会话的唯一标识(跨轮次稳定) |
| memorySessionId | SDK 会话 ID | Agent SDK 内部会话 ID(用于 Resume 功能) |
初始化流程
1. Hook 创建会话
createSDKSession(contentSessionId, project, prompt)
Database: content_session_id="user-123", memory_session_id=NULL
2. SDKAgent 启动,检测 hasRealMemorySessionId
→ FALSE(NULL)
→ 不使用 Resume(新建 SDK 会话)
3. 首个 SDK 消息携带 session_id
ensureMemorySessionIdRegistered(sessionDbId, "sdk-abc123")
Database: memory_session_id="sdk-abc123"(真实值)
4. 后续轮次可使用 Resume
→ TRUE(同一运行时内的延续性轮次)
→ Resume 参数:{ resume: "sdk-abc123" }
上下文注入机制
Hook 输出格式
SessionStart Hook 通过 hookSpecificOutput.additionalContext 字段向 Claude Code 注入上下文。自 Claude Code 2.1.0 起,该注入为静默模式,不向用户显示。
注入内容示例:
<claude-mem-context>
# Recent Activity
### Oct 25, 2025
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #2374 | 2:55 PM | ✅ | Marketplace metadata version synchronized to 4.2.11 | ~157 |
### Oct 27, 2025
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #2757 | 1:23 AM | 🟣 | Released v4.3.3 with Configurable Session Display | ~391 |
</claude-mem-context>
类型图例
| 符号 | 含义 |
|---|---|
| ✅ | 已完成/成功 |
| 🔴 | Bug 修复 |
| 🟣 | 发布/构建 |
| 🔵 | 调查/信息 |
| 🟡 | 问题-解决方案 |
隐私控制机制
Claude-Mem 提供 <private> 标签机制,允许用户在输入中标记敏感内容,该内容将被从存储流程中剥离:
<private>敏感信息内容</private> <!-- 用户级隐私控制 -->
隐私处理发生在 Hook 层(边缘处理),敏感数据不会进入 Worker 或数据库。
MCP 搜索工具
Claude-Mem 通过 MCP(Model Context Protocol)提供四个搜索工具:
| 工具名 | 功能 | Token 成本 |
|---|---|---|
| search | 全文查询检索,支持类型/日期/项目过滤 | ~50-100 tokens/result |
| timeline | 获取特定观测周围的时序上下文 | 中等 |
| get_observations | 按 ID 批量获取观测详情 | ~500-1,000 tokens/result |
使用示例:
// Step 1: 搜索索引
search(query="authentication bug", type="bugfix", limit=10)
// Step 2: 审阅索引,识别相关 ID(如 #123, #456)
// Step 3: 批量获取详情
get_observations(ids=[123, 456])
容错与降级架构
CLAIM-CONFIRM 消息队列模式
enqueue() → INSERT status='pending'
claimNextMessage() → UPDATE status='processing'(原子操作)
confirmProcessed() → DELETE(成功)
markFailed() → UPDATE status='failed'(重试 < 3)
自愈机制:处于 'processing' 状态超过 60s 的消息自动重置为 'pending'
Circuit-Breaker 熔断器
Generator 崩溃 → 重试 1(1s)→ 重试 2(2s)→ 重试 3(4s)
→ consecutiveRestarts > 3 → CIRCUIT-BREAKER 触发
→ 停止。避免无限循环。
Graceful Degradation 优雅降级
传输层错误(ECONNREFUSED、timeout、5xx)→ exit 0(永不阻塞 Claude Code)
客户端 Bug(4xx、TypeError、ReferenceError)→ exit 2(阻塞,需修复)
核心原则:Worker 服务不可用永不阻塞用户的 Claude Code 会话。
安装与配置
安装方式
# 标准安装
npx claude-mem install
# Gemini CLI 支持
npx claude-mem install --ide gemini-cli
# OpenCode 支持
npx claude-mem install --ide opencode
# 插件市场安装(Claude Code 内)
/plugin marketplace add thedotmack/claude-mem
/plugin install claude-mem
系统要求
| 依赖项 | 版本要求 | 说明 |
|---|---|---|
| Node.js | ≥ 18.0.0 | 运行环境 |
| Claude Code | 最新版 | 需支持插件系统 |
| Bun | JavaScript Runtime | 自动安装 |
| uv | Python 包管理器 | 用于向量搜索(自动安装) |
| SQLite 3 | 数据库 | 内置 |
配置文件
位置:~/.claude-mem/settings.json
{
"CLAUDE_MEM_MODE": "code--zh" // 简体中文模式
}
支持模式:
code(默认英文)code--zh(简体中文)code--ja(日语)code--es(西班牙语)- 等 ISO 639-1 语言代码
命令行管理
# Worker 服务管理
npm run worker:start # 启动服务
npm run worker:stop # 停止服务
npm run worker:restart # 重启服务
npm run worker:status # 查看状态
# 队列管理
npm run queue # 查看待处理队列
npm run queue:process # 处理待处理项
npm run queue:clear # 清空失败队列
# Bug 报告
npm run bug-report # 生成综合 Bug 报告
# Cursor IDE 集成
npm run cursor:install # 安装至 Cursor
npm run cursor:status # 查看 Cursor 状态
Web Viewer UI
访问 http://localhost:37777 可查看实时记忆流:
- 实时观测数据展示
- 会话历史浏览
- 搜索功能
- 设置配置
- Beta 功能切换(如 Endless Mode)
核心特性汇总
| 特性 | 描述 |
|---|---|
| 持久化记忆 | 上下文跨会话存活 |
| 渐进式披露 | 分层记忆检索,Token 成本可视化 |
| 技能驱动搜索 | 通过 mem-search 技能查询项目历史 |
| Web Viewer UI | localhost:37777 实时记忆流 |
| 隐私控制 | <private> 标签排除敏感内容 |
| 自动运行 | 无需手动干预 |
| 引用追踪 | 通过 ID 引用历史观测 |
| 多语言支持 | 中文、日语、西班牙语等 |
| Beta 渠道 | Endless Mode 等实验性功能 |
项目信息
| 属性 | 值 |
|---|---|
| 版本 | v12.1.6 |
| 许可证 | AGPL-3.0 |
| 语言 | TypeScript |
| 创建时间 | 2025-08-31 |
| Stars | ~59,860 |
| 官方文档 | https://docs.claude-mem.ai |
| GitHub | https://github.com/thedotmack/claude-mem |
| Discord | https://discord.com/invite/J4wttp9vDu |
| X/Twitter | https://x.com/Claude_Memory |
参考资料
- GitHub Repository - 主仓库
- Official Documentation - 官方文档(Mintlify)
- Hooks Architecture - Hook 架构详解
- Architecture Overview - 系统架构
- Configuration Guide - 配置指南
- Search Tools Guide - MCP 搜索工具
- Progressive Disclosure - 渐进式披露哲学
- Session ID Architecture - 会话 ID 架构
结语
Claude-Mem 代表了 AI 辅助编程工具领域的重要进展——从会话式助手向持久化智能伙伴的范式转变。通过生命周期 Hook、AI 压缩、向量语义检索、渐进式披露等技术的有机结合,该项目有效解决了 AI 编程助手的核心痛点:上下文连续性缺失。
对于追求高效、连贯 AI 编程体验的开发者,Claude-Mem 提供了一套成熟、开源、可扩展的解决方案,值得深入探索与实践。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)