每次新会话都要重新讲项目背景?一条命令解决Claude Code的跨会话失忆

用Claude Code写代码,最头疼的一件事:每次开新会话,它把你之前说的全忘了。

上一轮刚花半小时让它理解项目结构、技术栈、踩过的坑。关掉终端再打开,一切归零。你得重新解释"这个项目用Next.js 15""数据库是Supabase""上次那个bug是环境变量没加引号"。

有人用CLAUDE.md来缓解这个问题,把关键信息手动写进去。但手动维护的问题是:你不可能记住每次对话里每一个细节,写着写着就懒了。

GitHub上有个叫 claude-mem 的项目就是解决这个问题的。今天在GitHub Trending日增2300+星,累计5.8万。下面记录一下我的安装和使用过程。

claude-mem是什么

它是Claude Code的记忆插件。你照常写代码,它在后台自动捕获Claude的每一次工具调用:读了哪些文件、改了哪些代码、跑了什么命令、发现了什么bug。这些操作被一个后台Worker服务用AI压缩成结构化摘要,存到本地SQLite数据库。

下次开新会话,claude-mem把最近的上下文注入进去。Claude就知道你之前在干什么了。

安装

一条命令:

npx claude-mem install

重启Claude Code,完事。

如果你用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

安装过程做了这几件事: - 注册5个生命周期Hook到Claude Code - 启动后台Worker服务(端口37777) - 创建 ~/.claude-mem/ 目录和SQLite数据库

装完打开 http://localhost:37777 ,有一个Web界面可以实时看记忆流。

工作原理

claude-mem靠5个Hook驱动:

SessionStart — 每次打开Claude Code,从数据库拉最近50条观察记录和会话摘要,注入到Claude的初始上下文。

ToolUse — Claude每次调用工具(读文件、写文件、跑命令),都被捕获,原始数据发给Worker服务。

Stop — Claude回复完毕后触发。Worker生成一段会话摘要:你问了什么、Claude查看了什么、发现了什么、完成了什么、下一步做什么。

SubAgentStart / SubAgentStop — 子Agent的操作也被记录。

数据流长这样:

你正常用Claude Code
    ↓
ToolUse Hook 捕获工具调用
    ↓
发给Worker服务(localhost:37777)
    ↓
Worker用AI模型压缩成结构化摘要
    ↓
存入 ~/.claude-mem/claude-mem.db
    ↓
下次会话 → SessionStart读取并注入

配置

配置文件在 ~/.claude-mem/settings.json,首次运行自动生成。

注入数量

默认注入最近50条观察记录。项目大的话可以调高:

{
  "CLAUDE_MEM_CONTEXT_OBSERVATIONS": "80"
}

但别太高,注入多了占token。我个人用50够了。

换便宜的AI模型

默认用Claude Sonnet处理摘要。想省钱可以换Gemini免费模型:

{
  "CLAUDE_MEM_PROVIDER": "gemini",
  "CLAUDE_MEM_GEMINI_API_KEY": "你的key",
  "CLAUDE_MEM_GEMINI_MODEL": "gemini-2.5-flash-lite"
}

Gemini API有免费额度,处理摘要任务绑绑有余。

也可以走OpenRouter接免费模型:

{
  "CLAUDE_MEM_PROVIDER": "openrouter",
  "CLAUDE_MEM_OPENROUTER_API_KEY": "你的key",
  "CLAUDE_MEM_OPENROUTER_MODEL": "xiaomi/mimo-v2-flash:free"
}

跳过特定工具

有些工具调用不需要记录,默认已经排除了一批:

{
  "CLAUDE_MEM_SKIP_TOOLS": "ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion"
}

根据你的场景增减就行。

实测体验

装上跑了几天,说说实际感受。

最明显的变化:不用重复解释项目背景了。之前每次新会话要花3-5分钟让Claude理解项目,现在打开就能续上。它知道你昨天改了哪个文件、发现了什么bug、用了什么方案。

另一个意外收获是踩坑记录自动保留。上周配Tailwind CSS v4遇到postcss兼容问题,调了二十分钟。这周换分支碰到同样问题,Claude直接从记忆里找到上次的解决方案,省了一轮重复调试。

Web界面(localhost:37777)能看完整的记忆流,包括每条记录的类型(decision、bugfix、feature等)和关联文件。调试时偶尔翻翻,比git log直观。

踩坑记录

Worker没启动

装完后发现新会话没有注入上下文,先查Worker状态:

curl http://localhost:37777/health

没响应的话手动启动:

cd ~/.claude-mem && npm run worker:start

v4.0+版本正常会自动启动,但偶尔出问题。

看看数据库里存了什么

直接查SQLite:

sqlite3 ~/.claude-mem/claude-mem.db

-- 最近10个会话
SELECT session_id, project, created_at 
FROM sdk_sessions 
ORDER BY created_at DESC LIMIT 10;

-- 会话摘要
SELECT request, completed, learned 
FROM session_summaries 
ORDER BY created_at DESC LIMIT 5;

Token消耗

claude-mem注入上下文会占token。50条观察记录大概2000-4000 token,不算多但也不能忽略。每天开很多会话的话累积起来有成本。

建议CLAUDE_MEM_CONTEXT_OBSERVATIONS设30-50,够用就行。

隐私

如果有操作不想被记录(比如处理敏感配置),可以在settings里把对应工具类型加进SKIP_TOOLS列表。

claude-mem和CLAUDE.md一起用

不冲突。

CLAUDE.md放不变的东西——项目架构、技术选型、代码规范、常用命令。手动维护,一个项目写一次。

claude-mem记变化的东西——调试过程、最近改的文件、bug和解决方案。自动捕获,不用你管。

一个是长期记忆,一个是工作记忆。

写在最后

claude-mem解决了Claude Code跨会话失忆的问题。一条命令装好,不改工作流,后台自动跑。

每天用Claude Code写代码的话,装上试试。最直接的好处:新会话不用再花时间"热身"了。

项目地址:https://github.com/thedotmack/claude-mem

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐