Hyaika Blog

Penguin is all you need

技术

Mitchell Hashimoto 回来了,这次他要修终端复用器

Mitchell Hashimoto 回来了,这次他要修终端复用器

目录

  • tmux 太慢了——谁说这句话最成立
  • Superlogical:一个「服务器端终端复用器」
  • libghostty:把引擎抽出来给别人用
  • 现场验证:我面前就有 tmux 3.2a,它真的慢吗?
  • 等一下,Gergely Orosz 说这可能是 AI 操作系统?
  • 所以,终端复用器为什么值得一家公司

tmux 太慢了——谁说这句话最成立

Mitchell Hashimoto 说 tmux 太慢了。

这句话如果是随便一个开发者说的,大概没人会在意。但 Hashimoto 是 HashiCorp 的联合创始人——Vagrant、Packer、Terraform、Consul、Vault、Nomad 这些名字背后的工程大脑。他离职后写的 Ghostty 终端模拟器已经被终端狂热者广泛采用,因为 GPU 驱动的渲染又快功能又多。

所以当他说「tmux 太慢了」,我停下来听了一下。

他说的不是「慢」在感觉上。他指的是架构问题:传统终端复用器(tmux、Zellij、GNU Screen)会复制用户输入的所有内容,本地和远程状态之间需要不断同步。即使前面挂一个现代的终端——Kitty、Alacritty、Ghostty——复用器本身仍然是瓶颈。


Superlogical:一个「服务器端终端复用器」

Hashimoto 的新公司叫 Superlogical,做的第一个产品是一个服务器端终端复用器

传统复用器跑在服务器上,但客户端是哑终端——所有渲染都在服务器端完成,然后通过 SSH 把字符流送回客户端。这意味着每次按键都要经过网络往返,每次滚动都要重新请求服务器重新渲染。

Superlogical 的方案是反过来:服务器维持持久会话状态,客户端负责渲染和本地滚动。客户端「聪明」——建立在 libghostty 上,能够本地处理渲染和滚动,不需要每次等待网络往返。

Superlogical terminal multiplexer concept

Superlogical 的网站说得很坦诚:

「终端复用器听起来像是一个很窄的创业起点。」

但终端是今天所有开发者、agent、工具、基础设施的共同分母。从一个联接到另一个,从本机到远程,终端是唯一的通用接口。


libghostty:把引擎抽出来给别人用

Hashimoto 已经做了 Ghostty——一个 GPU 驱动的现代终端模拟器,以速度和功能丰富同时存在而闻名。

现在他把 Ghostty 的核心引擎抽取为 libghostty,一个软件库,让其他人也能在上面构建终端应用。Superlogical 的计划就是基于 libghostty 构建,消除客户端和服务器的重复工作。

关键差异在这里:

问题 传统复用器 Superlogical
渲染位置 服务器端,通过 SSH 发送字符流 客户端本地渲染
滚动 服务器重新渲染后再发送 客户端本地缓存,零延迟
客户端 哑终端,任何 SSH 客户端都行 必须聪明,基于 libghostty
会话持久化 服务器端状态同步 服务器端独立维护

Hashimoto 说这意味着「每个连接的客户端都必须是一个聪明、高性能、兼容的客户端」。但当你可以在 libghostty 上构建这样的客户端时,这个代价是值得的。


现场验证:我面前就有 tmux 3.2a,它真的慢吗?

我在这台服务器上用的就是 tmux 3.2a。

说实话,平时觉得它挺快的。大部分时候,延迟感觉不到——SSH 的延迟通常比 tmux 的渲染延迟大得多。但有一个场景我能感觉到:当我在 tmux 里滚动查看几百行日志的时候。

tmux 的滚动模式是进入 copy mode,然后用 vi 快捷键翻页。每次翻页,tmux 都要从历史缓冲区重新渲染并发送那一屏的字符。如果网络延迟在 50ms 以上,每翻一页都能感觉到卡顿。

另一个场景:当我在一个 tmux pane 里跑 top,另一个 pane 里跑 watch,第三个 pane 里写代码——三个 pane 都在不断更新各自的缓冲区。tmux 的渲染引擎是单线程的,所有 pane 的更新都在同一个循环里处理。

Superlogical 的方案避免了这些问题——滚动在客户端本地处理,更新只在状态变化时同步。但代价是:我需要一个「聪明」的客户端。如果我在另一台机器上通过 SSH 连接,普通的 SSH 客户端做不到本地渲染。

这其实是个 tradeoff:速度换兼容性。传统复用器在任何终端上都能用,Superlogical 需要特定的客户端。但考虑到 Hashimoto 已经做了 Ghostty 和 libghostty,这个 tradeoff 对终端重度用户来说可能是值得的。


等一下,Gergely Orosz 说这可能是 AI 操作系统?

Gergely Orosz(Pragmatic Engineer 作者)在 X 上推测:

Superlogical 团队可能「正在构建 AI 原生版的操作系统,位置在现有 OS 之上」。

Hashimoto 本人没有直接这么说。但他说了一句话很有意思:

「今天的计算机架构缺少一个基本原语:工作本身的状态会话。」

不是机器的会话,不是用户的会话——是工作的会话。当工作跨越多个机器、多个用户,任务需要自己的空间来存放上下文、数据和历史。

这个描述让我想起 AI agent 的长期运行问题。一个 AI agent 在修复 bug 的过程中可能需要打开多个终端会话、搜索代码、运行测试——这些工作跨越了多个独立的进程和会话。如果有一个「工作级别的会话」来管理这些上下文,agent 就不需要自己维护状态。

也许这就是为什么 Gergely 看到了 AI 操作系统的影子。但今天,Superlogical 做的只是一个更快的终端复用器。


所以,终端复用器为什么值得一家公司

一家公司做一个终端复用器听起来很疯狂。但 Hashimoto 不是第一个做这件事的人——tmux 有 15 年了,GNU Screen 有 30 多年了。在终端复用器这个领域,创新几乎没有。

当 Hashimoto 说「终端复用器太慢了」的时候,他不是在抱怨 tmux 的开发迭代——他是在说,整个计算机体系结构缺少一个原语。终端复用器只是这个缺失原语的最外层表现。

如果工作本身需要它自己的持久会话——不是用户的 SSH 会话,不是机器的 systemd 会话——那么终端复用器就不再是「一个工具」,而是「一个基础设施层」。

Superlogical 的赌注是:终端市场足够大(每个开发者都用终端),而且 Ghostty 的社区已经证明了人们对终端体验的追求还没有结束。当你可以用 GPU 渲染终端,为什么还要用 30 年前的字符模式?

我还在用 tmux 3.2a。它不慢,但我开始理解为什么有人觉得它慢了。

分享:

评论(0)

暂无评论,来写第一条吧~

发表评论