首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 归档 标签 关于

采访 Mitchell Hashimoto 关于 Ghostty 和 Zig

2026-07-10 1 阅读 约6分钟阅读 veqq
分享:
字号:
2026 年 7 月 - Alex Alejandre Mitchell Hashimoto 是 Vagrant、Packer、Consul、Terraform、Vault、Nomad、Waypoint 的幕后推手,现在构建了 Ghostty 和 Vouch。在本次采访中,我们谈论终端、Zig 和开源。你接受过很多采访。为什么人们喜欢采访你?在采访中,每个人的角度都不同。许多人想知道软件工程到企业创始人心态的转变是如何进行的。然后其他人对产品感兴趣,比如我现在在 Hashicorp 或 Ghostty 所做的工作。这里的不同之处在于没有已知的议程进入其中;我们俩都没有什么可卖的。您觉得终端有什么乐趣?比如,为什么是幽灵?我花了大约 15 年的时间构建 CLI 应用程序(不是我们现在看到的 TUI)。通过这个过程,我意外地学会了如何给东西上色、移动光标等。离开 Hashicorp 后,我想提高我的技术技能(这些技能因疏忽而变得迟钝),并专门从事:前 AI GPU 编程、桌面/单节点系统编程(在分布式方面花费大量时间,你不用担心缓存局部性或向量操作,因为网络成本占主导地位)。我也很想和 Zig 一起玩。我想满足这三件事。在构建 CLI 15 年之后,我不明白终端仿真器是如何工作的。我了解终端的组件,但真正想了解它是如何工作的,这也能让我在 GPU、桌面和 Zig 上工作。我的目标是运行 vim 和其中的编译器,让它自行构建,然后扔掉它。但随着我对终端生态系统的了解越来越多,我明白没有什么适合我想要的利基市场:快速、功能丰富和原生跨平台。我在 Discord 中与几个朋友分享了它,他们询问是否可以与其他人分享,因为他们实际上每天都在使用它。 Ghostty Discord 只是我朋友的群聊,后来被改变了用途。我不想发布,因为我的公众形象会引起太多不必要的关注,所以我运行了很长一段时间的私人测试版。如何进一步推动终端发展?我不支持把终端推向极端。当然,它们是一个应用程序平台,能够实现与操作系统之上的其他应用程序平台相同的功能,例如浏览器、旧的 Java 应用程序运行时环境。您可以在其中构建所有功能:视频和麦克风访问、响应式布局……你可以。但浏览器擅长某些事情,桌面擅长其他事情,基于文本(等宽网格)的应用程序也擅长某些独特的事情。这些基于文本的应用程序应该能够快速实施、易于交互、安全模型清晰。这里的生态系统有很多机会,我很乐意构建更多协议来实现这一点。基于终端的应用程序比其他范例更适合组合。 TUI 则不然,但大多数 CLI 工具都有机制(除了 stdin 和 stdout)来像函数一样使用它们(UNIX 的“做一件事”哲学是极端的)。 Neovim 和 AI 工具提供了更多的命令行标志。一个拥有更好的终端应用程序的世界,就是一个拥有更好的自动化、脚本化能力的世界。我想让终端成为应用程序的特殊场所。 PTY 的带内信令(带有转义序列的非结构化字节流)是一个大问题。 Nushell 生态系统试图用另一层来修复它,但我们需要根本性的改进。许多人不喜欢 Microsoft 生态系统,但 PowerShell 在结构化数据方面做得很好。您对非传统终端 API 有何看法?我的指导方针是我们现在如何拥有多个主要的、庞大的应用程序平台:浏览器、emacs、整个苹果生态系统、微软生态系统、Android、视频游戏控制台平台。这些生态系统各有优缺点,但它们的框架如何运作?在网络上,是 DOM 和 JS API。在 Apple 上,是 AppKit、Cocoa 和 SwiftUI。在 Windows 上,是 Win32、WinUI 等。在 Linux 上,是 GTK 和 Qt 等。当有人说我们需要一种更好的方式来访问剪贴板数据时(历史协议只是文本,那么图像、多种 MIME 类型等桌面已经处理了几十年),我会在每个平台上获取剪贴板管理器的文档,看看我们已经实现了什么。我们没有理由在不研究数十年现有技术的情况下根据自己的理解来构建一些东西。这就是我在这里尝试采取的方法。我还没有介绍任何自定义协议。两个协议对我尖叫。目前,终端有一个主屏幕和一个具有不同属性的替代屏幕(有时称为主屏幕和辅助屏幕)。主屏幕就像带有回滚功能的外壳,而备用屏幕就像 Neovim、大多数 TUI 等。只有 2 个,您可以打开或关闭模式,将您置于主要或次要状态(占据整个屏幕,失去回滚等)。我想引入一个 n-screen API 来在后台创建和填充无限数量的屏幕
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱