Skip to content

Tjm-1116/claude-code-memory

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Claude Code 跨会话记忆方案

关窗口不丢失上下文,下次打开秒恢复记忆。

解决什么问题

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 buncurl -fsSL https://bun.sh/install | bash

快速安装

1. 复制 hooks

cp hooks/auto-memory-start.ts ~/.claude/hooks/
cp hooks/auto-memory-stop.ts ~/.claude/hooks/

2. 复制 skills

cp -r skills/memory ~/.claude/skills/
cp -r skills/clean-memory ~/.claude/skills/

3. 配置 hooks

config/hooks-config.json 中的内容合并到 ~/.claude/settings.json

如果你的 settings.json 中还没有 hooks 键,直接整体复制粘贴即可。

注意:如果你用的是 Windows,$HOME 可能无法正确展开。请将命令中的 $HOME 替换为你的实际用户目录路径(如 C:\\Users\\你的用户名),或将 hooks 里的 command 改为绝对路径。

4. 重启 Claude Code

关掉当前窗口,重新打开。安装完成。

原理

你关窗口 → Stop hook 触发
              ├─ 读 1.4MB JSONL
              ├─ 提取纯对话文本(用户 + 助手)
              ├─ 写入 32KB .summary.md ← 慢活只做一次,窗口关闭前完成
              └─ 保存会话元数据到 last_session.json

你开窗口 → Start hook 触发
              ├─ 读 last_session.json
              ├─ 优先指向 32KB .summary.md ← 秒读
              └─ 找不到摘要时回退到完整 JSONL

关键设计:摘要生成在关闭窗口时做,不是打开时。慢活只在关窗口时执行一次(1-2秒,用户无感知),打开时永远只需要读 32KB。

组件说明

Hooks(自动运行,无需干预)

文件 触发时机 作用
auto-memory-start.ts 启动/恢复会话 注入系统指令,让 Claude 读取上次摘要
auto-memory-stop.ts 关闭/退出会话 从 JSONL 提取纯对话 → 生成摘要文件

Skills(手动触发)

技能 触发方式 作用
memory 输入 /memory 或说"保存记忆" 从当前对话中提取关键信息,存入结构化 memory 文件
clean-memory 输入 /clean-memory 或说"清理记忆" 列出并删除旧会话的 JSONL 文件

memory skill 详解

/memory 会将当前对话中的关键信息保存为 4 种类型的 memory 文件:

  • user — 用户角色、偏好、技术栈、知识水平
  • project — 项目目标、技术决策、约束条件、截止日期
  • feedback — 用户对 Claude 行为的纠正或认可
  • reference — 外部资源链接(文档、看板、仪表盘等)

这些文件存储在项目的 memory/ 目录下,每次新会话都会自动加载 MEMORY.md 索引。

clean-memory skill 详解

/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   # 用户反馈

常见问题

Q: 数据会丢失吗?

不会。本方案是双轨制——完整 JSONL 原文不动不删,额外生成一份轻量摘要用于快速加载。原始数据一条不少。

Q: 摘要什么时候生成?

关闭窗口时。Claude Code 的 Stop hook 在窗口关闭前执行,相当于"关机前保存进度"。慢活在做的时候你已经走了,打开时永远快。

Q: 为什么用 Bun 而不是 Node.js?

Bun 原生支持 TypeScript,无需编译配置。hooks 代码只用 Node.js 内置模块(fspathos),零 npm 依赖。

Q: 支持多项目吗?

支持。每个项目有独立的 transcript 目录和 memory 目录,互不干扰。项目通过路径 slug 自动识别。

Q: 如何彻底清理旧记录?

/clean-memory

然后选择 all(全部删除)或 old(删除 30 天前的)。建议定期清理,避免磁盘堆积。

许可

MIT

About

Claude Code 自带记忆只能存偏好,关窗口对话上下文照样丢。本方案补上缺口:Stop hook 将 JSONL 转纯文本摘要(1.4MB→32KB),Start hook 下次秒读恢复,打开窗口接着聊。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors