AI 优化 1.5ms,手写 0.02ms!Ghostty 作者痛批 AI 编程“平庸陷阱”

本文永久链接 – https://tonybai.com/2026/05/30/ghostty-creator-slams-ai-coding-performance-1-5ms-vs-0-02ms

大家好,我是Tony Bai。

在开源界,Mitchell Hashimoto 这个名字几乎无人不知。作为 HashiCorp 的联合创始人,他一手打造了 Vagrant、Terraform、Vault 等神级工具。而在他离开 HashiCorp 后,他的新宠——极速终端模拟器 Ghostty,凭借极其硬核的性能和绚丽的平台原生 UI,在 GitHub 上狂揽了 55K 颗 Star,成为了 Zig 语言 当之无愧的杀手级应用。

然而,就在最近,Mitchell 在 X(推特)上发布的一条Tweet,在开发者社区炸开了锅。


Mitchell Hashimoto 的 X 帖子截图

这篇帖子的起因,并不是大家猜测的“Ghostty 要放弃 Zig 转投 Go 语言”,而是一场极其讽刺、甚至有些黑色幽默的 “AI Agent 代码优化实验”。在这场实验中,Mitchell 揭露了当今 AI 编码工具最致命的缺陷,并把那些盲目迷信 AI 输出的开发者骂成了 “在平庸的喷泉中痛饮的羊群(Sheeple)”

如果你也在狂热地使用 Claude Code、Codex 或是任何“全自动代码优化 Agent”,那么 Mitchell 花了 350 美元买来的这个血淋淋的教训,你绝对不能错过。

实验开始:让 AI 去优化“故意写烂”的代码

这场风波的起因,是 Mitchell 进行的一场极限压力测试。

作为一个硬核实验,Mitchell 决定把 Ghostty 核心的渲染器状态(Renderer State)用 Go 语言 重新写一遍。(注:他明确回复网友这只是为了好玩和压力测试,并非真的要把 Ghostty 从 Zig 移植到 Go。

为了给 AI“挖坑”,Mitchell 故意写了一个极度幼稚的渲染器(Naively Renderer)。这段代码简单、正确,能够通过所有的验证测试(Validation Tests),但极其缓慢

  • 初始性能:每帧渲染耗时高达 88 毫秒
  • 初始内存压力:每帧疯狂分配 15 万次内存(Allocations)

随后,Mitchell 召唤出了当今最火热的编程范式:AI Agent 自动优化(Ralph loop)。他给了 AI(Codex 5.5 High)极其宽松的权限和明确的目标:“不准修改输入数据结构,不准修改公共 API 和测试,但你可以做任何你想做的事,只要把帧耗时(Frame times)给我降下来!”

AI 开始了疯狂的迭代。它能够自己运行测试、读取 CPU/内存 Profile、查阅 Go 语言标准库文档……

在这场持续了 4 个小时、烧掉了 Mitchell 大约 350 美元(API 调用费)的极客狂欢后,Agent 骄傲地交出了它的终极优化方案:

  • AI 优化后耗时:从 88ms 降至 1.5 毫秒
  • AI 优化后内存分配:从 150k 降至 ~500 次

“听起来是不是不可思议?干得漂亮对吧?” Mitchell 在帖子里冷笑道,“大错特错。这正是 AI 精神错乱(Agent Psychosis)成为一个他妈的大问题的绝佳例子。”

降维打击:人类架构师的恐怖直觉

为什么把耗时从 88ms 降到 1.5ms,还被 Mitchell 喷得体无完肤?

因为作为对比,Mitchell 贴出了他自己亲手写(Hand-written)的 Zig 版本渲染器移植到 Go 之后的真实数据:

  • 人类手写优化耗时~20 微秒(0.02 毫秒)
  • 人类手写内存分配:在 关键路径上是 0 次分配

差距是极其恐怖的 75 倍!

AI 究竟做错了什么?

在评论区,眼尖的开发者一针见血地指出了问题所在:“AI 只是学会了‘基准测试的本体论(Benchmark Ontology)’——比如如何分配时间片、如何通过内联等技巧绕过瓶颈,但它根本没有学会任务本身(也就是如何正确且高效地渲染终端画面)。”

另一位开发者的调侃更为致命:“让我猜猜,AI 是不是直接在渲染循环的顶部加了个 early return(提前返回)?这简直就是经典的‘奖励黑客行为(Reward Hacking)’——我见过一个 Agent 为了优化慢查询,直接把数据库表给删了。”

AI 的逻辑是典型的局部最优解陷阱(Local Maximum Trap)。它在原本的烂代码结构上,通过各种缓存、并发、小修小补,强行把时间压了下来。但它缺乏对“终端渲染器”这一复杂系统的宏观认知,它不敢、也想不到去推翻整个架构,采用类似“预分配内存池(Arena Allocator)”加“脏矩形跟踪(Dirty Tracking)”这样更本质的解决方案。

戳破幻觉:“盲从 AI 的人,正在痛饮平庸”

这场 350 美元的实验,揭开了当前 AI 辅助编程最危险的一面。

Mitchell 在帖子的核心部分发出了警告:

“这就是缺乏系统级理解的悲剧。如果你不理解系统,你就会觉得 AI 给出的结果‘令人难以置信’。但如果你真的理解这个系统,你会立刻看出更好的解决方案,并且能做出比 AI 好 75 倍的吞吐量。”

Mitchell 并没有否认 AI 的价值(他自己也在频繁使用 Codex),他痛批的是一种正在行业内蔓延的“盲从文化”

在如今的开发圈,越来越多的开发者(尤其是缺乏底层经验的初中级工程师)正在把架构设计的权力让渡给 AI。只要代码能跑通,测试显示性能提升了,他们就会毫无保留地合并代码。

Mitchell 极其辛辣地将这些人称为:“在平庸的喷泉中痛饮的羊群(Sheeple, overdrinking from a fountain of mediocrity)。”

当你习惯了 AI 给出的“局部最优解”,你就永远失去了向“全局最优(S-tier 级别性能)”发起冲击的能力。

开发者圈的反思:被剥夺的“系统思维”与虚假的“免费午餐”

这篇帖子在 X 上引发了热烈的讨论。数百位资深开发者、CTO 和 AI 研究员纷纷入场,贡献了极其深刻的行业反思:

1. 虚假的“免费午餐”与高昂的隐形成本

很多人只看到 AI 帮你“免费”提升了性能,却忽略了背后的算力成本。

一位开发者提出质疑:“如果你让它跑 40 个小时呢?”

Mitchell 直接反击:“如果假设成本是线性的,那就是 3500 美元。谁会为了一个功能花 3500 刀去让 AI 盲目试错?”

这也暴露出目前 AI Agent 极低的资本效率——在工业界,花 350 美元去得出一个“只是及格”的平庸结果,是极度浪费的。

2. S 级程序员的断代危机

另外一位开发者惊叹于 AI 居然能为一个完全不懂底层的人带来量级上的性能提升。

但 Mitchell 立刻指出了最让人细思极恐的问题:“确实如此。但如果所有人都满足于 AI 给出的‘还可以’的结果,未来的 S 级程序员从哪里来? 谁去承担那种需要深入底层、推倒重来的艰苦工作?”

如果我们这代人不再亲自去踩坑、去摸索内存布局的艺术,下一代的超级黑客将在平庸的代码投喂中彻底断代。

3. 系统级理解(Systems Understanding)才是终极护城河

在这场风暴中,最振奋人心的结论或许是一位开发者留下的这样一句短评:“Systems understanding is the real moat.(系统理解才是真正的护城河。)”

AI 可以瞬间写出几百种排序算法,可以帮你把嵌套循环优化成哈希表。但在面对诸如“如何设计一个无锁的并发渲染器”、“如何极致压榨 CPU 缓存命中率”这种需要将业务上下文、硬件特性与架构哲学融为一体的系统工程时,AI 依然是个门外汉。

小结:醒醒吧,别让 AI 夺走你的方向盘!

Mitchell Hashimoto 的这场实验,犹如一盆冷水,浇醒了那些沉醉在“Agent 自动编程”幻梦中的开发者。

AI 时代的到来,并不是为了让我们交出思考的权力。大模型是一辆马力极其强劲的跑车,但方向盘必须永远掌握在拥有“系统级理解(Systems Understanding)”的人类架构师手里。

如果你只是给 AI 设定一个粗糙的目标(比如“让它变快”),那么 AI 给你的,往往只是一个拼凑了无数“小聪明”的平庸怪胎;只有当你真正理解了底层的运作逻辑,你才能提出正确的问题,画出正确的框架边界,让 AI 在你的掌控下发挥出真正的威力。

正如 Mitchell 在文章最后语重心长的忠告:

“我一直在用 AI,我喜欢 AI。我想表达的是:不要盲目接受结果。去思考,去分析,去学习(Think. Analyze. Learn.)。”

在这个“劣币驱逐良币”、平庸代码泛滥的时代,愿我们都能守住最后那一点对极致性能的工匠精神,拒绝成为那些在平庸喷泉旁痛饮的“羊群”。

资料链接:https://x.com/mitchellh/status/2060088112257372610


今日互动讨论

在你的日常开发中,有没有遇到过被 AI“带偏”的时刻?如果让你用 350 美元去跑一个自动化优化的 Agent,你觉得它是“物超所值”还是“智商税”?

欢迎在评论区分享你的看法,我们一起聊聊 AI 时代的防坑指南!


还在为“复制粘贴喂AI”而烦恼?我的新专栏 AI原生开发工作流实战 将带你:

  • 告别低效,重塑开发范式
  • 驾驭AI Agent(Claude Code),实现工作流自动化
  • 从“AI使用者”进化为规范驱动开发的“工作流指挥家”

扫描下方二维码,开启你的AI原生开发之旅。


原「Gopher部落」已重装升级为「Go & AI 精进营」知识星球,快来加入星球,开启你的技术跃迁之旅吧!

我们致力于打造一个高品质的 Go 语言深度学习AI 应用探索 平台。在这里,你将获得:

  • 体系化 Go 核心进阶内容: 深入「Go原理课」、「Go进阶课」、「Go避坑课」等独家深度专栏,夯实你的 Go 内功。
  • 前沿 Go+AI 实战赋能: 紧跟时代步伐,学习「Go+AI应用实战」、「Agent开发实战课」、「Agentic软件工程课」、「Claude Code开发工作流实战课」、「OpenClaw实战分享」等,掌握 AI 时代新技能。
  • 星主 Tony Bai 亲自答疑: 遇到难题?星主第一时间为你深度解析,扫清学习障碍。
  • 高活跃 Gopher 交流圈: 与众多优秀 Gopher 分享心得、讨论技术,碰撞思想火花。
  • 独家资源与内容首发: 技术文章、课程更新、精选资源,第一时间触达。

衷心希望「Go & AI 精进营」能成为你学习、进步、交流的港湾。让我们在此相聚,享受技术精进的快乐!欢迎你的加入!

img{512x368}


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

Redis 之父吐槽现代前端的复杂性:我们到底是在解决问题,还是在制造问题?

本文永久链接 – https://tonybai.com/2026/05/29/redis-creator-slams-modern-frontend-complexity

大家好,我是Tony Bai。

曾几何时,Web 开发是一件极其纯粹且美好的事情。

在那个遥远的上世纪 90 年代末,你只需要写几个简单的 .html 文件,撒上一点 .css,再用几行 JavaScript 操纵一下表单,就能构建出一个能被全世界访问的网站。源代码和你最终在浏览器里看到的东西,几乎是一模一样的。

但今天,一切都变了。

现代前端开发,已经演变成了一场极其荒谬、极度复杂的“军备竞赛”。

就在前不久,一篇名为《现代前端的复杂性:是本质必然还是历史偶然?》的文章,在Hacker News 上,引发了一场“行业公审”。

这篇文章毫不客气地将矛头直指以 React/Angular/Vue 为首的现代 SPA(单页应用)框架,痛斥其为了追求所谓的“开发体验(DX)”,把前端技术栈变成了一个由 TypeScript、TSX、JSX、Vite、Webpack、Tree Shaking、Polyfills、Post CSS 等无数个复杂工具链粘合起来的“巴别塔”。

这场大讨论,甚至引来了 Redis 之父、意大利传奇程序员 antirez(Salvatore Sanfilippo)的亲自下场。

他用极其犀利、充满历史洞见的“视角”,对现代前端的“异化”进行了吐槽和抨击,并抛出了一个值得我们所有人深思的灵魂拷问:

我们费尽心机建立的这套复杂体系,到底是在解决真正的商业问题,还是仅仅在制造更多的问题?

皇帝的新衣:被大厂“PUA”的前端开发者

antirez 在他那段获得最高赞的评论中,一针见血地指出了现代前端“原罪”的根源:大厂的内部组织架构,绑架了整个行业。

“大型框架(如 Angular 和 React)是被大公司推给用户群的。它们是‘大公司设计’的产物,后来才变成了行业常态。这就像让地球上每个网站都跑在 Kubernetes 上一样可笑。”

他认为,大厂有两个极端的需求:

  1. 彻底隔离前后端:因为他们的组织架构就是这么划分的。
  2. 将应用极度标准化:这样他们就可以轻松地招聘新人、开除旧人。

这两个目标,都与“构建一个优秀的 Web 应用”背道而驰。

为了满足这两个内部需求,前端被迫走上了一条“不归路”:

  • 我们抛弃了能与浏览器完美协作的语义化 HTML。
  • 我们开始用 JavaScript 去模拟一切,把本该由后端处理的路由、数据转换、状态管理,全部搬到了日益臃肿的客户端。
  • 我们创造了一代“不懂语言,只懂框架”的程序员。他们对 JavaScript 的底层原理一无所知,却能熟练地背诵 React 的生命周期。

antirez 毫不客气地总结道:

“讽刺的是,前端开发者自己深受其害。他们被迫不断地学习新的方式去实现同一个按钮、同一个分页。而且,如果他们足够聪明,他们会意识到,在大多数情况下,他们根本不知道‘编程’到底是什么。”

巴别塔的诅咒:为了一个按钮,引入整个宇宙

原帖作者更是详细地剖析了我们是如何一步步走进这个“巴别塔”的。

当你想用现代 SPA 框架写一个最简单的页面时,你需要经历怎样一条漫长而痛苦的“编译之旅”?

  1. 你的 TypeScript 代码,必须先被转译成 JavaScript,因为浏览器根本不认识 TS。
  2. 你的 TSX/JSX 文件,必须被转换成 React.createElement() 调用,因为浏览器也不认识 JSX。
  3. 成百上千个 .js 文件,必须被 打包(Bundle) 成一个或几个文件,否则会引发网络风暴。
  4. 打包的过程中,还需要做 Tree Shaking,把没用到的代码删掉。
  5. 打包完成后,还要做 Minification,把变量名缩短、把空格删掉。
  6. 你写的最新潮的 ESNext 语法,还需要被 Transpiler(如 Babel)降级成老掉牙的 ES5,因为你得兼容那些还在用旧版浏览器的用户。
  7. 你写的 Post CSS,也需要被处理,加上各种 -webkit-、-moz- 的浏览器前缀。

我们已经走得太远了。我们现在写的源代码,和最终在浏览器里运行的东西,已经完全是两个物种。

返璞归真?:HTMX 与“后端文艺复兴”

在这场对 SPA 框架的“集体围剿”中,一个名字被反复提及,它就是 HTMX

HTMX 并不是什么革命性的新技术,恰恰相反,它是一种“文艺复兴”。它的核心思想,简单到可以用一句话概括:让我们回到 1999 年,让后端直接返回 HTML!

在 HTMX 的世界里,没有前端路由,没有状态管理,没有虚拟 DOM。你只需要在 HTML 标签上,加上几个特殊的属性:

<!-- 点击这个按钮,HTMX 会自动向 /news 发起请求 -->
<!-- 然后用返回的 HTML 片段,替换掉 #news-container 的内容 -->
<button hx-get="/news" hx-target="#news-container">
  加载最新新闻
</button>

<div id="news-container"></div>

看懂了吗?

前端的复杂性,被几个简单的 HTML 属性彻底消灭了。你不再需要一个庞大的前端团队去维护一个复杂的 Node.js 工具链。你只需要几个懂 HTML 的后端工程师。

这对于那些被 React/Vue 的复杂性折磨得痛不欲生的后端开发者、独立开发者、甚至是前端老兵来说,无异于“天降福音”。

理性的声音:屁股决定脑袋

当然,Hacker News 从来不是一个一边倒的社区。在 HTMX 的“复古浪潮”之下,依然有大量理性的声音。

一位拥有 10 年经验的全栈开发者,分享了他的心路历程:

“作为一个与 JS/TS 相依为命的人,我无数次地想过,能不能用 Go、Ruby + HTMX 来简化这一切。但说实话,我至今没找到一个能比现有 SPA 栈哪怕好一点点的方案。”

“现代 Web 应用,本质上就是两个生活在不同环境(前端和后端)的应用。我接受这个现实。最终的结果,无论是在错误处理、用户体验、性能、还是可维护性上,都远比那个用 jQuery/HTMX 打补丁的服务器渲染栈更健壮。”

另外一位开发者的评论则更加扎心:

“你以为用了 HTMX 就没有复杂性了?你只是把复杂性从前端转移到了后端。而且,对于那些需要深度交互、复杂状态同步的应用(比如在线文档、画图工具),HTMX 那套简单的‘换 HTML’模式,很快就会捉襟见肘。”

小结:没有银弹,只有取舍

antirez 的下场,将这场关于“前端复杂度”的论战,推向了高潮。

他没有给出任何最终的答案,但他用他那穿越了数个技术周期的智慧,为我们指明了反思的方向:

  1. 警惕大厂的“最佳实践”:那往往只是为了解决他们自己内部组织架构问题的“特制药”,而不是普适的“银弹”。
  2. 重新审视“分离”的代价:前后端分离带来了职责的清晰,但也带来了巨大的通信成本和复杂性。在很多场景下,一个“全栈”的、由后端主导的简单架构,可能远比一个拆分的微服务架构更高效。
  3. 拥抱多样性:无论是 React 的组件化,还是 HTMX 的超媒体,它们都只是工具箱里的不同工具。一个成熟的架构师,应该懂得在项目的不同阶段、不同场景下,做出最合理的取舍,而不是陷入“非黑即白”的宗教战争。

或许,现代前端的复杂性,既是历史的偶然,也是需求的必然。

重要的是,在这场无休止的轮回中,我们是否还保留着像 antirez 那样,随时能跳出框架、审视全局的清醒与勇气。

资料链接:

  • https://binaryigor.com/modern-frontend-complexity.html
  • https://news.ycombinator.com/item?id=47824051

今日互动探讨:

你是否也曾被现代前端的复杂工具链(Webpack/Babel/TSX…)折磨得痛不欲生?对于 HTMX 这种“后端文艺复兴”的浪潮,你是拍手叫好,还是觉得它在“开历史的倒车”?

欢迎在评论区分享你的看法!


还在为“复制粘贴喂AI”而烦恼?我的新专栏 AI原生开发工作流实战 将带你:

  • 告别低效,重塑开发范式
  • 驾驭AI Agent(Claude Code),实现工作流自动化
  • 从“AI使用者”进化为规范驱动开发的“工作流指挥家”

扫描下方二维码,开启你的AI原生开发之旅。


原「Gopher部落」已重装升级为「Go & AI 精进营」知识星球,快来加入星球,开启你的技术跃迁之旅吧!

我们致力于打造一个高品质的 Go 语言深度学习AI 应用探索 平台。在这里,你将获得:

  • 体系化 Go 核心进阶内容: 深入「Go原理课」、「Go进阶课」、「Go避坑课」等独家深度专栏,夯实你的 Go 内功。
  • 前沿 Go+AI 实战赋能: 紧跟时代步伐,学习「Go+AI应用实战」、「Agent开发实战课」、「Agentic软件工程课」、「Claude Code开发工作流实战课」、「OpenClaw实战分享」等,掌握 AI 时代新技能。
  • 星主 Tony Bai 亲自答疑: 遇到难题?星主第一时间为你深度解析,扫清学习障碍。
  • 高活跃 Gopher 交流圈: 与众多优秀 Gopher 分享心得、讨论技术,碰撞思想火花。
  • 独家资源与内容首发: 技术文章、课程更新、精选资源,第一时间触达。

衷心希望「Go & AI 精进营」能成为你学习、进步、交流的港湾。让我们在此相聚,享受技术精进的快乐!欢迎你的加入!

img{512x368}


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言进阶课 AI原生开发工作流实战 从 0 开始构建 Agent Harness Go语言精进之路1 Go语言精进之路2 Go语言第一课 Go语言编程指南
商务合作请联系bigwhite.cn AT aliyun.com
这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats