教程:让Claude Code记住你的一切
Claude Code是一个非常强大的AI编程助手,但它有一个痛点:每次对话结束后,所有的上下文都会丢失。本文将介绍如何为Claude Code添加持久化记忆功能。
问题所在
每次启动新的Claude Code会话时,AI就像第一次见到你一样,不记得之前的对话内容、你的编程偏好、项目背景等信息。
问题是:Claude 代码会忘记一切
每次你开始新的Claude Code游戏,所有的记录都会被清除。你的编码风格偏好、项目架构决策、昨天的调试会议——全都没了。
你最后还是重复了一遍:“我们用的是Supabase,不是Firebase。边缘函数属于 。不要用假数据。”supabase/functions/
Claude-MEM 通过在会话间添加持久内存来解决这个问题。发布后48小时内,它就达到了4.6万个GitHub星数。我安装了它,先做了一个轻量的DIY替代品,以下是我发现的情况。
什么是 claude-mem?
GitHub:https://github.com/thedotmack/claude-mem
一个能让Claude Code拥有长期记忆的插件。它会自动记录你在会谈中的行为,并为后续对话注入相关背景。
建筑
- 5 生命周期钩子:SessionStart / UserPromptSubmit / PostToolUse / Stop / SessionEnd
- SQLite + Chroma:混合搜索(关键词 + 向量相似度)
- Bun HTTP Worker:localhost:37777 的后台服务
- MCP工具:三层渐进披露(搜索→时间线→ get_observations)
- Web UI:视觉记忆浏览器
安装
npx claude-mem install
npx claude-mem start # Requires Bun
我最先打造的DIY替代方案
在发现 claude-mem 之前,我只用两个 PowerShell 脚本和 Claude Code 的原生钩子 API 构建了一个最小内存系统。
PostToolUse 钩子(auto-capture.ps1)
每次使用工具后都会触发。捕获git提交和新文件创建到每日markdown文件:BashWrite
memory/auto-capture/2026-04-13.md
- 09:15 [abc1234] feat: Add user authentication
- 09:32 [Write] auth_middleware.dart
- 10:01 [def5678] fix: Token refresh logic
SessionStart Hook (session-resume.ps1)
读取过去3天的捕获数据,并在新会话开始时注入上下文。AI立刻知道你一直在做什么。
settings.json注册
{
"hooks": {
"PostToolUse": [{
"matcher": "Bash|Write",
"hooks": [{
"type": "command",
"command": "powershell -File auto-capture.ps1"
}]
}],
"SessionStart": [{
"hooks": [{
"type": "command",
"command": "powershell -File session-resume.ps1"
}]
}]
}
}
对比
| 特色 | 克劳德-梅姆 | DIY钩子 |
|---|---|---|
| 设置 | npx install(1个命令) |
2个脚本,手动 |
| 自动吃子 | 所有工具使用 | git提交 + 仅写 |
| 搜索 | 向量相似度 + 关键词 | GREP(文本搜索) |
| 网页用户界面 | 本地主持:37777 | 没有 |
| 依赖关系 | Bun + SQLite + (Chroma) | 没有 |
| 代币成本 | LLM压缩(Gemini = 自由空间) | 零 |
| 对git友好 | 数据库文件(git忽略) | Markdown 文件(可共享) |
| 多实例 | 会话范围隔离 | 文件共享以促进协调 |
两者同时运行
好消息是:它们和谐共存。claude-mem 作为插件注册,DIY 钩子直接注册在 settings.json。两者都针对同一事件开火,且没有冲突。
当克劳德-梅姆闪耀时
- 智能压缩:使用大型语言模型(Gemini/Claude)将工具输出总结为紧凑的观测值
- 语义搜索:“我上周对认证系统做了什么?”其实有效
- 网页仪表盘:已捕获内容的可视化概览
当DIY钩子闪耀时
- 零依赖:无服务器,无数据库,无运行时
- 团队共享:Markdown 文件可以提交到 git 并跨实例共享
- 完全掌控:你决定捕捉哪些内容以及如何
- 真正免费:完全没有API调用
成本优化小贴士
claude-mem 默认使用 Claude API 进行压缩,这会消耗你的代币。切换到Gemini(免费)以消除这个问题:
// ~/.claude-mem/settings.json
{
"CLAUDE_MEM_PROVIDER": "gemini",
"CLAUDE_MEM_GEMINI_API_KEY": "your-free-key-from-aistudio.google.com"
}
我们的三层内存架构
在我们的项目(Flutter Web + Supabase,3个并行Claude Code实例)中,我们采用了分层方法:
| 层 | 工具 | 目的 |
|---|---|---|
| 第一语言:会场中 | claude-mem (SQLite) | 自动记录所有工具使用,语义搜索 |
| L2:场间 | DIY钩子(折扣) | Git 提交历史,跨实例共享 |
| L3:跨项目 | NotebookLM 主脑 | 深入研究,长期建筑知识 |
结论
Claude-Mem兑现了将Claude Code从“一次性工具”转变为“成长中的合作伙伴”的承诺。矢量搜索和网页界面确实是非常实用的功能,简单脚本很难复制。
然而,对于想要零依赖、零代币成本和支持 git 内存共享的团队来说,DIY 钩子方案是一个稳妥的起点。
我的建议:先用DIY钩子减少内存,然后在需要语义搜索和自动压缩时加Claude-mem。
使用 Claude Code 构建 |项目:https://my-web-app-b67f4.web.app/
ClaudeCode #AI #buildinpublic
原创文章,作者:ROCKYCOO,如若转载,请注明出处:https://aiyixun.com/%e4%b8%baclaude-code%e6%b7%bb%e5%8a%a0%e6%8c%81%e4%b9%85%e5%8c%96%e8%ae%b0%e5%bf%86%e5%8a%9f%e8%83%bd/