五一在家顺手做了个 Claude Code Session Manager[特殊字符]
工具非常窄 —— 单用户、单机、本地、只针对 Claude Code 的数据格式。但用一个下午把"我自己每周都要受困的事"做成可点击,这种感觉还挺爽的。如果你也是 Claude Code 重度用户,~/.claude/仓库地址欢迎 Star / Issue / PR。
五一假期没出门,在家清了下硬盘,顺手翻了翻 ~/.claude/ —— 好家伙,8GB+。
我用 Claude Code(Anthropic 官方的 CLI 编程助手)三个月了,这工具本身没提供任何"清一下旧 session"的入口,你只能眼睁睁看着它一路涨。更糟的是,一条 session 的数据其实散落在 5 个地方:
~/.claude/projects/<encoded-cwd>/<sessionId>.jsonl 主消息流
~/.claude/projects/<encoded-cwd>/<sessionId>/ 子 agent 线程 + per-session memory
~/.claude/file-history/<sessionId>/ Claude 改过的每个文件历史快照(磁盘大头)
~/.claude/session-env/<sessionId>/ 环境快照
~/.claude/history.jsonl 全局 prompt 历史(按行包含 sessionId)
在 Finder 里只删那个 jsonl,剩下 4 处全是孤儿文件。最大的 file-history/ 还在那儿压着几个 G。
假期闲着也是闲着,我做了个本地 Web UI 把这事搞定 —— Claude Code Session Manager。下面看图说话,文末附仓库地址。

它能做什么
1. 项目总览 + 一键级联删除
进首页能看到所有 Claude Code 用过的项目(每个 cwd 一行),按磁盘占用排序就能立刻发现谁是大户。
点进项目能看到所有 session,带消息数、字节数、最近活跃时间,以及 live · pid 8412 / recently active / idle 三种状态徽章。

多选勾上几条 → Delete,弹出确认对话框告诉你会清掉哪 5 处文件、释放多少 MB,以及哪些 session 会被跳过、为什么。
顺带支持 inline rename —— 给 session 起个有意义的名字。底层往 jsonl 末尾追加一条
{"type":"custom-title", ...}记录,Claude Coderesume的时候能直接读到。
2. Session 详情:完整时间线 + 搜索高亮
点进 session 是完整的消息时间线:用户消息、assistant 回复、tool 调用、tool 结果、thinking 块都分了样式。tool 块默认折叠,点开看 input JSON 和 output。

3. 磁盘占用全景
/disk 路由是个独立的可视化页,告诉你磁盘到底被谁吃了:
- 饼图:按项目分布
- 月度柱状:看哪几个月你用得最猛
- Top-20 session 表:最大的 20 条 session,直接 deep link 进去能立刻 review 删不删

我自己第一次打开发现:5GB 里 4GB 都来自三个我早就忘掉的项目,一波清完直接腾出 70%。
Recharts 是这个页面专属的依赖,所以做了路由级 lazy load —— 主 bundle 124KB gzipped,charts 那 80KB 只在你点开
/disk才加载。
4. 跨 session 全文搜索(⌘K / Ctrl+K)
任意页面按 ⌘K,弹出全局搜索模态。键入关键词,后端流式扫所有项目所有 session,匹配的句子边出边显示。
搜索覆盖正文、tool 调用参数、thinking 块。每条结果点进去会直接定位到匹配的那条消息,带原句高亮。

我用得最多的场景:“上个月我是怎么修那个 timezone bug 的来着?” 直接搜 timezone,五秒钟翻出来。
实现上是 NDJSON 流,客户端关 tab 后端立刻 abort 扫描,不浪费 CPU。
5. Project Memory 查看器
Claude Code 在每个项目下会维护一份 memory(~/.claude/projects/<encoded-cwd>/memory/),记录用户偏好、项目隐性规则、反复踩的坑。MEMORY.md 是索引,其它 .md 是各类条目。
平时这玩意只能在 CLI 里翻文件看,不直观。Session Manager 给了个两栏阅读器:
- 左边:可搜索的文件列表,可以按索引顺序 / 最近修改 / 名称 / 大小排序,
MEMORY.md永远置顶 - 右边:渲染好的 Markdown
跟 Notion / Obsidian 那种笔记应用一个体感,但读的是 Claude 自己存的记忆。哪条记忆过时了,在 CLI 里改完文件,UI 自动刷新。


怎么用
需要 Node 22+(推荐 24)。
git clone <repo>
cd claude-code-session
npm install
npm run dev
打开 http://localhost:5173,完事。
或者直接生产模式(单进程同时托管 SPA + API):
npm run build && npm run start
# → http://127.0.0.1:3131
技术栈和架构
shared/ Wire 协议(types + 常量),server 和 web 都 import
server/ Hono + @hono/node-server,所有 fs 操作都集中在这一层
web/ React 19 + Vite + Tailwind v4 SPA,绝不直接读磁盘,只走 /api
- 后端:Node 22+ + tsx + Hono(零额外运行时,future-proof —— 想换 Bun / Cloudflare Workers / Edge 只换适配器)
- 前端:React 19 + Vite 6 + Tailwind v4 + TanStack Query + React Router 7
- 图表:Recharts(只在
/disklazy 加载) - i18n:zh / en
- 主题:light / dark,OKLCH 颜色 token + grain 噪点的 editorial 风格
整体 ~30 个 server .ts + ~25 个 web .tsx,一个周末能从头读完。没用 lint 也没用测试 runner —— npm run typecheck 同时校验 server + web,UI 行为靠 Playwright 写的 e2e 脚本验证。
写在最后
工具非常窄 —— 单用户、单机、本地、只针对 Claude Code 的数据格式。但用一个下午把"我自己每周都要受困的事"做成可点击,这种感觉还挺爽的。
如果你也是 Claude Code 重度用户,~/.claude/ 已经胖到让你头疼,可以试一下:
仓库地址:https://github.com/zzusp/claude-code-session
欢迎 Star / Issue / PR
更多推荐



所有评论(0)