Agent 时代有个没人预告的副作用:终端复活了。Claude Code、codex,我每天打交道最多的工具全都住在终端里。所以 Ghostty 的动向我一直盯着,最近这步迈得尤其有意思:libghostty。

1. 先补背景

Ghostty 是 Mitchell Hashimoto(对,HashiCorp 那个 Mitchell)用 Zig 写的终端模拟器,2024 年底发的 1.0,只有 macOS 和 Linux。Windows 支持一直是 issue 区的执念,Mitchell 的态度也一直很明确:要做,但要按对的方式做。

2. libghostty 是个什么东西

简单说:Ghostty 把核心——终端模拟、VT 解析、字体整形这些真正难的活——抽成了一个库,暴露 C API。GUI 降级成这个库的「壳」:macOS 是一个壳,GTK 是一个壳。

Mitchell 专门写了篇博客讲这件事,标题就叫《Libghostty Is Coming》。项目还发了个叫 ghostling 的演示项目:几百行代码,搓一个能用的终端出来。

这件事的意义比「又多一个终端」大:终端从「应用」变成了「组件」。以后编辑器想内嵌一个真终端、agent 工具想在界面里跑一个真的 shell,不用再套一层 WebView 受 Electron 的罪,链接这个库就行。

3. 为什么是 Zig

Zig 这语言不算出名,但放在这个场景里刚好:

  • 没有 hidden control flow,代码是「平」的,读起来什么样,跑起来就是什么样;
  • comptime 把泛型那套在编译期解决掉,不给运行时交税;
  • 和 C 零成本互操作,extern 一个头文件就能用。

对一个要被嵌进别人程序里的库来说,「没有魔法」不是加分项,是入场券。魔法越少,边界越清楚;边界越清楚,宿主越敢用。

顺便说一句,这对 AI 写代码是同一个道理:显式的代码最不容易被模型写歪,因为没什么可幻觉的。

4. 那 Windows 呢

Ghostty 1.2 放出了实验性的 Windows 支持。一个核心多个壳的架构,恰恰是这件事的前提:Windows 不需要重写一个 Ghostty,只需要再写一个壳。

多少跨平台软件死在 Windows 这道坎上,最后选了「原生外壳套系统 WebView」的混合路线,内存占用当场翻倍。Ghostty 选的路刚好相反:把最难的核心做成所有平台共享的库,把每个平台的壳做薄。

方向选对了,剩下的就只是时间问题。

5. 结尾

终端是 agent 的家。把终端做成库的人,想的不是「再做一个终端」,而是十年后什么软件里需要一个终端。

这一步,比大多数终端想得远。