跳到正文
Hacker News· bugpower·· 7 天前AI 评分36

Rezoom:用一个聊天列表管理所有 Claude Code 会话

Show HN: Rezoom – one chat list for all your Claude Code sessions

AI 导读

Rezoom 是一款原生 C++/Qt6 桌面工具,把机器上每个 Claude Code、Codex、SSH、tmux 或 shell 会话显示为一条聊天记录,实时呈现工作、等待、冻结等状态、标题与最新输出,一键即可恢复。

正文 · AI 翻译

为机器上的每个 AI 编码会话提供统一的聊天列表。 Rezoom 将每个 agent、ssh、tmux 或 shell 会话显示为一个聊天:它当前在做什么、最后说了什么,一键即可切回。原生 C++/Qt6,跟随你的 KDE 浅色/深色主题,内嵌真正的 Konsole 终端。

Agent Rezoom 知道什么
Claude Code 实时状态(工作中、等待中、冻结)、实时标题和输出、自动接管、冻结检测
Codex 在历史记录中找到、被接管、用 codex resume 恢复、在窗格中启动时被检测到
任何其他 CLI agent(aider、Gemini CLI、opencode……) 作为终端聊天运行;可通过设置中的命令模板恢复
其他机器上通过 SSH 运行的 agent 你输入的 ssh 会被记住作为返回方式;扫描远程 会找到主机上的 claude 和 tmux 会话,并将每个接管为一个可通过 ssh 恢复的聊天

CI Release License: MIT

Rezoom: session list with presence dots on the left, an embedded Claude session on the right

它能做什么

  • 一览无余。 Rezoom 读取 Claude Code 已经写入的注册表 (~/.claude/sessions/)。每个会话都会显示其状态:Claude 工作时显示橙色旋转图标 (卡住时显示静止的星形),完成且轮到你时显示绿色,空闲时显示灰色,在 shell 中显示蓝色,因使用限制而冻结时显示红色,可恢复时显示空心 ——它的实时标题,以及工作时最新的输出。新会话 会自动出现;由工具生成的会话(在 /tmp 中,或由另一个 claude 启动的) 会被排除在外。
  • 找到你想要的那个。 每个运行中的会话都会显示其他 agent 称呼它的名字(bex-6b),外部会话带有其 Konsole 窗口标题, 搜索会匹配名称、标题、消息和文件夹。
  • 永不丢失会话。 每个聊天都保留着能将其恢复的确切命令。 无论之前运行的是什么,Rezoom 启动时都会恢复,即使崩溃之后也一样。
  • 移动会话而不终止它们。 在其他 Konsole 窗口中运行的会话,其行上会出现一个 ⤵:一键即可将其实时传送到 Rezoom(reptyr),旧窗口 会为你关闭。或者跳转到它的窗口。“重启以更新”每个会话只需一次 按键。
  • 通过 SSH 使用 Rezoom。 在任何窗格中输入的 ssh 都会被记录为该聊天的返回 方式;任何 Konsole 标签页中打开的 ssh 都会显示为一个聊天,远程 claude 的 工作/轮到你状态从其标题中读取;扫描远程 会列出主机上的 claude 和 tmux 会话并接管每一个,用 ssh -t host 'claude --resume …' 恢复。 在你点击之前不会建立任何连接。
  • 有多个 Claude 登录?可选。 右键点击聊天 → 在另一个 Claude 账户下运行…(Ctrl+Shift+K)会创建一个单独的账户(~/.claude-<name>, 可选择共享你的设置和 CLAUDE.md),你在 claude 中 /login 一次。 这些聊天会带有一个小账户标签,并始终在其账户下恢复。 只有一个登录时,这些都不会出现。
  • 跨屏幕分组。 将聊天浮动到它们自己的标签式窗口中,再拉 回来;布局在重启后依然保留。
  • 知道什么时候出了问题。 被 Ctrl+Z 冻结的会话会显示为 已挂起 (内核如此表示;claude 自己的状态无法做到),并带有 ▶ 继续 在其自己的 终端中,或 改为在 Rezoom 中恢复;一个“忙碌”会话如果其记录两小时没有 变化,会显示 无进展;在 Rezoom 窗格内结束的 ssh 会得到一个带有 重新连接 的栏(点击即可,绝不自动)。
  • 了解何时被阻塞。在设置中一键安装 Claude Code 通知钩子;因使用限制而冻结的会话会变红并显示重置时间。
  • 键盘优先。所有操作都有 Ctrl+Shift 组合键(Ctrl+Shift+/ 列出了它们),因此普通的 Ctrl 键仍能到达你的 shell。

A session running in another window, with Beam it in and Go to its window

隐私

Rezoom 完全在你的机器上运行,从不调用 API。它读取 Claude 自己的文件,只写入自己的文件。两个例外是可选的,并在设置中说明:冻结检测钩子(添加到 ~/.claude/settings.json,并带有备份)以及为你已使用的文件夹跳过 Claude 的“信任此文件夹?”提示(默认关闭)。SSH 聊天在你点击之前不会连接。

安装

Debian/Ubuntu(25.04 或更新版本,用于 KF6) — 从最新发布下载 .deb:

sudo apt install ./rezoom_1.2.0_amd64.deb   # pulls Qt6/KF6/konsole-kpart via apt

Fedora/openSUSE — 从 spec 构建:rpmbuild -ba dist/rezoom.spec。

Arch — dist/PKGBUILD:在包含它的目录中运行 makepkg -si。

软件包依赖你的发行版的 Qt/KF6;没有捆绑任何内容。

可选:reptyr 用于移动活动会话(sudo setcap cap_sys_ptrace+ep $(which reptyr) 以在 Yama 下允许它 — 设置会显示是否就绪),tmux,jq 用于冻结检测钩子。

从源码构建

Linux:

sudo apt install qt6-base-dev libkf6parts-dev libkf6service-dev \
                 libkf6coreaddons-dev libkf6i18n-dev extra-cmake-modules
cmake -B build -G Ninja
ninja -C build
build/rezoom

macOS:

brew install cmake ninja qt
cmake -B build -G Ninja -DCMAKE_PREFIX_PATH="$(brew --prefix qt)"
ninja -C build
build/rezoom

在 macOS 上

KF6/Konsole 仅限 KDE,因此聊天会在 Terminal.app 窗口中打开,而不是嵌入式窗格。在线状态、标题、搜索、自动采纳、自动恢复、重启、归档、模板和冻结检测的工作方式相同:Claude Code 在 macOS 上写入相同的注册表。Beam-in 和“转到其窗口”需要 Linux(reptyr、KWin),在 macOS 上不会出现,并且单实例在那里是关闭的(会话存储无论如何都保持一致)。

CLI

rezoom-cli list                  # chats + live presence + agent name (TSV)
rezoom-cli resume <query>        # reopen a chat; query = agent name (bex-6b), id or title
rezoom-cli resume <query> --print
rezoom-cli adopt-running         # adopt every untracked running claude
rezoom-cli prune                 # drop dead chats stranded in /tmp
rezoom --resume <query>          # GUI: select + launch (forwards to a running instance)

文件

路径 内容
~/.local/share/rezoom/sessions.json 聊天记录(多进程安全)
~/.local/share/rezoom/notifications.jsonl 冻结检测捕获
~/.config/rezoom/rezoom.conf 模板、偏好设置、窗口布局
~/.claude/sessions/<pid>.json 活动注册表(由 claude 写入,只读)
~/.claude/projects/*/<uuid>.jsonl 转录(只读)

$REZOOM_DATA_DIR 和 $REZOOM_CLAUDE_DIR 将应用指向其他位置,而 $REZOOM_SCREENSHOT=<file.png> 将窗口渲染为 PNG 并退出 — 上面的截图就是这样制作的,来自演示数据。

许可证

MIT。

来源:Hacker News · github.com