miskiewiczm/ccsessions

GitHub: miskiewiczm/ccsessions

ccsessions 是一个终端 UI 工具,用于浏览、预览、恢复和管理 Claude Code 会话记录。

Stars: 5 | Forks: 0

# ccsessions 一个快速的终端 UI,用于浏览、预览、恢复和管理 [Claude Code](https://claude.com/claude-code) 终端会话。 ![ccsessions 在全屏终端中 — 宽屏布局,带有全高的对话面板](https://static.pigsec.cn/wp-content/uploads/repos/cas/39/396247bbc9a3351edd188f4abbe4d0a829c566343ec30ff98a1781aed79ba5b2.png) ## 功能 - **项目与会话浏览器** — 机器上的每个 Claude Code 项目, 最新的排在前面,带有实时会话指示器 (●)、消息计数和 token 使用量(输入 / 输出 / 缓存读取 / 缓存写入) - **对话预览** — 渲染任意会话的末尾内容,包含角色、 Markdown(用于 Claude 的回复)、工具调用 (⚙) 和斜杠命令 (⌘), 无需打开 Claude Code - **一键恢复** — `r` 键会将会话的工作目录下的 TUI 替换为 `claude --resume `;`c` 键将一个现成的 `cd && claude --resume ` 命令复制到剪贴板 (OSC 52) - **归档与删除** — 将会话移出 `claude --resume`(可逆) 或永久删除它们,支持按会话或按项目操作,并带有确认 对话框;检测并标记 (✕) 那些记录文件存在于其他同步机器上的会话 - **响应式布局** — 宽终端获得并排布局,带有全高 对话面板;窄(半屏)终端获得堆叠 布局,带有全宽对话面板: ccsessions 在半屏终端中 — 带有全宽对话面板的堆叠布局 - **快速** — 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)
标签:Blue Team, Claude Code, Python, SOC Prime, 会话管理, 开发工具, 无后门, 终端UI, 逆向工具