hrdx Terminal Multiplexer
hrdx 是一款专为 AI agent 优化的终端复用器
hrdx 是一个用 Go 编写的实验性、极简的终端复用器,允许开发者并排运行多个 AI 编程 agent(例如 Claude Code、Codex CLI、pi 和 zot)以及标准 shell。它将项目组织为侧边栏中的工作区,提供了一个集中的环境来监控和与不同目录下的各种 agent 进行交互。
核心架构:真实终端与持久化
与终端包装器不同,hrdx 为每个面板使用真实的 PTY(伪终端)会话和完整的终端模拟器。这确保了 Agent TUI(文本用户界面)能够保持完整的功能,包括流式传输、斜杠命令和鼠标支持。工具可以通过 HRDX=1 环境变量检测到它们正在 hrdx 中运行。
会话持久化
hrdx 采用轻量级的会话持有进程,即使在 TUI 关闭后也能保持面板进程存活。重新启动时,hrdx 会重新连接到这些会话,恢复正在运行的命令、回滚缓冲区和屏幕布局(包括工作区、标签页和拆分比例)的精确状态。
工作区与 Agent 管理
可视化组织
界面包含一个侧边栏,用于显示工作区、Git 分支和面板的层级结构。为了减少混乱,只有当工作区包含多个标签页时,才会添加标签页行。
Agent 状态跟踪
每个面板都包含一个状态指示器来跟踪 agent 活动:
- Working: Agent 会显示动画化的盲文旋转器。
- Finished (Unfocused): 当一个 agent 完成任务时,一个未聚焦的 agent 会变成橙色。
- Acknowledged: 聚焦该面板会使指示器恢复为绿色。
自定义 Agent 集成
用户可以通过 harness.json 文件将任何 agent CLI 注册为自定义 harness。这允许第三方 agent(如 Aider 或 Goose)集成到 hrdx 生态系统中,使其能够出现在选择器和侧边栏中,并带有自定义的忙碌检测字符串以驱动状态旋转器。
可扩展性与控制
用于自动化的 Socket API
hrdx 提供了一个 JSON socket API(通过 Unix socket),允许外部脚本、编辑器或其它 AI agent 驱动会话。支持的方法包括:
workspace.create: 打开一个目录作为工作区。pane.create: 向特定工作区添加一个面板。pane.send_text: 向面板输入文本。pane.read: 获取可见屏幕的纯文本。pane.wait: 阻塞直到 agent 进入空闲或忙碌状态。
远程与容器化工作流
hrdx 支持远程主机、Docker 容器和 Kubernetes 工作负载,因为每个面板都是真实的 PTY。用户可以使用类似 ssh -tt user@host 'cd /path/to/project && exec codex' 的命令直接在远程目标上启动 agent。这些可以被注册为自定义 harness 以出现在 hrdx 原生的选择器中。
配置与自定义
- Keybindings: 前缀键(默认
ctrl+b)可以通过keys.json进行重新映射。 - Themes: 视觉风格可以通过使用覆盖 ANSI 256 颜色或十六进制代码的 JSON 主题文件进行自定义。
- Notifications: 用户可以配置系统通知或自定义音频文件,以便在 agent 完成一轮操作时提醒他们。
社区观点
虽然一些用户称赞该工具的响应速度及其将他们带回基于终端的开发工作流的潜力,但也有人质疑其相对于 tmux 等成熟工具的效用。一位用户指出:
"I hate to be that guy, but why would I use this over tmux? All of the features and qualities noted in the readme do not feel novel or unique."
然而,hrdx 通过提供专门用于 agent 状态监控的 UI 和专门为 agent 驱动的自动化设计的可编程 socket API,将自己与 tmux 区分开来。
Sources
相关
- 项目
- 项目
- Dispatch
- 项目
- 项目