我写了个终端工具管理 Claude Code / Codex 的历史会话

0 阅读2分钟

我写了个终端工具管理 Claude Code / Codex 的历史会话

用 Claude Code 有半年多了,~/.claude/projects/ 下面堆了一堆目录,全是乱码路径名。

有次想找上周某个对话里写的一段逻辑,翻了二十分钟没找到。token 用了多少不知道,哪些会话能删不知道,想清理只能手动 rm

终端里用了这么久,居然没有个像样的工具管这些。那就自己写一个——CSM


CSM 是什么

CSM(Claude Session Manager) 是一个终端 UI 工具,专门用来浏览和管理 Claude Code、OpenAI Codex 的历史会话。

不用离开终端,直接在命令行里:

  • 看所有项目和会话,带时间、消息数、token 用量
  • 搜索会话内容
  • 批量删除旧会话
  • 给会话改个有意义的名字

项目列表

会话列表


主要功能

项目视图

按工作目录分组展示所有项目,显示会话数、文件大小、最后修改时间,一眼知道哪个项目活跃、哪个可以清掉。

会话列表

列出每个项目下的所有会话,显示标题、日期、消息数、input/output token 估算。

详情视图

精确 token 统计(基于 tiktoken cl100k_base),工具调用次数统计,改动文件列表,消息预览。

搜索 & 批量删除

/ 进入搜索模式,模糊匹配标题和消息内容。搜出来之后用 Space 多选,d 一键批量删除。

重命名

在详情页按 r,给会话起个有意义的名字,下次一眼就能找到。

双 provider 支持

--source claude 管 Claude Code,--source codex 管 OpenAI Codex,标题栏会显示当前是 [Claude] 还是 [Codex]


快速上手

依赖: Bun v1.3+

git clone https://github.com/borneygit/csm
cd csm
bun install
bun run dev                      # Claude Code(默认)
bun run dev -- --source codex    # OpenAI Codex

或者编译成单二进制,直接丢到 PATH 里:

bun run build
./csm
./csm --source codex
./csm --path /custom/dir

键位一览

视图按键操作
全局q / Esc退出 / 返回
项目 / 列表 导航
项目 / 列表Enter打开
项目 / 列表d删除(确认后执行)
列表/进入搜索模式
列表(搜索中)Space切换选中
列表(搜索中)d删除选中会话
详情r重命名会话

技术实现

Ink(React for CLI)写 UI,js-tiktoken 做精确 token 计数,Bun 作为运行时和打包工具,编译出无依赖单二进制。

项目结构很简单:

src/
├── index.tsx          # 入口
├── components/        # UI 组件(ProjectView / ListView / DetailView)
├── providers/         # Claude / Codex provider 实现
├── scanner.ts         # 扫描 & 解码目录名
└── parser.ts          # 解析 JSONL,提取元数据和 token

代码量不大,感兴趣的可以直接读源码。


最后

这个工具目前解决了我自己的痛点,功能还比较基础。如果你也在用 Claude Code 或 Codex,欢迎试试。

有 bug、有想要的功能,欢迎开 issue 或 PR。

GitHub:borneygit/csm

觉得有用的话,点个 star ⭐ 是对我最大的支持。