亿万富翁抛弃一切,回家写了一个终端软件

亿万富翁抛弃一切,回家写了一个终端软件

终端模拟器GhosttyMitchell HashimotoZig开源开发者工具

数据源:Interview + HN + Lobsters + web research · HN

如果你的银行账户里有几十亿美元,你会干什么?买游艇、做投资、环游世界——这些答案大家都猜得到。Mitchell Hashimoto 选了另一个方向:回家写一个终端模拟器。

2026年7月的一次采访里,这位 HashiCorp 创始人聊了他现在的全部精力投向了哪里——Ghostty,一个他用 Zig 语言从零写出来的终端。他在采访中说了句很直白的话:「离开 HashiCorp,我想把技术上荒废掉的能力重新磨回来。」一个创建了 Vagrant、Terraform、Vault 等七个产品的工程师,说自己想「磨一下技术」,然后挑的项目是终端——大多数人连终端和命令行都分不清的东西。

Mitchell Hashimoto 在演讲中展示的终端对比幻灯片:速度、功能和原生UI三者不可兼得,Ghostty 试图解决这个矛盾 ▲ Mitchell 在 Zig Showtime 演讲中展示的幻灯片:市面上大多数终端模拟器强制你在速度、功能和原生 UI 之间做取舍。(图源:mitchellh.com)

从「写着玩」到 57,900 个 star

Ghostty 的诞生没有任何商业计划。Mitchell 的原话是:「我做了 15 年 CLI 工具,可我居然不理解终端模拟器到底是怎么工作的。」他给自己定了三个想练的方向:GPU 编程、桌面单机系统编程(分布式搞了太久,已经不关心缓存局部性和向量操作了),以及玩一下 Zig 这门语言。终端刚好一次性覆盖了这三个目标。他的打算是让它在里面跑 vim 和编译器、编译出自己,然后扔掉。

结果朋友在 Discord 上看到了,说「我能把这个给别人用吗?我天天都在用它。」Ghostty 的 Discord 群本来就是他的朋友群聊,直接改了用途。他没想公开发布——自己的名字太招眼,反而可能毁了项目——于是跑了将近两年的封闭内测。

2024年12月,Ghostty 1.0 正式开源,MIT 协议。到今天,GitHub 上 57,900 个 star。

三个同时做到,不是三选一

Ghostty 的定位可以概括为一句话:在速度、功能丰富度和平台原生 UI 三者之间,它不打算让你做选择。

Mitchell 在 Zig Showtime 演讲里放过一张幻灯片——市面上大部分终端模拟器都在这三个维度上缺了一条腿。有的快但功能少,有的功能多但跨平台体验差,有的 UI 精致但性能拉胯。Ghostty 的路径是:底层用 Zig 写一个跨平台核心库(libghostty),上层 GUI 分别用 macOS 的 AppKit 和 Linux 的 GTK,两个都是平台原生的,不做「像原生」的假象。

在终端兼容性上,Ghostty 支持的特性和 xterm 转义序列比任何其他终端模拟器都多(xterm 自己除外)。它还支持几乎所有现代终端规范——styled underlines、Kitty keyboard protocol、graphics protocol、连字符(ligatures)。社区用户给它起了个外号叫「开箱即用就能当主力机」的终端,不需要先花两小时配配置文件。

Ghostty 在 macOS 上的截图,展示了平台原生 UI 的 split 和 tab 布局 ▲ Ghostty 在 macOS 上的截图,使用了平台原生的 AppKit tab 和 split 布局,社区用户自行配置了主题。(图源:Ghostty Discord 社区)

终端不止是黑框框:n-screen API 和按钮协议

采访里真正让人眼睛一亮的部分,是他对终端未来能力的设想。

现在的终端只有两个「屏幕」:主屏幕(你的 shell,有回滚历史)和备选屏幕(Neovim、htop 等 TUI 应用,全屏模式,没有回滚)。Mitchell 想引入一个 n-screen API——创建无限多个屏幕,在后台填充内容,可以叠放不同网格尺寸的屏幕,甚至可以指定某个屏幕以独立原生窗口的形式渲染。他举的例子是:「你的 Neovim tabs,变成操作系统层面的原生窗口 tab,同时打开。」

这话听着像科幻,但他说得很克制:「我还没有引入任何自定义协议。我的方法是先研究每个平台已有的框架——Web 的 DOM 和 JS API、Apple 的 AppKit 和 SwiftUI、Windows 的 Win32 和 WinUI——几十年的经验沉淀在那里,没必要从零发明。」

另一个在 spec 阶段的是按钮协议。现在的鼠标协议只能在屏幕当前可见内容上注册点击事件,一旦内容滚动到历史里就失效了。对 Claude Code 这类主屏幕应用来说,滚出视野就点不了链接,体验很糟。按钮协议要解决的就是「回滚历史中的交互性」——即使内容已经不在可见区域,点击依然会触发预定义的消息。

但他反复强调自己并不想把终端变成浏览器。「浏览器有浏览器的好,桌面有桌面的好,基于等宽字符网格的终端应用也有它的好。这些文本应用应该写得快、交互简单、安全模型清晰。」

「开源维护者对你零义务」

Mitchell 在采访里花了不少时间聊开源哲学,语气比聊技术时更锋利。

「开源许可证的第一行就是『按原样提供,无任何担保』。这就是合同,你拿到了免费软件,不能对它提要求。」他说,有一批人成长在风投支持的开源时代,以为每个开源项目都该有精美的网站、付费客服团队和稳定的发布节奏——但那只是生态系统中极小的一部分。开源的核心是自由和权利:按你想要的方式使用、修改和 fork 代码,不是「有人欠你一个稳定版」。

关于 Ghostty 为什么是「功能丰富」而不是「极简」的,他的解释也很务实。有一位用户抱怨搜索功能让 Ghostty 变臃肿了,他的回复是:「我架构搜索的方式决定了,如果你不用它,除了磁盘空间和驻留内存,什么都不会执行。这是免费功能。」然后补了一句让很多人破防的话:「如果你真的这么在意,fork 一个自己维护就好。这不会比你要求我做的更多。」

关于 Zig,他的态度也很鲜明:他知道 Zig 没有 1.0 意味着什么,但没关系。Zig 的 BDFL Andrew Kelley 不会因为语言火了就停止做必要的破坏性改动。「0.15 版本改了 writer 接口,等于改了所有打印东西的代码。但新 API 真的好了很多。」他还提到 AI 辅助迁移——展示几个改写案例,AI 能自动完成 90% 的迁移工作——「这意味着向后兼容性的代价在持续下降。」

结语

Mitchell 在采访结尾聊到他现在的日常:家里有一个六周大的婴儿,每天只有三个小时能坐在电脑前。但他仍然在写代码、在看论文、在画协议 spec。他说,「你可以在天上建一座完美的城市,但回到地面会发现现实世界里还有一堆破事要收拾。有时候你需要清理地面上的东西,有时候你需要推更大的愿景。」

从 HashiCorp 的 CEO 到全职写终端,这未必是什么「回归初心」的故事——更像是一个工程师发现,在不需要跟任何人汇报之后,他最想干的还是把东西造好。

参考链接: