五一假期没出门,在家清了下硬盘,顺手翻了翻 ~/.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 Code resume 的时候能直接读到。


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(只在 /disk lazy 加载)
  • 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

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐