深入RMUX架构:13个Rust Crate如何分层构建终端复用引擎
深入RMUX架构13个Rust Crate如何分层构建终端复用引擎【免费下载链接】rmuxUniversal Rust multiplexer with a typed SDK — drive any CLI or TUI app from code. Native on Linux, macOS, and Windows.项目地址: https://gitcode.com/gh_mirrors/rm/rmuxRMUX 是一个用 Rust 编写的异步类型化终端复用器terminal multiplexer原生支持 Linux、macOS 和 Windows兼容 90 条 tmux 命令并允许你用类型化 SDK 从代码直接驱动任意 CLI 或 TUI 应用。整个项目由 13 个 Rust crate 分层协作完成——理解这套分层是看懂 RMUX 架构的钥匙。️ 总览13 个 crate 各司其职RMUX 的工作空间成员在 Cargo.toml 中一目了然12 个库 crate 位于 crates/ 目录加上根目录的rmux主程序包CLI 守护进程入口正好 13 个。官方架构说明见 docs/ARCHITECTURE.md。分层Crate一句话职责基座层rmux-types平台中立的共享值类型基座层rmux-protoIPC 线路协议、帧封装与 DTOOS 边界层rmux-os主机、进程、用户身份、终端查询OS 边界层rmux-ptyPTY 分配、缩放、子进程控制OS 边界层rmux-ipcUnix 套接字 / Windows 命名管道传输核心层rmux-core会话、窗口、窗格、布局、缓冲区的内存模型服务端层rmux-server基于 Tokio 的守护进程与请求分发器服务端层rmux-web-cryptoWeb 分享端到端加密核心客户端层rmux-clientCLI 的阻塞式本地客户端与 attach 循环客户端层rmux-sdk面向用户的公开类型化 SDK渲染层rmux-render-core纯数据窗格快照与确定性渲染渲染层ratatui-rmux把窗格快照画进 ratatui 应用入口层rmuxtmux 风格 CLI、tiny 调度器与守护进程主程序xtask是工作空间内的构建工具包用于 CLI 补全生成等不属于产品架构。 基座层rmux-types 与 rmux-proto 定下合同架构的地基只有两个 crate它们决定了平台差异被隔离在哪。rmux-types极其轻量只依赖可选的 serde存放PaneId、SessionId等平台中立的身份与值类型。所有上层 crate 共享同一套词汇。rmux-proto是线路格式的唯一事实来源所有 DTO 平台中立、bincode 编码并统一封装在0x52魔数 版本号 长度的帧信封中详见 crates/rmux-proto/README.md。破坏性变更走版本号硬切换兼容性扩展则追加帧登记簿条目——这让客户端与守护进程可以独立演进。设计意图只要协议层稳定上层怎么改都不影响线上传了什么。️ OS 边界层让 Rust 在三大平台原生运行这一层的 3 个 crate 把操作系统差异关进笼子里也是 RMUX Windows 无需 WSL 的底气rmux-os主机信息、进程/用户身份、终端查询的薄抽象层Windows 走原生 Win32 APIrmux-pty负责 PTY 分配、缩放与子进程控制——Linux/macOS 用原生 Unix PTYWindows 用 ConPTYrmux-ipc解析守护进程监听端点Unix 域套接字或每用户命名管道严格本地从不打开网络监听器。三者刻意保持依赖少、体积小在 Cargo.toml 中rmux-ipc、rmux-os、rmux-proto、rmux-pty的发布配置都用了opt-level s为体积敏感的路径做了独立优化。 核心层rmux-core 是终端状态的权威大脑rmux-core 实现了守护进程使用的内存模型会话、窗口、窗格、布局、钩子、选项、缓冲区、格式系统、按键处理、屏幕网格等可浏览 crates/rmux-core/src/ 下 180 个源文件。它不依赖 Tokio、不碰文件系统、不管理进程——纯状态机。这种核心无 I/O的切分让终端状态逻辑可以离线测试与复用也让它成为rmux-client与rmux-server共同的领域语言。⚙️ 服务端层rmux-server 组装守护进程rmux-server 是 Tokio 运行时与请求分发器它在内存中持有会话/窗口/窗格/PTY并通过本地 IPC 协议服务客户端请求。它的依赖关系清晰地体现了分层rmux-server ├── rmux-core 状态模型 ├── rmux-pty 进程与 PTY ├── rmux-ipc 传输 ├── rmux-os OS 辅助 ├── rmux-proto 协议编解码 └── rmux-web-crypto可选web feature守护进程是终端状态的权威shell、PTY、窗格、滚动回看、进程状态全部留在本地机器上。CLI 侧的 tiny 调度器机制见 src/tiny_main/官方文档中的信任边界描述见 docs/ARCHITECTURE.md。 rmux-web-crypto把量子安全隔离在独立 cratermux-web-crypto 实现了 Web 分享的混合后量子端到端加密临时 X25519 密钥交换、ML-KEM-768 抗量子封装、HKDF 密钥调度、ChaCha20-Poly1305 认证记录。协议规范见 docs/specs/web-share-e2ee-protocol-v1.md。它刻意不认识 WebSocket、TCP、JSON 或 HTTP——这些属于rmux-server的 web 模块。这样加密核心零网络依赖、可编译到wasm32-unknown-unknown供浏览器使用且与服务端之间不存在循环依赖。 客户端层rmux-client 与 rmux-sdk 的分工rmux-client阻塞式本地客户端与 attach 模式管道服务于 CLI 的交互式附着循环它同时依赖rmux-core因为 CLI 需要在本地渲染 tmux 风格界面。rmux-sdk面向开发者的稳定公开 API是本地 IPC 客户端的对等公民而非包装器——不依赖任何内部运行时 crate。核心原语是connect_or_start、EnsureSession、类型化句柄Session/Window/Pane、send_text、wait_for_text、snapshot与输出流实现无 TTY 抓取、无字符串拼接命令的编程式驱动示例见 crates/rmux-sdk/README.md。 渲染层rmux-render-core 与 ratatui-rmux想把 RMUX 窗格嵌进自己的 Rust 终端应用rmux-render-core纯数据的PaneSnapshot类型与确定性 ratatui 投影。无守护进程、无 IPC、无文件系统、无网络、无 Tokio可直接编译进浏览器ratatui-rmux它的对外封装——PaneState纯数据PaneWidget同步、任意绘制循环安全PaneDriver异步拉取快照。异步工作被挡在绘制路径之外这是它能安全嵌入任何 UI 循环的关键。 入口层一个二进制两种形态根包rmux见 src/main.rs 与 src/daemon_main.rs解析 tmux 风格命令、连接或启动守护进程并渲染附着会话。发布包中它还可以被替换为tiny 调度器只解析窄命令白名单、发一次直接 IPC 请求复杂命令自动回落到完整 CLI 助手——这让高频 detached 命令的启动路径极快。 为什么这样分层三点收获平台差异有墙rmux-pty/rmux-ipc/rmux-os独占平台细节核心与协议保持中立Windows 原生支持因此水到渠成I/O 与状态分离rmux-core是纯状态机rmux-render-core是纯投影——两层都可以无环境测试、甚至跑在 wasm 里公开面收窄内部 crate 明确标注Private API用户只依赖rmux-sdk及 Python/TypeScript SDK架构演进不被外部绑定。下次你运行一条rmux命令它正依次穿过CLI 解析 → IPC 帧rmux-proto→ 本地传输rmux-ipc→ 守护进程分发rmux-server→ 状态模型rmux-core→ PTYrmux-pty——13 个 crate各守一层协作成一台完整的终端复用引擎。【免费下载链接】rmuxUniversal Rust multiplexer with a typed SDK — drive any CLI or TUI app from code. Native on Linux, macOS, and Windows.项目地址: https://gitcode.com/gh_mirrors/rm/rmux创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →