memory-persistence机制深度解析:everything-claude-code如何让AI跨会话记住一切
【免费下载链接】everything-claude-codeClaude Code toolkit - agents, commands, skills, rules, and hooks for productive AI-assisted development项目地址: https://gitcode.com/GitHub_Trending/eve/everything-claude-code
Claude Code 记忆难题有解了。everything-claude-code 是专为 Claude Code 打造的开发工具包,其中 memory-persistence(记忆持久化)机制通过一组生命周期钩子(Hooks),让 AI 助手能够自动跨会话保存和加载上下文——你关闭终端再重新打开,AI 依然"记得"上次聊到哪、改了哪些文件、下一步该做什么。本文将带你完整理解这套机制的设计思路。
为什么 AI 会"失忆"?
如果你用过 Claude Code,一定经历过这种场景:
- 聊了两个小时,上下文压缩(Compaction)后 AI 开始"断片" 🤔
- 关掉会话重新打开,之前的进度全部清零
- 反复告诉 AI 项目的技术栈和约定,每次都要来一遍
问题的根源在于:AI 的对话上下文只存在于当前会话的内存中,会话一结束就消失了。
everything-claude-code 的解决方案很巧妙:把"记忆"写成硬盘上的文件,再通过 Claude Code 原生的 Hooks 机制,在会话的开始、压缩、结束三个关键节点自动读写这些文件。
机制全景:三个时刻,三份记忆
记忆持久化的核心代码位于 hooks/memory-persistence/ 目录(跨平台 Node 版本在 scripts/hooks/),分别对应该目录下的三个脚本:
| 生命周期节点 | 脚本 | 职责 |
|---|---|---|
| 会话开始(SessionStart) | session-start.sh | 找回上次的"记忆" |
| 上下文压缩前(PreCompact) | pre-compact.sh | 抢救即将被摘要丢掉的细节 |
| 会话结束(SessionEnd) | session-end.sh | 把今天的进度写成档案 |
它们通过 hooks/hooks.json 中注册的钩子配置自动触发,全程无需你动手。
会话开始:一键"回忆"昨天的进度
当你启动新会话时,SessionStart钩子会立刻执行 session-start.js,做三件事:
- 扫描记忆库:在
~/.claude/sessions/目录中查找最近 7 天内的会话档案(.tmp文件) - 报告最新记忆:告诉 AI "你有 N 个近期会话档案,最新的是哪一个",AI 就会去读取并恢复上下文
- 清点已学技能:检查
~/.claude/skills/learned/目录,告知 AI 有哪些沉淀下来的可复用技能
一句话:新会话不再从零开始,AI 一开口就知道上次做到哪了 🚀
上下文压缩前:在"失忆"前抢下快照
长对话中,Claude Code 会自动压缩(compact)上下文以节省 token,这个过程可能丢失细节。
PreCompact钩子(pre-compact.js)会在压缩发生之前执行:
- 把压缩事件连同时间戳追加写入
compaction-log.txt日志 - 在当前会话档案里插入一条醒目标记:"此时发生了上下文摘要"
这样即使 AI 被"压缩"了,档案里依然留有断点标记,下次恢复时能准确知道信息丢失的位置。
会话结束:自动生成"交接文档"
这是整套机制最有价值的部分。SessionEnd钩子(session-end.js)在会话结束时自动生成一份结构化交接档案,保存为YYYY-MM-DD-session.tmp,模板包含四个关键板块:
- Current State(当前状态)
- Completed(已完成事项)
- In Progress(进行中的任务)
- Notes for Next Session(留给下次会话的备注)
- Context to Load(下次需要加载的文件清单)
如果同一天有多次会话,脚本只会更新Last Updated时间戳,而不是新建文件——记忆按天聚合,干净利落。
进阶玩法:让 AI 自己"学习"
memory-persistence 不止于存档案,它还和**持续学习(Continuous Learning)**机制天然衔接:
- skills/continuous-learning/SKILL.md 定义了"学习"流程:会话结束时评估本次对话,把错误解决方案、调试技巧、用户纠正过的习惯等可复用模式提炼成 Markdown 技能文件
- evaluate-session.js 会统计会话消息数,超过阈值(默认 10 条)才触发提炼,避免短会话产生噪音
- 提炼出的技能存入
~/.claude/skills/learned/,而 SessionStart 钩子又会在新会话开始时把它们报告给 AI——记忆 → 技能 → 复用的闭环就此形成
相关配置见 skills/continuous-learning/config.json,你可以自定义要检测的模式类型(如error_resolution、debugging_techniques)和要忽略的噪音。
如何快速启用这套机制?
启用非常简单,核心步骤如下:
- 克隆仓库到本地:
git clone https://link.gitcode.com/i/0c81b1d7f7ef99cf46090d18eec760a0 - 注册钩子:把 hooks/hooks.json 中的
SessionStart、PreCompact、SessionEnd三段配置合并进你的~/.claude/settings.json - 无需其他操作:每个脚本都自带目录创建逻辑(
ensureDir),首次运行会自动建好~/.claude/sessions/记忆目录
所有脚本均基于 scripts/lib/utils.js 编写,Windows、macOS、Linux 全平台通用,且任何错误都会静默降级(process.exit(0)),绝不阻塞你的正常开发。
总结:三层记忆架构一图流
| 层级 | 载体 | 生命周期 |
|---|---|---|
| 会话档案 | ~/.claude/sessions/*.tmp | 按天保存,跨会话恢复 |
| 压缩日志 | compaction-log.txt | 记录每次上下文压缩的时间点 |
| 学习技能 | ~/.claude/skills/learned/*.md | 长期沉淀,越用越聪明 |
这套 memory-persistence 机制的设计哲学值得借鉴:不要试图让 AI 记住一切,而是在关键时刻(会话开始、压缩前、结束时)自动把状态落到磁盘上。文件即记忆,钩子即神经反射——这就是 everything-claude-code 让 AI 跨会话"记住一切"的完整答案。
【免费下载链接】everything-claude-codeClaude Code toolkit - agents, commands, skills, rules, and hooks for productive AI-assisted development项目地址: https://gitcode.com/GitHub_Trending/eve/everything-claude-code
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考