关窗口不丢失上下文,下次打开秒恢复记忆。
Claude Code 默认每次新会话都是白纸一张——关闭窗口后再打开,完全不记得上次聊了什么。虽然 Claude Code 会自动保存对话记录(.jsonl 文件),但这些文件动辄 1-2MB,夹杂大量系统元数据,手动恢复又慢又麻烦。
本方案通过 Stop/Start hooks + 纯文本摘要 实现了:
- 关闭窗口时自动提取纯对话文本(1.4MB JSONL → 32KB summary)
- 下次打开时秒读轻量摘要(32KB,几乎瞬间完成)
- 可选的手动记忆保存(关键信息存为结构化 markdown,跨任意会话保留)
| 默认行为 | 使用本方案 | |
|---|---|---|
| 重开窗口后 | 白纸一张 | 自动回顾上次对话 |
| 加载速度 | N/A | ~32KB 秒读 |
| 手动操作 | 需要手动找对话记录 | 全自动 |
| 数据完整性 | 完整 JSONL 保留 | 完整 JSONL + 轻量摘要 |
一般不会手动,安装本项目完全可以做到自动保存并且总结,只需要在二次打开的时候用自然语言告诉他“恢复记忆”即可非常便捷。同时也保留了纯文本的格式,如果需要详细的对话细节也可以用自然语言直接告诉他。
- Claude Code CLI 工具
- Bun 运行时(
npm install -g bun或curl -fsSL https://bun.sh/install | bash)
cp hooks/auto-memory-start.ts ~/.claude/hooks/
cp hooks/auto-memory-stop.ts ~/.claude/hooks/cp -r skills/memory ~/.claude/skills/
cp -r skills/clean-memory ~/.claude/skills/将 config/hooks-config.json 中的内容合并到 ~/.claude/settings.json。
如果你的 settings.json 中还没有 hooks 键,直接整体复制粘贴即可。
注意:如果你用的是 Windows,$HOME 可能无法正确展开。请将命令中的 $HOME 替换为你的实际用户目录路径(如 C:\\Users\\你的用户名),或将 hooks 里的 command 改为绝对路径。
关掉当前窗口,重新打开。安装完成。
你关窗口 → Stop hook 触发
├─ 读 1.4MB JSONL
├─ 提取纯对话文本(用户 + 助手)
├─ 写入 32KB .summary.md ← 慢活只做一次,窗口关闭前完成
└─ 保存会话元数据到 last_session.json
你开窗口 → Start hook 触发
├─ 读 last_session.json
├─ 优先指向 32KB .summary.md ← 秒读
└─ 找不到摘要时回退到完整 JSONL
关键设计:摘要生成在关闭窗口时做,不是打开时。慢活只在关窗口时执行一次(1-2秒,用户无感知),打开时永远只需要读 32KB。
| 文件 | 触发时机 | 作用 |
|---|---|---|
auto-memory-start.ts |
启动/恢复会话 | 注入系统指令,让 Claude 读取上次摘要 |
auto-memory-stop.ts |
关闭/退出会话 | 从 JSONL 提取纯对话 → 生成摘要文件 |
| 技能 | 触发方式 | 作用 |
|---|---|---|
memory |
输入 /memory 或说"保存记忆" |
从当前对话中提取关键信息,存入结构化 memory 文件 |
clean-memory |
输入 /clean-memory 或说"清理记忆" |
列出并删除旧会话的 JSONL 文件 |
/memory 会将当前对话中的关键信息保存为 4 种类型的 memory 文件:
- user — 用户角色、偏好、技术栈、知识水平
- project — 项目目标、技术决策、约束条件、截止日期
- feedback — 用户对 Claude 行为的纠正或认可
- reference — 外部资源链接(文档、看板、仪表盘等)
这些文件存储在项目的 memory/ 目录下,每次新会话都会自动加载 MEMORY.md 索引。
/clean-memory 会列出当前项目的所有历史会话:
📁 当前项目: Dog (24 个会话, 13MB)
1. 29dc3c15... 2026-04-30 13:07 1.2M ← 今天
2. 5f41e9ba... 2026-04-29 15:40 1.1M
3. be7b6309... 2026-04-24 00:43 1.2M
...
删除哪些?(输入编号 / "old" 删除30天前的 / "all" 全部 / "0" 取消)
~/.claude/
├── hooks/
│ ├── auto-memory-start.ts # 启动钩子
│ └── auto-memory-stop.ts # 停止钩子
├── skills/
│ ├── memory/
│ │ └── SKILL.md # 记忆技能
│ └── clean-memory/
│ └── SKILL.md # 清理技能
├── settings.json # 包含 hooks 配置
├── last_session.json # 自动生成:上次会话元数据
└── projects/
└── <项目名>/
├── <sessionId>.jsonl # 完整对话记录
├── <sessionId>.summary.md # 纯文本摘要(32KB 轻量版)
└── memory/
├── MEMORY.md # 记忆索引(每次会话自动加载)
├── user_setup.md # 用户偏好
├── project_context.md # 项目背景
└── feedback_memory.md # 用户反馈
不会。本方案是双轨制——完整 JSONL 原文不动不删,额外生成一份轻量摘要用于快速加载。原始数据一条不少。
关闭窗口时。Claude Code 的 Stop hook 在窗口关闭前执行,相当于"关机前保存进度"。慢活在做的时候你已经走了,打开时永远快。
Bun 原生支持 TypeScript,无需编译配置。hooks 代码只用 Node.js 内置模块(fs、path、os),零 npm 依赖。
支持。每个项目有独立的 transcript 目录和 memory 目录,互不干扰。项目通过路径 slug 自动识别。
/clean-memory
然后选择 all(全部删除)或 old(删除 30 天前的)。建议定期清理,避免磁盘堆积。
MIT