Show HN:Rmux——给 Agent 用的 tmux,自带 Playwright 风格 SDK

查看原文 HN 讨论

文章摘要

Rmux 是 helvesec 用纯 Rust 写的一个可编程终端多路复用器。它对 tmux 完全兼容——90 条 tmux 命令全实现、tmux.conf 可以直接迁移过来——但在此之上加了一层类型化的 Rust SDK,让 agent 或者自动化脚本能像 Playwright 操控浏览器那样去操控终端。

差异最简单的概括是:tmux 是给人用的;Rmux 是给人和 agent 都能用的。SDK 模型抄了 Playwright 的范式——你拿到一个 session,从 session 拿到 pane,对 pane 调 send_textsnapshotwait_for,全部异步。下面是官方示例:

let rmux = Rmux::builder().connect_or_start().await?;
let session = rmux.ensure_session(
    EnsureSession::named("work").detached(true)
).await?;
let pane = session.pane(0, 0);
pane.send_text("command\n").await?;
let snapshot = pane.snapshot().await?;

架构上是 daemon 模型——客户端断开连接 session 依然存活(这是 tmux 的核心价值),底层用 Tokio 异步运行时,PTY 在 Linux/macOS 上走 Unix PTY、在 Windows 上走 ConPTY,传输层用 Unix sockets 或 Windows Named Pipes。安全策略上较高层 crate 写了 #![forbid(unsafe_code)]。还集成了 Ratatui widget,方便嵌入 TUI 应用。

定位非常直白——”agent、headless CLI workflow 和人,都是一等公民“——目标场景包括多 agent 编排、Playwright 式的终端测试、SSH 中长寿 agent 管理、人机混合 workflow。目前版本 0.2.5,作者自述是 fresh public preview,预期有 bug。

HN 评论精华