miskiewiczm/ccsessions
GitHub: miskiewiczm/ccsessions
ccsessions 是一个终端 UI 工具,用于浏览、预览、恢复和管理 Claude Code 会话记录。
Stars: 5 | Forks: 0
# ccsessions
一个快速的终端 UI,用于浏览、预览、恢复和管理
[Claude Code](https://claude.com/claude-code) 终端会话。

## 功能
- **项目与会话浏览器** — 机器上的每个 Claude Code 项目,
最新的排在前面,带有实时会话指示器 (●)、消息计数和 token
使用量(输入 / 输出 / 缓存读取 / 缓存写入)
- **对话预览** — 渲染任意会话的末尾内容,包含角色、
Markdown(用于 Claude 的回复)、工具调用 (⚙) 和斜杠命令 (⌘),
无需打开 Claude Code
- **一键恢复** — `r` 键会将会话的工作目录下的 TUI 替换为 `claude --resume `;`c` 键将一个现成的
`cd && claude --resume ` 命令复制到剪贴板 (OSC 52)
- **归档与删除** — 将会话移出 `claude --resume`(可逆)
或永久删除它们,支持按会话或按项目操作,并带有确认
对话框;检测并标记 (✕) 那些记录文件存在于其他同步机器上的会话
- **响应式布局** — 宽终端获得并排布局,带有全高
对话面板;窄(半屏)终端获得堆叠
布局,带有全宽对话面板:
- **快速** — token 统计数据按记录文件缓存(通过
mtime + size 失效),扫描在 UI 线程之外运行,并且对话预览
仅读取多兆字节文件的末尾
## 要求
- Python ≥ 3.10
- 已安装 [Claude Code](https://claude.com/claude-code)(PATH 中包含 `claude` —
仅在恢复时需要)
- macOS 或 Linux(Windows 未经测试)
## 安装说明
```
pipx install ccsessions-tui # or: uv tool install ccsessions-tui
```
两者都会安装 `ccsessions` 命令。
或者从克隆的仓库中安装:
```
git clone https://github.com/miskiewiczm/ccsessions
pip install -e ccsessions
```
## 用法
```
ccsessions
```
| 按键 | 操作 |
| --- | --- |
| `j` / `k` / 方向键 | 在聚焦的面板内移动 |
| `Tab` / `Shift+Tab` | 切换面板 |
| `r` | 恢复选中的会话(原地替换) |
| `c` | 将恢复命令复制到剪贴板 |
| `a` | 归档 ↔ 恢复会话 · 归档 ↔ 恢复项目 |
| `d` | 删除会话 / 项目(需确认) |
| `n` | 重命名项目(设置显示别名) |
| `/` | 过滤聚焦的列表(项目或会话) |
| `Ctrl+R` | 重新扫描 `~/.claude` |
| `q` | 退出 |
当会话面板聚焦时,`a` 和 `d` 作用于**会话**;当
项目面板聚焦时,它们作用于整个**项目**。
项目名称默认为项目工作目录的最后一个组成部分。`n` 设置一个纯装饰性的别名(存储在
`~/.config/ccsessions/aliases.json` — 不会触碰 `~/.claude` 下的任何内容);
提交空别名将删除该条目并恢复默认名称。
### 配置
- **主题** — 在运行时通过 Ctrl+P → "Change theme" 切换;该选择会跨
运行保留(`~/.config/ccsessions/settings.json`)。
`CCSESSIONS_THEME` 环境变量会覆盖它。默认的 `ansi-dark` 遵循
您终端的调色板并保持终端透明度;RGB 主题
(`nord`、`gruvbox`、`tokyo-night`、`dracula` 等)会绘制不透明的背景。
- **代码块** — 围栏代码遵循应用程序主题,并带有匹配的
pygments 样式。设置 `CCSESSIONS_CODE_THEME` 以固定特定的样式
(可以是 `pygments.styles.get_all_styles()` 中的任意名称)。
- `~/.config/ccsessions/aliases.json` — 项目显示别名,可通过
`n` 键管理。
## 工作原理
ccsessions 读取 Claude Code 已在磁盘上保留的数据:
- `~/.claude/projects//*.jsonl` — 会话记录
- `~/.claude/projects//sessions-index.json` — 会话元数据
(摘要、首次提示、消息计数)
- `~/.claude/sessions/*.json` — 实时会话记录(通过
signal 0 检查 PID 活跃状态)
归档会话会将其记录移动到项目
文件夹的 `archived/` 子目录中(对 `claude --resume` 不可见,完全可恢复)。
归档项目会将整个文件夹移动到 `~/.claude/projects-archive/`;
归档的项目会列在活动项目之后(显示为暗淡的 ▪),并且可以
通过 `a` 键恢复。删除会移除记录及其索引条目。
Token 统计缓存位于 `~/.cache/ccsessions/`。
## 隐私
所有操作均在本地进行:ccsessions 仅读取 `~/.claude/` 下的文件,
并将缓存写入 `~/.cache/ccsessions/`。它不会发起网络
请求,也不会向任何地方发送数据。
## 开发
```
pip install -e . --group dev
pytest
```
## 许可证
[MIT](LICENSE)
- **快速** — token 统计数据按记录文件缓存(通过
mtime + size 失效),扫描在 UI 线程之外运行,并且对话预览
仅读取多兆字节文件的末尾
## 要求
- Python ≥ 3.10
- 已安装 [Claude Code](https://claude.com/claude-code)(PATH 中包含 `claude` —
仅在恢复时需要)
- macOS 或 Linux(Windows 未经测试)
## 安装说明
```
pipx install ccsessions-tui # or: uv tool install ccsessions-tui
```
两者都会安装 `ccsessions` 命令。
或者从克隆的仓库中安装:
```
git clone https://github.com/miskiewiczm/ccsessions
pip install -e ccsessions
```
## 用法
```
ccsessions
```
| 按键 | 操作 |
| --- | --- |
| `j` / `k` / 方向键 | 在聚焦的面板内移动 |
| `Tab` / `Shift+Tab` | 切换面板 |
| `r` | 恢复选中的会话(原地替换) |
| `c` | 将恢复命令复制到剪贴板 |
| `a` | 归档 ↔ 恢复会话 · 归档 ↔ 恢复项目 |
| `d` | 删除会话 / 项目(需确认) |
| `n` | 重命名项目(设置显示别名) |
| `/` | 过滤聚焦的列表(项目或会话) |
| `Ctrl+R` | 重新扫描 `~/.claude` |
| `q` | 退出 |
当会话面板聚焦时,`a` 和 `d` 作用于**会话**;当
项目面板聚焦时,它们作用于整个**项目**。
项目名称默认为项目工作目录的最后一个组成部分。`n` 设置一个纯装饰性的别名(存储在
`~/.config/ccsessions/aliases.json` — 不会触碰 `~/.claude` 下的任何内容);
提交空别名将删除该条目并恢复默认名称。
### 配置
- **主题** — 在运行时通过 Ctrl+P → "Change theme" 切换;该选择会跨
运行保留(`~/.config/ccsessions/settings.json`)。
`CCSESSIONS_THEME` 环境变量会覆盖它。默认的 `ansi-dark` 遵循
您终端的调色板并保持终端透明度;RGB 主题
(`nord`、`gruvbox`、`tokyo-night`、`dracula` 等)会绘制不透明的背景。
- **代码块** — 围栏代码遵循应用程序主题,并带有匹配的
pygments 样式。设置 `CCSESSIONS_CODE_THEME` 以固定特定的样式
(可以是 `pygments.styles.get_all_styles()` 中的任意名称)。
- `~/.config/ccsessions/aliases.json` — 项目显示别名,可通过
`n` 键管理。
## 工作原理
ccsessions 读取 Claude Code 已在磁盘上保留的数据:
- `~/.claude/projects/标签:Blue Team, Claude Code, Python, SOC Prime, 会话管理, 开发工具, 无后门, 终端UI, 逆向工具