摘要rmux 是一款用 Rust 从零重写的现代终端复用器兼容 tmux 90 条命令原生支持 Linux / macOS / Windows并提供 typed Rust SDK、Ratatui TUI 集成和端到端加密的浏览器 Web Share 功能。它不只是 tmux 的替代品而是为 AI Agent 工作流重新定义了终端控制应该是什么样子。你有没有想过tmux 这个 2007 年诞生的工具今天还在被几乎所有后端开发者使用——它的设计本质上是为人类用键盘操作终端而生的。但 AI Agent 时代来了。当你的 Agent 需要在 SSH 上运行一个长达几小时的任务或者你要用代码同时编排三个 Claude 实例分别处理不同子任务时tmux 的那套逻辑开始显得力不从心。你能send-keys但你得自己解析 escape sequence你能capture-pane但输出是原始文本没有结构你等一个进程跑完只能靠sleep grep没有更好的办法。rmux就是在这个背景下诞生的。它是什么一句话rmux 是用 Rust 从零重写的终端复用器兼容 tmux 命令同时提供一套 typed Rust SDK让代码能像 Playwright 驱动浏览器一样驱动终端。GitHubhttps://github.com/Helvesec/rmux官网https://rmux.io当前版本v0.5.0开源协议MIT / Apache-2.0平台Linux / macOS / Windows原生无需 WSL项目在 2026 年 5 月登上 Hacker News Show HN作者用的标题是A programmable terminal multiplexer with a Playwright-style SDK反响不错目前 GitHub Star 已超过 1900。为什么要重写 tmux作者在 README 里写得很直接我的出发点很简单——我想在 SSH 上运行长时间运行的 Agent同时不丢失终端还能检查、脚本化和编排整个流程。tmux 本身是 C 写的诞生于 2007 年设计目标是让人类能在终端里管理多个 session。它很好但它没有提供一个给代码用的 API。你要从程序里控制 tmux只能通过命令行调用拿到的是原始文本输出等待某个输出出现只能靠 sleep。rmux 的选择是同时面向人类和代码两个接口共享同一个 daemon不是非此即彼。三个公开接口共享同一个 daemonrmux 的架构很清晰有三个对外暴露的接口1. CLIrmux命令行完全兼容 tmux 的使用习惯。90 条命令实现肌肉记忆可以直接迁移rmux new-session -d -s work rmux split-window -h -t work rmux send-keys -t workecho hello from rmuxEnter rmux attach-session -t work你的.tmux.conf配置也支持作为迁移 fallback 导入不需要从头配。2. Rust SDKrmux-sdkcrate这是 rmux 最有意思的部分。Session、Pane 都是有稳定 ID 的 Rust 对象可以直接 await可以等特定文本出现可以拿结构化快照usermux_sdk::{EnsureSession, EnsureSessionPolicy, Rmux, SessionName, TerminalSizeSpec};#[tokio::main]asyncfnmain() - rmux_sdk::Result() {letrmux Rmux::builder() .default_timeout(Duration::from_secs(5)) .connect_or_start() .await?;letsession rmux.ensure_session( EnsureSession::named(SessionName::new(work).unwrap()) .policy(EnsureSessionPolicy::CreateOrReuse) .detached(true) .size(TerminalSizeSpec::new(120,32)), ).await?;letpane session.pane(0,0); pane.send_text(printf ready\n sleep 1\n).await?; pane.wait_for_text(ready).await?;// 不用 sleep等到它出现letsnapshot pane.snapshot().await?;println!({}x{}, snapshot.cols, snapshot.rows);Ok(()) }wait_for_text(ready)这个 API 设计很有意思——你不再需要猜测进程跑了多久直接声明等什么SDK 帮你处理。3. Ratatui Widgetratatui-rmux如果你在写 Rust TUI 应用可以直接把 rmux pane 的快照渲染成 Ratatui 组件useratatui::{buffer::Buffer, layout::Rect, widgets::Widget};useratatui_rmux::{PaneState, PaneWidget};usermux_sdk::PaneSnapshot;fnrender(snapshot: PaneSnapshot, area: Rect, buffer: mutBuffer) {letstate PaneState::from_snapshot(snapshot); PaneWidget::new(state).render(area, buffer); }这意味着你可以在自己的 TUI 里内嵌一个真实的终端 pane而不是模拟一个假的。Web Share把终端分享到浏览器这是 v0.5.0 里的新功能也是最差异化的一个亮点。一行命令把你的终端 session 暴露到浏览器里# 本地 loopback 访问rmux web-share# 分享指定 sessionrmux new-session -d -s work rmux web-share -t work# 通过 tunnel 公开访问rmux web-share --tunnel-provider localhost-run加密方式是端到端加密的 WebSocket文档里说用了混合后量子加密hybrid post-quantum E2EE。执行仍然在本机浏览器只是一个查看和操作界面。实际效果是你可以在浏览器里看到终端输出、拖动分割线、新建 pane就像一个远程桌面里的终端窗口一样但不需要 VNC不需要 X11 forwarding。对于需要临时分享调试现场、远程演示、或者在没有 SSH 客户端的设备上临时访问服务器的场景这个功能很实用。跨平台Windows 不靠 WSL很多跨平台的终端工具到了 Windows 上要么直接说用 WSL要么功能大幅缩水。rmux 选择了认真对待 Windows用真正的ConPTYWindows 伪控制台 API而不是模拟IPC 用Windows Named PipesUnix 上用 Unix Socket两者都是 OS 原生支持的。平台PTY 后端IPC 后端LinuxUnix PTYUnix SocketmacOSUnix PTYUnix SocketWindowsConPTYNamed Pipe对于要在开发者 Windows 机器或 Windows Server CI 环境里部署 Agent 工具链的团队这个细节很重要。能做什么Demo 场景一览项目 README 里列了几个 demo可以感受一下 rmux 的使用场景多 Agent 编排约 514 行用 rmux 同时驱动多个 AI Agent 实例每个实例在独立的 pane 里运行Agent 广播竞技场约 2,171 行把同一个输入广播给多个 Agent对比它们的输出Mini-Zellij约 944 行用 rmux Ratatui 自己实现一个 Zellij 风格的终端界面终端自动化约 1,495 行集成 Playwright 做 Web 测试终端操作和浏览器操作混合编排这些 demo 的源码都在仓库里都是可以直接跑起来的。安装方式Linux / macOS# 一键安装脚本curl -fsSL https://rmux.io/install.sh | sh# Homebrewbrew install helvesec/rmux/rmux# APTsudo apt install rmux# 需先添加 apt 源见官方文档# Cargocargo install rmux --lockedWindows# PowerShell 一键安装 irm https://rmux.io/install.ps1 | iex # Scoop scoop bucket add rmux https://github.com/Helvesec/scoop-rmux scoop install rmux # WinGet winget install rmuxRust 项目依赖cargo add rmux-sdk cargo add ratatui-rmux一些客观的局限项目本身对现状写得比较坦诚v0.5.0 仍然是moving fast的阶段90 条命令覆盖了最常用的但重度 tmux 插件用户比如 TPM 插件生态、复杂 Lua 脚本目前还不能完整迁移。社区里的评测结论基本是把它当作碰巧也可以用代码控制的 tmux而不是比 tmux 在所有方面都更好的 tmux。如果你现在只是想换一个更快的日常 tmux它能用但还有 bug如果你要构建需要代码驱动终端的 Agent 工具链它是目前这个方向上设计最完整的选择。总结rmux 的核心判断是终端控制应该是一个 API而不只是一个命令行工具。这不是一个新想法但它是第一个把这件事做完整的开源项目——CLI、SDK、TUI 渲染、浏览器分享四个接口共享同一个 daemon设计上是一致的。AI Agent 工作流对终端控制的需求就像 Web 自动化对浏览器控制的需求——Playwright 解决了后者rmux 在尝试解决前者。项目还年轻但方向是对的。GitHubhttps://github.com/Helvesec/rmux官网文档https://rmux.io/docs我是顾北关注我获取更多好玩有趣的开源仓库谢谢你阅读我的文章~我们下期再见PS本文部分内容由AI辅助创作