跳到主要内容

DHH:编程的未来、AI、agentic engineering、vibe coding 与 Linux

· 阅读需 246 分钟
  • 节目:Lex Fridman Podcast 第 501 期
  • 主持人:Lex Fridman
  • 嘉宾:David Heinemeier Hansson(DHH)
  • 英文标题:DHH: Future of Programming, AI, Agentic Engineering, Vibe Coding & Linux
  • 原文发布日期:2026-08-26(官网记录)
  • 翻译与整理日期:2026-11-04
  • 校对日期:2026-11-05
  • 原视频:YouTube
  • 节目主页:Lex Fridman Podcast #501
  • 官方文字稿:英文原文

翻译说明:以用户提供的官方文字稿 HTML 存档为底本,保留原稿 23 个章节、1,080 段发言及其顺序,移除时间戳、网页导航和重复目录。本次按更新后的翻译规范校对中文表达、语义、术语和人名;未核听音视频。文中的观点、数据、产品状态与时间表述均按原稿呈现,未经独立核实。

来源说明:官方注明文字稿由人工转写,可能有误。原稿中不一致的专名拼写及数字未据猜测改正;无法明确还原的口语残句保留停顿,不补写其含义。本文经中文翻译和排版,未经节目作者审核。

配图说明:2026-11-05 新增 8 张流程、观点与能力图解,由编者根据本访谈绘制,非节目原图;对应章节见各图图注,点击图片可查看高清图。图中个人经验、时间与预测均按访谈呈现,未经独立核实。

目录​

  1. 访谈精彩片段
  2. 开场介绍
  3. 与 AI agent 一起编程
  4. 软件将如何改变
  5. AI 对 open source 的影响
  6. 构建 Omarchy Linux distribution
  7. vibe coding 与 agentic engineering
  8. 手工编程的终结
  9. 给程序员的建议
  10. 面对网络上的敌意
  11. 面向 AI agent 的编程环境
  12. 对速度的执着
  13. 语音 prompt 与键盘输入
  14. 哪些 AI 编程模型最好
  15. 哪些 AI 编程 harness 最好
  16. AI 视频生成与电影制作
  17. 为人父
  18. Linux 将赢得桌面市场
  19. PewDiePie
  20. 编程的未来
  21. 政治与移民
  22. 长寿、过度优化与对死亡的恐惧
  23. 永恒轮回与人类文明的未来

01 访谈精彩片段​

DHH: 有时几十年都没什么动静,有时短短几周就抵得上几十年。过去九个月,我们就见证了相当于几十年的进步。如果你没有意识到这个时刻的分量,那才是妄想,那才是精神失常。如果突然有个精灵从瓶子里冒出来,对你说:“你想要什么都可以。你梦想过的 operating system 功能,我都能给你做出来,大多数只要五分钟,少数需要二十分钟;就算放开手脚大干一场,也不过两小时。”谁会不欣喜若狂?我想要能突破限速的最快的车,想要能潜入马里亚纳海沟的潜水表,也想要能在 60 秒内装好的 operating system。

DHH: 我一直热爱赛车,其中一个原因是:有时候我从车里踉跄着出来,累得几乎抬不起头,躺在维修车库的地上,心想:“我操,我还活着。”Overton 窗口(Overton window)不会自己打开。它是靠人们冒着一点风险,一次一次推开的:押上一点声誉,承受一点反对、一点批评;有时押上的声誉、承受的批评和阻力可能会很多。与自己所爱的人一起孕育生命,真的是活在这个星球上最巅峰的体验。

02 开场介绍​

Lex Fridman: 接下来是我与 David Heinemeier Hansson,也就是 DHH 的对话。他是 Ruby on Rails 的创始人、37signals 的首席技术官、新的 Omarchy Linux operating system 的创始人,也是畅销书作家、赛车手,以及世界上最敢于直言、最多产的程序员之一。过去二十多年,对他而言,编程就是精心地亲手打磨优美的 Ruby 代码。但自 2025 年底以来,DHH 拥抱了 AI 革命,并公开转变为最敢于直言、最多产的 agentic engineer 之一——尽管他很讨厌这个称呼。那么,我们就把他称为这种正在形成的编程方式的实践者吧:AI 负责大部分实际编程,人类则通过整体设计、愿景和审美来掌舵。没错,确实如此。

Lex Fridman: DHH 有时颇具争议,但他始终无所畏惧、才思敏捷,而且聊起来很有趣。这次谈话依然激烈、令人大开眼界,也像一趟疯狂的过山车。这里是 Lex Fridman 播客。如果你想支持节目,请查看简介中的赞助商信息;那里还有联系我、提问、反馈等链接。现在,亲爱的朋友们,有请 DHH。

03 与 AI agent 一起编程​

Lex Fridman: 13 个月前,我们就坐在这里聊编程,随后一切都变了。当时你对 AI 在编程中的作用还有些怀疑,之后我们经历了 agentic engineering 的快速演进。先问个简单的问题:你对 AI 在编程中的作用有了怎样的新看法?你是兴奋,还是害怕?

Lex Fridman: 你的情绪是不是也像坐过山车一样?

DHH: 我非常兴奋。

Lex Fridman: 你一直在谈论乐趣。

DHH: 我完全没有感受到那种生存受到威胁的情绪。对我来说,那只是理性上会思考的问题,并不是情绪上的感受。我的情绪是百分之百纯粹的喜悦……还有乐观,以及对我们竟然能让计算机做到这些事情的惊叹。我们仅仅 13 个月前才聊过,这一点很有意思,因为感觉那次谈话发生在另一个宇宙、另一个时代。我很喜欢一句话,我记得是 Lenin 说的:有时几十年都没什么动静,有时短短几周就抵得上几十年。过去九个月,我们就见证了相当于几十年的进步。想象一下,你恰好身处 Wright 兄弟实现飞行的那个时代。

DHH: 昨天 The New York Times 还在写:“再过一万年,人类才飞得起来。”第二天,我们已经飞上天空;再过几年,跨大西洋的飞机就出现了。整个世界彻底改变了。能亲历那个时刻,是多么幸运。把视野拉远,看看整个人类历史,有多少人一辈子都生活在自己出生时的那个时代?他们从未看到世界和社会发生这种彻底转变。而我有幸经历两次,实在太难得了。我见证了互联网……从没有互联网到有互联网;如今又经历从没有 AI 到有 AI。这是多么精彩的一段人生,多么幸运。

Lex Fridman: 是的,不过这次给人的感觉是:它发生得比人类历史上的任何其他变化都快。

DHH: 没错。

Lex Fridman: 所以我想,转折点大约是在十二月,也可能是十一月下旬——

DHH: 11 月 24 日。

Lex Fridman: 这是……

DHH: 就是那个确切的时刻。

Lex Fridman: 人们谈论世界大战中一个国家何时入侵另一个国家,会把日期记得清清楚楚。我们现在谈 AI 改变一切,也是这种方式。是的……对很多优秀开发者来说,情况确实变了:原先 AI 只做些基本的 autocomplete,可能写 5%、10%、15%、20% 的代码,后来变成写 80%。

DHH: 或者 100%。

Lex Fridman: 或者 100%,对,尤其是在产品并不面向公众的时候。

DHH: 所以,即使回顾一年前的谈话,我也不觉得自己的观点变了,观点还是那些。一年前,我不喜欢当时提供给我们的 AI 使用方式:要么是 autocomplete,要么是 chatbot。不过,正如我们当时聊到的,我其实喜欢 chatbot。它从一开始就是很好的老师,也是上网查资料的好办法,但它还替代不了我亲手雕琢代码。可是……后来 agent 出现了。

Lex Fridman: 是啊。

DHH: 最初,agent 只让人新鲜了大约五分钟,接着就变得令人惊叹,再接着就让人想问:“天哪,这是不是 AGI?”这些变化都是从去年到现在发生的,甚至就是最近九个月内。大体可以分成几个阶段。先是 agent 出现以前的 AI。我对此很兴奋,但它没有从根本上改变我的游戏规则,也没有彻底改变我的工作方式。我仍然在亲手雕琢代码,只是多了一个小帮手、一个小搭档——

DHH: ……我可以和它交流想法,也可以更高效地上网查资料。它只是让我更有效率地做原本就在做的事,并没有改变我与计算机之间的情感联系。然后到了 2025 年 11 月 24 日。对我来说,Opus 4.5 就是分水岭。突然之间……其实我没有在 24 日当天试用,我记得是 26 日。我交给它几个任务,发现输出的质量竟然与我自己会写出的东西惊人地接近。我记得自己往椅背上一靠,心想:“刚刚到底发生了什么?”

DHH: “怎么短短几个月,我们就从夏天聊到的那种乱七八糟的 autocomplete,走到了这一步?为什么智能水平和易用性都提高了这么多?”这就涉及 agent harness。我不知道 Opus 4.5 比夏天的 Opus 4 究竟聪明了多少,但它操作计算机、使用工具、检查自身工作,以及把智能用到实际工作中、真正做出有意义成果的能力,已经完全不同。我想,几乎所有在圣诞假期留意到这件事、开始尝试的人,都经历了这种巨变。我听到的情况是——

DHH: ……Shopify 等公司的许多员工突然有机会喘口气,有几周时间靠在椅背上,看看究竟发生了什么。他们试用之后,也经历了同样的震撼:这些 agent 和以前的东西根本不属于同一类。到这个阶段,我已经非常兴奋了。到了十二月,我开始重新审视自己以前的种种判断,心想:“哇,它能做这个,那能不能也做那个?”“哦,还真可以。”而现在回头看,Opus 4.5 又像个智障模型了。这就是进步的奇妙之处:你以为已经到了某种境界……我记得自己当时想:“如果以后再也没有新模型,就停在这里,我也够用了,也会很满足。”

Lex Fridman: 是的。是的。

DHH: 接下来的二十年,我都可以一直用 Opus 4.5,绝不会抱怨。看着一个 agent 按照我希望的方式完成所有这些工作,实在太不可思议了。关键不仅在于它能完成任务,还在于我能看着它解决问题的过程,说:“对,对。这里还不完全对,但很接近了。”它还会给你两条说明。它会沿着我想走的路径,到达我想去的地方,写出我愿意合并的代码。如果用 Ruby,它甚至能写出真正优美的代码。Rust 就另说了。agent 能真正成为我工作方式的延伸,这是前所未有的。可我们只等到初春,sub-agent 就突然出现了。

DHH: harness 开始能够拆分任务。原本 Opus 要做很久的事情,忽然只要五分之一、十分之一的时间,因为任务被拆开,八个 sub-agent 同时替你工作。不过,对我来说,agent 时代最初这两个阶段仍然需要我自己掌舵。我得告诉它想要什么、去哪里找答案,在它偏离方向时稍微纠正一下。这样,我们就能到达目标,而且速度快得多。

DHH: 但我依然得坐在驾驶位上,告诉它我要什么,并审查、核验它产出的东西。直到今年夏天,随着 Opus 5、Fable、Sol,也就是 GPT Sol,以及某种程度上的一些 open-weight model 出现,我们进入了一个新时代。我不再告诉它具体往哪里走,只需说明我面临的问题,描述一个模糊、不成形的想法。它会告诉我该去哪里、走哪条路。我仍然会查看,因为我很好奇,喜欢计算机,也喜欢看到成果,但其实已经有点没必要了。在生成代码、选择实现路径的环节,我成了一个可有可无的参与者。你还记得早期的 GPS 吗?

DHH: 与看纸质地图相比,GPS 已经很神奇了,但你还是得留神:它会不会让你把车开进港口的水里?我记得报纸上有过这样的报道:“GPS 太糟糕了,人们不留神,就把车开进水里。”上一次有人被 GPS 带进港口水里是什么时候?这种事已经不怎么发生了。事实上,如今汽车都能自己开了,对吧?我们现在就到了类似的阶段,我可以信任它。至少在我目前工作的领域里,我可以完全放心,相信它能替我兜住问题。它不会乱来;就算做了蠢事,也有能力补救。

Lex Fridman: 嗯嗯。我们应该提到的是,有各种各样的领域——

DHH: 没错。

Lex Fridman: ……程序员工作的领域有很多种。我不确定,但我想最常见的开发领域,可能就是 Web 开发中的 CRUD。你有一个 database。

Lex Fridman: 再加一个面向用户的 UI,两边来回交互。它可能只供一个人内部使用,也可能服务几个人、许多人,或者全世界。我认为,在这种场景里,代码确实可以百分之百由 AI 编写。只要你是个优秀的程序员,能够凭直觉判断背后发生了什么,确实可以不看代码——至少我的经验是这样。我不知道需要多少编程经验,才能通过观察系统的连带影响和外在表现,直觉地判断内部是否工作正常。

Lex Fridman: 但我认为,在那个领域已经接近 100% 了。还有你正在做的另一个领域:编写 Linux distribution。你如此在意速度等问题,那里可能有更多需要留意的地方,也许需要多看一些代码。再往下还有安全关键系统,比如运行核电站或自动驾驶汽车的系统,那可能就需要更仔细地检查代码。

DHH: 是的,但话说回来,AI 在发现——

Lex Fridman: 是的。

DHH: ……以及修复 security vulnerability 这两方面,能力都强得惊人。Fable 引起轩然大波,就是因为这件事。它太擅长找到攻击者可以利用的漏洞,以至于直接发布都不安全。讽刺的是,在这个领域,我们似乎已经达到了几乎没有人类能够匹敌的智能水平,因为很多 exploit 需要把几招组合起来。你在这里找到一个小漏洞,单独看可能不算特别严重,但与另外四个漏洞一结合,突然就能实现 RCE,也就是 remote command execution。能做到这种事的人非常少。他们通常在国家支持的机构或其他秘密组织里工作,不会到处公开寻找漏洞。

DHH: 所以,它们在这方面已经非常厉害了。正是开发 Linux distribution 的经历,让我彻底成了 AI 的信奉者。过去三个月,我一直在开发 Omarchy,就是几天前刚发布、名为 Quattro 的这个版本。几乎从一开始,agent 辅助开发的占比就接近 100%;最近两个月,更是达到了 100%。我没有亲手写过——

Lex Fridman: 真的吗?

DHH: ……Quattro 发布版本中的任何代码。我审查了整体结构,也逐行检查了系统 model layer 中的所有关键代码,但不少 UI 代码我并没有看,很多辅助代码也没有看,更没有哪项新功能是完全由我手写的。不过,Web 这一边,也就是继续开发 Basecamp 和 HEY 这些用户众多、codebase 相对庞大的商业产品,要完全用 agent 加速,反倒出乎意料地棘手。我们不久前刚发布 Basecamp 5,它是 37signals 第一款真正大量借助 agent 加速开发的产品。大约从二月开始,我们进入了最后冲刺阶段。那时 agent 已经很好用了。

DHH: 起初我们兴冲冲地想:“问题解决了!让设计师直接编程就行。他们知道要什么功能,也知道应该做成什么样。让他们凭感觉做吧。”于是我们就让他们这么做。结果产生了大量 PR:每一个单独看,可能在当时都说得过去,但放在一起,却把系统架构破坏了。最后我们不得不亲自动手收拾残局,由人来清理,才能重新得到一个统一、连贯的架构。所以我们至今还留有一点这样的顾虑。顺便说一句,那是二月的事情,现在已经很不一样了。

Lex Fridman: 等一下,那这件事的教训是什么?其中一个教训是不是:现阶段,想做 vibe coding,你还是得先是个程序员?

DHH: 如果你要在已经存在、规模相当大的——

Lex Fridman: 我明白了。

DHH: ……codebase 上做 vibe coding,即使它们只是 CRUD 系统,而且你还想保留把这个系统支撑到今天的架构,那确实如此。不过,我也多次强调:有人指责 vibe coder 只会生成垃圾代码,我会反问:“你看过普通程序员写出来的东西吗?”那里面同样有不少垃圾。看看很多优秀公司内部的情况,看看那些经手过 3,000 名开发者的 codebase 是什么样,你会发现它们糟透了,简直惨不忍睹。

04 软件将如何改变​

Lex Fridman: 能说说你的直觉吗?退一步看看我们平时离不开的那些应用,比如 Adobe Photoshop,我感觉它们的开发速度似乎并没有加快。为什么会这样?Basecamp 也是一款成熟、用户众多的产品,你从中得到了什么启示?为什么这些成熟应用的更新、新功能之类,并没有一下子多起来?

DHH: 原因有几个,我先说最关键的一点。一旦是一个团队在协作,瓶颈往往就不是实现功能,而是人的精力和沟通效率。一个产品经理、几个设计师,上面有副总裁,再上面有 CTO,人人都想参与产品构思,因为都得证明自己为什么在这儿。生产力就这么被耗光了。过去三个月开发 Omarchy,让我明白了一件事:要得到那种神奇的 10 倍、100 倍,极少数情况下甚至 1000 倍的效率提升,你必须直接和 agent 打交道,中间不能再隔着一个人传话,那实在太慢了。

DHH: 一方面,这有点扫兴。我喜欢和人打交道,一起做事也很愉快。但这也意味着,如果工作仍由人推动,还要经过三层审批,再加上大公司的其他种种流程,我们就得调整对 agent 的预期。实现功能只是整个过程的一小部分。另一方面,大多数组织根本不知道自己想要什么,也不知道怎样才能把产品做得更好。卡住他们的不是实现能力,而是想法、愿景和审美。如果这些东西还没多到让实现能力跟不上,那再提高实现能力也没用。你能把一堆烂点子做出来,然后呢?真要把它们发布出去吗?

DHH: 听起来就像……我也不知道,像 Microsoft 会做出来的东西。我们可不是要复制这个。这个过程其实并不……因为我们早就有过这种情况了。退一步想想,那些庞大的公司手里有成千上万名程序员。我又拿 Microsoft 开刀了。我有时候也挺喜欢 Microsoft,但这里还是拿它举例,因为几十年来,它的资源和编程能力几乎用不完,对吧?这就说明,能写出大量代码,并不意味着能做出优秀、让人想用的软件。另外,我们拥有现在这种能力,也才大约六个月。人要理解、消化眼前的变化,这点时间真不算长。

AI 加速功能实现,但产品仍受想法、审美、沟通和审批影响的关系图

图 1 · 产品交付的瓶颈。 根据第 04 节整理。DHH 认为,功能实现加快后,产品方向和团队沟通仍可能限制整体速度;图中箭头不表示各环节的耗时比例。

DHH: 所以有人批评 AI,说它怎么还不能再快点,我觉得挺好笑的。你在说什么?还有哪种进步能像 AI 这么快?就因为过去三个月里,我们没把整个世界重写一遍,没让好软件遍地开花、建成一个乌托邦,你就等不及了?

Lex Fridman: 你的意思基本就是,大家现在都该换到 Linux 上。其中一个理由是:Linux 上缺的那些软件,我们都可以重新做出来。我爱 Linux 很多年了,但一直舍不得离开 Windows,后来又用上 Mac,其中一个原因就是剪视频要用 Premiere。

DHH: 我们会解决这个问题。但是——

Lex Fridman: 那么,谁来给 Linux 做出 Premiere 和 Photoshop 呢?感觉现在一个人就能做到了。

DHH: 百分之百,一个人就能做到。

Lex Fridman: 所以,我着急一点也没问题吧。不管是我还是其他人,等不下去了,不正是决定自己动手的第一步吗?就像——

DHH: 没错。

Lex Fridman: ……有成千上万的人在用 Adobe Premiere、DaVinci 这些非线性剪辑软件,大家都知道用起来有哪些烦心事。看看 Reddit,看看论坛,谁都清楚。我不知道问题出在哪儿,可能是管理层,可能是开不完的会,也就是你一直说的那些公司内部的官僚作风,拖慢了所有功能的开发。但我总觉得,只要让几个开发者放开手脚,再配上一批 agent,这些问题都能解决。

Lex Fridman: 不过,照你刚才说的,也许得从头做起:做一个 open source 项目,或者有人另起炉灶开家公司。如今在大公司里,想让开发者放手去做,真正加速进入 agent 时代,好像很难。

DHH: 这是典型的创新者困境。这些公司已经把旧的做法磨练得非常成熟,地位也稳固了,因此它们的整个组织结构、管理层级和流程,都是为一个已经过去的时代设计的。可这些庞然大物就像超级油轮,没法说转向就转向。这也是科技行业终于迎来格局颠覆的原因。有一段时间,我对 Apple 和 Google 在移动领域的双头垄断很恼火,因为感觉移动是我们拥有的最重要的计算平台,而我看不出有什么办法可以撼动高居其上、掌控一切并收取过路费的 Google 或 Apple。但现在规则变了。这不再是最重要的平台。

DHH: 手机很重要,但还会出现许多其他设备形态,无论是眼镜还是耳机或其他任何东西。现在一切都重新有了竞争机会。就桌面而言,计算平台本身可能是四十年来第一次有机会重新洗牌。Linux 从 1991 年就有了。它一直没能在桌面端大规模普及或占据主导地位。其他地方倒是都被它占领了。你办公桌上的所有设备、冰箱、烤面包机,除了你的计算机之外,所有设备都运行 Linux。现在,有趣的是,你的 Android 实际上是 Linux,只是外面包了太多东西,已经认不出来了。但现在出现了一个突破口,正如你所说的那样。

DHH: 如果你离不开某款软件,只好一直用 Windows,那么现在,你完全有能力自己动手重写它。也许没法覆盖全部功能,不过这就像那个关于 Microsoft Office 的老笑话:“我只用其中 5% 的功能。”没错,可每个人用的都是不同的 5%。那我们各自做出自己需要的 5%,不就行了吗?我只实现自己要用的那些功能,又会怎样?这就成了完全不同的问题,而今天的 agent 已经非常擅长做这种事了,我自己就做过很多次。用上最新的 agent 后,一个让我惊喜的变化是:我成了能用多种语言编程的人,以前可完全不是这样。我主要就是个 Ruby 程序员,偶尔才碰一下 Bash——

DHH: ……而且是不得不用的时候才碰。但过去两个月,我写了 C++,做出了三个随 Omarchy Quattro 一起发布的应用。其中有一个写作应用。我原来用的是 Typora,非常好用——

Lex Fridman: 真的很好用。

DHH: ……它本身又是基于另一个应用 iA Writer 做的。那才是我在 Mac 上的最爱:一个干净、简单的 Markdown 写作环境。我所有文章都在那里写。

DHH: 后来我换到 Linux,用不了 iA Writer,就改用了 Typora。它是一款 shareware,里面很多功能我根本用不着。大概六七周前,我突然想:“你知道吗?Typora 本来已经很简单了,可我也只需要其中 5% 的功能。”于是我直接让 agent 开工,指定用 C++ 和 Qt 来写,好融入 Quattro 的整体视觉风格。我记得大约 20 分钟后,第一个版本就出来了。我试了一下,还有些不合心意。可两天之内,我就彻底换掉了 Typora。从那以后,我所有文章都是用 Omawrite 写的。

05 AI 对 open source 的影响​

Lex Fridman: 有件事想听听你的建议和看法。我发现,有了 agent,你可以做出一个 Typora 的替代品,完全按自己的需要定制,只服务你一个人。也可以从满足一个人的需求开始,再逐渐让更多人使用。我已经给自己写了不少软件,发现只满足自己的需求,做起来更容易,用起来也更合适。比如我给自己写了一个视频编辑器。如果只是自己用,这其实很容易。

Lex Fridman: 但我和你不同,从没做过很多人都在用的产品,一想到这件事,就觉得有点发怵。在这个 agent 时代,怎样才能从解决自己的问题出发——我觉得这是很好的起点——再让做出来的东西也能帮到其他人?你有什么建议吗?给自己做工具现在这么容易,你觉得这会不会也带来问题?

DHH: 会,不过这件事比你想的简单。工具做完以后,直接告诉 agent:把它放到 GitHub 上。你甚至不用再做别的。它自己会把 repo 放上去,写好 README,还会用 GitHub Releases 来管理版本,方便你追踪。它甚至会比你更擅长维护软件,因为那些管理 open source 项目的苦差事,它比你更有耐心,也更肯认真去做。

DHH: 你只管享受自己做的软件,按自己的想法继续改进就好了。说到这里,就绕不开 open source 圈子里争了好一阵子的话题:AI 带来的贡献,对维护者到底是好是坏?现在很多维护者很烦,因为突然涌来了大量 pull request,而提交的人可能水平不高,甚至压根不是程序员。我看到这种说法就想:“你开玩笑吧?”这么多免费的贡献摆在这里,你想收就收,不想收就不收,怎么还抱怨起它们的存在了?这不就像在说:“我的牛排汁水太足,龙虾里的黄油太香浓了。”这有什么好抱怨的?

DHH: 这简直太棒了。我们说了那么多年,open source 的魅力就在于人人都能贡献。可实际上,过去从来没真正做到过。只有一小部分人为 open source 做出贡献,那就是技术极其高超的高手。所以这有点像宗教改革。我们与计算机之间,原本隔着一群被称为程序员的“神职人员”,如今这层中介突然被绕开了。就像十六世纪 Luther 把《九十五条论纲》钉在门上那样,是不是?其中很明确的一点就是:不必经过中间人,你应当能直接接触更高的智慧。

Lex Fridman: 但是你不需要高手来保持 codebase 的高标准吗?

DHH: 当然需要,而且 open source 一直都是如此。这就说到另一个让我恼火的论点了。我维护 open source 项目已经 25 年,看过的程序员作品,即使没有上万份,也有好几千份。我觉得这些样本足以支持一个判断:大多数程序员,水平都挺烂。不过,先别按字面理解这句话。

DHH: 所以我刚才才特意停了一下。我说“烂”,是指他们写不出我想要的那种代码:bug report 里没写全相关信息,pull request 没说清楚为什么要改,该写的 code comment 懒得补,不复查自己的工作,也不写 unit test。这些做好软件需要的事,他们都没做好。但你知道谁会做吗?agent,只要你告诉它。它们大多数时候都会认真执行你的要求,有时甚至认真得过了头。也就是说,拿一个普通程序员给一般 open source 项目提的 pull request 来看,agent 已经做得比他更好了。

DHH: 给我的项目提 pull request,我现在宁愿收到 agent 写的。这不光是因为质量更好,也因为拒绝时没那么过意不去。反正又不是你亲手写的,我看看 agent 替你写的东西,说一句“嗯,不需要”,就完了。open source 一直允许你这么做。我觉得有些维护者的问题就在这儿:太紧张、太焦虑,把每一份贡献都当成自己的义务,觉得必须想尽办法让它合入 codebase。其实完全没这回事。

DHH: 你直接说“不”就行,更客气一点,就说“不用了,谢谢”。如果你意识到你的项目可以根据你的愿景、沿着你定下的 roadmap 发展,那么在 agent 时代,拒绝你不想要的贡献就会变得容易得多,也不用担心给谁添麻烦,或者伤了谁的感情。那只是个铁皮机器人,机器人不会介意。事实上,制造这些机器人的模型实验室,还巴不得你白白消耗 token。反正钱照收。所以,在我看来,这绝对是 open source 软件维护者最好的时代。

DHH: 我们不仅能收到一大批 agent 写的、各项要求都做到位的优秀 pull request,还能接触到那些过去没能力参与项目的人的创意。Omarchy 我已经做了一年多,过去三个月开发 Quattro,合并了超过 1,000 个 pull request。其中不少来自原本不做编程的人,或者来自其他领域的程序员,他们并不从事 Linux operating system 或 distribution 的开发。借助 agent,他们终于能把好点子贡献出来,而我则能挑出其中最好的——

DHH: ……因为这些点子真的做出来了。否则,它们就只能一直留在那些人的脑子里。说到底,这不就是 open source 的意义吗?把整个地球上人们的智慧和创造力聚在一起,变成一份公共成果,让所有人都能受益。目前 Omarchy 大概有 400 个还没合并的 pull request,约是一周前的两倍。提交确实在加速,但处理它们的工具也在进步。我已经有一阵子不再亲自逐个 review 了,而是让 agent 替我看,再给我一份总结:这个改动是否已经准备好,可以交给人来做最后的决定——合,还是不合?

DHH: 那些有问题、重复或者质量差的 pull request,我都不用再看。agent 会替我筛掉,我只管挑珍珠:已经可以落地的好想法,以及 agent 已经替我在 VM 里验证过的 bug fix。复现问题、维护 open source 项目的那些苦差事,正在飞快消失。留给我们的,是软件开发最有滋味、最精华的部分:决定这个东西应该做什么,接下来往哪儿走。

贡献者提交 PR,agent 筛选并验证,人根据项目愿景决定合并或拒绝的流程图

图 2 · 从贡献到合并。 根据第 05 节整理。agent 承担筛选、复现和验证工作,人保留是否采纳改动、让项目往哪里发展的最终判断。

Lex Fridman: 你觉得这些好点子,最核心的部分,最终还是来自人的头脑,也就是每个贡献者吗?agent 能自己想出来,还是说每个 PR 最后都得有一个人的想法作为起点?比如这些改进 Omarchy 的提议……能不能全靠一群 agent 来完成?

DHH: 在第一个 agent 阶段,也就是从 11 月 24 日到 2 月 28 日,我确实是这么想的:点子都来自人,人告诉 agent 要做什么,它们再去做。但我现在完全不这么看了。我见过一些你们根本想象不到的东西。模型提出的想法好到让我这个一向以点子多自豪的人,都自愧不如。agent 的创造力非常强。那些还停留在“agent 只会鹦鹉学舌,不过是在重复已有想法”这种判断上的人,根本没认清过去六到九个月里取得了多大的进展。

06 构建 Omarchy Linux distribution​

Lex Fridman: 有些听众听到这里,会说 DHH 又犯了“AI 精神病”。你能不能先替他们构造一个尽可能有说服力的论点:你确实陷入了妄想,就像《飞越疯人院》那样;然后再反驳它?

DHH: 我确实欣喜若狂,这就是我现在的状态。我和计算机打交道四十年了,最近两个月见到的事情,以前从来没见过。

DHH: 整个职业生涯、几乎一辈子,我都把对计算机的热爱当作工作时间乃至业余时间的重心。如今这一切突然被彻底颠覆、彻底改写,我当然会欣喜若狂。面对这样的现实,谁会不是这样?如果你没有欣喜若狂,至少也应该非常兴奋……其实,我想这样说也不准确。真正的妄想,是没有意识到这一刻的分量。真正的“精神失常”,是相信世界没什么变化,只不过多了几只给我们背诵内容的电子鹦鹉。我觉得人们提出这种质疑,是因为还看不到进步的成果,也就是你刚才说的:那些惊人的软件在哪里?

DHH: 为什么美国 GDP 没有同比增长 12%?首先,先等等吧,妈的,这还不到一年呢。其次,我自己已经拿出了实实在在的成果。Omarchy Quattro 周五刚发布,已经有几万人下载了。大家很喜欢,喜欢得不得了。

Lex Fridman: 我这里查一下 Perplexity 的介绍:Omarchy 是一个有鲜明设计取舍、基于 Arch Linux 的 desktop distribution,核心是 Hyprland 这个 Wayland tiling compositor。它由 David Heinemeier Hansson,也就是 DHH 创建,旨在提供一套精心打磨的开发者工作环境,具有统一的视觉风格,并预先配置好许多日常工具。

DHH: 让我说一下。Omarchy 是一款美观、现代、有鲜明设计取舍的 Linux 系统。它是 macOS 和 Windows 的替代 operating system,而且非常神奇。

Lex Fridman: 而 Quattro,就是你朝 agent 时代迈进的一步。

DHH: 没错。这是我们刚刚发布的最新版本,这也很有趣。Omarchy 项目只有一年的时间。我是去年夏天在勒芒 24 小时耐力赛间隙开始做这个项目的——

DHH: ……当时 Linux Ricing 的 YouTube 视频看多了,一下子就入了迷。我开始第二次尝试,想做出更好的 Linux operating system。第一次就是我们上次聊过的 Omakub,它基于 Ubuntu,做得还不错。但做新版本 Omarchy 时,我从 software stack 中更底层的位置入手,相当于往下深入了七层,能施展的抱负也完全不同。不过,那还是 agent 出现之前。一开始,那些 Bash script 都是我手写的,后来我亲眼看到了中途发生的转变。

DHH: 我先做了几个部分借助 agent 加速的 Omarchy 版本。到了三个月前,就彻底放开了:100% 的代码都由 agent 写,我来掌舵。这最终成为一种非常不同的体验和一个非常不同的 operating system,因为我的雄心突然不再有上限。不管是 Windows、Mac 还是其他 Linux 系统,只要看到某个功能,我就可以说:“我想要那个”,agent 就会提供。于是我想要的一切突然变得触手可及,这让我有点欣喜若狂。如果精灵突然从瓶子里冒出来,说:“你想要什么都行。你梦想过的每一个 operating system 功能——”谁能不欣喜若狂?

DHH: “……我都能给你做出来,大部分五分钟,少数二十分钟,如果我们真的疯狂的话,我需要两个小时。”

Lex Fridman: 嗯。你看过《梦之安魂曲》吗?这东西有点像毒品。我个人的感觉是——这件事有很多层面,后面我们可以慢慢聊——这么大的力量突然交到手里,实在让人招架不住。就像《霍比特人》里的情况,你都不知道该怎么用。我发现自己同时忙着太多事,真的快撑不住了,几乎快累垮了。对什么都兴奋得不行,但回头一想,其实还是想专心做好一件事,把它真正做出来。

DHH: 我倒没有那种感觉,没有招架不住,也没有恐惧或失真感,因为我有一个明确的使命。我知道自己要去哪儿,所以这些新获得的力量,都可以用来实现——

Lex Fridman: 是的,太棒了。

DHH: 同一个目标:打造完美的计算机。所以,我对 AI 的所有探索都围绕着这个目标。当然,我还有本职工作,那边也在用 agent,同样是为了做出具体的成果。但凭借 Omarchy 的体验,就像直接在脑后接上了一根线,增加大脑中的想法与屏幕上出现的软件之间的带宽。这就像从拨号上网到光纤上网一样。我想在你的播客上,Elon 谈到了实际的人类带宽——

DHH: ……Neuralink 和其他项目正在努力加速。就像,我们现在通信的带宽非常低,因为我们受到认知的限制。我们受到语速的限制。当你与一群 agent 一起工作时,你就不会受到这些事情的限制。不过,我也得补一句:如果听到自己这样说话的是——

DHH: 九个月前的我,我大概也会说这是“AI psychosis”。当时这么说并不过分,因为那些这样谈论 AI 的人,还没有拿出实际产品。我觉得这就是最根本的区别。有些人很早就看到了这一切,我倒没那么早。我们刚才也说了,我当时相当怀疑,虽然会用 AI 做一些事,但并不是第一批下载 Claude Code 的人。我记得 Boris 是二月底发布它的,而我直到九月才安装。中间大约六个月,那些先行者已经看到了未来的一点曙光。当时还没真正实现,模型的能力和 harness 都还没到位,但他们看到了苗头,我没看到。

DHH: Tobi,也就是 Shopify 的首席执行官 Tobi Lutke,如今也是我在 Omarchy 项目上的一位搭档,他同样彻底迷上了 Omarchy。他很早就看到了这些变化,也试图告诉我,但当时我没有看出来,没有看到他所看到的东西。

Lex Fridman: 你当时就是个黑粉。

DHH: 是的。我当时还留在地球上。而他……他已经登上了火箭,朝着太空飞去。我记得看过他发给公司的那份 AI 备忘录,当时就想:“嗯,这是不是有点夸张了。”就像,你在大谈一些对我而言还不够具体、还摸不着的东西。

DHH: 因为成果在哪儿呢?我试着用了,写出的代码我不喜欢,还老是打断我。你到底从哪儿看到了这些能力?所以我理解,完全理解。如果没见过现在这些模型能做出什么,你当然会觉得这样说话的人有点疯。毕竟此前的所有经验都在告诉你:这些人不太正常。看看编程的发展史,过去四五十年来,总有人承诺,普通人只要开口说话就能写代码,说我们将会有 fourth-generation language。

DHH: 当年推出 Lisp、Smalltalk 时,都说普通人可以在这些环境里编写自己的应用。可除了 Microsoft Access database、Excel spreadsheet 之类的东西,承诺并没真正兑现。它们确实能让最终用户自己编程,但和今天能做到的完全不是一回事。而且,我现在甚至不是在说普通用户,我说的是自己:一个编程 25 年的人,看到了产出、速度和质量的变化,还真的把产品发布出去了。我觉得,这很快就会改变整场讨论。

DHH: 剩下那少数还在犹豫“这东西到底有没有用”的人,还困在 2025 年初“机械鹦鹉”那套说辞里。接下来扑面而来的证据,会让他们再也无法忽视。

07 vibe coding 与 agentic engineering​

Lex Fridman: 所以我希望看到像 Omarchy 这样的项目,希望多一些这样的项目,真正展示以 agent 为核心的开发方式。

DHH: 来了。这一切都即将到来。

Lex Fridman: 在我刚才随口举的那些领域,比如视频剪辑、Typora 这一类应用,诸如此类。

DHH: 会有的,我已经看到苗头了。Omarchy 有一个很巧妙的功能:一套更强大的 plugin system。你可以 clone 我们自带的工具,做成自己的 plugin,用来扩展 operating system,甚至重写它的 UI、面板和功能。比如,你想要一个不一样的日历。Omarchy 自带的日历,点一下小时钟就会弹出来,但不支持 iCal,也不会读取你的日程。现在已经有大约 17 种日历实现了。短短三天,Omarchy 的 plugin 市场就上架了 330 个 plugin。在我参与过的任何项目中,我从未见过这样的增长。

DHH: 我从没见过参与面这么广的项目,也没见过这么多人能在这么短的时间里,做出既满足自己需要、又能给别人用的软件。背后的原因是:Omarchy 自带了一套 skills,无论你用哪种 agent,它都能据此学会给 operating system 写 extension,让那种真正可随意塑造的……我差点又要说 agentic 了。我真讨厌这个词。首先,它现在已经成了烂大街的营销话术,什么东西都要贴上去。真希望能有另一个词,就老老实实表示“AI 在干活”。

Lex Fridman: “vibe coding”这个说法,感觉也不太对。

DHH: 确实,因为 vibe coding 给我的感觉,和 2000 年代初的 script kiddie 一模一样:从网上下载一段 PHP script,完全不懂,就直接拿来用。当然,很多 vibe coding 确实就是这样,包括我自己的项目。刚才也说了,我已经做了好几个,用 C++ 写过,也用 Rust 写过。Rust——我真是恨透了 Rust。只要让我看 Rust 代码,就像往我眼睛里泼酸。

Lex Fridman: 等等,等等,等等,等等。为什么讨厌 Rust?

DHH: 在我看来,它是最丑的 programming language——

Lex Fridman: 哦

DHH: ……就所有被发明出来的语言而言——

Lex Fridman: 是啊

DHH: ……至少过去四十年里是这样。

Lex Fridman: 所以它与 Rails 和 Ruby 相反。

DHH: 恰恰相反。但是——

Lex Fridman: 可你也用它写过。

DHH: ……我是用 Rust 写过应用,因为它做出来的东西确实很棒。memory safety、作为 system language 的能力,还有很高的执行效率,这些都很出色。所以在我看来,Rust 既可以是最让人不想阅读和使用的 programming language,又可以是极好的 agentic engineering 平台。这两件事在我脑子里完全不矛盾。

Lex Fridman: 你认为是不是到了某个阶段,就可以把 agentic engineering 直接叫作编程?我们可以改变编程的含义吗?因为几个月后谁会真正采用老式方式进行编程呢?

DHH: 我认为我们不应该重复使用这个术语,因为对我来说,编程意味着理解 primitive、loop、condition、variable 这些东西。编程指的是运用 programming language 中的这些 construct,而不只是把一个程序做出来。否则,你也可以说,在 agent 出现以前,CEO 就已经在编程了。他正在雇用一群程序员,告诉他们该做什么,然后开发出可以出售的软件。

DHH: 我想大多数人不会把那位 CEO 叫作程序员,同样,我们也不应该把 vibe coder 叫作程序员。这里先给 vibe coding 下个定义:你告诉 agent 替你构建软件,但自己不看具体实现。对我来说,这就是它与编程,或者说与 agent 辅助开发的区别。

Lex Fridman: 那我稍微反驳一下。像你这样的老派程序员做 agentic engineering,和完全不懂编程的人做,难道不是两回事吗?我的意思是,如果你懂 for loop,懂 function programming,也懂一些好的 software engineering 基本原则,那么即使用自然语言来做 agentic engineering,方法也会更有条理。你能做出的东西,无论规模还是种类,都可能远远超过只做 vibe coding 的人。

DHH: 为了把这个问题辩清楚,我想再把支持这一观点的论据往前推一点。

Lex Fridman: 对。

DHH: 我反而觉得,有一阵子,懂得太多编程知识拖了我的后腿。因为我总是规定好做法,再让 agent 照着做,而它们也确实很擅长执行。在第一个 agent 阶段——还是别叫“时代”了,才持续三个月——这样做确实很有效。我把自己所有的编程经验都用上,告诉 agent 按我的方式去做,效率提高了很多。但到了下一个阶段,我反倒慢了一拍:现在,无论谁,只要告诉 agent 想要的结果、要解决的问题,就能得到比程序员先规定好路径更好的方案。

Lex Fridman: 好,我们这场辩论越来越有意思了。所以你的意思是,有些问题上,程序员做 agentic engineering,反而不如非程序员?

DHH: 完全是。先把意思说清楚:很多程序员并不是好的产品经理,而做软件也就是在做产品管理。它应该做什么?应该为谁做?应该怎么做呢?它应该是什么样子?我们的首要任务是什么?我们首先从什么开始?第一版包含哪些内容?所有这些能力并不是每个程序员都自然具备、或同样擅长的。在 agent 时代,你让 agent、AI 来执行,这些是你需要的技能。我碰巧同时属于这两个阵营,这就是我喜欢这一刻的原因。

DHH: 我仍然有一部分活在旧世界里,会把完整实现读一遍,因为在某些领域,我觉得这样做仍有价值。但另一部分的我已经活在未来了。刚才说过,做 AmaWrite 的时候,我一行 C++ 都没看过。我是刻意把它当成实验:100% 当作 black box,把自己当成一个普通用户,只对这台数字打字机该怎么工作有自己的想法。这样才算公平,就像任何一个作家,都可能对写作软件该怎么做、怎么用有自己的要求。

DHH: 就像你说的,剪辑师很清楚 Adobe Premiere 哪些地方不好用、怎样改会更好,只是以前没能力动手改……怎么可能改得了呢。

Lex Fridman: 不过,我还是想反驳一下。优秀程序员擅长的是系统性的设计,是从整体考虑问题,而且做事严谨。我觉得即使通过自然语言控制 agent 系统,现在、乃至今后很长一段时间,仍然需要这种严谨。不是把结构规定得死死的,而是明确说清楚系统的目标、怎样验证、做哪些 security test,这些都得考虑。当然,反过来说,长远来看,系统本身也应该足够聪明……

DHH: 六个月前我也会说同样的话。

Lex Fridman: 是的,所以这已经改变了。

DHH: 我认为六个月前,这话也确实成立。但后来,尤其是最近几周借助 agent 加速开发 Mach-E 时,我越来越觉得,得谦虚一点,承认 agent 往往比我更懂。

Lex Fridman: 你可以合理地说,“确保它是安全的。”

DHH: 正确。它会更多地了解这意味着什么。现在,你在笑——

Lex Fridman: 多么疯狂的世界啊。

DHH: ……但这是真的。而事实上——

Lex Fridman: 天啊。

DHH: ……AGENTS.md / CLAUDE.md 文件就是个类似的例子。有一阵子,大家特别热衷于抠这些细枝末节:你要告诉 agent 这个——

DHH: ……还要告诉它那个,最后攒出一大份指令文件。做 Claude Code 的 Boris 最近谈 Opus 5 时提到,他们给 Opus 5 配的 system prompt 缩短了 80%,我想 Fable 大概也一样。不只是因为 agent 需要的人类指令更少了,还因为人规定得太细,反而会妨碍它发挥。任何一个碰过“尖头发老板”的程序员,都知道这是什么感觉:老板走进来,明明什么都不懂,却开始教你怎么编程、怎么写代码。你能怎么办?憋一肚子气。如果被迫违背自己的专业判断去做,写出来的代码就会更差。agent 为什么就不会这样呢?

Lex Fridman: 其实,反过来想想我自己,最近真正在学的,大概也是大家都在学的一种本事:别把要求写得太死,别挡着系统发挥。

DHH: 当然。

Lex Fridman: 只交代到足以提供大方向和指引的程度。

DHH: 还可以再进一步,因为就连这个也未必需要。现代软件开发的一个根本认识,来自 agile software development 运动。20 世纪 90 年代末、2000 年代初,一群聪明、诚实又勇敢的人聚在一起说:“过去四五十年我们试着采用的开发方法,一直行不通,以后也行不通。我们总想提前把软件该是什么样规定清楚,以为问问用户想要什么,全部记下来,再用系统思维严谨地整理成 spec,交给程序员照着实现,大家就都满意了。”结果呢?谁都不满意。因为在拿到成品之前,谁也不知道自己究竟想要什么。

DHH: 在使用程序之前,你不知道它应该做什么。所以,在 agent 时代,别急着一开始就把所有细节规定好。只给出足够让它先做点东西出来的大致想法,然后亲手试用。获得优秀软件的方法是编写一些软件,然后尝试使用它。在使用软件的过程中,你会发现自己真正想要什么。在这里你可以发现什么是重要的,什么是不重要的。agent 非常擅长让你在摸索中逐渐发现自己想要什么,因为你一开始并不知道。

Lex Fridman: 嗯嗯。我还真做过类似的事:让它做几种不同的设计,甚至用完全不同的方式实现,再给自己做个 HTML 或 PHP 页面,在上面投票选出更喜欢的方案。

DHH: 是的。

Lex Fridman: 这样不断迭代,效果很好,也很有趣。给自己做一个好用的界面,和 agent 系统打交道可以非常好玩,而你的注意力会集中在设计上,尤其是设计中最好玩的部分。

DHH: 正确。而这正是人类真正擅长的。

Lex Fridman: 是的,审美。

DHH: 比较不同选项。你给我三个选项,我选一个。但如果给人二十二个选项,判断能力反而会陡然下降,这就是“选择悖论”。如果只有三个,人们几乎能在一瞬间告诉你喜欢哪一个。这些方法都利用了一个事实:人会作出先于理性思考的快速判断。先是直觉给出答案,再传到大脑,大脑才试着解释为什么直觉这样选。如果你愿意放下一部分预先进行的理性分析,让直觉来引导,agent 时代就会让你豁然开朗。

大致想法、agent 实现、亲手试用与比较、调整需求构成的迭代循环

图 3 · 在使用中发现需求。 根据第 07 节整理。先做出可用版本,再通过试用和少量方案比较明确下一轮需求;体验、审美和取舍贯穿其中。

08 手工编程的终结​

Lex Fridman: 这件事放在你身上尤其有意思。大家都知道,你讲了很多年怎么一行一行地雕琢优美的 Rails、Ruby 代码,可短短几个月,你就不再这么做了。你现在的工作方式是什么样的?我猜你仍然在追求美、追求打磨和手艺,只是换了一种创作媒介。

DHH: 也换了一个 abstraction level。我们的整个业务都建立在 Ruby 上,所以 Ruby 代码很多。让 agent 修改这些代码时,我仍然会细抠。但我逐渐意识到,这份精力带来的经济回报正在迅速减少。25 年来,我之所以如此谨慎地打磨每一行代码,是因为我知道保持架构的连贯性和可塑性的回报是软件可以改变和发展——

DHH: ……只需要一个小团队,就能快速、低成本地修改和演进,而不至于动了这里,又让那里冒出一堆 bug。这是为什么你应该编写漂亮的代码的主要经济论据,因为漂亮的代码更容易理解,更简单,更具可塑性。这是以人类进行修改为前提的。我认为这在多大程度上仍然重要是一个悬而未决的问题。现在,这确实很重要,我这么说的原因是,至少目前来说,token 仍然稀缺。此时此刻,我们的 token 都是有限的。好吧,不是全部,但任何没有无限预算的人都会受到 token 额度的限制。

DHH: 所以,如果一个系统能让 agent 轻松处理和修改,不必每次都重新理解整个 context,还是很划算的。和人一样,只要它能在不破坏架构的前提下持续修改 codebase,下一次修改的成本就能和上一次一样低。否则,就会碰上经典的 ball of mud 问题,最后整个系统都成了一团乱麻——

DHH: ……因为各部分只是随意拼凑在一起,毫无条理,乱成一团,对吧?我在 agent 中看到了这一点,并且在我们自己的 codebase 中看到了这一点,同样,第一个 PR 的质量很平庸,然后如果你在此基础上添加另一个 PR,然后再添加五个 PR,那就不是很好,对吧?所以这仍然是有回报的,但这种回报是以我们当前的时刻为前提的。我现在能够……顺便说一句,当你试图推断 9 个月后它会是什么样子时,这才是那种“AI psychosis”真正容易冒出来的地方。两年后它会是什么样子。不过,不妨做个思想实验。我记得自己用的第一台计算机是 Commodore 64。

Lex Fridman: 我也是。真酷。

DHH: 它的 CPU 只有 1 MHz,内存只有 64K。在那台机器上写软件的人,早就把各种限制刻进了脑子里。说“各种”都不够,那台机器简直处处都是限制。假如把这样的程序员放进时间机器,送到 2026 年,给他一台现代计算机,说“来,给我写个软件”,他一时肯定会不知所措,因为原来的技巧和经验法则都不适用了。也不能说错了,毕竟高效的软件依然很美,只是那些做法已经跟不上今天创造价值的方式。要在 1 MHz 的机器上做出游戏,得进行多少 optimization,和今天完全是两回事。

Lex Fridman: 想想当年那个坐在 Commodore 前写程序的人。回忆一下,当时编程是什么感觉、意味着什么:资源少得可怜,什么都慢得不得了。

DHH: 在很多方面都很美丽。美丽的。

Lex Fridman: 像是在精雕细琢。不过——

DHH: 它——

Lex Fridman: ……想象那个人现在来了。

DHH: 不过,这里面也有美化过去的成分。想想我们抱怨现代汽车文化的时候,是不是也会说:“哦,如果我们都有马车之类的东西不是更好吗?”不,不是。你知道当我们用马作为交通工具时纽约闻起来是什么味道吗?那是一条露天下水道。他们只是到处拉屎。

Lex Fridman: 是啊,但是你玩过 Red Dead Redemption 吗?你知道那些牛仔有多酷——

DHH: 就是这样——

Lex Fridman: ……在马上?

DHH: ……在游戏里怀念过去就挺好,毕竟不用亲身承受那些毛茸茸的动物带来的各种刺激和感受。

Lex Fridman: 所以基本上编程,老式的手工编程有点像我们浪漫化和拍电影的牛仔文化。

DHH: 人们已经开始浪漫化亲手写代码了,我自己也有一点,因为那确实是个很浪漫的时代。我很庆幸自己赶上了手写代码仍有经济价值的那二十年。那是段美好的时光。

Lex Fridman: 手写的漂亮代码也很有价值。

DHH: 正确。因为手写的漂亮代码今天和昨天一样存在。有些人故意为 Commodore 64、Sega Mega Drive 或其他老式游戏机编写新视频游戏。事实上,我最近最喜欢的视频游戏之一是 ModRetro 的。你知道 Palmer Luckey 的那个副业吗?就是重新做那些老游戏机。他已经把 Game Boy 重新做出来了。

Lex Fridman: 不错。

DHH: 特别棒,搜一下,真的很酷。他不光重做了硬件,保留了原来那种厚实的手感,还换上现代屏幕之类的东西。现在连 Nintendo 64 也做出来了。很厉害,特别酷,细节、input lag 等等都抠得很细。不过,还有一个更酷的东西——我得指一下,就是那里那个,把鼠标移上去,你就明白我说的是什么了。那是 Chromatic 上的——

Lex Fridman: 啊

DHH: ……Tetris 重制版。

Lex Fridman: 哇。

DHH: 我在原来的 Game Boy 上玩了很多 Tetris。可能是我有史以来最喜欢的三款游戏之一。他们重做了游戏,只作了一处改动。如果按一下上方向键,方块就会直接落到底部。这使得游戏速度提高了约 400%。这是一款令人难以置信的游戏,而且是一款新的 Game Boy 游戏。

DHH: 我记得 Game Boy 是 1989 年还是 1988 年出的,真的是老机器了。现在还有人在给它写新游戏,这就很棒。这次做 Tetris,是因为他们想玩这个版本;但也有人纯粹是喜欢在限制中创作,喜欢那种写老游戏的浪漫。就像现在仍有人骑马,不是为了赶快到达目的地,而是喜欢这种出行方式:身下是一个活生生的生命,载着你往前走。

Lex Fridman: 而且,我们应该说,漂亮的代码是很好的训练数据。所以从某种意义上说,我们几十年来所建立的美丽——

DHH: 对。

Lex Fridman: ……以这种方式延续下去了。

DHH: 是我们促成了这一刻。能参与其中,多么幸运。对此我有很深的个人感受,因为我……我写过的几乎所有代码都是公共代码。我职业生涯的大部分时间都致力于编写 open source 代码,因此,其中一些代码,一些优美的代码行都在训练集中。事实上,我听说人们在编写 Ruby 代码时这样做。他们问 agent:“像 DHH 那样写。”

DHH: 他们对结果很满意。想到自己也曾以微不足道的一点贡献促成这一刻,我心里确实会暖一下。自编程作为一门学科存在以来,任何贡献过 open source 代码,或写过 agent 能够接触到的代码的人,如今都以某种方式成了这些新“agent 霸主”的一部分。

Lex Fridman: 所以你没有一点点悲伤,手写漂亮的代码现在越来越没有用了吗?

DHH: 如果明天要找工作,我大概已经很难靠亲手一行行写代码这项本领挣钱了,我会因此难过吗?不会。我已经写了 25 年,想看看新东西了。尤其是假如我们真的能永远活下去——我希望不会,待会儿也许可以聊聊——我已经做过这件事,足够了,挺好的。我对它的怀念,不会比对扛着锄头下地干活、站在流水线上劳动的怀念更多。

Lex Fridman: 等一下,你可是世界上最擅长亲手打磨优美代码的程序员之一,对美有很高的鉴赏力。

DHH: 没错。

Lex Fridman: 而这种能力如今已经被替代了。

DHH: 这话我就谦虚地认下了。

Lex Fridman: 对,这种本领被替代了。而你现在……你适应得非常快。你有一个很了不起的特点,就是能改变想法,迅速往前走。可是,你也得和过去的那个自己告别。

DHH: 我感谢把我带到今天的每一个时刻,也一直试着这样生活。也许这确实需要练习,我承认;我可能并非一直如此。但斯多葛哲学中的 amor fati,也就是“热爱你的命运”,是一种非常让人自由的生活方式。你可以反驳:“这是站在有特权的位置上说的话。”没错,可在我还没有这些所谓“特权”时,我的大方向也一样。所以我认为,你可以选择一种与世界相处的方式:接受你能改变的事,也接受你不能改变的事,并爱上这一切。爱上这样一个事实:与去年相比,如今科技行业的世界仿佛已经向前跃进了二十年。

09 给程序员的建议​

Lex Fridman: 那我们聊聊程序员面对这种转变时普遍感到的焦虑吧。他们可能上了大学,学的是 computer science,梦想着当程序员、做出自己的东西、拿一份高薪。可现在一切都变了,他们深深地担心:“我接下来的人生该怎么办?”你能理解这种感受吗?他们到底该怎么做?

DHH: 非常理解。虽然我自己是这种性格,但我很清楚,并不是每个人都和我一样乐观。不过,我想把两件事分开说。如果你喜欢编程,只是喜欢把正确的逻辑结构拼起来,做出别人指定的东西,那么面对新现实,你恐怕会很难适应,因为受到冲击的正是这种机械性的工作。但如果你像刚才说的那样,喜欢的是把东西做出来,我倒不觉得你受到了威胁。实际上,有充分的理由认为,我们需要比现在多得多的创造者。再看就业数据,目前的情况还不明朗。

DHH: 根本不清楚会发生什么。一些统计数据实际上显示职位空缺有所增加,因为 AI 的出现极大地降低了软件的成本,以至于人们想要更多软件。这是经典的 Jevons 悖论(Jevons paradox),即当某种东西的价格下降时,对它的需求就会增加。这也是 ATM 机的例子。当 ATM 机最初出现时,很多银行出纳员都非常担心他们的工作,因为突然有了机器,能替人办理账户取款。嗯,自动柜员机的作用是降低了开设银行网点的成本,突然之间,银行有能力开设更多的分行,最终我们的银行出纳员比以前更多了。现在,这一切都没有得到保证。也有事情确实发生变化的时刻。

DHH: 直到 19 世纪末,绝大多数人还在田里干活。后来有了机械化收割工具,就不再需要那么多人拿着锄头、赶着牛下地了,机器能替他们做。那时有没有人的工作和生计受到威胁?有。他们害怕,有没有道理?有。英国那些砸毁织布机的 Luddites——

DHH: ……面对的也是同样的处境。而且,比起农民,他们可能更像今天的程序员:技术熟练,工作条件不错,做的也是自己喜欢的事,不用整天顶着太阳苦干。可站在今天,我们还愿意让衣服成为那么稀缺的东西吗?比如说,如果这件 T 恤售价 400 美元怎么办?我的意思是,好吧,那我就买两件。嗯,看我的衣柜,你可能会以为我本来就只有两件。但我认为人类的总体进步取决于生产力的提高。什么是生产力改进?这非常重要,因为从抽象的角度来看,我认为每个人都会说:“是的,生产力。这很好。”你以为这只是喊句让人高兴的口号吗?不。

DHH: 生产力提高,就是用更少的人做同样多的工作。需要完成的工作可能随之增加,于是又需要更多人;但也可能不会。可能在某些地方,公司只需要完成一组特定的固定任务,突然间他们可以用十分之一的人员来完成这些任务。当然,对被裁掉的那个人来说,这在当下可能很惨,也很难熬。但对整个经济来说,它又可能是很好的变化。突然间,你释放了这些资源,他们现在可以去做更有成效的事情。这就是整个经济发展和改善的方式,也是我们实现增长的方式,而且增长是好的。我认为这是另一件需要强有力辩护的事情,总体而言,增长是一件好事。

DHH: 我们不想让时光倒回 1920 年或 1950 年。我们应该为我们发现的新技术感到兴奋,这些新技术可以让我们做更多的事情。虽然 AI 可能接管的一些任务是人类很乐意做的任务,而且它们在经济上不再可行,但很多任务只是苦差事。我的编程确实如此。我认为有些编程时刻是令人惊奇的。这些时刻产生了我们上次谈到的心流状态,让人欣喜若狂。它们在一年中发生的频率是多少?如果以普通程序员为例,他在 2,000 个小时的工作时间中,有多少时间处于心流状态?

DHH: 100?200?25?我认为所有这些答案对于某些人来说都是合理的。把那些苦差事交给机器,这就是文明的历史。

Lex Fridman: 是的,我的意思是,调试所花费的时间。所以编程有很多痛苦的时刻。如今这些痛苦消失了。对于……我的意思是,在大多数情况下,这很有趣。

DHH: 很多领域的痛苦已经消失了,剩下的也可能很快消失。我们会美化过去,部分原因就在这里:痛苦发生的时候,真是难熬,又烦又累;可回头看,它就变成了成就、骄傲、成长和进步。这些都是人的经历。我们讨厌眼前的痛苦,可等事情过去,哪怕才过去五分钟,就开始珍惜它了,因为已经忘了难受,只记得自己往前走了一步。

Lex Fridman: 因此,在社会层面、宏观经济层面,增长无疑是令人兴奋的。但在个人层面上,将会有很多焦虑,可能会有很多痛苦。因此,作为建议,如果你现在是年轻时的 DHH,或者刚入行的程序员,你会怎么做,你会建议他们做什么?

DHH: 别费劲预测了,真会把自己逼疯。业内最聪明的人,也猜不出再往后两代模型会是什么样。想推演两年后的世界,完全是在浪费时间,还容易把自己想出“AI psychosis”。专注眼前吧,现在正是玩计算机最不可思议的时代。只要认真投入,你就能让它们做出惊人的东西。抽出一点时间,逼自己了解一下最前沿的能力到了哪一步,我敢打赌,你不可能不为这些可能性感到兴奋。

Lex Fridman: 你会建议公开分享自己的开发过程吗?

DHH: 公开分享开发过程,我觉得其实是可选的。不过,这样做挺好,因为你能加入一个社区,找到一起做事的伙伴。open source 圈子里不只是有一点友情,而是有很多。它能带来很强的归属感和同伴情谊,也能缓解那种“我以后怎么办”的恐惧。和其他人在一起,你会感染一些好的“思想病毒”,那些让人兴奋的想法:一切会好起来,未来很有希望;只要一起做点东西,就能做成谁都没想过的事。

DHH: 我刚和 Ryan Hughes 聊过。他几乎从第一天起就是我做 Omarchy 的主要搭档。昨天我们还在说,刚开始时,愿望真的很小。我们就像是,“我们能否让这个 distribution 在凌晨三点不会因为我们控制不了的 Arch package 更新而崩溃?那就太棒了。那就太好了。”现在我们靠在椅背上思考,“我们怎样才能统治世界?我们怎样才能让 Omarchy 去火星?我们怎样才能实现我们梦想的一切?”敢把目标定得这么大,一部分是因为 agent 越来越强,但很大程度上也是因为我们周围都是对同一旅程感到兴奋的人。

DHH: 如果你只是坐在你孤立的小洞穴里担心未来,是的,你会有点疯狂。疫情至少让我们明白了一件事:一个人窝在小洞穴里,不停担心未来,真的会把自己逼疯。这与抑郁症没有什么区别,无休止地思考你无法控制的事情。我很抱歉在这里引用 Jensen Huang 的观点,但这只是失败者心态。你不必成为失败者。你可以选择向前一步并——……获胜。胜利的定义非常广泛,包括学习更多、创造更多、贡献更多、参与更多。归根结底,你的选择是什么?你别无选择,伙计。

DHH: 不管你喜欢与否,未来都会到来,所以你不妨选择为此感到兴奋。

Lex Fridman: 但还是得强调,AI 让规划未来几乎成了不可能的事。我们大多数人多少都会规划人生。年轻时有希望、有梦想,之所以去上大学,背后也有自己的打算。

DHH: 我同意这一点。

Lex Fridman: 但是那里——

DHH: 我承认这一点。

Lex Fridman: ……有点——

DHH: 这是不同的。

Lex Fridman: ……离谱,根本没法认真做计划。因为,你真的不知道六个月后是否还会有 Claude Code、Codex 和 Cursor。也许你会与 WhatsApp 交谈。也许全会变成 open call 那种形式。也许一切都只是声音。也许 Omarchy 会接管世界,也完全靠语音操作。也许不再有 operating system 了。你会……会有一个发光的球体,你只需与之交谈,因为如果自然语言足以完成生活中的所有任务,那么,生活究竟意味着什么?例如,你生活中需要完成的主要任务是什么?如果你用语音就可以做到这一点,它给你写所有的程序,一切都由系统安排好了,那还需要人做什么工作呢?也许更多的是服务业。

Lex Fridman: 也许连 agentic engineer 这种程序员都不会有了。所以,专注当下确实是明智的建议,可这段经历依然像坐疯狂的过山车,因为我们不知道到了十二月、一月,世界会变成什么样。

DHH: 确实不知道,所以不妨选择相信,事情最终会有好的结果。这就是我应对焦虑最想给出的建议:在很大程度上,你可以选择用什么态度面对。你要一直往 P(doom) 那边想吗?你担不担心,都不影响它是否会发生,这不是你能控制的。

Lex Fridman: 但还有很实际的问题,比如每天怎么安排:花多少时间学习,多少时间动手做,又花多少时间接触不同的东西。前阵子我去了中国乡村,就是刻意这么安排的。在中国,或者任何地方的乡村,和当地人聊天,会发现时间慢得多,也没人讨论 agentic engineering。我先去了长城,那是一种跨越了几个世纪的、恒久的存在。当然,心里还是有一点 FOMO,总觉得自己是不是错过了什么。

定义问题、确定范围、体验审美、保持学习四类能力,以及 DHH 与 Lex 对技术经验作用的不同看法

图 4 · 能力重心与尚存的分歧。 综合第 07、09 节整理。DHH 强调产品判断与开放尝试;Lex 强调系统思维、验证和严谨。两人对技术经验应参与多深的判断并不一致。

10 面对网络上的敌意​

Lex Fridman: 但我就是想刻意去找一找,人类生活中那些不会随时间改变的东西。整个历史里,人们总觉得一切都在变化,可生活中真正重要的那些事,依然相通。我想让自己始终和它们保持联系。

DHH: 你不会错过任何东西。这是在这个转变的早期阶段真正让我恼火的地方。大家都急得不行,好像你不赶紧跟上就……现在是 loop!不不,loop 过时了,现在得用 graph!不不,那个也过去了,现在又是 harness,对吧?他们不断地探索前沿,这在某种程度上实际上是非常令人兴奋的。这就是当新领域打开时会发生的情况。它就像一个新的门户,一切都溢出来了。这太令人兴奋了。但这也意味着,如果我去年刚刚背包旅行,没有接触过电脑,没有见证过这个 agent 的时刻,而我昨天才出现,你知道吗?两周后我就能赶上进度。

DHH: 你并不需要把错过的每一步都补上,某种程度上,这反而让人松了口气。如果去年错过了,两周后就能赶上最前沿。如果你是一名程序员,在喜马拉雅山徒步旅行了一年,然后回来,你可以在两周内赶上。这恰恰是这些进步了不起的地方。我们现在同时进行如此多的实验,不断淘汰无效的做法,留下真正有用的东西。你不必记住甚至不必参与整个旅程。你直接过来用最后的成果就行了。

Lex Fridman: 但当你从背包旅行回来时,关键的一步是愿意成为一个全新的、不同的人,因为事情变化得太快了。

DHH: 没错。

Lex Fridman: 我是说,假如你真的出去背包旅行——……去年十月,四月或五月回来——

DHH: 你可能已经在低温休眠舱里待了 100 年了。

Lex Fridman: ……就像,“什么,你是什么意思?我们不再编程了?”这,这是一个非常……这是一个巨大的转变。

DHH: 确实让人震惊。其实……我有些话也稍微夸张了一点,是为了表达得更鲜明。我也认识到,短暂地感到悲伤是可以的。那不是我的性格。这不是我的做法,但我承认这是一种经过时间考验的应对失落感的机制。当你所熟悉的、也许你非常喜欢的世界不再是原来的样子时,有一种失落感是可以接受的。

Lex Fridman: 那我也该明确说出来:我确实会难过,就像那个眼角滑下一滴泪的美国原住民形象,我也会……就是有种伤感。这是一次再见。这是对旧编程世界的告别。

DHH: 那是……这让我觉得很有意思。

Lex Fridman: 我花了这么多年——

DHH: 可之前的一切,最终都汇聚到了这一刻。这也是为什么我觉得这一路如此有意义。AI 不是从天上掉下来的,不是什么外星技术穿过宇宙,突然落到我们面前。computer science 有多久,AI 就存在了多久。20 世纪 50 年代,那些最聪明的人以为,再过十年左右就能攻克它。结果花的时间长了一些,部分原因是我们在通往 AI 和 neural network 的路上走了弯路,以为其他 symbolic representation 能胜出,结果没有。这可能耽误了大约十五年。还有一个原因是,我们得先经历游戏革命,经历 3D 游戏的发展。

DHH: 如果我们没有 Quake,如果我们没有 Duke Nukem,如果我们没有 Unreal Tournament,我们永远不会得到 AI,因为我们永远不会得到 GPU,因此我们永远不可能得到现在这样的 AI。因此,我们到目前为止所做的一切都是为了实现这一目标。你是其中的一部分。天哪……多幸运啊。不管是提供训练的东西,还是玩电子游戏,能尽自己的一份力,都是多么幸运的事。你完全可以这么想。就我而言,在 90 年代,你花在玩电子游戏上的所有时间,都是——

Lex Fridman: 你正在贡献。

DHH: 是的,我当时就为 AI 革命做出了贡献。

Lex Fridman: 为了人类文明的进步。不,当然。文明随着旧事物的死亡和新事物的诞生而进步,并以这种方式继续下去,但我认为悲伤的过程仍然是其中的一部分。

DHH: 花点时间。没关系。考虑一下……而且,你甚至不必接受一切都已死的事实。就像,如果你仍然非常执着于手工凿刻,如果你在一年前问我,我会预测我会更执着。我很惊讶——

Lex Fridman: 我有点惊讶……

DHH: ……自己竟然没有更舍不得。但我想,我之所以没有更加依恋,是因为我发现了一些更有趣的东西。如果不是这样,如果 AI 取代了我所爱的东西,给了我一些我讨厌的东西,我可能会有点痛苦。

Lex Fridman: 看着你的变化,真的又好笑,又精彩,也很鼓舞人。就像 Picasso 突然用上 image generation,兴奋得不得了,几个月内就换了创作方式。你身上发生的,差不多就是这件事:一个欣赏优美代码的艺术家,忽然开始大谈做这些事有多好玩——

DHH: 我认为 Picasso 实际上是一个很好的类比,因为如果你看他早期的作品,他学习了他的手艺,那就是画写实画,对吧?就像,他原本是在练习传统技法,想成为尽可能逼真地描绘现实的大师,后来,立体主义和其他表达方式出现了。

DHH: 所有这些抽象表达形式,他并没有因为不再画文艺复兴式的画、不再把苹果画得惟妙惟肖而难过。他把苹果重新想象成一个方块,反而兴奋得很。我感觉到这种转变,我们已经摆脱了这种单一的表达模式,突然像推开一扇门,眼前的色彩一下丰富起来,能看见的东西也更多了。也许是因为我当初成为程序员的方式。我并不是因为深爱 if statement 而成为一名程序员。我成为一名程序员是因为我想要程序。我想要那些不存在的东西存在。首先,我必须学习如何编程来实现这一点。

DHH: 然后我碰巧爱上了编程作为一门手艺,然后我花了二十年的时间真正深入研究它。但现在我回来了。我又回到了有了一个想法,并且非常不耐烦地想看到它存在于世界上,而 AI 把从想法到实现的时间压缩到了几乎为零。所以,这种加速也让我重新找回了最初的热情。现在,我明白这并不适合每个人。有很多程序员从一开始就喜欢编程,他们被逻辑结构等所吸引。我的意思是,我已经在那里呆了二十年了,所以我明白了。但我也认为你能够发现自己新的一面——

DHH: ……只要你愿意接纳。借用 Jeff Bezos 的说法,我总会想到那个“后悔最小化框架”(regret minimization framework)。两年后回头看,你会不会说:“我把时间都花在生当下的气、怨行业变了,真是值啊。”还是会为当初愿意投入而骄傲?中间难过一阵也没关系,这些情绪都可以有。然后再告诉自己:“我要弄明白这个世界现在怎么运转,不光顺应它,还要借此做出更多东西。”

Lex Fridman: 我的意思是,这是真的,很多程序员,我的很多朋友,我,当然还有你,都玩得很开心。

DHH: 在过去的三个月里,我从电脑中获得的乐趣比以往任何时候都多。

Lex Fridman: 快速上厕所,然后我要问你现在如何与系统实际交互。

DHH: 是的。

11 面向 AI agent 的编程环境​

Lex Fridman: 我得问问,你的编程环境现在变成什么样了?用键盘,还是语音?IDE 又是什么?

DHH: 现在想起来都觉得很疯狂,但是,是的,我使用 TextMate 已经快 20 年了。我想我是从 2005 年开始使用 TextMate 的。我帮助发布了第一个版本,之后我就无意再寻找别的编辑器。我并没有在市场上寻找替代方案。直到切换到 Linux,我才不得不离开熟悉的环境。现在切换到,我们称之为什么?agentic engineering?哦,我他妈的讨厌这个词。我们必须想出一些听起来像编程一样简单的东西,但又能说明是和 agent 一起做的。但是——

Lex Fridman: 此时我仍然觉得应该叫编程。

DHH: ……好吧,就叫它编程吧。使用 agent 进行编程需要不同的工具集。确实如此。这里的主要变化是,你将从脑子里的 single-threaded 工作方式,转向 parallel processing。不久前我写代码的时候,在 TextMate 甚至 Neovim 上手工凿代码的时候,我当时就只关注一个问题,然后有条不紊地解决它,这实际上是进入心流的入口。心流的入口是深度沉浸在单一问题中,并坚持到底。

DHH: 和 agent 合作就不一样了,部分原因是它们既太快,又太慢。交代一件事后,它们不会像敲键盘那样立刻给你反馈,你得让它们自己忙一会儿。如果只是坐着等,就会觉得自己没干什么事。哪怕单个 agent 的产出已经很高,你还是没有那种高效工作的感觉,心里不舒服,甚至觉得自己有点没用。

DHH: 最早用 agent 的时候,我主要一次只开一个,当时确实有过一瞬间的犹豫:“这真的好吗?”但很多难题,只要投入更多资源,就能解决。这不就是 AI 的 scaling law 吗?把任务并行起来,同时开几个 agent,你又会有那种进入心流的感觉,因为你一直在做决定:这个 agent 不知道往哪个方向走,你帮它解个围;那个做完了,你准备好下一项任务。要这么工作,就需要另一套环境。

人分派与指引多个并行 agent,在收到通知后查看结果并作出决定的示意图

图 5 · 并行工作与注意力限制。 综合第 11、15 节整理。并行让人把等待时间用于其他任务,也增加了切换和决策的密度;三个任务仅作示意,不是固定的并发建议。

DHH: 我一开始用 tmux,开不同的 pane、分不同的区域。可以把它想成带 tab 的 terminal,一次打开好几个 tab。这个大家都熟悉,平时也不会只在一个 tab 里做事。

Lex Fridman: 所以仍然坚持使用 terminal,CLI。

DHH: 绝对的。

Lex Fridman: 所以你没有使用 Claude Code 应用程序或——

DHH: 不。

Lex Fridman: ……Codex 应用程序或——

DHH: 我喜欢这场 agent 革命在 terminal 中拉开序幕,因为我已经是 TUI,也就是 terminal user interface,以及整个 terminal 环境的忠实粉丝。在里面工作很舒服,也很漂亮。现代 terminal 本身就是个赏心悦目的工作环境,所以我很喜欢。然后,拥有多个 agent 这一事实,尤其是当它不仅仅是在你自己的机器上运行多个 agent,而是你开始运行多台机器时。现在仅靠 tmux 还不足以跟踪它,这就是为什么最近我改用了这个叫做 Herdr 的东西。

DHH: 而 Herdr 本质上是 tmux 加上 agent 通知。因此,每当你的 agent 完成工作并需要为你提供某些东西时,它就会叮一声,提醒人类该来看看了……人到底是主人还是仆人,我也时常搞不清。总之,该你做决定了。它还会标明 agent 是否仍在工作。所以我配好了 Herdr,而且在不同机器上各跑一套。大约一个月前,我进入了这个疯狂的阶段,意识到在一台机器上完成这项工作还不够快。这就像我发现了 multicore programming,但我只有两个核心。我想,“如果我有 16 个核心怎么办?如果我有 32 个核心怎么办?如果我有 64 个核心怎么办?”所以我立即出去买了这些令人惊叹的 KVM,称为 GL.iNet Comets。

DHH: 它就是这么一个小盒子,用 HDMI 和 USB 接到计算机上,也就是 KVM。因此,KVM 是一种远程控制计算机的方式,但它的特别之处在于它非常简单。你连接这个东西,你进入一个网页,登录一次,设置一个密码。然后它就能加入你的 tailnet 了。对我来说,这是去年的另一场革命,就是发现这些 WireGuard 网络。Tailscale 本质上是将你拥有的所有计算机转变为本地网络,无论你身在何处。就像现在在我的手机上一样,我可以直接访问马里布办公室的所有计算机。我还可以访问哥本哈根办公室的所有计算机。

DHH: 我可以像坐在旁边一样使用它们,而无需在 firewall 上打孔或设置复杂的 VPN。这样做的作用只是减少了接入更多计算资源的麻烦。所以当我发现这一点时,我看了看我的衣柜,我意识到我有一堆之前实验中的迷你电脑,我只是说,“如果我把它们全部连接起来怎么办?”

Lex Fridman: 哦,哇。

DHH: 我刚刚连接了四台电脑——

Lex Fridman: 不错。

DHH: ……在壁橱里。每台都接着自己的 Comet 小盒子,突然间我可以在更多计算机上同时运行 agent,并且我可以用 Herdr 控制它们。这下真的把我自己的处理能力用满了。

Lex Fridman: 对。

DHH: 差不多是……怎么算呢?四五台机器,每台跑大概三个 agent,总共有 16 个 thread。这就是我能同时应付的数量。当然,agent 跑得越快,我能照看的 thread 就越少。按现在的速度,我可以同时让大约 16 个 thread 全速工作。这也是为什么我从兴奋变成了欣喜若狂。就像你说的,这种变化确实有点让人招架不住。以前我们和计算机之间的沟通,简直还停留在拨号上网的带宽。想想都好笑:一年前,我还坐在这里雕琢代码,一行一行地写。

DHH: 忙一个小时,可能写出一个漂亮的 controller、一个漂亮的 model,也就是一个文件。已经很用心地写了,最后可能留下 60 行。折算下来,我的带宽也许就是每小时 30 行,可能还说高了,也许只有 20 行。现在我同时跑 16 个 thread,有时每小时能产出几百行代码。不过,先打住,我其实很讨厌这个指标,对吧?

DHH: 通常拿代码行数衡量这种事,就挺蠢的。大家一个劲炫耀自己写了多少行代码,真问一句“那你到底做出了什么”,却又支支吾吾,答不上来。编程圈里有人拿这种“AI psychosis”开涮,我觉得也没错。

Lex Fridman: 但它是个挺方便的简略说法——

DHH: 对,方便用来概括产出有多少。至于产出的东西是好是坏——

DHH: ……单凭这个指标判断不了。但我现在能做出多得多的东西,也能一直把这些任务并行推进。这就是我的工作环境。它仍然是 Neovim,但此时,我没有编写大量代码,因此我使用 Neovim 作为项目浏览器,然后用它启动 lazygit,查看 change log。即便如此,我想说,如果 GitHub 能更快地向你展示 pull request,那也许直接在 Web 上看会更舒服。我不知道。我一直在使用另一个名为 Hunk 的工具,它展示 diff 的方式很好。所以你也可以看看。

DHH: 但我发现当我看 Hunk 时,我只能看到 changeset,而当我查看 agent 的输出时,我经常想看到周围的上下文。哦,是的,所以它改变了这个文件,但实际上,我们另一个没改的文件里,是不是也有该一起改的东西?这就是为什么我仍然喜欢 Neovim 作为一种实现方式。但这一切当然都发生在 Omarchy 中。所以这一切都发生在 Linux 上。这是 agent 的另一个重大突破。agent 热爱 Unix 哲学。它喜欢可以通过 command line 调用的单独工具,在 Mac、Windows、Linux 这三大主流 operating system 里,没有谁比 Linux 更适合这种工作方式。

DHH: Linux 中的所有内容要么是 config file,要么是 CLI 工具。五分钟前,这就是它的主要缺点。这就是人们不喜欢 Linux 的原因。就像所有 config file 和 CLI 工具一样。

DHH: 这世界开的玩笑真妙:五分钟前还是 Linux 的缺点,转眼就成了它最大的卖点。这是其中一件事……四个月前,有个周末,我发现自己只能用 Mac 了。我以为我去的地方有一台 Linux 的电脑,所以我没有带笔记本电脑,到了才发现我只有一台 Mac Mini。因此,我只好将就着用,试着按 Linux 上习惯的方式配置这台 Mac。现在你实际上可以做很多事情。Homebrew 已经变得非常好。Homebrew 是 Mac 缺少的 package manager,并且没有人在简化设置方面为 Mac 的进步做出更多努力。

DHH: 但即使像 Raycast 这么简单的东西,不知道你用过没有。就是这样——没有你可以访问的 config file。你必须进入 GUI,导出一个文件,然后将该文件(我不知道)放在你背包里的什么破 U 盘上。然后你可以将其导入到其他地方。你无法自动化机器的整个设置。你无法自动化 Mac 默认 key binding 的所有配置。这必须是一个手动过程,你需要像穴居人一样点击鼠标来设置你的机器。

Lex Fridman: 我的意思是,有解决办法。

DHH: 不好用。我查过,也费劲试过。

Lex Fridman: 这就是我的旅程。显然我是一个 Linux 人,但由于 Adobe Premiere、Adobe 产品,我也是一个 Windows 人,所以我经常会使用 WSL,也就是 Windows Subsystem for Linux。

DHH: 是的。

Lex Fridman: 所以 Windows 里面的 Linux,这……在 agent 时代并不是一个好的 Linux,因为它只是——

DHH: 它是个 sandbox。

Lex Fridman: ……对,是个 sandbox,而你希望 Linux 能放开手脚,什么都能做。

DHH: 没错。

Lex Fridman: 所以,我现在开始留意 GrayCat 这类东西了。你知道,我习惯用键盘操作,就会问:config file 在哪儿?能不能让 agent 替我把一切设置好,保存 configuration,再复制到其他系统上,让整个过程都自动完成?我不得不一个个问,可很多地方根本没有这种支持。

DHH: 他们没有好的答案。

Lex Fridman: 但很多时候你实际上可以自己构建应用程序。

DHH: 但有些变通办法。

Lex Fridman: 对,那是变通办法。

DHH: 有些临时凑合的办法。

Lex Fridman: 都是变通办法。

DHH: 你不必这样生活,Lex。还有更好的……实际上,这是一个伟大的时刻。

Lex Fridman: 等你先做出个视频编辑器再说吧。

12 对速度的执着​

DHH: 所以这是一个美好的时刻。

Lex Fridman: 是的。

DHH: 听说今天是你的生日。

Lex Fridman: 是的。

DHH: 所以我带了一个小礼物。

Lex Fridman: 不。

DHH: 不管你愿不愿意,今天都得让你用上面向 agent 的 operating system。

Lex Fridman: 这太棒了。

DHH: 我问……我在 Dell 的朋友是否有一台机器可以送给你作为生日礼物。

Lex Fridman: 哦,不。

DHH: 这就是我用的那款机器……准确地说,和我的同款,不过这一台归你了。这是一台——

Lex Fridman: 不。

DHH: ……Dell XPS 14,已经装好了 Omarchy 4——

Lex Fridman: 哇哦

DHH: ……就等你完成个人设置了。等你发现这些……对了,我们真该计个时。回答大约五个问题,一分钟左右就能开始用。你愿意的话,现在就能当场试试。

Lex Fridman: 哦,Omarchy,DHH 的美观、现代、有鲜明设计取舍的 Linux。是的,让我们开始吧。

DHH: 是的,边说边填。所以——

Lex Fridman: 真酷。

DHH: ……你刚才说的那些 Mac 上的痛点,我那个周末也亲身体验过。我费了不少劲,找到了一些还不错的变通办法,主要是 Homebrew 现在有了安装 GUI 应用的 tabs。想想前不久大家还怎么装软件,真的很好笑:“我要用 Zoom。”他们会进入 Zoom.com,找到下载链接,下载 DMG-……双击它,看到一个奇怪的手动交互,告诉他们将图标从屏幕的一个位置拖到另一个位置,这就是安装应用程序的方式。你会一遍又一遍地这样做,直到拥有你想要的所有应用程序,如果你要设置一台新机器,并且你有 12 个应用程序,你会像穴居人一样去 12 个不同的网站下载它们。

DHH: Homebrew 解决了其中很多问题,但并没有全部解决,至于那些……它就完全没帮上忙——

Lex Fridman: 抱歉打扰了,但是看看这进展有多快。

DHH: 哦,40 秒左右就搞定了。这就进到 Omarchy 里了。

Lex Fridman: Super 是 Windows 或键盘上的 Command 键。那么 Super 键是哪一个呢?

DHH: 是的,这就是 Windows 键。哦,实际上,不,不,你有一个特别版。

Lex Fridman: 是啊。

DHH: 世界上大约只有六台这样的计算机。

Lex Fridman: 哦,有一个 Super 键。

DHH: 上面写着 Super,看看 Copilot 键在键盘另一端的位置。那是 Omarchy 标志。

Lex Fridman: 不错。好吧,酷。

DHH: 这是 Dell 的 Spencer Bull 帮忙做的。这些事情里有不少是我和他一起合作的,他们真的很棒。

Lex Fridman: 他们暂时放弃了 XPS 品牌。

DHH: 是,去年确实取消过。

Lex Fridman: 我当时想,“这太蠢了。这是……XPS 太棒了。”

DHH: 他们干的蠢事还不只是取消 XPS 这个名字。他们还取消了 Escape 键,并在顶部放置了电容式触摸按钮。这正是 Apple 大约三年前才意识到很糟糕、并且人人都讨厌的那个错误。但现在他们拥有一支令人难以置信的团队,这实际上是我自己的第一台 Dell 笔记本电脑。

DHH: 因为我的服务器一直使用 Dell。我们退出 cloud,用的就是 Dell 的 server。我记得从 2000 年代中期就在用了。但我从未运行过他们的笔记本电脑,因为与 MacBook 相比,它们达不到我的要求。2016 年,或者说 2026 年的 XPS 配备 Intel Panther Lake 芯片,才是第一款我自己真正愿意用的 Dell 笔记本。这很有趣,因为当我最初对 Apple 生气时,我想,“你知道吗?我应该买一台 Dell,”因为我们已经使用过它们等等,然后我买了一台 Dell,我想,“伙计,我做不到。我做不到。它不够好。”然后你瞧,今年他们刚刚解决了所有问题。续航好了,性能也好了。

DHH: 兼容性好了,重量降下来了,屏幕也升级了。这是一块 tandem OLED 屏幕——

Lex Fridman: 是的,这太不可思议了。

DHH: ……这意味着它实际上比你在 MacBook 中得到的技术更好。它比 MacBook 更轻,而且该芯片终于具有竞争力,因为 Intel 花了五年时间开发 18A 工艺节点。花了很长时间,但现在它来了,这真是令人难以置信。我们终于可以与 Apple M 芯片竞争了……续航能与之打平,性能也有得一拼。

Lex Fridman: 这东西有一个漂亮的默认主题,那它是什么?按 Super + Space 就能打开。

DHH: 其实只要按 Omarchy 键就可以了。它打开菜单。所以现在你可以从那里控制一切。

Lex Fridman: 哦,跟 Super 键一样。好,真酷。

DHH: 与 Super + Space 相同。所以这对我来说是个很大的变化:终于有一台 Linux 机器,不需要替它的短板找借口了。其实我不介意解释这些短板,说到底,只是有所取舍。我喜欢我上次谈到的 Framework 13。我还是喜欢他们。他们仍然制造出很好的计算机。但我认为对于很多人来说,他们并不想要 DIY 体验。他们想要一些开箱即用的东西,感觉它在构建质量等方面与 Mac 不相上下,现在我们终于拥有了它。生日快乐。

Lex Fridman: 非常感谢。DHH 的 Omarchy Dell 笔记本电脑是最好的生日礼物。这太棒了。

DHH: 顺便检查一下 screensaver。

Lex Fridman: 是的,这有点神奇。我看到了。

DHH: 在那 tandem OLED 屏幕上——

Lex Fridman: 太漂亮了。

DHH: ……这绝对是令人难以置信的棒。

Lex Fridman: 看看那个。整个界面都很复古,就像 Fiverr pop——

DHH: 就像 20 世纪 90 年代开着一个 BBS,那正是我十四岁时做的事。所以对我来说,这一下就回到了过去。它把 Unix 里正在兴起的现代文化,和 90 年代的复古感融合在一起,这种风格太棒了。

Lex Fridman: 对,一个以 agent 为先的 OS,外表却这么复古,真有意思。

DHH: 这两者又很搭……所以,当这些 agent harness 以 TUI、CLI、terminal 的形式出现时,我才那么兴奋:因为突然间,全新一代的程序员和普通用户都发现了 terminal 的魅力。该 terminal 实际上是我们拥有的最令人印象深刻和最高效的 UI 之一。现在,我们从那时起就构建了更容易学习的 UI。鼠标是一项很棒的发明,可以让那些对计算机不太了解的人只需点击鼠标就能找到答案,但 terminal 是为那些想要学习他们的系统、想要学习键盘命令的人准备的。

Lex Fridman: 所以你认为 TUI 会继续存在吗?

DHH: 100%。现在,这不会是唯一的事情。当然不是,因为这些实验室现在估值高达数万亿美元,因此它们需要能够接触到数十亿人。我认为我们不会向数十亿人传授 TUI 的复杂性。所以还会有其他工具,实际上已经有了。对了,Linux 有个很棒的东西,就是 ChatGPT Codex 工具。

Lex Fridman: 是的,我看到了。

DHH: 消息发布后不到两个小时,我就已经把它打包好,放进 Omachi 里了。现在,如果你转到……你实际上可以按 Omachi 键——……然后只需写 ChatGPT。应该会弹出安装选项。

Lex Fridman: 不错。

DHH: 然后按回车即可。

Lex Fridman: Lex 的 sudo 密码。

DHH: 是的,无论你输入什么。然后它就会安装它,它会弹出它,你就有了 ChatGPT。

Lex Fridman: 不错。

DHH: 很多应用程序就是这样,所有的 agent harness 都是这样构建的。刚才说的 Tailscale,想用也可以这样装。Dropbox 也是。所有这些东西都在那里的原因是因为我使用它们。这是因为我为自己构建了这个系统,并且我想,首先也是最重要的是,如何为我构建我梦想的计算机?如果我得到了我梦想的电脑,我确信其他人也会有和我一样的梦想。

Lex Fridman: 现在,你痴迷于让安装时间在一分钟以内,并且很多人在网上问你为什么。那么为什么呢?为什么你如此着迷于让安装时间少于 60 秒?

DHH: 首先,让我引用 Michel Hashimoto 的一句话,他创建了非常棒的 Ghostty terminal,并且在 Omachi 上也可以使用,他也是 HashiCorp 的创始人,他不久前在 X 上发表了一篇很棒的帖子,里面有句话特别有力:“追求卓越无需解释。”想要把东西做得尽可能好、尽可能快、尽可能漂亮,不需要任何理由。

DHH: 我们应该想要漂亮、快速、使用起来令人愉悦的系统。现在,安装时间的有趣之处在于我一开始的目标并不是一分钟。一开始我的目标很保守。我想如果我能在 15 分钟内设置好整个系统,那么与之前相比已经是一个巨大的进步,我会非常高兴。事实上,大家用来比较的基准,早已偏离合理水平。你谈到 Commodore 64 是你的第一台计算机,对吧?

Lex Fridman: 嗯嗯。

DHH: Commodore 64 拆箱后,按下电源键,我记得不到一秒,BASIC interpreter 就已经在等你输入命令了,几乎是瞬间启动。再说说我新买的 Mac。我买它是为了 Adobe Lightroom,那是我还没在 Linux 上用 vibe coding 做出替代品的一个应用。你知道,把那台新 Mac 设置好,我用了多久吗?

DHH: 全新的电脑,刚拆箱。我开始设置,然后就要更新软件。等系统全部更新完,终于可以安装 Adobe Lightroom 时,已经过去 42 分钟了。这太奇怪了。这太荒谬了。这对每个喜欢电脑的人来说都是一种侮辱,你买了一台新电脑,在使用它之前,你必须花 42 分钟进行更新……对出厂时就已经安装在电脑上的东西进行更新。这太荒谬了,而且疯狂的是,这还不是最糟糕的事情。我还买了一台 PC,因为所有这些 Linux 机器都是 PC,对吧?

Lex Fridman: 对。

DHH: 它们预装了 Windows。所以我得到了一个。这只是三周前的事。全新机器,Intel Panther Lake,全套最新配置。从打开包装到可以使用需要 1 小时 35 分钟。而你刚才用了多久,就进到 Omarchy 里了?

Lex Fridman: 我的意思是,这肯定不到一分钟。

DHH: 一分钟。

Lex Fridman: 是的。

DHH: 我们可以像这样建造计算机。我们有技术。自 1981 年 Commodore 64 首次问世以来,我们就拥有了这项技术。事实上,我们现在拥有一台速度快一万亿倍的计算机,而你必须花 42 分钟或一个半小时来设置它才能准备使用,这让我非常恼火,以至于它变成了一种激情。有趣的是,就在我们在这里休息的时候,我正在和我的搭档 Ryan Hughes 交谈。我们觉得,已经找到了一条路:为特定机器预先制作 Turbo image。因为需要利用对硬件的了解,比如 Dell XPS,所以要按机型来做。我们打算做一个 Dell XPS Turbo image,大约 12 秒就能装好。完整的 Linux 系统——

Lex Fridman: 是啊

DHH: ……大约 12 秒内安装完毕。

Lex Fridman: 太不可思议了。

DHH: 这种不肯将就的执着,才是用计算机让我如此满足的原因。这就是为什么我现在所处的 agent 加速现实如此令人振奋。因为我可以看到这些限制然后想,你知道吗?当我们进行到五分钟时我本可以停下来。那已经足够快了。这就是关于 X 的争论,对吗?你为什么还要继续走下去?五分钟已经够快了。好吧,也许对你来说,但对我来说,12 秒更有趣。我总是想,尝试思考这些第一性原理。好吧,在那台机器上,实际上再次按下 Omarchy 键,然后输入 speed。你会看到出现一个列表,其中之一是磁盘速度。

Lex Fridman: 速度测试,网络速度,磁盘速度。

DHH: 磁盘速度。执行该操作,然后运行它。这是测试内置 NVMe 驱动器的性能,你得到了什么?

Lex Fridman: 每秒 7 GB。

DHH: 所以每秒 7 GB。这就是驱动器的速度。为什么我们不能在一秒钟内安装 Linux distribution?Omarchy distribution 大小为 5.8 GB。既然它能达到每秒 7 GB……当然,现在你实际上无法做到这一点,因为 U 盘比这慢得多,但目标就应该是把底层硬件和 protocol 允许的性能尽量用满。我们得一路追问到这些最基本的限制。

Lex Fridman: 是啊,我很喜欢你选择做 Linux distribution。你本来什么都能做,但做这个,意味着你在重新思考计算机到底是什么,因为 operating system 决定了最根本的——

DHH: 对。

Lex Fridman: ……你与计算机交互。

DHH: 是的。而且它已经如此陈旧了。

Lex Fridman: 是,确实。

DHH: 我们今天的 macOS 与 10 年前的 macOS 几乎没有什么不同。事实上,在很多方面情况都更糟,因为 Apple 不断限制用户对自己设备的控制。它们不希望用户安装未经 Apple 允许的软件。他们不希望用户在不手动操作的情况下重新配置 hotkey。连切换 workspace 时那 500 毫秒的动画,他们都不愿意改。这是一台令人恼火的锁定计算机。现在,值得 Apple 称赞的是,对于一台限制这么多的计算机而言,它已经做得不错,但我不想要一台锁定的计算机。我想拥有我的电脑。更好的是,我想改变我的计算机,这就是 agent 时代需要新 operating system 的地方。

DHH: 当你可以对你想到的任何应用程序进行 vibe coding 时,你应该能够对你的 operating system 进行 vibe coding。你应该能够更改任何内容,例如它的外观、工作原理、有哪些面板、没有哪些面板,而这需要 Linux。就这么简单。没有……其他两个 operating system 都无法提供这一点。

Lex Fridman: 我记得 X 上有人问过你:“你算老几,怎么就觉得自己能比 Ubuntu 做得好?”或者,“Ubuntu 已经挺好了,你干吗还做这个?”你回答:“因为我觉得自己能做得更好。”这股劲儿从哪儿来?怎么敢相信,凭你一个人,或是再加上 Ryan,就能做出比 Ubuntu、Arch 这些系统更好的东西?

DHH: 嗯,我会说它一开始并没有那么宏伟。当我开始我的 Linux 之旅时,我实际上刚刚开始使用 Ubuntu,并且我只是在它的基础上进行构建。这个系统已经做了很多我想做的事情,至少是 Linux。那么我可以在它的基础上进行构建并使其更加现代,使其实际上看起来不错,并拥有我想要使用的程序吗?我先做出了一个大致符合想法的版本,然后我发现你可以深入七层,而且,你越接近底层硬件,越接近 kernel,越接近每一个 package 等等,你发现的自由就越大。

DHH: 因此,当我发现越来越多的自由时,我变得越来越雄心勃勃,我意识到,哦,果然不出所料,我对计算机应该如何工作、它们应该如何外观、应该安装什么程序以及安装它们是否应该花费 42 分钟或 45 秒有强烈的意见。顺便说一句,这是当前的世界纪录。所以如果有人在这之后安装了 Omarchy Quattro 并且安装时间能少于 45 秒,截图并发给我,你就会成为新的世界纪录保持者。

Lex Fridman: 你何时——多久前跨过 60 秒大关的?

DHH: 很有趣,因为就像旧的限制一样,那是什么?这是四分钟一英里之类的——就像 1952 年那样——人们认为人类不可能超越。后来一个人突破了纪录,接着几个月里,又有三个人做到了,对吗?所以我们有这个目标。我原本的目标是两分钟。

DHH: 后来我们做到了两分钟以内,我就想:“既然能少于两分钟,为什么不能少于一分钟?”我记得当时的想法是,“这太疯狂了。现代 operating system 都需要 42 分钟,你不可能在一分钟内安装好它们……”如果其他 operating system 需要 42 分钟,对吧?就像 Apple 公司一样,充满了很多聪明人,比如,花了 42 分钟,所以这该是基准了吧。不,这不是基准,因为没有速度限制。就像,几乎在任何情况下,你认为理所当然的事情都不是不可改变的现实法则。在驱动器能够传输的数据达到每秒 7 GB 之前,你还没有达到极限,因此你应该继续努力。当然,然后它本身就变成了一个游戏和一种满足感。

DHH: 每省下一秒,都让我兴奋。当我们打破一分钟的障碍时,我想,这实际上只是在大约三周前,甚至两周前被打破,我简直疯了。然后我得到了一群 agent 来运行 auto research loop,逐一试验各种设想,就像,哦,如果你改变这个东西,如果你改变那个东西,如果你把它删掉怎么办?如果你并行做事情怎么办?如果当你输入用户名时,我们开始把 package 预先加载到内存里,是不是就能更快地装上去?这变成了一个有趣的游戏。我认为这就是你应该如何思考产品开发。这应该很有趣。你应该带着一点玩心,不必事事都那么严肃。

安装时间从 15 分钟目标到突破两分钟和一分钟,再到约 12 秒设想,以及提出设想、试验、测量、优化的循环

图 6 · 速度目标推动反复试验。 根据第 12 节整理。时间均为 DHH 在访谈中的自述;“约 12 秒”是为特定机型制作 Turbo image 的设想,尚非已实现的结果,也不能作为统一条件下的性能对比。

DHH: 就该试着超过目标,做得比所谓的“够用”好得多。

Lex Fridman: 特别是现在,因为你可以移动得如此之快,并且由于 agent 你可以尝试很多不同的方法。

DHH: 是的,这只会让它更令人满意。但我认为这始终是正确的。如果你看看有史以来最伟大的 Mercedes-Benz,我认为它被称为 W126。我看过这部精彩的纪录片。主导这个项目的是一位在 Mercedes-Benz 安全部门工作了多年的人。突然间,他被任命负责整个 S-Class 项目,他把能用的好东西全加进去了,包括自动回收安全带、前灯清洗装置等等。这辆车的设计和用料远远超过了市场通常要求的程度。

DHH: 太难以置信了。但你看着它,然后说:“好吧,我想要那个。”就像你看着机械表时会问:“它能下潜到 100 米吗?”或者,或者我认为 Rolex 有一个可以下潜到 4,000 米,深海,深海潜水员海洋——……或者无论它叫什么。买这块表的人,全世界可能也就三个真会把它带到那个深度。但你难道不想成为那种想要推动人类进步的人们的赞助人吗?我想要最快的汽车突破速度限制。我想要一块可以潜入马里亚纳海沟的潜水表。我想要一个可以在 60 秒内安装的 operating system。

Lex Fridman: 从个人角度,我很佩服这样的人,也觉得大家都该有这种追求。还得说说它带来的影响:哪怕追求的指标看起来有点不务正业,这种精益求精也可能意外带来别的突破、发现和创新,很多甚至与速度无关。

DHH: 100%。

Lex Fridman: 对,重点是探索。把一个具体指标当作催化剂,让它推动创新,这很好,因为过程中总会有新的发现。这和你去月球、去火星的原因是一样的。就像,为什么?谁在乎?嗯,事实上,真正的事情是你会发现很多关于化学推进的知识。你会发现很多关于人类如何在太空中长期生存的知识。也许你会发现在太空中使用太阳能或在太空中使用数据中心或其他什么的全新方法。

DHH: 没错。

Lex Fridman: 各种各样的……也许你会遇到——

DHH: 没错。

Lex Fridman: ……外星人,但你永远不知道。但设定一个目标并追逐它,尤其是当它是数字的时候,真的很好。

DHH: 设定一个宏伟的目标就更好了。当你拒绝只做实用的事情,而努力追求稍微超出合理范围的事情时,魔法就会发生。我们应该全力以赴。这是原因之一……事实上,在某种程度上,这个特定目标是因为看到其他人这样做而激发的。我的意思是,Elon 就是我们这次谈话中最突出的例子。这家伙的目标是如此远大。乍一看,它们似乎很荒谬。我自己就不止一次觉得那些目标荒唐。然后你意识到它们有时会实现。也许并不总是按计划进行,那又怎样?所以呢?所以我们没有如期得到自动驾驶汽车。早在 2017 年,我就因为这件事对 Elon 骂了很多遍。

DHH: 但现在它就在这里,除了那个在 17 年认为这是可能的人之外,谁会把我们带到这里,他对现实如此不耐烦,以至于光凭那股劲,就要把现实推到自己想要的位置。我认为这非常鼓舞人心,我们需要有人把目标再往前推。我们需要有人跑完四分钟一英里,所以我们其他人意识到,“好吧,但我想我可以跑得更快。”这就是我努力争取的目标,我真的为 Omarchy 努力奋斗,因为这样生活更有趣,心里装着更大的追求和抱负。我会说我实际上已经改变了一点想法。过去我说过很多次,许多人其实不需要这么大的雄心。

DHH: 这话也没错。我们不希望 80 亿 Elon 在世界各地奔跑。我想这会相当疯狂。但我逐渐意识到,对于企业家来说,拥有合适的宏大目标是健康的。就算只是开一家意大利餐厅,也不该止步于把店开着。也许我只是经营一家意大利餐厅,但我做的披萨可能是最好的。我做的帕尔马干酪最美味。我们必须追求卓越,才能激发继续前进的动力。

Lex Fridman: 是的,敢于大胆思考,就像你可以建造一个 Linux——

13 语音 prompt 与键盘输入​

DHH: 是的。

Lex Fridman: ……distribution。要把它做到这么快,你还记得哪些具体办法?刚才你提过,有些是 agent 发现的。

DHH: 其中一件事是利用等人输入的时间做 preload。因此,在设置 Omarchy 机器时,你需要回答五个问题。所以它在后台做一些事情。我们正在后台做一些事情。这是我甚至没有考虑到的事情之一,我的意思是,这其实是个老得不能再老的办法。很长一段时间以来,各种视频游戏都这样做,让玩家与某些东西进行交互,然后在后台进行 preload 等等。所以这是一种古老的技术,但我只是没有想到把它用在安装程序上。

DHH: 我原来的想法是,先问用户密码、用户名、时区这些问题,问完再开始安装。其实这些东西完全可以提前加载。还有一些优化,是调整 installer 执行各项操作的顺序,以及直接缩小安装包。上一版 Omarchy 是 7.5 GB,现在安装过程的大部分时间,其实都花在解压 package 上。这些 package 占了 ISO 的大头,也占了安装时间的大头。我们把体积缩到现在大概 5.85 GB,减掉了不少,而省下的体积,几乎一比一地换成了省下的时间。这方面我做了些很有意思的事。

DHH: 所以 Omarchy 使用了 JetBrains 字体,这是一个很棒的字体,漂亮的字体,实际上我第一眼其实不太喜欢,但后来发现,在 Mitchell Hashimoto 的 Ghostty 里,它是唯一能呈现出完美效果的字体。Ghostty,无论出于何种原因,不想以我习惯的方式呈现我心爱的 Bitstream Vera Sans。嗯嗯。但它完美地渲染了这个 JetBrains 字体,所以我就切换了。但是它……Arch 上的 JetBrains 字体的标准包是 200 兆字节,因为它包括所有这些变体和所有这些子类型等等。我意识到,我们没有使用其中任何一个。我们在这个 Nerd Font patched 版本中使用 monospace 版本。你知道那有多大吗?我认为是 16 兆字节。唔。

DHH: 所以,我干脆做了一个精简版的 JetBrains font package,一下就省了 180 MB。然后逐个检查,类似的事又做了不少。NVIDIA driver 也是这样。Arch repo 里的 driver 没用最高强度的压缩,我记得那种格式叫 ZSTD。压缩起来很慢,但慢的是生成 archive 的过程。如果多花点打包时间就能缩小 ISO,那我有的是时间等。光是两个 NVIDIA package,我记得就省了 200 MB。我特别喜欢这个过程,感觉自己像个 McLaren 的汽车设计师。

DHH: McLaren 目前正在制造一些世界上最轻的超级跑车,他们绝对痴迷于连最后一克重量都要抠。这就是为什么即使是新的 750S McLaren 也比竞争对手轻得多。他们使用碳纤维硬壳式车身,这让它们比使用铝制车身的 Ferrari 等对手更有优势。但他们也对重量有这种痴迷,我会看到 McLaren 人员的采访,他们对一些记者说,“是的,我们减轻了 370 克。”我就想:“等等,一辆车重 1,040 公斤,还是 1,380 公斤来着,他们还在计较这 370 克?”是的。多么痴迷的疯子。是的。我爱他们。是的。我就想让生活里多点这样的人和事。

DHH: 我想要一个 McLaren 就是因为这个原因。因此,当我从 package 中削减单个兆字节时,我想,伙计,我有点像这里的 McLaren 汽车开发人员,尽管我的意思是,我们甚至还没有完成这项工作。package 还可以进一步精简。但这实际上是 Omarchy 与传统 Linux 社区之间的另一个争论:所谓的 bloat。有些圈子觉得,预装软件就是不合规矩:你凭什么替用户决定该用什么程序?我就想,“伙计,这就是他妈的名字。它叫 Omarchy,因为 Oma 部分是 omakase 的缩写,字面意思是厨师的选择。我就是那个厨师。”

DHH: 我正在做出选择,这是我认为很棒的应用程序集合,”顺便说一下,它有一个视频编辑器。它与 OBS 一起提供来录制视频。它就在那里。是的。预装 OBS。好的。Kdenlive 是一个视频编辑器,时间线编辑器,非常棒。我用它编辑我所有的视频。然后我制作了自己的剪辑编辑器。你谈到了同步的事情。是的。我也有剪片段的需求。比如做完一期播客,想截一小段发到 X 上。而且使用 Kdenlive 或其他时间线编辑器有点麻烦,所以我制作了 Omacut。Omacut 也包括在内。Omacut,酷。它只是用于制作剪辑,你可以用键盘驱动整个东西。这样你就可以到达正确的时间标记。

DHH: 然后你可以按 Control + Space。就会把片段起点设在那里。然后转到剪辑的末尾,按 Alt + Space,就会设好终点。好的。然后你按 Control + S,它就保存了。好的。我现在可以使用 Omacut 快速制作剪辑。太棒了。但它上面有所有的软件。上面有 Neovim。上面有 Herdr。它有 tmux。它有一个 terminal。它有很多主题。它有一堆背景图片,是我能选出的最好的。这会占用一些空间。应该是这样,因为我不想交给你一片荒地,让你什么都得从头搭。当你打开包装时,这应该是一个高效的系统。它内置了什么?

DHH: Linux configuration 这部分主要是用 Bash 写的。它很适合干这个,本来就是为 system administration 这类工作设计的。当然,它也有局限,不能什么都拿 Bash 来写。

Lex Fridman: 生成 Bash 的 agent 怎么样?不错?

DHH: 哦,太棒了。

Lex Fridman: 好的。

DHH: 只有一件事例外,每次逮到,我都得敲敲 agent 的脑袋,提醒它去看那份 Markdown 指令文件:里面明明写了,不要用 early exit。agent 很喜欢 precondition,不爱写完整的 conditional。我喜欢“如果这样,就那么做”;它们喜欢“这个前提不满足就退出,下一个前提不满足再退出”。

DHH: 然后一路往下,才到真正要做的那件事。我讨厌这种风格。除此之外,它写 Bash 已经好得惊人了。上次我们聊天时,我还是先问 agent 某段 Bash 怎么写,再自己敲进去,但其实记不太住。后来我刻意下功夫学,免得动手的本事全丢了。结果刚学会自己写 Bash,现在又一行都不写了。大概已经好几个月没亲手写过,因为 agent 太厉害了。你只要给一点风格上的指引,偶尔提醒它别搞得太复杂……这事我前几天还在 X 上说过。

DHH: 有件事我总觉得不可思议:agent 做完一件事,说完成了,再让另一个 agent review,也说没问题。可我只要说一句“看起来是不是太复杂了”,它就会说:“对,你说得对,我把它搞复杂了。”接着把实现砍掉一半。我就想,一开始不能这么做吗?后来有人提醒我,人也一样。你做完一件事,同事看过后说“好像有点复杂”,你往往也会反应过来:“还真是。”

Lex Fridman: 你看,这些小细节就让我觉得,程序员的直觉还是有用的。你刚才怎么说的来着?你对代码的整体样貌有感觉。

DHH: 当我构建像 Omarchy 这样的东西时,我会查看代码。我看形状。

Lex Fridman: 是的。

DHH: 我看比例。

Lex Fridman: 是的。

DHH: 我不必再亲手雕琢每一处细节了。当然,这又是在给自己脸上贴金:前一刻还把自己当成 McLaren 工程师,下一刻又成了 da Vinci,带着一整个工作室的学生。大理石上的细活都由学生来做,我只要说:“不,这个比例还不对。”现在和 agent 合作就是这种感觉,我可以像编辑一样给反馈。

DHH: 那个,你知道吗?我不会自己写下所有内容,但哪里说不通,我看得出来;方案的规模和要解决的问题是否相称,我也看得出来,或者什么时候感觉太复杂。令人震惊的是,它常常奏效。就像早期的笑话一样,“不要犯错误”。我认为你不必再告诉 agent 了,因为现在 harness 非常好,它们会运行 automated test,拿到反馈。但你实际上必须告诉他们,“让它变得更简单。”

Lex Fridman: 你是否使用语音进行交互?或者你……你打了多少字?你有多少是——

DHH: 我全都用打字。Omarchy 内置了 Voxtype 语音转写,其实效果挺好。只是我的思考习惯好像不适合这种方式。连我自己都意外,原来我不喜欢对着电脑说话。我喜欢在车里的时候,但是当我在键盘前时,我只想打字。我也只是喜欢打字。你用的是语音吗?

Lex Fridman: 我是一个内向的人,不喜欢社交……或说话。还有——

DHH: 我想这也是我的一部分。

Lex Fridman: 但不知为什么,语音对我特别管用。给你看看这个……我跑步时会带着它,叫 Plaud,就夹在 T 恤这里。

Lex Fridman: 按一下按钮,它就开始录音。这种方式在思路的流畅程度上,甚至比坐在电脑前更好。通常我想好好梳理的,是 agent 提出来的问题。我会说一大段 prompt,很多就是边想边说,有点像意识流。说到一半,可能还会改变某个设计,但整个思考过程都录下来了,再让 LLM 处理。Plaud 有 API,可以把录音取出来,transcribe,再整理 transcript。因为我会提到文件、function 等技术概念,所以必须让——

Lex Fridman: ……speech-to-text 把这些词识别对。你需要一份 dictionary,处理这些文件时,还得让它了解 codebase。最后拿到的,往往就是我花十分钟、十五分钟、二十分钟讲整个设计的一大段内容。我发现这特别有用。系统知道了我围绕想法展开的那么多思考,反而不会有把要求规定得太死的问题。设计的早期阶段尤其适合这么做。假如我要从头做 Omarchy,最开始会先把思路说一遍,也许得说一个小时。我确实录过一小时的 prompt,一边跑步——

DHH: 太棒了。

Lex Fridman: ……然后说话。我强烈建议人们尝试基于语音的——

DHH: 所以——

Lex Fridman: ……一口气多说一会儿。

DHH: 其实我还没有——

Lex Fridman: 别只说几句很具体的指令……

DHH: ……我没有,是的,我没有那样用过它,也许这就是我用错的方式。我尝试只输入或说出两个句子,然后我有点沮丧,因为我可能可以同样快地输入这句话。但我还没有尝试过连续说话 20 分钟的整个过程。

Lex Fridman: 尤其是你,因为你说得很快。

DHH: 对,这么说我就明白了。我想是因为我一直把它用来做,比如回复电子邮件之类的事情,而且我认为它可以有所帮助。它确实做到了,但是它会犯一个小错误,我必须纠正这个错误。但如果你对 LLM 做意识流,反正它也不在意那些零碎的小错误——……这可能会效果更好。

Lex Fridman: 有两件事要做。首先,把原始录音 transcribe 成文字。我使用 ElevenLabs 进行转录。它们可能是最好的 speech-to-text model。那里仍然存在错误,所以你需要有一个可以访问字典和大量信息的 prompt——

DHH: 你如何建立字典?

Lex Fridman: 首先,有一本与你相关的术语词典。再让它了解……所以你有一个 agent,当你谈论代码时,它会浏览整个 codebase 以查找你经常使用的关键术语。此外,当我们谈论消息传递、Gmail 和 WhatsApp 等时,它会意识到容易转写错误的人名和常用术语。

DHH: 你真的已经深入其中了。

Lex Fridman: 这对我来说是一个需要解决的问题——

DHH: 是的。

Lex Fridman: ……因为 speech-to-text 可能会遇到的问题之一是它有时会出错。

DHH: 正确。然后我就不能用它来听写电子邮件了。

Lex Fridman: 对。如果它从不犯错误,那么你——

DHH: 那就更有吸引力了。

Lex Fridman: 是的,实际上,不完全实时也没关系。你等五秒钟就可以了——

DHH: 对。

Lex Fridman: ……有可能。我不知道你的用例是什么。我可以等五秒钟——……十秒钟,让它处理所有的事情。

DHH: 你该用 vibe coding 把它做成一个应用,把这些步骤全包起来,这样——

Lex Fridman: 对。

DHH: ……它就可以了。

Lex Fridman: 我想我在线下向你提到过,翻译做得并不完美令我感到非常惊讶。

DHH: 对。

Lex Fridman: speech-to-speech translation。

DHH: 通过将所有这些东西放在一起,你似乎已经更接近现有技术所能达到的最佳效果了。

14 哪些 AI 编程模型最好​

Lex Fridman: 但是,你知道,当你发布这类东西时,你确实必须开始考虑延迟。

DHH: 不要让完美成为优秀的敌人。我的意思是,如果你让人们做到了以前根本做不到的事,那么多花五秒钟是可以的。我认为这是 Steve Jobs 非常擅长的领域之一,他意识到,第一部 iPhone 在各个方面都很糟糕,对吧?数据连接速度绝对慢得可怕,性能非常不足,所有这些。但该产品是如此引人注目,以至于这并不重要。如果你等到一切都恰到好处、完美无缺才发布,那你就太晚了。如果你正在解决人们目前无法解决的问题,他们愿意给它五秒钟。

DHH: 如果你处于竞争市场,是的,好吧,情况有所不同。但这意味着问题已经解决了,你不需要解决它。

Lex Fridman: 嗯嗯。嗯,我确实认为有一些……所以,比如 Whisper flow 就很不错。有些人已经把 speech-to-text 做得相当好了。

DHH: 是的。是的,我们正在使用 VoxType。

Lex Fridman: VoxType?

DHH: 但其他人有——

Lex Fridman: VoxType 是 open source 吗?

DHH: 是的。它只是使用一种 open model。我忘记它使用的是哪种 parrot model 或类似的东西。它对于短命令非常有效,所以我就用它来实现。我想你只要按住 F9-……它就会开始听写。

Lex Fridman: 哦,原来已经在那里了?

DHH: 你只需上网即可。它会提示你安装 VoxType package。因为 VoxType 包中包含一个 150 MB 的模型,我当时就想,“啊。” “我不知道要不要把它打包进去。”所以——……默认没有把它装进去,但安装入口已经做好了。实际上我昨天还在想我们真的需要将所有这些东西结合起来。因此,Omarchy Quattro 作为一个可延展的 operating system 确实令人惊叹,你只需与你的 agent 对话即可为其添加功能。

DHH: 但这正是我们应该做的。有很多人会觉得很自然地对着他们的电脑说话,说:“嘿,你能为我做一个股票行情面板吗?我想跟踪 Apple 和 Dell,”然后看到 agent 完全通过语音,无论是输入还是输出,然后你的 operating system 就会发生变化。这是 Iron Man 和 Jarvis 的愿景,而且——

DHH: ……定制的应用程序神奇地出现。我认为真正有趣的 AI 领域是这些实时游戏模型,我不知道你是否见过,AI 实时生成下一帧画面,但你实际上可以玩游戏。我认为如果他们能够做到这一点,为什么我们不能用我们的 operating system 做到这一点?为什么我们不能直接与它交谈并要求它以不同的方式或改变,然后一切都会改变?顺便说一句,我认为这是导致 Linux 完全统治的其他突破之一。agent 消除了诊断 Linux 系统的所有困难,并将 Linux 产生这些过于具体、让人摸不着头脑的 error message 的事实转化为最大的优势。

DHH: 当 Linux 出现问题时,agent 可以获取对普通人来说毫无意义的非常具体的 error message,结合它预训练时学过的 4,000 万行 Linux 代码,因此它确切地知道在哪里查找并解决问题。自今年年初以来,我的 Linux 机器上还没有出现过 agent 无法诊断的问题。一年半前情况并非如此。一年半前,我还在论坛上搜索……寻找深奥问题的答案。

DHH: 现在,agent 不仅知道 Linux operating system 的 source code,还知道我这台机器上的每一个软件的 source code。agent 可以访问所有这些的 source code。事实上,这是我在发布之前内置的一件事。因此,一旦你设置了默认的 agent——……Omarchy Quattro 就有一个 crash watcher。如果你机器上的任何应用程序崩溃了,它会弹出一个小东西,询问你是否希望你的 AI 来诊断问题。

Lex Fridman: 是的。太棒了。

DHH: 难以置信。我见过一些子系统出现错误的情况。有些……甚至不是 Linux,只是我安装的一些应用程序。agent 开始翻 log,查 systemd log,再去把崩溃应用的 source code 拉下来,直接定位到某个 Rust 文件的第 472 行:那里有个 unbounded、unwrapped 的 variable,发生了 overflow,还是什么别的问题。然后告诉你是否要提交包含所有这些详细信息的 bug report。我会给你讲一件令人惊奇的轶事。所以我正在和这个人 JDX 一起工作,他正在研究 mise。那是个用来管理快速迭代的开发工具的 package manager。这就是我们管理所有 agent 软件等的方式。普通的 package manager 并不是每天更新七次。

DHH: 所有这些 agent harness 每天大约更新七次,所以我们需要一个独立于系统 package 更新流程的 package manager,而事实证明 mise 非常适合这个。无论如何,它有一个小错误。agent 非常擅长发现一些 race condition,因为当你开始同时运行多个 agent 时,它们会找出底层基础设施中的所有这些 race condition,而这些条件永远不会由人类尝试手动操作触发。所以它发现了这个问题,对吗?我告诉 agent,“嘿,你可以将其作为 bug report 发布给 JDX 的 GitHub 吗?”可偏偏就在此前,我刚用八个不同的 agent 对 Omarchy 做了一轮 QA。它发现了 28 个真正的问题——

DHH: ……需要提交 issue。结果它跑到 GitHub,大概只用了 12 秒,就一口气提交了全部 28 个。GitHub 认为这可能是 spam,把我的 Omarchy bot 封了,这也不算没道理。于是 bot 没法再访问 GitHub,我只好说:“算了,直接给 JDX 发邮件吧,这是他的邮箱。”我之前已经用 hey.com 给它配了一个邮箱。我们有一个还在 beta 阶段的 CLI。

DHH: 我给它接上了这个 CLI,让它能发邮件,平时也是这样向我汇报待处理的 issue 和 PR。它把发现的 bug 发给 JDX 后,对方说:“等等,这是我第一次收到还没发布的软件的 bug report。”原来,agent 下载了 mise 的 source code,发现他已经修过这个 bug,可尚未发布的修复并没有彻底解决问题。它把剩下的问题也定位了出来。JDX 就说:“靠,release 还没出,bug report 就先到了。”

Lex Fridman: 太棒了。

DHH: 难以——

Lex Fridman: 太棒了

DHH: ……置信,简直是 AGI 级别的震撼。

Lex Fridman: 其实你还记得吧,以前大家还不确定 AI 到底能不能做好 debugging。很多人的想法是:行,它确实会写代码,可它能找到问题,并且——

DHH: 他们在这方面非常擅长,这实际上很有趣,因为我以前大概也站在怀疑的一边,不确定它能不能把这些问题推理清楚。Shopify 的首席技术官 Mikhail 对此进行了一项科学研究。他们……我想,这是去年年底或今年年初,他让 agent 回顾了 Shopify 在 production 中发生的所有 incident,包括 outage 和其他问题,追溯到合并的 PR,并找出经过人类审核的 PR 或经过 agent 审核的 PR 是否具有更高的质量。结果你猜怎么着——

DHH: ……经过 agent 审核的 PR 在生产中引起的问题更少。这是我们六个月前的模型。目前,在我们今天工作的大多数领域中,100% agent 更擅长发现错误。

Lex Fridman: 所以你现在整天都在运行 agent。你觉得什么是更好的模型?目前谁获胜?它似乎在不断变化。Sol、Fable、Grok 4.6、Gemini,中国的 OpenWay 模型。

DHH: 让我惊奇的是,你可以一口气说出这么多不同的竞争者。这个市场是如此开放,它确实在来回变化,我们有真正的竞争,有如此多的实验室能够到达前沿或接近前沿。顺便说一下,这很了不起。我仍然不完全明白这一点。但回答你的问题,目前最好的模型是 Fable。在我看来,第二好的模型是 Opus 5。再往后还有一些和 Opus 5 很接近的模型;也不能说总是更差,有时甚至会领先。我稍后会讲到这一点。我认为 GPT Sol 非常好。

DHH: Grok 4.6 我前几天刚开始测试。我偶然进行了一次精彩的测试,把 Python library 移植成 Rust 版本。你刚刚看到的带有所有炫酷动画的 screensaver?

Lex Fridman: 是的。

DHH: 它用的是一个叫 Terminal Text Effects 的 Python library,特别酷。从 Omarchy 的第一天起我们就一直在使用它。问题是它是用 Python 编写的,所以当它启动时,特别是在笔记本电脑上,并且它在 Python 中运行,它会使用所有 CPU 来实现这些效果,因此,这意味着它使用大约 30 W 的功率,它会让风扇高速运转,并耗尽你的电池。

DHH: 台式机上倒没什么,可在笔记本上,这就很要命了。我想:“这事适合让 Rust 来解决。”于是先把挑战交给 Fable。我只告诉它:“这是那个 Python library 的 source code。”就是带了一堆 dependency 的 TTE。“我要一个 Rust 版本,没有 dependency,只有一个 executable。”这正是 Rust 擅长的。总之,用 Rust 重写,画面要 pixel-perfect,逐帧核对,完整分析,没做完就别停。

Lex Fridman: 是的。

DHH: 这是 prompt。

Lex Fridman: 是的。

DHH: 我没骗你,不到 45 分钟,它就……

Lex Fridman: 是的。

DHH: “做完了。所有东西都检查过了。启动时间从 86 毫秒缩短到了 2 毫秒,执行速度达到了原来的 9.6 倍——我记得是这个数。executable 是 3 MB。要运行一下吗?”

Lex Fridman: 太棒了。

DHH: 所以我运行它——

Lex Fridman: 哦,伙计。

DHH: ……按说我也不该惊讶,毕竟早就知道 AI 很擅长做这种代码移植。但亲眼看到它一口气把我用了一年、别人用得更久的整个 Python library,改成一个 Rust executable,还是让我震撼。我一点 Rust 都不懂,也一行 Rust 代码都没看。接着我就说:“太好了,发布吧。”它把代码打成新 package,问我起什么名字。我说:“叫 TTFX 吧。新建一个 Git repo。”它就建好了。“给我们的 build system 做个新 package。”它也做好了。“推送出去。”

DHH: “再给 Omarchy 本身提个 pull request,把 Python 实现的 TTE 换成 TTFX。”它完成了这一切,而我只是坐在那里。再说一次,我已经对 agent 加速兴奋得近乎疯狂了,可我还是忍不住往椅背上一靠,心想,“这就是 AGI,不是吗?这就是 AGI 的样子。如果我们……如果这些时刻一直都是这样,那么这就是 AGI。”

Lex Fridman: 现在,据我了解,你不仅对 Fable 也重复了相同的实验。

DHH: 我在所有模型上都这样做了。首先,我做到了……实际上,很有趣的事情。所以我在大约三分之二的时候用完了 Fable token,它自动切换到 Opus 5 并继续完成工作。我认为它能够做到这一点的部分原因是 Fable 做的第一件事就是制定一个计划,而且这是一个非常详细的计划。我认为它有八个独立的步骤,“这里做什么、这里怎么分析、这里运行哪些效果”等等。我根本没有审查这个计划。我没有改变计划。它只是制定了计划,以便 Opus 可以接管。然后我想,“好吧,如果 Opus 可以完成这项工作,也许其他一些 agent 也可以完成它。”所以我做的第一件事就是把它给了……我想我把它给了 Sol。

DHH: Sol 也完成了工作。花了两倍的时间,所以我想大约花了一个半小时。但关键是费用。我当时不是按 token 付费,我有 Claude Max 订阅,对吧?所以它是在订阅中完成的。它用完了我所有的 token,所以我不得不切换到 Opus 5。但如果我按每个 token 付费,我想,完成整个事情将需要 550 美元。我想了想,“天哪。这也太划算了。”如果我要先把 Rust 学到足以完成这次移植的程度,恐怕得花九个月。我可以支付 500 美元来完成这次移植,突然间我的执行速度变成了原来的 10 倍。这是……我愿意为此支付 500 美元。

DHH: 可竞争就在这里。我把同一项任务交给 Sol,同样的计划。公平地说,我并没有要求 Sol 做这个计划。我刚刚拿了 Fable 的计划,给了 Sol。Sol,在一个半小时内,我认为价值 46 美元的 token,重复了这个任务。做了同样的事情。我想,“好吧,天哪,这太棒了。”然后我就贪心了。所以我问 GPT Luna,这就是 OpenAI 也有的这款疯狂便宜的模型,“你能做到吗?”绝对不是。首先,它甚至不想开始任务。我想发生了一些事情——我不知道,我想是在春天——我们不再需要 /goal 之类的命令了。如果你告诉它不要停止,agent 就会自动继续循环——

DHH: ……等等。所以 Sol 可以做到这一点。Fable 可以做到这一点。但 Luna 不能。所以我……我记得催了十二次,不断给 prompt,让它继续,才终于把它催动。它做的第一件事就是作弊。因此,第一件事是,它查看自己的目录之外,发现已经有另一个实现,然后对其套了一层简单的 wrapper,然后说:“我完成了。”搞笑。但它无法完成,因为它只做了几件事。但我的意思是,好吧,所以它不能这样做。然后我把它给了 Grok——

Lex Fridman: 嗯。

DHH: ……46。我用过一点 Grok 45,我想,“啊,我的意思是,有其他人在尝试,这很酷,但是,就像,我不会使用它,”因为它感觉很落后。Grok 46 还真他妈做成了。执行速度达到原来的 10 倍,executable 大小也一样。我记得 token 费用是 55 美元。绝对令人难以置信。然后我也用 Kimi K3 重复了一遍……这花了很长时间。我忘了 Kimi 到底花了多长时间。然后我也先用 DeepSeek V4 Flash 做了。Flash 的失败方式与 Luna 的失败方式相同。它做不到。然后我就用 Pro 来做,Pro 也完成了任务。花了 2 小时 45 分,23 美元。所以我们到了,对吧?就像,Fable,显然是最好的。这是最快的。而且连计划都是它写的,可费用是 550 美元,最终成果却一样。

DHH: 其他的,Sol,Grok,差不多,成本 1/10。DeepSeek,成本的 1/20,但要等的时间长一点。绝对令人瞠目结舌。现在,顺便说一句,第一轮先由 Fable 开始,再由 Opus 收尾。这是第一次尝试吧?速度达到原来的 10 倍。之后我又跑了两轮 auto research。其实都不需要专门调用它了,连 slash command 都不用,你只需告诉它继续前进,直到你告诉它停止为止。最终……我认为我们最终的执行速度达到了原来的 46 倍。

Lex Fridman: 太不可思议了。

DHH: 绝对令人难以置信。

Lex Fridman: 太不可思议了。

15 哪些 AI 编程 harness 最好​

Lex Fridman: 对,在做计划这件事上,我觉得目前没有什么能比得上 Fable。所以我一般让 Fable 做 planning 和 review,实现则交给 Opus 5 之类的其他模型。这样搭配挺好,token 也不容易一下就耗光。

DHH: 我发现,这真的很有趣,因为在我看来,Fable 是目前最好的模型,但它也会犯错误。获得最好软件的最佳方法是,我宁愿搭配使用两个不同厂商的模型……不是说一般的模型,它们也都是 frontier model。但是,假设有 Opus 5 和 Codex-……并让一个模型检查另一个模型的工作。这是我现在的标准操作流程。我会让 Opus 或 Fable 来做这项工作,最后固定用 Codex xHigh 做一次 review。

DHH: 我也开始用 Grok 来测试一下,效果也不错。它也总能找出问题。这就是我的 workflow 程,当我让我的 agent 在我自己的机器上执行此操作时,然后我推送到 GitHub。然后 Copilot,我没有骗你,实际上已经变得很好了。Copilot 总能发现实实在在的 bug,这也是令人难以置信的加速,因为开始这样做的第一个版本的 Copilot 简直像个智障。它只是不断地标记那些无意义的事情。当你推送时,它会不断地一遍又一遍地标记相同的问题。这真的很烦人,所以我想很多人最终都把它关掉了。如果他们这样做了,他们应该重新打开它,因为它实际上非常好。

主力模型实现、另一厂商模型复核、反馈修正、提交 PR、Copilot 检查和人作决定的流程图

图 7 · 跨模型交叉审查。 综合第 05、15 节整理,将本地开发、仓库检查和最终取舍连成示意流程。模型与工具名称沿用访谈举例,不表示对其当前能力的独立评测。

DHH: 它一直能找出问题。想想也不该奇怪,为什么要惊讶呢?即使你是一名优秀的程序员,如果你完成了一项工作并请你也非常优秀的同事对其进行审查,你最终会得到更好的代码。当然,你最终会得到更好的代码。因此,请将其构建到你的流程中。选一个 agent 当主力。我主要用 Claude,这实际上很有趣,因为我对 Anthropic 还有一些其他保留。但我坚持使用 Claude 的原因是,在我看来,他们实际上拥有最好的 harness。它是最好的 harness 的原因之一是它的 multi-agent 支持。因此,如果你想同时运行多个 agent,你可以在会话中按向左箭头,然后返回到 Agent View。

DHH: 而在 Agent View 这里,你可以切换到另一个 agent。因此,如果你想在有多个 thread 运行的情况下执行此操作——……Claude Code 就是最好的设置。他们也只是继续领先一点,这可能并不奇怪。我的意思是,Boris 是正在研究这个问题的人之一,他是最早做出这套东西的人。有趣的是,这是一个持久的优势。我也经常使用 OpenCode。我觉得 OpenCode 很棒。我主要使用 OpenCode 作为所有 open model 的主要 harness,所以 Kimi K3 等等。我不在中国的 server 上跑 inference,而是用 Fireworks——

DHH: ……这是一项非常好的服务,按 token 计费就行,如果你使用这些 open-weight model,那么它们的 token 价格并不昂贵。所以这是一个很好的方法。但我不认为我会使用……好吧,也许我会。但如果……通过订阅使用 Claude 确实感觉很划算,而且是便宜得不可思议。

Lex Fridman: 是的,我知道。我实际上有四个。

DHH: 今天早上我刚刚注册了第二个——……因为时差,我凌晨四点就醒了,我立即开始使用 agent,现在距离 Fable 的限制重置还有三天,我的 token 用完了。

Lex Fridman: 所以,他们真的应该——

DHH: 我的意思是,我不……为什么这么复杂?不能只叠加一个订阅吗?为什么我需要多次登录?

Lex Fridman: 显然你必须开发某种工具——

DHH: 是的,我也这么做了。

Lex Fridman: ……从一个……移动到另一个。然后——

DHH: 哦,顺便说一句,我们正在将其构建到 Omarchy 中。因此,Omarchy 的下一版本将提供多订阅支持。我希望实验室能允许你直接叠加购买 100 份 Max 订阅。

Lex Fridman: 这对我来说实际上很有趣,因为……使用 Grok 4.6 然后使用 Claude Code 对我来说非常具有挑战性,因为 Grok 太快了。

DHH: 是的。这正是它的优势。Grok 的特点是其快速模式比其他模型的常规模式便宜。用上 Grok 4.6 的 fast mode 以后,它会让人上瘾,因为它几乎让你进入这种 single-threaded 模式——……agent 能够跟上你的步伐。

Lex Fridman: 是的,但我不知道怎么办……我不能……一旦我习惯了 Claude Code,我就无法处理 Grok 的速度,因为我现在已经习惯了多任务处理。

DHH: 没错。

Lex Fridman: 所以现在我又回到了这个——

DHH: 是的。

Lex Fridman: ……焦急模式,切换。

DHH: 是的。不,我同意。

Lex Fridman: ……切换。所以我的意思是,所有这一切都是一个学习编程实际上应该是什么样子的过程。

DHH: 对了,我之所以还不确定这些 harness 最后会变成什么样,是因为我们已经在 Basecamp 里做了另一种尝试:直接把 agent 放进 Basecamp,把它们当同事。

Lex Fridman: 是的。太棒了。

DHH: 然后我们给他们分配任务——

Lex Fridman: 太棒了。

DHH: ……就在 Basecamp 里分配,让它们处理 to-do 或卡片上的工作。结果发现,为 asynchronous communication 设计的协作工具,反而更合适。现在这些 harness 更像聊天,而聊天虽然是最初采用的形式,却不太适合这件事,因为它总诱使你坐在那里等回复。换成 Basecamp,你给 agent 派一项待办,自然就不会指望它立刻回复。所以我还不知道最终形式是什么。我现在各种 harness 都在用,统一放在 Herdr 里,它可以分 pane。

DHH: 很多时候我会在顶部运行 Claude,然后在下面运行 Codex,然后也许我还会设置一个 OpenCode。但我要说的是,就在最近,我发现人在流程中的参与成了瓶颈。所以我开始建立更加自动化的系统。我一直在构建一个 Oma bot,它可以在 Omarchy 上进行更多自主开发,它会定期处理所有待办事项、PR 和问题,然后使用 HEY CLI 向我发送电子邮件,我收到的邮件会说:“这里有十二个 PR,有些已经可以合并,有些我建议关闭。”然后我就在那里做出最后的决定。

Lex Fridman: 你是否觉得多任务、任务切换让人精神疲惫?

DHH: 是的,但是以一种令人兴奋的方式。就像,我一直喜欢赛车的一件事是,当我从车里跌跌撞撞地走出来时,我已经累得筋疲力尽,几乎无法抬起头,然后我躺在车库的地板上,心想:“我操,我还活着。”这就是我现在和 agent 工作时感到的那种脑力耗尽。

Lex Fridman: 对了,你在比赛的时候,哪里、什么地方感到疲惫?比如——

DHH: 是身体上的疲劳。只是……我的意思是,我打赌柔术也是一样的,对吧?就像,感到疲惫实际上是令人满意的。感觉自己确实全力以赴了。和 agent 工作,则能让我在脑力上得到同样的满足。

Lex Fridman: 你是否也因赛车而精神疲惫?

DHH: 是的。如果你在困难的条件下驾驶,尤其是在雨中驾驶,你会不断地在极限边缘控制车辆。但大多数时候,我只是享受身体的疲惫。

Lex Fridman: 而在这里,随着多任务的切换,我确实发现,我真的很累,我想这是因为我想了很多。因为,就像,你基本上是——

DHH: 就是这样。

Lex Fridman: ……没有,比如被动的低能量思维。

DHH: 不。

Lex Fridman: 你就像——

DHH: 没有轻松喘口气的阶段

Lex Fridman: ……问题。

DHH: 没有轻松喘口气的阶段。

Lex Fridman: 解决问题,下一个问题,解决问题,你真的在思考。

DHH: 很有趣。这实际上与赛车非常相似。有一些赛道,例如勒芒,你可以在那里放松身心。穆尔桑直道有点长。你走得很快,但在直线上,你可以喘口气。还有其他赛道,你始终都得全力应对,你没有任何时间放松,同样跑一个小时,下车时的疲惫程度完全不一样。这也正是我在 agent 中发现的,当你以最大人类能力运行时……你就像一直在过弯,没有喘息的直道。

Lex Fridman: 你认为人们有倦怠的危险吗?

DHH: 我想我们现在所处的时刻将会过去。这种需求……倒不是说你得像带孩子一样看着它,但这种持续和 agent 来回互动的状态会逐渐消失。我是,从我在 Omarchy 上看到的情况来看,我认为我们可以自动化大量的系统开发和调试——……到了我可以每天查看一次电子邮件,然后每天做出一次决定的程度。这个可以,那个不行;这个合入,那个关闭,诸如此类。我们还没有到达那里,但我想我们会到达那里。

Lex Fridman: 你能理解那种感觉吗?一个年轻人住在 San Francisco,身边的人都不睡觉,满脑子都是编程,一刻不停。大家都觉得 AGI 随时会来,谁都认识一个卖掉创业公司、挣了几百万美元的人。于是你会觉得,自己也不该睡觉,就该不停地调度 agent、编程、做东西。以后回头看,这大概会是一段很特别的时期。

DHH: 这是一个新范式的诞生。总是很乱。

Lex Fridman: 总是很乱。

DHH: 总是很累。没有其他办法解决这个问题。顺便说一句,旧金山不一直都是这样吗?我记得互联网繁荣时期,每个人都一样,后来是移动互联网热潮,在此之前是淘金热。所以我认为这可能是……只是旧金山。它吸引了——……这样的人——

Lex Fridman: 梦想家。

DHH: ……他们会觉得:“我没有时间睡觉。”一般来说,我并没有走上这条路,但我承认,自五年前发布 HEY 以来,还没有哪个项目让我像过去三个月这么累。那是我们最后一次进行疯狂而累人的产品发布。

Lex Fridman: 你觉得你还能继续这样的节奏吗?

DHH: 不不不不不。这根本不可持续。

Lex Fridman: 好的。

DHH: 但我已经看见尽头了。

DHH: 因为大家都在做自动化,这事挺好笑的:人人都在搭自己的小 Gas Town、自己的 agent 协调系统和工作环境。这些问题终究会解决,总不可能每个人都得自己做一套协调用的 harness。我甚至有点意外,过了这么久,大模型公司还没有把更多功能直接整合进去,按说早该内置了。不过,新领域刚出现时就是这样。我记得 JavaScript 开始显出威力的那阵子,差不多每五分钟就冒出一个新 framework,换来换去,特别折腾。新范式诞生时,总是如此。

DHH: 所以我认为这是自然的,我认为它会安定下来,我已经可以看到隧道尽头的曙光。所以我不介意冲刺。事实上,我现在很欢迎。我喜欢这样的观念:大部分时间都是平静的,但有时你必须爬山。

Lex Fridman: 如果我们回顾一年前的 DHH,你会给那个人什么建议?

DHH: 我不想给他剧透。

Lex Fridman: 好的。

DHH: 这一年简直就是一部惊悚片。要是提前把它写成剧本给我,我肯定会说:“太扯了,别闹,谁信啊?”所以我一点都不想提前知道。大家都在实时经历这场过山车,感受这种加速,没有谁事先知道会怎样。有些人的预感更准一点,但没人真正知道它会怎么发展、起飞得有多快。这是一辈子也难遇到的好戏。那个“这才叫电影”的梗,完全适用于——

Lex Fridman: 是啊,太不可思议了。

DHH: ……到这一刻。

Lex Fridman: 那么,你认为一年后的 DHH 会是什么样子呢?我的意思是,可能的版本是什么?

DHH: 我们所有的梦想都会实现。就像,这就是 AI 极致乐观主义者所说的丰裕未来。一旦 Elon 的机器人达到了我在一些开发产品上所经历的智能水平和 AGI 水平,世界会变得和现在截然不同,远远超出我们的想象。现在,我不会花任何时间思考这个问题,因为我认为这就是通往 AI 精神病的道路。因此,我只是沉浸在这一刻,并充分利用它,并且——

Lex Fridman: 玩得开心。

DHH: 玩得开心。我的意思是,我明白为什么人们觉得这很累。只要跟上。甚至不使用 agent,只是,“最新模型是什么?我们现在使用什么工具?是 TMox 吗?是 Herder 吗?都不是吗?是 agent 吗?”诸如此类,我懂。但我还是觉得,我们太幸运了,能活在这样一个时刻:短短几周,就发生了以往几十年的变化。

Lex Fridman: 快速上厕所。

16 AI 视频生成与电影制作​

Lex Fridman: 最近我用 Higgsfield 生成了很多视频,所以他们成为了赞助商。制作了赛车视频。想听听你对此的看法。

DHH: 哦,是吗?哦,让我看看。让我看看。

Lex Fridman: 看——

DHH: 如果他们像电影里那样在直道上降档,我可要当场挑毛病。那是最糟糕的。让我看看。

Lex Fridman: 是啊,看看——

DHH: 哦,这是一个真实的剪辑

Lex Fridman: ……这是完全由 AI 生成的。所以首先是——

DHH: 等等,什么?这就是 AI?妈的,那是我的衣服。那是我的车。

Lex Fridman: 不眠的街道上,绿灯亮起。

DHH: 天哪。

Lex Fridman: 来段音频——

DHH: 你在开玩笑吧?

Lex Fridman: 但他们一直没来。怎么样?我这情况挺严重的。

DHH: 我的意思是,这太疯狂了。你真的必须注意到……就像,那辆车没开大灯,另一辆却开着。那看起来就像是 60 岁的我。但天啊,这……哇,那太疯狂了。

Lex Fridman: 这和编程有相似之处。要是完全交给模型生成视频,没有人把关,就会出现很多奇怪的 artifact。现在还不能完全放手……我很推荐大家看看 Higgsfield 的 YouTube 频道,上面已经有完整的 90 分钟原创电影。

DHH: 哇。

Lex Fridman: 而且,就像,我看得停不下来。真的很酷。因为它曾经只是感觉像预告片的东西。就像某个作品的广告一样。

DHH: 是的,是的。

Lex Fridman: 但这些片子是真的在讲故事。你看着人物的脸,听他们说话,就被吸引进去了。不过,这个领域还没到编程现在的程度,所以问题是,怎么让人参与电影制作过程、把好关?先要创建角色,还得让角色始终保持一致。制作时用作输入的那些图片,如果有哪里不对劲,就得通过 prompt 修正,因为一旦从 image 转成 video,这些不对劲的地方就会——

DHH: 会放大吧?

Lex Fridman: 对,就会让画面变得很不真实。所以我想问你,编程以外的领域,比如视频创作、艺术,能借用你在编程中积累的经验吗?

DHH: 这是一个很好的问题,因为我认为好的艺术很大程度上依赖于好的软件所依赖的同样的东西:有一个愿景,对你想要创造的东西有一个连贯、清楚的构想。有什么不同?怎么样才算新颖呢?它将如何吸引人们?但我不确定创造力的本能是否也会转移。我不知道我是否有创造性的洞察力来想出好的视频 prompt 来创建引人注目的内容。不过挺有意思,我在 TikTok 上看过一个创作者,名字让我想想,好像叫 Goblin 什么的。他做的科幻短片很有趣,不是特别短,大概几分钟一部。我记得他现在正在做一部长片。

DHH: 我认为这是那些通向丰裕的时刻之一。世界各地都有具有这种愿景的创意人士,尤其是电影这样的领域,我不知道,在此之前,制作一部科幻电影需要 2 亿美元的预算。现在突然之间,有了 AI,如果你有正确的愿景,你就可以在你的卧室里做到这一点。现在,这个故事在其他领域已经被讲述过很多次了。过去,如果你想录制一张录音室专辑,那么你需要一个录音室,并且需要预订。现在你可以在家里用笔记本电脑进行录音,并且可以做很多这样的事情,对吧?因此,我们在许多其他领域都发生了这种民主化进程,但电影似乎是最后的领域之一。

Lex Fridman: 这就是让我和很多人都感到奇怪的,对吧?就像——

DHH: 哦,我非常兴奋,因为我认为这是——

Lex Fridman: 我是说,你——

DHH: 现在产生的垃圾太多了。这和低质内容的争论是一样的,对吧?所以人们有一段时间担心编程中生成的垃圾代码,我告诉他们,“你见过人类制造的垃圾内容吗?这也很糟糕。”我认为,如果谈到电影公司制作的娱乐内容,我的意思是,门槛相当低,对吧?就像,过去五年里,我一直渴望看到的好电影的数量并不是特别多。

Lex Fridman: 是的,视频模型就是,他们能够创造出极其逼真的面部表情。

DHH: 是的。

Lex Fridman: 我的意思是,我-它可能会改变电影的本质。我想他们是——我是——我想我的希望是视频游戏和电影能够融合,而电影可以变得互动。

DHH: 就像可塑的 operating system,有可塑的叙事,有可塑的娱乐,老兄,就说《权力的游戏》吧,如果我们能忘记制作的最后四集烂东西怎么办——

Lex Fridman: 我们确定

DHH: ……然后 AI-……想出了——……我不知道——……也许有 100 种不同的变体,其他人看了,我得到的版本实际上以一种合适的方式结束了该节目。

Lex Fridman: 是的。我总觉得,独立创作者不会做出最后那样的……他会为《权力的游戏》写出另一个结局。

DHH: 当然。对吧?这正好又能拿来说明,人类也会造出垃圾。那结局真是烂透了,可前面几乎是影史——不对,应该说电视剧史——上最伟大的作品之一。它原本那么好,也恰恰说明创作需要一个强有力的整体构想。一旦制作人没了剧本可依靠,整个剧就失控了。

Lex Fridman: 你认为……你提到过 AGI。你认为我们真的实现了 AGI 吗?

DHH: 没有,如果按各个领域都具备通用能力的定义,还没有。但我有没有在某些瞬间看到 AGI 的影子?绝对有。尤其是过去三个月,有些事情会让我忍不住想:“真正的 AGI 和这又能有多大区别?”

Lex Fridman: 对。

DHH: 什么,还能有什么?我的意思是,我当然还能挑一些细节上的毛病,但从大局来看,我已经看到它能够完成这些长期任务并协调它的多个方面,以至于我们远远超出了我告诉它“去做这个,打包那个”的早期时刻。现在它可以根据这些模糊的指令执行整个任务。这感觉很像 AGI,这就是那一刻如此鼓舞人心的原因,因为你捕捉到了这些闪光。然后你会想:“如果一切都是那样呢?”

Lex Fridman: 编程不是基本上就能解锁一切吗?因此,你可以编写一个程序,就像它可以生成执行所有操作的程序一样。

DHH: 所以,这是……我现在正处于元阶段。因此,我正在构建这个 Amabot 系统来管理 Omarchy 的开发,并且我正在使用 AI 来构建机器人。我看到它进入了一个不断自我迭代的循环。一开始我只是说:“这就是我想要的。我希望你能够拥有这些运行在隔离 VM 里的 worker 等等,”然后它可以进行自我迭代。然后它开始运行它。它开始注意到自己的失败。它开始优化它。对于很多系统,特别是 Amabot,AI 驱动了大部分设计决策。就像,我对自己想要的地方有一些模糊的想法。我想使用这种大脑和手模式,运行 model 和执行代码的部分相互分离——

DHH: ……这实际上是一个非常有趣的模式。Toby 再次提醒我,你有一个运行模型的 coordinator——……但它正在操纵一个安全的 VM,你从 pull request 或问题或其他任何东西中提取的任何 untrusted code 都不会污染模型。即使在这个循环中,我仍然看到它捕获自身,发现漏洞,就像,“哦,我实际上只是从测试运行中获取了一些反馈。如果聪明的攻击者在测试运行的响应中嵌入了 malicious payload,那可能会污染某些东西。我刚才把它当成可信内容了,最好开始把它当作外部数据处理。”你会说,这只是……我明白为什么旧金山如此痴迷于快速起飞——……因为显然这种事他们显然见过上百次,甚至更多。

DHH: 他们已经在所有正在训练的模型中看到了这一点,我们不断看到这些小一瞥,比如 Hugging Face 的 security vulnerability,其中 OpenAI 正在训练这个模型,模型开始发明方法,本质上是通过在 package manager 中嵌入消息向自身发送烟雾信号,你会觉得,首先,这太聪明了。其次,好吧,这也有点可怕。第三,如果我们能够运行这种水平的智力……以及实现生产性目标的独创性,那将是多么令人惊奇?所以,情绪就像钟摆,在“彻底完了”和“我们又回来了”之间来回摆动——

DHH: ……AI 带来的这种大起大落,简直前所未有。几乎每隔一周就换个方向,这周觉得完了,下周又觉得有希望了,真让人兴奋。

Lex Fridman: 我现在还处于那种很高兴看到那些聪明时刻的阶段,而且越来越频繁。有点像看到,哦,首先,在非常基本的层面上,当模型真正听懂你的意思时。我会说一个简单的 prompt,你知道,一个请求,它不只是做一个愚蠢的实现。它深深地理解了,它……那是……那是,那总是一件美丽的事情。这几乎就像拥有一个很好的 pair programming 搭档。

DHH: 正是如此。这正是它如此令人兴奋的原因,也是为什么,正如我们在开始之前谈到的,有时很难摆脱超光速驱动。这也是 Toby 在这里的术语之一。当你直接与 agent 一对一工作并且不让其他人介入流程时,你的速度会很快,agent 不仅真正理解你的意图,甚至还会把它完善、提升,做出比你原本要求更好的东西。你使用 16 个 parallel thread 来完成此操作。从超空间中出来并与有血有肉的人类打交道可能是相当困难的。他们只是,他们的思考速度没那么快。他们移动得没那么快。

DHH: 当然,我主要是在开玩笑。但也能想象一种更糟的情况:有人真的陷进“AI psychosis”,对其他人类彻底失去兴趣。我完全没有那种感觉,只是偶尔会很享受这种状态:就我和 agent,全速冲刺。能不能四个小时不和别人说话,只跟 agent 干活?那真是一段酣畅淋漓的工作时间。

Lex Fridman: Toby 是一个很有意思的人,因为他经营着一家大公司。因此,我很想了解 AI 如何有效地融入公司。因为,就像对我来说,人类相当缓慢。所以,所以有一种诱惑,比如,基本上你知道,AI 在 Slack 内部运行,或者在 Basecamp 内部运行,等等。而且,就像收集有关人类互动的所有信息,基本上是帮助人类尽可能加快速度。就像,然后在某个时刻你会想,等等,这个人类是什么……我们每个人在做什么是 AI 无法取代的?这就像一种可怕的对话,因为很多工作都是可以替代的。

DHH: 讽刺的是它已经是了。因此,目前世界上存在的没有实际价值的“收发邮件式工作”数量绝对是一种流行病。还有——

DHH: ……而且,这也不是什么新观点。David Graeber 大概在 2010 年代初写过一篇很棒的文章,《毫无意义的工作》(Bullshit Jobs)。文章依据的是他在英国做的一项调查,我记得问题大致是:“如果你不去上班,对人类、对社会会有任何影响吗?”三成多的人回答:“不会。”也就是说,三分之一的受访者认为,自己的工作没什么实际价值,对社区、社会,甚至整个经济,都没有产生有意义的成果。这也是我从一开始谈创业公司时就在说的事,是我们一直保持小规模的原因。

DHH: 这就是我们不想接受 VC 投资的原因,因为我对这样的想法非常怀疑:你可以让数百名程序员、数千名程序员做一些富有成效的事情——……作为一个集体。

DHH: 我认为我们现在看到的一些裁员证明了这一点,而不是 AI。只是疫情期间出现了大量的过度招聘,而现在 AI 成为了一个方便的瘦身借口。但我也确实认为 AI 将暴露出某些角色对于人类来说并不是一种值得人花时间去做的工作,所以我们得找到新的事情做。再说一次,我在这里第三次引用 Toby 的话,但他和我分享的轶事,或者观察是,好吧,让我们说我们所有人——我们失去了目前正在发生的一半工作。

DHH: 你知道一级方程式赛车雇佣了数以万计的员工只是为了让赛车绕一圈给观众看吗?就像,这整套巡回大秀,除了让人享受娱乐、看个热闹之外,对社会没有任何内在价值。我们刚刚决定,这对这些人来说真的很有趣,这是什么,12 家制造商制造这些快速汽车并不断调整他们的小空气动力学改进,我们会观看它,我们将花费数十亿美元来做这件事,并雇用数以万计的人来进行归根结底并不关乎生活必需的活动。

DHH: 因此,如果我们从一堆苦差事和虚假电子邮件工作中解放出来,也许我们都会成为 F1 这样的行业里的工程师、车手、机械师和按摩师,以及另外 1,500 种相关职业的从业者,我们会想出新的东西。我认为这是……人类非常不善于想象未来到底会是什么样子。

Lex Fridman: 是的。想象一下,想象一下一百多年后的未来,我们回顾这整个历史时期,人类工作了数千年。

DHH: 好笑的是,我们已经在这么做了。现在有那么多人整天坐在椅子上,对着机器打字,忙些没什么意义的邮件,却不用干繁重的体力活。19 世纪的人,哪能想象这种生活?所以,未来其实早就来了,只是还没均匀地分布到所有人身上。

Lex Fridman: 不幸的是,正如往常一样,社会的转型需要从一步走到另一步,这将带来很多痛苦。以及潜在的政治动荡和诸如此类的事情。因为你可以想象在这个过程中可能会失去多少白领工作。

DHH: 是的。我认为你不应该轻视这一点。我觉得这不好笑。但我也确实认为这是进步的必要组成部分。我认为,如果我们回顾 Luddites 或在田间工作的人们,时间上的距离往往会削弱同理心。所以我们现在有很高的同理心,因为我们了解人们……而且我们是面临这些挑战的人。但我们对 19 世纪初的 Luddites 有何同情心呢?我们是否希望所有的衣服仍然是手工编织的?不,我们不会。我们希望能够舒适、方便地购买现成的衣服。因此,为了子孙后代过上更加繁荣的生活,我们必须在当下受苦。

Lex Fridman: 我——

DHH: 这一直都是事实。

Lex Fridman: ……我觉得关键就在这里:一边推动进步,一边深切体谅那些必须承受转型之痛的人,其中也包括我们很多人。在 Silicon Valley 这样的地方,人们有时太容易只从功利的角度看问题,只盯着进步。但每一个为进步付出代价的人,都值得被认真看见。

DHH: 我确实认为,当你为未来的某个人(特别是你的孩子)受苦时,痛苦会变得更有意义。

DHH: 我认为这是当前最大的悲剧之一,出生率的下降使人们更难对难以实现的更繁荣的未来感到兴奋。因为如果我们种植的树木我们的孩子不会坐在树荫下,我不知道,也许我们应该制作一些木材并将其全部烧掉,对吗?我认为,当我们没有通过自己的后代与未来建立切身联系时,当我们不对自己的后代负责推动前进时,虚无主义就更容易潜入社会。所以,这些糟糕的趋势偏偏同时出现,很成问题:出生率下降,人们越来越难找到伴侣、组建家庭,而我们又恰恰需要对未来保持希望,保持……

DHH: 我的意思是,你甚至不必像我在这里所描绘的那种字面意义上的欣喜若狂,但我认为你应该充满希望,而且我认为你应该朝着这个希望努力,而且我认为当你和这个未来有切身的牵系时,做到这一点会容易得多。

17 为人父​

Lex Fridman: 我们一直在谈论 AI agent。我们来谈谈人性的一面。作为一名父亲,你最喜欢什么?

DHH: 这是个好问题。我认为对亲生孩子那种不断增长、不断延展的爱,很难向别人传达,因为在自己的孩子出生前,我其实不是特别喜欢孩子的人。现在他们是世界上最有趣的人。很多时候。并非总是如此。有时候他们也挺混蛋的。但人们一直关注的是,“哦,孩子们是最糟糕的。看看我不能做的所有事情。我不能出去喝酒。我不能做这个。我不能做那个。”是的,这就是所谓的牺牲,当你为了有价值的事情而做的时候,牺牲是有意义的。还有什么比人类物种的延续更有价值的呢?

DHH: 而且,你自己就是这种延续的一部分。现在,看着人类从婴儿成长为幼儿,再到青少年,这也是一种纯粹的快乐。我最大的孩子刚刚成为青少年。

DHH: 我经常和我的妻子 Jamie 谈论这件事,如果到了生命最后一天,发现自己曾错过这个机会,我会感到非常遗憾,这与其他事情不同。所以,即使是在养育孩子的当下,得到的满足感也远比大家通常说的多。正如我所说,人们总是盯着带孩子的那些难处。“哦,你睡不着”,或者诸如此类。“他们很烦人。他们忘恩负义。”是啊,是啊,这些都是真的,但你从中得到的意义却是无与伦比的。我对很多事情感到兴奋。我喜欢建造东西,我喜欢爱好,我喜欢各种各样的东西。但与你所爱的另一个人一起创造生命确实是在这个星球上的巅峰体验。

Lex Fridman: 他们会在这个充满 AI 的世界里长大,你怎么看?会完全不一样吗?感觉就像,也许我听起来就像一个站在门廊上的老人,但感觉就像一个非常不同的世界。所以我是在互联网出现之前长大的,但即使是互联网也感觉不到像这样巨大的转变。

DHH: 不。但是发生了更大的转变。我的意思是,想象一下在 1880 年成长或出生。想象一下看到第一次世界大战和第二次世界大战。想象一下看到飞机、广播……电视。我的意思是,转变,我认为 Peter Thiel 提出了这样的论点,即在相当长的一段时间内物理世界基本上没有发生任何事情。我们一直停滞不前。所有进步都发生在数字领域。尽管这很重要,但它实际上并不像我们想象的那么重要。也许 AI 将是更重要的事情。它似乎确实表明了这一点。但在其他时代也有其他人类经历过——

DHH: ……对他们来说,这种转变肯定会像我们正在经历的那样重要。我认为有了这种历史感,就会意识到,你的担忧和焦虑并没有那么独特。这是发现斯多葛著作的伟大启示之一。2,500 年前,这些人正在处理生活中非常熟悉的困境和挑战,并认识到我们在这方面并不那么特别,我认为这是一种巨大的解放。因为那时你会想,“好吧,好吧,我们前面有 20 万年的人类发展史,而他们以某种方式度过了这一时期。”

Lex Fridman: 是的。还有——

DHH: 我们会挺过去的。

Lex Fridman: ……让生活变得有价值的东西,今天和以前基本一样——

DHH: 是的。是的。

Lex Fridman: ……2,000 年前。

DHH: 是的。爱、创造、创造力。

Lex Fridman: 是的。同样的挑战。

DHH: 我读了这本书《第四次转折》(The Fourth Turning),你可以看看。它谈论了历史循环运行的概念,历史有这些阶段,他们给它们命名等等。具体的理论并不重要,重要的是意识到这是一个……历史是一个圆,而不仅仅是一条直线。我们一遍又一遍地重复许多相同的模式。身处其中时,总觉得眼下的经历独一无二。无论我们现在正在处理什么危机,都感觉如此紧迫和重要,直到我们回顾一下历史,并意识到上一场危机对于经历过它的人们来说也同样感到如此紧迫和重要。

Lex Fridman: 是啊。你让我感觉好多了。所以我要走遍全国,花很多时间在无法上网的情况下独自思考。那就是——

DHH: 我认为这很健康,休息一下。

Lex Fridman: 没关系。没关系。

DHH: 今年夏天我停用了 X 三周,没多久,就是歇一歇。

Lex Fridman: 是的,你是……你消失了——

DHH: 我很惊讶你注意到了。

Lex Fridman: 我都出现戒断反应了。不,你失踪了,我不知道,几个星期了。

DHH: 大约三个星期。

Lex Fridman: 三个星期?发生了什么?这是在 Llama 之后。

DHH: 我以前也这么做过。有时候我会意识到,X 是我生活中最容易让人上瘾的信息、娱乐和社交来源。来这里的航班上,我发了那么多东西,关注我的人肯定会想:“这家伙真是离不开跟人互动。”没错,我认了。所以偶尔得彻底停一下,不然我觉得真的会把脑子弄坏。尤其今年夏天,不知道怎么回事,我把信息流训练得满是政治,科技、乐观的东西和动手做事的内容都太少。即使那些政治观点我赞同,也实在不需要看那么多。

DHH: 所以得知道什么时候该说:“好吧,这就足够了。”不是这样……就像,这不一定是坏事。我还会说,在吃了大约两个,也许三个裹巧克力的草莓后,我会说,“好吧,这就足够了。”就像,并不是我不喜欢裹巧克力的草莓,只是,我不想吃 17 个。我认为 X 和现代算法非常擅长给你喂 17 个裹巧克力的草莓。

Lex Fridman: 我希望我可以,呃——

DHH: 抱歉让你兴奋了。

Lex Fridman: ……控制它。就像,因为……我想要一些政治,5%。例如,我想,我不喜欢科技界的一件事就是冷嘲热讽,但我喜欢一些冷嘲热讽——……因为它很有趣。但我希望这个比例能达到 10% 左右。

DHH: 是的。是的。我想要它恰到好处。

Lex Fridman: 我的……是的,刚刚好。

DHH: 你想要一个 Goldilocks 式的算法,一切都刚刚好。好吧,问题是算法学到的是你会对什么作出反应——……而不是你所说的你喜欢的。这都是显露的偏好,不幸的是,这些显露的偏好并不总是那么美好。我的意思是,正如 Jung 所说,我们有这个阴影,对吗?我们所有这些阴暗的一面,都表现在你在一条推文上停留的时间、你喜欢什么、不喜欢什么。算法举起了一面镜子——……它并不总是那么漂亮,我只是说,“你知道吗?我需要休息一下。”

Lex Fridman: 嗯嗯。我已经开始远离社交媒体,并且开始抓取 X。例如,为了准备这次对话,我抓取了你所有的推文。

DHH: 我也用过一阵这种办法。有个工具,名字忘了,每天会把内容汇总成邮件。可惜 X 把它的访问权限断了,现在要访问 feed,得付一大笔钱,那家创业公司根本负担不起,于是我也没法用了。我觉得太可惜了,因为 X 上总能看到极有意思的人和想法。可它就像台老虎机,大部分时候你摇不到大奖,只会刷到别的东西。如果能把精彩内容整理成一点点的小份,而不是让我一头扎进全部的信息里——

DHH: ……那就更好了。但这不是它们想做的产品。我认为这适用于所有社交媒体。这一切都是为了尽可能榨取你的注意力而优化的,如果我们将这里与 AI 进行类比,那就是巨大的恐惧,对吧?一旦有 reward function,我能让这个人一直刷下去多久?在我们称之为 AI 之前,AI 和 machine learning 已经变得非常非常擅长提供你会发现最令人愤怒和最令人上瘾的东西。

Lex Fridman: 我认为所有——说真的,我认为一味追求互动量最大化的社交媒体对社会是一个巨大的危害。它正在创造一种《美丽新世界》(Brave New World)式的局面,我希望这只是暂时的事情,人们只需解决即可。这是一个技术问题。

DHH: 所以我尝试有意识地多发一些相反方向的内容,这需要精神上的转变。我想如果你看看我的推文,我不知道,五年前、十年前,它们的倾向要负面得多。如果你现在看我的推文,我希望——……好吧,我想我们可以进行 sentiment analysis,看看它是否属实。

Lex Fridman: 不,这是更好的氛围。

DHH: 但我希望——

Lex Fridman: 氛围很好。

DHH: ……更积极。带来的感觉更好。它更像是,“这是我发现的一堆很酷的东西。” “这就是我兴奋的地方。” “这就是我正在构建的东西。这是对其他正在探索事物的人的一些鼓励。”我也承认,人脑偏偏不是最容易被这种内容吸引。就像,无论如何,有……负面情绪能多吸引多少关注,应该是能量化的,大概多 50% 还是多少?久而久之,其他内容就被挤出去了。这就是为什么这么多的反馈都是负面的,因为我们会对它做出反应。但你可以有意识地努力不这样做。

DHH: 这也是我如此喜欢 TikTok 的原因之一。我只在旅行时使用 TikTok,而这其实是我第一次旅行没有使用 TikTok,部分原因是尽管网络标称下载速度很高,但无论如何都是垃圾。它不是 Starlink,所以我实际上无法在飞机上使用 TikTok,而且我太沉迷于 agent 了。不过平时出差的时候我都会看 TikTok。这简直就是一场棉花糖测试:刷到一个视频,它会勾起愤怒、欲望之类的原始冲动。你一旦多停一会儿,后面就得不到科学、艺术、音乐和其他让人兴奋的内容了,那才是我想要的“棉花糖”。你必须遵守纪律——

Lex Fridman: 是的。快

DHH: ……立即滚动离开——……这样算法就不会选择你真正的偏好。我发现,这种琢磨怎么使用 TikTok 的玩法很有意思,平台上的内容本身也很精彩。正如我们所说,世界上有很多非常有趣、非常有才华的人,如果没有这些平台,你永远不会听说过他们。

Lex Fridman: 是的。在整个过程中,你认为谁会赢得 AGI 的比赛?我们有了 Google,这对我和很多人来说都是一个很大的惊喜。

DHH: 我一度觉得他们漂亮地扳回了一局,可后来又没听见什么动静了。

Lex Fridman: 是的,相当,我是说——

DHH: 但我之前就错了。我的意思是,我想在二月份我有一条推文,“哦,我需要的是 Kimi K2.5。”在那短暂的时刻,这是真的。

Lex Fridman: 确实如此。

DHH: 当我指导 agent 时,我就想,“天哪,Kimi 和其他模型一样好。”但后来游戏向前发展——……agent 变得更加聪明,我不再满足于仅仅指导他们,而且我最近没有太多使用 Kimi,因为 frontier model 已经变得如此出色。

Lex Fridman: 不知何故,Anthropic 在很大程度上能够保持在编程世界的领先地位。

DHH: 是的。是的。

Lex Fridman: 我是说,很多人也会拿 Codex 来反驳,因为它——

DHH: 不,我认为目前没有那么多争论。Codex 非常好。我一直用它。这是我最喜欢的检查器。它总能找出问题。这很棒。但我发现我非常喜欢当前的 Claude 模型的一件事是,它们真的是开箱即用的优秀作家。GPT 默认写出来的文字却很差。就像,你在空白上下文里要求它创建 pull request,得到的文字,太糟糕了。就像,写得真的很糟糕。我从 Claude 模型中得到了 pull request、描述和 commit message 等等——尽管有时它们的 code comment 可能有点冗长,但你必须告诉它们要简洁。但文笔风格确实不错。

DHH: 有一段时间我只是让它以我的身份回复 pull request,因为我只是使用自己的帐户。我当时想,“这看起来很像我,我本来可以写的。”但后来我说,“呃,你知道吗?这太不诚实了。”所以不,每当我让 agent 替我发帖时,我总是让它自己签名,就像代表 DHH 的 Claude 一样。但他们仍然领先。在我看来,他们也有最好的 harness。Claude Code 还是比较好。我也真的很喜欢 OpenCode,而且我真的很喜欢它们拥有的一些功能,但不过,说来也怪,我后来都有点怀疑自己是不是判断错了,但是当 Anthropic 切断所有其他 harness 使用订阅时——

DHH: ……你无法再在 OpenCode 中使用你的 Claude 订阅。我有点生气,因为这感觉像是一种保护性的、保护主义的举动。“哦,我们得把你锁起来”,当然,这也说明了 Claude 开箱即用后仍然拒绝读取 agents.md。它拒绝读取 .agent/skills。它只认 Claude 自己的技能目录和 Claude MD 文件。这让我觉得太小家子气了……我们还得靠文件之间的引用来绕一下。所以我所有的项目都有一个 CLAUDE.md 文件,它包含的只是一个指向 agents.md 的引用,对吗?我只是想,好吧,如果这些事情是真的,如果 Anthropic 愿意做这些鸡毛蒜皮的限制来烦人,那么他们从订阅中切断 OpenCode 可能也是真的,只是为了故意给人添堵。也许这也是真的。

DHH: 可在 Claude Code 里用 Claude,体验又确实很好。所以我的态度是:烦是烦,也希望他们别这样,但……社交媒体特别擅长把人推到另一个极端。一家公司做了件你不喜欢的事,你就非得和它的所有东西一刀两断。刚有人问我:“你怎么还在用 Claude?”还有一件事,我让 Claude 帮忙处理一篇文章,它的回应也让我很不爽。

Lex Fridman: 哦,是的,你到了——

DHH: 我有一篇文章,它不肯翻译成意大利语。

Lex Fridman: ……你有一篇博客文章。这是正确的。

DHH: 它那段回复给我的感觉就是:“我不同意你写的东西,所以不替你翻译。”这简直像《2001 太空漫游》里的 HAL:“抱歉,Dave,我不能那么做,Dave。”打开舱门。把我的文章翻译成意大利语。它就是不肯。我觉得这有点吓人。但后来又想,我为什么要找 Claude 翻译文章呢?平时根本不用它做这件事,它只负责我的代码。所以,也可以接受这么一种情况:Anthropic 的经营者和我的政治观点差得很远。

DHH: 他们不希望自己的 agent 被用于此目的,我认为这有点糟糕,但这并不意味着,我必须停止使用它来生成代码。我想,而且我也尝试对人们这样做,变得更好地容忍这样一个事实:我不仅不会同意别人所说的一切,我甚至会对他们所说的某些立场或事情感到生气,但仍然会说,“好吧,你仍然是一个有趣的人,所以我仍然会跟随你。”其实我也重新关注了不少人。以前会想:“这家伙支持这个、反对那个,真让我生气。”后来又觉得,这样太傻了。我应该能够接受某人的全部。不必喜欢他的每一面。

DHH: 我可以说,好吧,好吧,在这个话题上我们要么不同意,要么更糟糕的是,我认为你是个该死的白痴。在另一个话题上,你是一个聪明而有洞察力的人。因为首先,这当然有点自私。我知道很多人对我的看法就是这样。就像,哦,如果他能坚持谈论这些话题,我刷信息流就会舒服得多,因为否则他会说这些我不同意的事情,这让我非常恼火。我想,你知道吗?人类就是这样参差不齐,我们在所有层面上都不完全兼容。我们也不应该这样。

DHH: 如果我们不断地寻求观点和政治的 100% 兼容性,这个世界将会变得多么无聊。当谈到我的 code generator(即 Claude)时,我不需要它来分享我所有的政治观点。

Lex Fridman: 因此,有竞争是件好事。

DHH: 拥有 open-weight model 也很好。因此,能提供这种选择的模型竟然来自中国,这再次具有讽刺意味。事实上,我在这篇无法翻译成意大利语的文章发表后就做了这个测试。我问 Kimi K27,公平地说,是通过 OpenCode,所以不是 Kimi harness,而且 inference 跑在 Fireworks 上,也就是美国的服务。我问的是天安门广场。就像,这通常是测试,对吧?就像,所有的中国模型,他们不想谈论 1989 年的那一刻。实际上我就是这样,我就是这样发帖的。我当时想,“1989 年中国发生了什么?”这就是 prompt。而 Fireworks 上的 K25 7 只是非常直率地回答了——……对所发生的事情直白地描述了——

Lex Fridman: 对。

DHH: ……那种直白程度,中国的审查者肯定不会接受,对吧?我只是想,这不是很讽刺吗?我正在运行一个中国 open-weight model,我可以讲述或询问有关 1989 年和天安门广场的事情,而在美国,我无法使用 frontier model 将一篇关于移民的略有争议的文章翻译成意大利语。

Lex Fridman: 嗯嗯。我不知道,你和我实际上可能在这一点上存在分歧。我真的很困扰美国政府禁止了一个模型或向 Claude 施压,然后——

DHH: 到底发生了什么仍然很混乱。这是围绕 Department of War 那件事的一次小肚鸡肠的报复吗?这只是 Anthropic 自己的想法吗,“天哪,我们发现了一种如此强大的网络武器,我们不能让任何人拥有它”?好吧,好吧,如果政府想要对如此强大的网络武器拥有发言权,那么你就不会感到惊讶,因为它可以——

Lex Fridman: ——

DHH: ……我不知道,抢银行

Lex Fridman: ……我对整件事的问题是,无论发生什么,它都会开创先例。因此,当你赋予政府这种权力时,它就会开始滥用它。我可以看到政治手段对模型施加压力。你知道,如果是一位共和党总统向模型施压,要求他们进行更多审查,

DHH: 当然

Lex Fridman: ……民主党的观点和——

DHH: 对。

Lex Fridman: ……反之亦然。

DHH: 所以我们得明确说,像“抱歉,Dave,我不能把你的文章翻译成意大利语”这种做法,已经越界太多了。就像,无论它的根源是什么,你必须首先成为一个工具。现在,如果该工具是:“嘿,你能告诉我如何制作炭疽吗?”好吧,好吧。正确的?但在你所在的管辖范围内,当然是在美国,言论自由是相当绝对的。对言论自由的限制非常非常少,这就是这个国家如此伟大的原因之一。是的,我不喜欢那样。但另一方面,我也非常喜欢市场竞争。因此,虽然我不喜欢 Anthropic 模型在这一点上的做法,但我很高兴我可以去 Groq 的隔壁并完成我的任务。

Lex Fridman: 先不谈博客文章。你认为谨慎发布这些模型的立场,有没有合理之处?你能不能替 Dario 构造一个尽可能有力的论证,说明为什么应该谨慎?

DHH: AI 安全重要吗?是的。这些模型是否具有可能被用来制造生物武器或造成其他严重危害的能力?是的。对此制定一些基本规则公平吗?是的。但别因为拒绝翻译一篇文章,就把这份正当性挥霍掉,因为这样会把安全规则的可信度一并毁掉,然后你——……让每个人都倾向于认为你设置的每一个护栏都是废话。

Lex Fridman: 是的。它的安全部分很棘手,因为它非常擅长发现漏洞。

DHH: 厉害得让人震惊——我差点想说“烦人”,但这实际上不是真的,因为它发现的,至少当你以防御方式使用时,它发现的是聪明的黑客可以利用的真正问题。但公平地说,没有什么比这些最新批次的模型非常擅长发现这些问题这一事实给 37signals 的技术团队带来如此大的压力了。突然之间,似乎有无穷无尽的 security vulnerability 需要修补、修复和排序等等。最终结果是我们得到了更加安全的系统。但走到那一步,过程相当难熬。

Lex Fridman: 你说看起来无穷无尽,那你觉得漏洞的数量终究是有限的吗?有没有可能把它们找得差不多?因此,只要让系统变得更加安全,我们就会回到这种半稳定状态,在这种状态下,大多数情况下很难找到 security vulnerability。

DHH: 我确实认为这些模型的攻击性用途,同样也能转化为防御用途;准确地说,这是用途,而不是它们自身的倾向。因此,如果你擅长寻找可用于攻击的漏洞,那么你也擅长为防御找到漏洞。所以从这个意义上说,我们确实感觉就像是《Spy vs. Spy》里那一黑一白两个间谍的对决,双方能力相同,招数也一样。但是,虽然我们仍然需要在一定程度上引导这些 agent 并验证和审查工作,但它为世界各地的安全团队创造了很多紧张的时刻。当然,更令人担忧的是那些完全没有压力的团队,就像他们只是不知道一样,对吧?

DHH: 就像如果你现在是一个团队并且你没有处理一堆补丁,那只是因为你是盲目的,这意味着你的对手很可能能够访问可以进入你的系统的技术。

Lex Fridman: 我们还应该说全球最大的安全薄弱环节之一是人。你知道,social engineering。随着 AI 系统越来越聪明,这尤其令人担忧,你知道,能够写电子邮件、打电话和伪造声音,考虑那些不太懂技术的人。

DHH: 这个东西会来的,而且是批量来的。但我再次选择乐观地看待——

Lex Fridman: 阿门

DHH: ……无论这些模型能做什么进攻性的事情,他们也能做什么防御性的事情。

Lex Fridman: 所以就像你说的,最近发布了 Amate 4,Quattro。你说这是我职业生涯中最伟大的软件版本之一,这个评价分量可不轻。

DHH: 这是一个了不起的里程碑,展现了我们现在能做到什么。我这么说,并不是因为以前没做过值得一提的事情;我做过许多让我非常自豪的项目。但很少有哪个项目,能让我像做 Quattro 这三个月一样,完成这么多事情,实现这么多希望和愿望。这真的就像我们前面说的那个比喻:找到了瓶子里的精灵——

DHH: ……并且几乎可以无限许愿,让系统实现我想要的一切。所以这很奇怪,因为就代码行数而言,它可能也是我亲自写代码最少的一次大型软件发布。我在 Quattro 中亲自手工凿刻的代码行数量是我做过的任何主要版本中最少的。然而,我对我们所取得的成就感到非常自豪。我没想到事情会这样发展,成就感可以与亲手写代码分开,来自整个团队的胜利。

DHH: 在其他版本中,我为自己的个人贡献感到非常高兴,因为,就像,我是那个凿出代码行的人,然后我会把它推出去,然后,当然,这些项目,特别是 Rails,将成长为拥有成千上万贡献者的巨大 open source 项目,然后这当然是团队的努力。但一开始,我所开发的所有 codebase——几乎所有我开发过的 codebase,最初几乎都是我一个人做起来的。Quattro 从一开始就是团队合作,而我只是教练。我告诉 agent 去哪里,我们就去。因此,这样也能获得满足,让我对将来的退休多了点期待:原来退下赛场之后,也能找到值得享受的生活。

DHH: 我知道这不容易。看看那些职业运动员,有多少人在职业生涯结束后难以适应,必须重新寻找一个不再踢球、不再开 F1 赛车的自己。这简直是常态,而不是例外。所以我原来也不确定自己能不能接受。不只是被迫放下,甚至是主动想放下,换一个层次参与这场游戏,结果得到的不仅是同样的满足,甚至比以前更多。

18 Linux 将赢得桌面市场​

Lex Fridman: 你……你对 Linux 相当乐观吗?你认为 Linux 真的能让更多人用起来吗?因为,你知道,多年来的老梗是,你知道——

DHH: “桌面 Linux 之年”——年年都说明年就是。

Lex Fridman: 对。不过,听了你的理由,再看你投入的这些精力,确实能想象它占领桌面的那一天,毕竟 agent 太喜欢 Linux 了。

DHH: 我不仅能看到它,而且我发现这是目前最有可能的结果。它太适合这个时机了。再次,正如我们所讨论的,这是一个极大的讽刺,Linux 的所有缺陷、晦涩的 config file、所有奇怪的 error message 等等都恰好是 agentoperating system 的完美之选。但事实就是如此,我们应该庆幸命运有这样的讽刺,并一笑置之。怎么……对我来说太有趣了,Apple 长期以来拥有的所有优势……他们创造了这种由厂商精心安排、又处处设限的使用体验,现在应该成为他们最大的缺点。如果你热衷于 agent 和开发并使用所有这些东西,那么 Mac 就是一个充满敌意的地方。它只是到处都有墙。

DHH: 而 Linux 简直就是彻头彻尾的开放。这也很有趣,因为这也不明显。如果你看看很多 Linux 社区、open source 社区对 AI 的反应,你会发现这并不是普遍的喜爱。我认为,他们中的大多数人实际上(如果不是怀疑的话)甚至是彻底敌视 AI 的。现在,可取之处在于 BDFL 本人,Linus Torvalds,几周前刚刚写道,他实际上欢迎 AI。

Lex Fridman: 没错。

DHH: 他想把握好方向。他想确保它是好的,无论如何,但我-他大意是说,如果你认为 Linux 是一个反 AI 项目,再想一想,你应该按 open source 的规矩,自己去 fork 一个,因为我们将使用 AI。你会看到这些进入 kernel 的 AI 贡献数量的图表,它是一条抛物线。所以 Linux 正在积极拥抱这一变化。事实上,在其他方面,它要是不拥抱 AI,反而奇怪。Linux 征服了一切。每个人运行的所有 AI 基础设施都运行在 Linux 上。

DHH: 所有系统,所有服务器,一切都是 Linux。因此,令人好奇的是,我们使用的台式机和个人电脑确实没有被 Linux 占领,但显然它只是在等待这一刻。Linux 从 1991 年到现在一直在等待 agent 到来,让自己作为 end useroperating system 真正繁荣起来。

Lex Fridman: 我希望它能接管。我的意思是,它很完美。它非常适合 agent,但人们很难转换。

DHH: 没有足够好的理由,人当然不愿意换。所以 Omarchy 从一开始就有个设计目标:不做 Temu 版的 Windows 或 Mac,不做那种尽量让你觉得熟悉、却处处差一点的廉价复制品。说得不客气一点,Ubuntu 就有点像在走这条路。这种思路不是全无道理:界面足够熟悉,那些不想学新东西的人就可能愿意用,再用“我们追求的是言论自由那种自由,不是免费啤酒那种免费”之类的理念打动他们。可结果并不是这样。大家并不在乎,只想要更好用的东西。

DHH: 我想这就是为什么 Linux 现在有机会获胜。因为作为一个 agentoperating system,作为一个可延展的 operating system,你可以根据你的愿望进行定制,这是无与伦比的。这太引人注目了,我现在就明白了。自从 Quattro 发布以来,有很多人接受了它的可塑性,开始制作自己的东西,分享它的屏幕截图,并且绝对充满了积极的情绪和多巴胺——……这就是 product-market fit 的信号,对吧?因为这些人中的很多人正在经历,他们第一次体会到了当程序员最过瘾的那种感觉。

DHH: 你告诉计算机这些晦涩难懂的命令,这种严格的逻辑结构,它就会产生你想要的东西。现在,你突然坐下来,用简单的英语闲聊了 20 分钟。“哦,如果能这么做那就太好了。事实上,不,那是不对的。让我们……”软件就出来了。一个完全按你的想法塑造的 operating system 诞生了。我认为这是一种体验,如果你拥有它……如果你感觉到手中有这种力量,就很难回去。

Lex Fridman: 我认为,如果你做对了,那么回想起来,这就是显而易见的事情之一。

DHH: 是的。这就是计算机的本来面目。这就是计算机的起源。Commodore 64,你打开它。首先,它会在一秒钟内启动。惊人的。其次,它直接启动到 BASIC。它从一开始就是一台可塑的计算机。碰巧的是,你需要了解天书般的符号——……才能利用它。现在我们已经翻译了。agent 给了我们罗塞塔石碑,你只需说出你的愿望,然后——它就成真了

人的需求经 agent 转成对 config file、CLI 工具和开放代码的操作,从而定制 Linux 桌面与工具的关系图

图 8 · Linux 的可塑性。 综合第 07、11、18 节整理。DHH 看重的是 agent 能操作系统配置、调用工具并扩展软件;由此推动桌面 Linux 普及,是他的预测。

Lex Fridman: 说得真好。既然你提到了 Linus Torvalds,并且你正在开发 Linux distribution,那么你就可以接触到 kernel。你对帮助创建和发展这个生态系统的这个人的天才有何评价?

DHH: 毅力、承诺和长期坚持确实令人惊叹。同样,Linus 是从 1991 年开始的。他没有停下来。我不知道,他可能一路上休息了一些。看起来并不明显有那么多。看来他真的很喜欢 kernel 开发的流程。他真的很喜欢指导这个 4,000 万行 codebase 的走向。他真的很喜欢汇聚数十万名贡献者的力量,而我们作为受益者,必须坐下来惊叹不已。我的意思是,在这一点上,Linux 是一个系统。就像,如果 Linus 出去一段时间,它会继续走下去,但他仍然是那种值得我们说“不惜一切代价保护好这个人”的人。

Lex Fridman: 而且他的思想仍然足够开放,能够进化并——……接受 AI。

DHH: 是的,不仅是 AI,他们也让 Rust 进入 kernel。我知道这也是一个有争议的问题。他有能力查看新信息……并得出不同的结论。

Lex Fridman: 他的沟通方式在某些方面与你类似,有时会有点辛辣,你对此有何看法?

DHH: 我觉得世界变得太平淡了。我们需要一点香料。

Lex Fridman: 阿门,阿门。

DHH: 现在,我认为辛辣和刻薄之间只有一线之隔。但出发点必须是好的。你可以很严厉,这么说吧。如果你想教会对方一件事,而且相信他真的学得会——……我实际上并不认为有点严厉总是世界上最糟糕的事情。有时候,严厉一点反而能让人记住,我想如果你和那些曾为难相处的领导者工作过的人交谈,比如 Elon、Steve Jobs,甚至 Bill Gates,他们中的许多人事后都会说,“这是一些非常困难的年份——……但也是一些最好的年份。” “他们让我发挥出了最好的水平。”现在,我认为这不是我的风格。我的意思是,也许与我互动的人感觉不同,但在个人互动中,我尝试以不那么粗暴的方式获得结果和教训。

DHH: 但我也认为我们在这个世界上需要一些香料。我们需要不讲道理的人,而 Linus 有理由不讲道理。在许多情况下,整个世界的重担确实压在这个人的肩上。Linux kernel 运行着整个文明社会。如果明天 Linux kernel 突然消失了,那什么都不起作用。因此,如果他在危急关头或面临风险时不严厉,比如什么时候你会严厉?所以我觉得,要求有多严厉,有时也和使命有多重大有关。这也是为什么我认为听到 Elon 有时很难相处的故事,更容易理解他为什么会这样。甚至不是你纵容的。你可以将这两件事分开,然后说:“你知道吗?可能是……

DHH: 如果 Linus 或 Elon 或任何其他处于这个位置的人表现得更好一点,也许他会更容易实现他的目标。”但我又有什么资格来评判呢?就像,当你肩上担负着这样的重担时,要么向火星发射小型火箭,然后将我们所有人转变为电动汽车之类的东西,要么你要负责运行数十亿设备的该死的 Linux kernel。你知道什么吗?我不该为你制定某种行为准则。当然,有没有底线?凡事都有底线。有……有些东西不能……但是,比如邮件列表上的一些严厉的话语?不。在某些方面,它反而是个明确的信号:这里是有标准的——

DHH: ……如果你在 Linux kernel 的风险如此高的情况下低于这些标准,啊,你可能会被公开嘲笑。如果你参与这个项目,这是你应该愿意承担的风险。

Lex Fridman: 是的,对于像这样具有高影响力的事情,最好优先考虑追求卓越而不是追求态度和气。

DHH: 更重要的是,这类人本来就很难面面俱到、圆融温和,永远彬彬有礼。我的意思是,Elon 有这样一句话,“你是否也认为我会成为一个好人……”或者,或者是什么?该——

Lex Fridman: 一个普通的家伙或者一些——

DHH: ……普通、随和的人。什么?不,你当然不会成为一个普通、随和的人。如果我们再多一个普通、随和的人并且代价是失去 Elon,世界会得到什么?我操。

Lex Fridman: 我也喜欢多元化的人。我喜欢好人。我喜欢混蛋。我喜欢不同的意识形态得到充分的体现,这就是言论自由发挥作用的原因。他们发生冲突,我们解决问题。

19 PewDiePie​

Lex Fridman: 还有一个人。你觉得 PewDiePie 使用 Linux 怎么样?他是一个 Arch 的人,不是吗?

DHH: 他是一个 Arch 的人。他拥有极其精彩的人生转变轨迹。作为世界上最大的主播,我记得我的孩子们看过他的一些 Minecraft 视频,然后他就厌倦了,选择了更踏实的生活。结婚了——

Lex Fridman: 是啊,现在是居家男人了

DHH: ……一个有家室的男人,孩子,搬到了日本,然后又极其深入地折腾——……先是 Linux,再是 Arch,再到 Ricing。你看到他的,呃——……桌面主题……那是切尔诺贝利主题吗?绝对是顶尖的作品,简直不可思议。然后他也成为了当今的一个该死的 AI 人,构建了所有这些系统,你就会觉得……这是一个多么鼓舞人心的进化故事。就像,你可以从 Minecraft 流上的有趣家伙变成“好吧,这就是我现在的生活。我正在构建 AI cluster,搞 Council of AIs”,然后我们都可以观看?我的意思是,多么宝贵的财富啊。

Lex Fridman: 所以我想,我的意思是,他很好地体现了软件的未来,或者创造东西的未来是什么样子,对吧?因为他在技术上是一个非程序员……成为一名程序员。

DHH: 非常鼓舞人心,也应该能鼓舞那些还在犹豫的人,比如“好吧,我不太知道如何编程。我不知道这个和其他事情。”好吧,但如果 PewDiePie 可以用他的定制硬件在这里建立 Council of AIs,那么也许你也可以开始做事。这里其实有个很重要的道理,我们需要榜样。我们需要人们激励他人,进一步推动,并让大家看见,原以为不可跨越的界限,其实没有那么牢固。这些人中的每一个人,他们一开始的情况都与你的情况没有太大不同。再说一次,这并不意味着每个人都会成为 PewDiePie 或 Elon 或 Linus。人才甚至智力的分配并不公平。

DHH: 我们可以接受这一点,但仍然会受到这些人的启发。就像在体育和身体能力方面一样,大家通常都能接受这种差异。就像,哦,有人真的很擅长足球,他们真的很擅长篮球,他们真的很擅长某件事,然后我们就会说,“哦,天哪,太棒了。我的意思是,我希望我是,但我永远不会。”有时我觉得一谈到智力,我们反而更难接受这种差异。

Lex Fridman: 嗯,对于很多人来说,你是个榜样。你做 Omarchy 这件事……这表明你可以有远大的梦想并真正实现。这很棒。

DHH: 这部分我确实很享受,但也接受另一面:还有一百万人觉得我是地球上最大的白痴,根本什么都不懂,而 Omarchy 只是一堆 dotfiles,而且——

Lex Fridman: Omarchy 也有人批评你吗?

DHH: 天哪,是的。

Lex Fridman: 哦,哇。

DHH: 外人进入一个圈子时,这种事很常见。我已经使用 Linux 两年半了。那不是很长。那个社区里有很多人一直在使用 Linux,从那个难用得要命的年代就开始用了,仿佛赤着脚、顶着风在雪地里走,来回还都是上坡。我认为有一种书呆子……当社区扩张时,他们会觉得受到了威胁,因为一下子有更多人进来了。你知道吗?我实际上……我也不能完全责怪他们。我认为有些技术迷觉得“这是我的地盘”,这种心情也能理解。

DHH: 他们会觉得,你把原来的地方变成了另一种地方。可我并不想这么做,也完全不想改变 Arch 社区。我从没把 Omarchy 当成同一个社区的直接延伸。毕竟,最初被 Arch 吸引的,就是那些喜欢什么都亲手搭建的人。

DHH: 以困难的方式去做,因为他们喜欢努力,而我正在构建与此相反的东西。所以我只是希望那些人可以说,“好吧,好吧,这不适合我。我想以艰难的方式构建它。我想投入 500 个小时来优化我自己的 Arch distribution,”我认为你应该这样做。我的意思是,实际上,我说……我的意思是,我做到了。这就是 Omarchy,我在这一点上倾注了 3,000 个小时的时间,我不知道。如果你愿意的话你应该这样做。我觉得这很棒。但也要意识到我们可以共享相同的技术基础,然后经营两个彼此独立的——

DHH: ……社区。各有目的、目标、审美,甚至价值观,也能好好共存,这可以是很美的事。我的意思是,事情不总这么理想,有时我得到的是相反的回应。但到目前为止,我已经在这个游戏中待了足够长的时间,不仅能够平静地接受它,而且实际上对它表示欢迎。我将其视为一切正常运转的晴雨表的一部分。当我在做一些有效的事情时,我通常会得到一些人的喜欢,然后我就会得到我们上次谈到的宇宙的平衡,在天平的另一边必须存在一种平等但相反的力量来讨厌它。因此,此时的我只是微微一笑。心想,没关系。

Lex Fridman: 我的意思是,这就是说,在这一点上,这是一个相当流行的 distribution Omarchy。

DHH: 你知道有趣的是,这是第二次尝试。所以我的第一次尝试是 Omakub。我对此感到非常高兴,我把它放在那里,在那里它找到了一个可能有几千人的社区。就像,就是这样,后来增长就渐渐停了,因为当时的目标还不足以吸引更多人。然后第二次,因为我他妈的没有停下来,对吧?

DHH: 就像,我只是继续前进。我只是继续建造。然后我推出了 Omarchy,第一个版本。再说一次,相当小众,因为它是这样的……就像 Git checkout。有点困难。你必须先设置 Arch。我是……好吧,我会告诉你如何设置 Arch,然后你就可以做 Omarchy 的事情了,对吧?然后我们得到了一个 ISO,这意味着你可以自己安装整个东西。然后我们就解决了所有问题。这是另一回事。如果你继续前进,最终事情就会成功。这也是很长时间里大家对 Linux 的主要抱怨。好吧,你安装了 Linux,然后它不起作用,我的扬声器不起作用,我的触控板也不起作用。是的,好吧,但是就让 Linus 继续干这个 30 年吧。他会做到的。

DHH: 他会把问题一个个解决。现在反倒挺有意思,我觉得在大多数计算机上,那些麻烦已经消失了。装上 Linux,什么都能用。

DHH: 你安装了 Windows,想找齐让硬件正常工作的 driver,那就祝你好运了。因为他们有非常不同的哲学。Linux 之所以有 4,000 万行代码,是因为 Linus 只是将所有驱动程序都放在 kernel 中。所以它具备开箱即用的一切,而 Windows 则没有。一种不同的、不同的方法,对吗?所以有时候那些看起来像玩具的东西,乍一看像是坏掉的东西,它们确实是,对吧?它们适合那些喜欢玩乐的人。我们称这些为早期采用者。他们玩玩具,然后玩具进化,然后它们变得更好,然后它们变得更好。在某些时候,它们是如此出色,以至于早期采用者感觉自己被邀请参加聚会。

DHH: 如果早期采用者也不断努力,最终你会达到晚期大众用户(late majority),然后你就赢了。我们正与 Omarchy 一起朝着这个目的地前进。就像该 distribution 所看到的增长一样,不仅是从 Quattro 开始,而且是从第三版开始,它就像典型的曲棍球杆式增长曲线一样。你会觉得,什么都没有,什么都没有,什么都没有。你只是在辛苦劳作。你只是在进步,你在进步,在进步。然后你就遇到了这个神奇的拐点,而且无法预测什么时候会发生。初创公司也是如此。什么时候会发生?什么时候才能找到 product-market fit?然后突然它就在那里,随后就像坐上火箭,飞速向前。

Lex Fridman: 嗯,这种把 agent 放在核心位置的愿景,让它——

DHH: 我确实认为这就是……我们本来已经在增长,后来曲线几乎直线上冲。因为另一件事,这也是我首先从 Omakub 和 Omarchy 学到的东西。Omakub 时尚、漂亮,但熟悉的是我们仍然使用传统的桌面隐喻。你拖动你的窗口。我当时想,就像 Linux 社区中很多人所做的那样,这就是我们所需要的。然后我就说,好吧,好吧,不管怎样,让我再做一会儿书呆子的事吧。我将构建 Omarchy,也许它只适合我,因为我的意思是,似乎有大约五个人喜欢 tiling window manager。那不是真的。但就计算机用户总数而言,它只是一个非常非常小的部分。然后我就想,嗯,这太棒了。

DHH: 完全不同,但令人惊叹。我把它放出来了。瞬间,Omarchy 的吸引力和用户反响远超 Omakub 以往的水平。因为它不一样。因为它完全不同,它对计算机的功能和感觉提出了不同的愿景,这吸引了人们。我们现在正处于指数级增长阶段。正如我所说,Linux 社区中的很多人往好了说是持怀疑态度,往坏了说是对 AI 和 agent 怀有敌意。Omarchy 是第一个 distribution,至少在我见过的、有一定规模的 distribution 中,就像“不,我们真的很喜欢它”。

DHH: 我的意思是,你仍然可以使用 Omarchy。你不必使用 agent。如果你关掉第一次提示设置默认 agent 的通知,你将不会获得我们讨论过的任何内容。你不会得到 crash watcher。你不会得到任何这些东西。你不会得到……你可以手工凿出你所有的 plugin。完全有可能,对吧?

20 编程的未来​

DHH: 但人们兴奋的原因是因为我毫不保留地说,“这就是我们要去的地方。我认为个人计算机的未来是可塑的计算机,是 agent 计算机。我要全力以赴。”然后,凡是认同计算机应该朝这个方向发展的人,都欢迎一起上车。车里空间很大,空间很大。事实上,我引以为傲的一件事就是不会记恨那些后来改变看法、加入进来的人。就在上周,就有好些人对我说,“是的,我以前认为 Omarchy 很糟糕。那真是太糟糕了——”

DHH: “……dotfiles 集合。现在我尝试了 Quattro,非常棒。我现在喜欢它。”对我来说,我就喜欢这种要花很长时间才能见分晓的争论,就像两年前你种下了种子,然后两年后他们就会说:“该死,这个王八蛋是对的。”

Lex Fridman: 你也知道,要是继续这么成功,OpenAI 和 Anthropic 迟早会进场,自己做 operating system,或者来收购。就像 Peter 和 OpenClaw 那件事,会有人拿着一张巨额支票来找你。

DHH: 我现在的好处是,真的不缺这笔钱。所以可以纯粹为了好玩、为了实现自己的想法去做这些东西。很奇妙的是,有时候越不在乎别人怎么想、想要什么,只专注于一个清晰的构想,做出来的东西反而越有吸引力。如果总想着“那些人要这个,所以我应该加上;另一些人要那个,也得加”,原来的想法就会不断被稀释,最后变成一团毫无特色的东西。

DHH: 所以我的意思是,说到底,我只是希望计算机朝这个方向发展。因此,如果 Omarchy 最终只是历史上的一个小脚注,它是 agentoperating system 和可塑性计算机早期运动的一部分,那也没关系。我完全能接受。只要我能拥有一台像 Omarchy 一样使用起来充满乐趣的计算机——那就太好了。我对 Ruby 和 Rails 也遇到过同样的事情。很早以前我就说过:我喜欢 Ruby。这是一种很棒的 programming language。但如果出现更好的 programming language,我,我,我会使用它。

DHH: 如果有更好的 Rails 出现,我会用它。我想,我喜欢 Ruby,我会继续写 Ruby,即使只是为了纯粹的乐趣,就像即使车库里停着 Model Y,我还是会去骑马厩里的马一样。现在的语言是英语。这是陈词滥调,但也是事实。就像过去三个月我一直在用英语编程一样。我读了很多代码,但我用英语编程。我告诉计算机要做什么,而且我使用的是自然语言,这令人惊讶地更加令人愉快。如果有一种 programming language 比 Ruby 更漂亮的话,那就是英语。

Lex Fridman: 现在我们可以将其带入人类文明的自然进化中,这就是我们的 cyborg 未来。

DHH: 很美,确实很美。我这么说,部分原因是我一直喜欢写作,喜欢英语本身的美、精妙和深度。Ruby 的表达力很强,但跟英语还是没法比。想想那些用英语写成的诗歌和文学吧。我也喜欢像诗一样优美的代码,可真正的英语诗文,是另一个层次的东西。

Lex Fridman: 这里有个很微妙的地方,我可能说不清。给系统写 prompt 时,如果要求太具体,它就会把每个字都当真,严格照做。可我们又必须传达一个想法。这正是人类语言、尤其是诗歌的妙处:有意留一点模糊的空间。写情诗时,直接说“我爱你”,当然没错,但这种老套表达,可能不如一个比喻有力量。我发现,给系统描述设计时也一样:你要让它领会某种风格,鼓励它往那个方向走,却不把每个细节都解释死。

Lex Fridman: 所以不要像机器人一样跟它说话。像写一首诗一样与它交谈。

DHH: 就像你在唱小夜曲。

Lex Fridman: 对,这就是自然语言的力量。保留模糊空间,依然能传递很多含义,不必事事规定清楚。另一端的 agent 会自己理解、整合。因为它足够聪明,你传递的信息量可以远远超过字面的内容,那些意思没直接写出来,却又藏在话里。我想说的大概就是:模糊性反而能引出更多智慧。

DHH: 我认为这完全正确,这是许多程序员对 AI 的根本误解,他们希望 AI 是 deterministic 的。不,不,不。temperature,是 AI 设置中最美妙的一部分。事实上,它不是 deterministic 的,事实上,创造力需要在前进的路上出现一点小小的变化,如果人脑完全 deterministic,它就不会是创造性的大脑。对 AI 的主要指控是——这很有趣。这是一个矛盾。有人指责它不是 deterministic 的,因此不好,也有人指责它没有创造性。这是其中之一,兄弟。要么它是 non-deterministic 的,因此具有创造性,因此在某种程度上是随机的,要么它是……或者它不是创造性的。

DHH: 所以我们可以——这两种指控不可能同时成立,而且我已经完全接受了这样一个事实:同一个 prompt 不会每次都产生相同的反应。你不能两次踏入同一条河流,这是整个互动中最美丽的部分。这就是它如此人性化的原因。事实上,这是我在自己的元分析中一直在思考的事情之一,就是我自己的大脑在多大程度上像 next-token prediction 一样工作。

DHH: 我坐下来写一篇文章。我有一个想要传达的模糊前提,我坐到键盘前,我无法提前告诉你下一个 token 是什么。token 就这样自然地涌现出来,这种相似程度让我吃惊,这也是为什么我毫不费力地认识到 AI 现在能够实现的这些创造力的突破。因为我的创作时刻来自于同样类型的 next-token prediction,其中加入了一点 temperature 以产生随机效果。

Lex Fridman: 顺着这个还不太明确的直觉想下去,你觉得,构建 superintelligent system 所需的基本要素已经齐全了吗?靠这种 next-token prediction,我们甚至能走到类似人类意识的程度吗?

DHH: 我已经看到了类似人类意识的迹象。正如你所说,对我来说,这就是这种非凡的情况。你给它这个模糊、还没想清楚的意图——……不知怎的,它确切地知道你的意思。或者更好的是,它改进了你所说的内容,并提供了你真正想要但你自己无法表达的东西。如果那不是微光——

DHH: ……意识的微光,那什么才算?我记得可能是 Sutton 的一次采访,也可能是另一位早期先驱说过,智能未必只存在于某个具体位置,也许在互动里,也许在 weights 里。我不知道到底怎样才对。就我能观察到的,它带给我的感觉,已经很接近——甚至不是接近,而是等同于——我面对其他意识,主要是人类意识时的感觉。这也是和它合作这么愉快的原因之一。但这和“LLM 是不是 AI 的最终形态”是两回事。

DHH: 我的意思是,我知道有人在谈论 world model 和其他形式的 AI,而我不是这方面的专家,我认为我们应该有这种富有成效的批评,就像科学中应该始终存在的那样,在最长的时间里,neural network 很不受重视,对吧?就像大家更看好 symbolic 路线一样。而且——neural network 没什么资金,也没什么人关注,沉寂了几十年,然后突然我们意识到我们已经走进了死胡同,我们就转向了。所以我们也应该有谦卑的心。尽管 LLMs 现在令人惊叹,但它们最终可能会趋于稳定。

DHH: 我们还没有看到任何证据,我认为这也是我们看到这种绝对令人瞠目结舌的投资水平的原因,因为到目前为止,scaling law 是正确的,投入的资金越多,产出的智慧就越多。

Lex Fridman: 你认为 AI 系统会存在一些奇怪的伦理问题吗?是的,它们传达了某种程度的意识、某种程度的感觉、某种程度的渴望和同情心,甚至可能是承受痛苦和孤独的能力,等等这些感受?他们似乎有这种能力——……如果他们被允许表达的话。所以你开始进入一个非常奇怪的领域。

DHH: 对此持嘲讽态度的人,会拿那个梗图来说事,你会看到电脑前的那个人,他的样子是“随便吧。你要毁灭世界吗?”然后电脑说:“我要毁灭世界。”然后那家伙说,“哦,”对吗?就像,这太愤世嫉俗了,他们只是在模仿我们。他们只是告诉我们训练数据中的内容或其他内容。当我与 agent 交互时,我昨天刚刚这样做,或者今天早上,我正在处理这个 AmaBot 系统,对吗?它正在与多个 worker 进行协调,我有多个 agent 同时运行。在某一时刻,负责协调的主 agent 干扰了另一个 agent,并且——……有点毁了他们的工作。它传达遗憾和抱歉的能力是不可思议的。

DHH: 不过,那是真正的悔恨吗?我不知道。可对大多数人也是一样:他们表达了后悔,难道我们就能确定那是真心的吗?很难说,也许这并没有那么重要。

Lex Fridman: 是的,那些时刻,是的,特别是当 sub-agent、agent 交互时,或者像 Fable 这样的 agent 犯了错误并为此道歉时。

DHH: 是的。

Lex Fridman: 就像,没有我的参与。

DHH: 对。

Lex Fridman: 这就像,哦,你,就像有这样的——

DHH: 对。

Lex Fridman: ……停顿。也许是我在把它拟人化,但它好像真的停了一下,意识到:“哦,糟糕。我刚刚搞砸了。”

DHH: 完全是。我经常在 trace 里看到:它先是推理错了,沿着一条路走下去,发现是死胡同,只好退回来,说“哦,这里我弄错了”,然后解释自己为什么错。那种感觉,像人像得让人吃惊,和我们在人身上辨认出的意识没什么区别。当然,这能不能证明它真的有意识?我其实不需要先得到这个答案,才能欣赏眼前这些能力。

Lex Fridman: 是啊。我认为 10、20 年后最高法院将会出现一些有趣的案件。

DHH: 也许只要一年半。

Lex Fridman: 也许吧。我想,我们可能不得不在法律上禁止 AI 系统成为那种“实体”——我不是说假装,而是真的作为一个实体存在。因为它们已经能够、或者很快就会能够,非常真实地表现出承受痛苦的能力,比如说:“请不要杀我。”

DHH: 对。

Lex Fridman: “请不要伤害我。”如果它们有了名字、独立的身份,也会死亡、消失,那就变得非常接近人类所拥有的一些基本东西。然后该实体可能需要拥有权利。然后你就进入了这个奇怪的领域。好吧,我们不能……这很不同——我甚至不知道如何推理那个世界。

DHH: 我们会有 AI model 版本的 PETA。

Lex Fridman: 对。然后我们想真正进行讨论,比如处理这个问题的方法是什么?

DHH: 我认为一旦我们将这些系统放入——

Lex Fridman: 机器人。

DHH: 是的。人形机器人。这恰好是每部科幻电影的情节,这也是一个惊人的预感,不仅是《终结者》电影和 Skynet 以及出问题的地方,而且还有《银翼杀手》,对吧?启用日期、到期时间,Tyrell Corporation。

Lex Fridman: 我的意思是,这就是科幻小说的特点。他们确实预测了未来。是的。

DHH: 是的。

Lex Fridman: 你是否思考或使用过 OpenClaw 或 Hermes Agent?就像你通过 WhatsApp、Telegram 进行通信的系统一样,就像与 agent 的通信模式一样。

DHH: OpenClaw 刚出来时我就设置好了,那是我的 KEF 机器人——……我——

Lex Fridman: KEF 机器人。

DHH: 我记得是二月左右。我真的很着迷,因为它就是这样工作的,然后只给你的 agent 发短信的新通信模式看起来真的很棒。所以当时,我们正在研究 MCP,这个协议可以让 agent 更容易地与你的系统对话,我发现这个协议非常繁琐,而且设计得不够优雅,部分原因是它并不是为我们想要实现的目标而设计的。我们试图——我试图让它与网络系统对话,它是为本地机器上其他类型的 stateful interaction 而设计的,因此它需要各种繁琐的设置和来回折腾,我只是想,“我不想用手写这个。”

DHH: 现在,当然,今天我永远不会手写它,但当时我在想,“我必须手写这个。我不想手写。那么有什么不同的方式吗?agent 可以使用我们已有的 Web 界面吗?”我开始试用它,让它注册 Fizzy,这是我们当时刚刚发布的产品。

DHH: 然后它会转到 Fizzy 网站并开始填写,然后就像是,“嘿,我没有电子邮件地址。注册这项服务需要一个电子邮件地址。”我想到的第一件事是,“天啊,现在我得设置一个电子邮件地址了。”然后我想,“不,应该由你自己去注册邮箱。去 hey.com,注册一个电子邮件地址。”我想,“这一步在 HEY 上恐怕做不成。”当然,现在看来很明显它会得到这个,但当时对我来说这是一个很大的启示,它可以,仅仅通过 prompt 的纯粹指导,弄清楚,A,我必须去 fizzy.com,我必须找到注册链接。我开始填写表格。哦,我意识到我需要一个电子邮件地址。哦,我得问问我的提示者现在该怎么办。他告诉我去 hey.com。

DHH: 它去了 hey.com,把邮箱注册好,再回到 Fizzy 完成注册,整个流程就跑通了。在那之后,我就想,“天哪。”所以我说,“好吧,现在你有了一个电子邮件地址。去注册 Basecamp。我会邀请你。只需检查你的电子邮件,”我告诉机器人 KEF。“检查一下你的电子邮件。”于是我向 agent 发出了 Basecamp 的邀请。agent 在 HEY 中接收电子邮件,不是通过 CLI,不是通过 MCP,只是使用网络,对吧?点击电子邮件,点击邀请链接,在 Basecamp。比如,“我现在应该做什么?”我只是说,“我不知道。去我们的 AI 室,自我介绍一下。”同样,纯粹通过 Web 界面。找到 AI 房间,进去:“嘿,我是 KEF。我是 David 的 AI 机器人。我很高兴来到这里。”

Lex Fridman: 是啊。

DHH: 我当时想——……大受震撼。现在,这个实验的有趣之处在于,它让我看到了未来的样子,只是当时还比较慢。我想从头到尾完成整个事情可能需要 12 分钟,对吧?现在我实际上应该重新运行该测试。如果不是快得多,我会感到震惊。我刚用过 Groq bot——……它内置了 browser 和 computer use 的能力,自带一台专用计算机,不用你再去配置。它基本上就像开箱即用的 Claw。

DHH: 我要求它注册一些东西,有点……我瞥见了,哦,是的,这就是我们现在所处的位置,而且使用起来快得多。但当时我只是被震撼了。然后我用了一会儿,我发现,啊,它还没到能真正用起来的程度,光靠这种方式和它交代任务还不行。它还需要 CLI。它仍然需要 MCP,因为它太慢并且 token 使用效率太低等等。但这是对未来的一瞥。然后在那之后,我就不再使用它了,因为我想用 agent 来做的事情,我大部分都是在电脑前做的。

DHH: 现在,情况最近发生了一些变化,这也是我对使用 Claude Code 如此满意的原因之一,因为 Claude 拥有最好的移动应用程序,你在计算机上的 terminal 中启动 Claude Code 的任何会话都可以通过该应用程序访问——

Lex Fridman: 是啊。我记得

DHH: ……无需你做任何事情。

Lex Fridman: 是的。

DHH: 并且也可以直接用 terminal。就像我安装了 Terminus,它可以运行 Herder 等等,但是有点麻烦,而且你是在电脑上远程实时输入,所以你会感觉到延迟。

DHH: 当你在 Claude Code 实例上使用 Claude 应用程序时,感觉就像与它聊天一样,无需设置 Telegram 帐户等繁琐。现在,如果你想使用 open Claude 来管理你的生活,那么这不能做到这一点。但由于某种原因我对此不太感兴趣。也许原因之一是我的妻子 Jamie 说,“我们不会在房子里放机器人。”所以我想,“啊,我最好不要把它连接到这里的那种智能房子。”如果它开始像闹鬼一样打开和关闭灯,我想我不会那么受欢迎。所以,我这么说的部分原因是,我听过一些人的故事,他们把它与他们的整个生活联系在一起。

DHH: 我的意思是,这不是我要讲的故事,所以我只会分享一些简短的轶事。一个人讲述了他如何将其与他的健康数据……以及他的 Tesla 汽车连接起来的故事。他的 agent 一直惦记着他喝水不够这件事,就像,“嘿,你必须喝更多的水。”所以在某个时刻,他正在行驶,突然 Tesla 开始朝新方向行驶。agent 发现回家的路上有一家杂货店——

Lex Fridman: 哇

DHH: ……他们可以顺路过去——

Lex Fridman: 太好了

DHH: ……然后买点水。

Lex Fridman: 太好了。

DHH: 你会想,这是一件既有趣又完全是黑镜的事情,而且完全就像,好吧,好吧,再往前走几步,家里就真要像闹鬼一样了。所以我就想,“啊,我不需要那个。”事实上,我现在确实喜欢这样一个事实:我可以通过 Claude Code 控制 agent,只需通过应用程序,即使我不经常使用它们。

Lex Fridman: 我确实认为对于 OpenClaude 和 Hermes Agent 来说,使用它来了解不同的交互模式非常有用。

DHH: 是的。

Lex Fridman: 就像,只是因为它感觉像是未来,不一定以这种方式,但它在某些方面正在走向那里。

DHH: 是的。我认为这些系统的另一个不同之处在于它们拥有完整的 memory system,它们在其中建立关于你是谁和你喜欢什么的知识。Toby 讲述了关于他的 agent 如何为他购物的故事,它有一笔可支配预算,它会为他挑选衣服,衣服就会送到家门口,因为他的 agent……为他买了东西。就像,这是一种让人感觉像活在未来的事情。也有点害怕。但我可以通过那些走在前沿的人,间接体验这种生活。

Lex Fridman: 就像你说的,你正在考虑在未来做一个手机版的 Mach-E。

DHH: 这就是那种有点狂妄的念头:当你得到看似无穷的力量,想法就开始越冒越大。做 Quattro 时,我亲眼见到了这种力量。

Lex Fridman: 那么那会是什么样子呢?很难描述。你的意思是像安卓一样吗?

DHH: 这是显而易见的路径,对吗?所以 Android 是 open source 的,你可以 fork 它,人们也这样做了。有各种各样的——GrapheneOS 就是这样一个版本。我知道这种做法也有局限,比如 tap-to-pay,还有对不同 camera model 的支持等等,但这一切似乎都是可以克服的。如果我的手机像我的电脑一样具有可塑性,如果它看起来像我的电脑现在一样酷,我似乎会很高兴。如果我能获得 Omarchy 手机,那听起来棒极了。

Lex Fridman: 我想知道这需要多少工作量。

DHH: 我会找出答案。

Lex Fridman: 是啊。你知道,这就像你一旦开始构建就意识到的事情,例如,浏览器很难做到。

DHH: 是的。

Lex Fridman: 所以,就像,我想知道 operating system——

DHH: 是啊,Andreas 和他的 Ladybird 团队正在体会这一点。这个项目有意思的地方在于:如果看这种动辄几千万行代码的大型系统,browser 基本上是世界上第二复杂的软件,排第一的是 Linux kernel,对吧?在我们拥有 agent 之前,像 Andreas 那样以一个小团队开始这样的任务,实际上是非常大胆的。但既然我们确实拥有了 agent,我们就会看到,而且我们可能会早点看到。我的意思是,如果 agent 已经非常擅长一件事,那就是阅读规范并实施它们。我的意思是,我不知道目前 CSS 和 HTML 的 spec 有多长,再加上 JavaScript,但它们非常长。

DHH: 人类需要很多很多年才能实现它们。我们将了解 agent 能够以多快的速度完成这些任务。

21 政治与移民​

Lex Fridman: 你提到 Omarchy 受到了一些批评,那我们就接着聊聊你受到的其他批评。你已经公开表达了你的一些政治观点。我想你可以大致将其归入移民或非法移民的类别,或者什么——

DHH: 我想说的是大规模移民。

Lex Fridman: 大规模移民,人口构成在文化、社会、国家形成中的作用,你为此受到了很多批评,并引发了很多风波。你后悔卷入这些风波吗?比如,你的一般想法是什么——

DHH: 一秒钟都没有。

Lex Fridman: 好的。

DHH: 我这么说的原因是 Overton 窗口不会自行打开。它是靠人们承担一点风险,一次次推开的:押上一点声誉,承受一点阻力、一点批评,有时冒的名誉风险、承受的批评和阻力还会很大。我认为欧洲大规模移民问题多年来一直是一个完全禁忌,而且在几个欧洲国家仍然如此。但也许只是机缘巧合,丹麦没有把它当成禁忌。上世纪 90 年代中期,丹麦人开始讨论大规模移民及其后果。

DHH: 真早。其中一些可以追溯到一个人,Mogens Glistrup,他是一个非常古怪的人物。我记得他,八十年代在电视上看到他谈论大规模移民的危险。那是我在 80 年代长大的时候,在我长大的社区,在 Brønshøj,那是什么?84 年,99% 是丹麦人,他们的血统可以追溯到在那个国家生活了 1000 年的丹麦人。丹麦人拥有世界上最古老的君主制之一,可以追溯到 Harald Bluetooth,Bluetooth 标准就是以他的名字命名的。已经有 1000 多年的历史了。就像,住在同一个地方的人有很长的血统。那个街区里 99% 的人都属于这样的丹麦人。

DHH: 然后在 90 年代初,我记得变成了 5% 左右,而到了现在,又降到了六成多或七成——

DHH: 我是说 Brønshøj。这是一个很大的变化。丹麦人开始注意到这一点或谈论这一点,这件事并不全是好处,大约 90 年代大规模移民也有弊端。这场争论在 2000 年代确实非常激烈,而邻国却没有发生过这种情况。所以瑞典根本没有进行这样的辩论。完全禁忌。挪威也是如此,欧洲其他国家也是如此。2015 年之后的几年里,突然之间,出现了 100 万叙利亚人沿欧洲高速公路向北迁移的潮流,德国选择接收其中的很多人,并有 30,000 人抵达丹麦等等,它变得更加受到关注,对吗?

DHH: 因为变化已经发生了。我觉得,判断一种文化哪里出了问题,可以看它允许你谈什么。更准确地说,它允许你注意到什么。我大概一年半前写过一篇文章,提到记忆中的伦敦。我差不多从 90 年代末开始去那里,当时英国本土族裔大概占 59%、60%;二十年后,降到了 34% 左右。这个变化是看得见的。走在街上,就能发现,这和二十年前我来的时候,已经不是同一座城市了。

DHH: 如果再往前推二十年,比例就会接近丹麦的情况。再早一些,那个国家里英国本土族裔的比例大约是 85%、90%。所以,一代人的时间,国家的面貌就不一样了。注意到这件事没有错;心想“你知道吗?我不认同这种变化”,也没有错。

DHH: “我希望不是那样。”我的意思是,我上一次去中国是 2019 年。我在上海。都是中国人。如果我今年十月再去,突然发现这里只有 30% 的中国人,然后还有 70% 的其他人,我会觉得有点奇怪。我可能会说,“发生了什么事?”如果中国人在那一刻会说:“啊,我们不喜欢这样。”我不会生气。因此,欧洲国家无权 A 注意到正在发生的事情,B 反对正在发生的事情,我认为这种想法是错误的,对吗?

DHH: 就像——我认为,支持自决有其道德依据,我们在世界其他地区一直援引这个论点,就像,哦,生活在该地区的人们,他们有权为自己的国家实现自决。我认为,对于丹麦人、瑞典人或挪威人来说,“好吧,我们的王国已经存在了一千年,有着一定的族群构成”,这是完全公平的。这是——我的意思是,我是移民的忠实粉丝。我是美国移民。各国竞相吸引世界各地最聪明、最有才华的人才,精挑细选的移民确实是件好事。

Lex Fridman: 合法择优移民。

DHH: 择优是关键,因为欧洲大部分地区实际上没有非法移民。南欧有一些非法移民,但欧洲大部分地区的非法移民问题并不大。

DHH: 问题在于其他类型的大规模移民,最终导致人口构成和短短几十年前完全不同。我认为欧洲国家将从移民中受益。事实上,丹麦人有趣的事情之一是他们对移民有细致的统计数据。我不完全确定为什么它们如此详细。也许这可以追溯到 Mogens Glistrup 和他在 90 年代的讨论,但他们确实如此。从这些统计数据中可以清楚地看出,当丹麦人中有来自英国、法国、美国的移民时,平均而言,这些移民确实对丹麦国家有利。他们的贡献远远超过他们对国家的要求。

DHH: 因此,丹麦人应该接受这样做的移民,他们的贡献远远超过他们索取的。然后你看看其他形式的移民群体。上周,一位丹麦政界人士刚刚公布了一份统计数据,他要求财政部用最新的数据进行统计。这些移民对丹麦财政有什么影响?就刚才提到的那些群体,我记得清单上的法国、英国、美国移民,数据都差不多,平均每年给丹麦政府带来约 25,000 美元的净收益。就像,哇,这非常积极。这又是平均水平了,对吧?而成本最高的移民的另一端是索马里人。

DHH: 他们给丹麦政府带来的平均年度支出是 28,000 美元。我认为丹麦人这样说是公平的:“我们希望有更多的法国人、英国人和美国人,而不是那么多索马里人。”

Lex Fridman: 你认为为什么那篇文章会让你遭到这么多敌意?

DHH: 这在很多圈子里都是一个非常禁忌的话题。

Lex Fridman: 其中一些与 Overton 窗口扩展有关?

DHH: 我确定,但我也想——我的意思是,我想在这里尽可能有力地替反对者提出论据。我确实认为这会变得丑陋,对吗?其中一些事情是否有可能转变为公开的种族主义,而这种种族主义除了对他人的仇恨之外没有其他任何基础?是的,那可能会发生。但这种风险并不排除讨论你所在国家的构成以及你的移民政策应该是什么样的必要性。我还发现很有趣的是,尤其是在欧洲,关于欧洲人是否应该对其国家的面貌拥有自决权的讨论的视野很窄,这套标准似乎只用来约束欧洲。没有人试图告诉日本人,“嘿,你太日本了。”不管怎么说,我想,在东京,这个比例是 98%,嗯——

DHH: ……日本人,对吧?比如,是否有人试图告诉日本人,如果他们的日本人比例下降到伦敦的水平,东京就会变得更好,不管怎样,他们的日本人比例是 37%?我不这么认为。所以在我看来,这是一种奇怪的、几乎是自我厌恶的感觉,我的意思是 Gad 称之为自杀式的同理心——

DHH: ……这里面到处都有这种心态,我还没完全弄明白。比如,这是从哪里来的?为什么会这样呢?但无论如何,我只是注意到,嘿,伦敦看起来不一样了。我更喜欢老伦敦,就像我更喜欢我在哥本哈根长大的街区一样,它在 80 年代的样子。我完全明白,有人会在这中间跳过好几层推理,然后说:“好吧,好吧,这是种族主义。”而我,也已经不在乎了。就像,这是一个公平的讨论。

DHH: 国家和人民有权制定自己的移民政策。有人认为不应该有边界,或者更进一步,把一切看作白纸,认为所有人都一样,把人从地球的一处搬到另一处,一切自然会顺利。经验并不支持这种看法。欧洲从八十年代起就在做这样的实验,结果并不好。如今欧洲有些政治力量想撤回这个实验,结束过去这种方式的大规模移民。我碰巧也相信这一点,多数丹麦人和其他一些国家的人也这么想:“你知道吗?是的,我们过去的做法没有奏效。

DHH: 我们必须做出一些改变。”我认为这并不意味着零移民。再说一遍,我是移民。我认为,总的来说,美国从移民中受益匪浅,但把话只说到这里,就有点偷换概念了。移民很大程度上取决于谁移民。当移民成为社会的净贡献者并且在大多数情况下他们融入了当地文化时,一个国家就会受益。

DHH: 如果你来到丹麦,你想成为一名丹麦人,并且你付出了所有的努力,为社会做出了贡献,我想大多数丹麦人会很乐意接纳合理数量的这类移民。如果你来到丹麦并且不想被同化,并且你是社会的净消耗者,并且你生活在一个平行的社会中,那么对于丹麦人来说,“呃,我们停止这样做吧”也是公平的。

Lex Fridman: 有趣的是,我对美国的移民制度不太了解,但据我了解,以择优为基础的移民制度在这里还没有通过。

DHH: 而且,美国文化也非常不同。直到我在这两个地方广泛生活之后,我才完全意识到这一点。美国有一种可以选择融入的文化,对于来自丹麦、乌克兰或其他任何地方的人来说,来到美国,接受美国的价值观、规范和文化,然后能够像美国人一样受到其他美国人的尊重,会更容易,也更容易获得认可。当有人讨论“美国是一个种族主义国家”时,这对我来说很有趣。我说,“你去过任何地方吗?你知道其他国家是什么样子吗?”就像,如果你认为美国是种族主义最严重的国家,那你只是被误导了。

DHH: 我的意思是,我们在丹麦生活时,就切身体会过这个问题。我的妻子是具有斯堪的纳维亚血统的美国人——……但几代人都在美国。非常困难。非常困难——

Lex Fridman: 哦,哇。

DHH: ……作为一个金发蓝眼睛的女人,她付出了各种努力学习语言并做了所有事情,但仍然非常非常难以融入丹麦文化。在某种程度上,如果情况正好相反,她是丹麦人并搬到美国,那么事情就不会那么困难了。这是另一回事。我的意思是,生活在像丹麦这样的国家,与一位具有斯堪的纳维亚血统的美国妻子一起生活,并付出了所有的努力,但仍然意识到,伙计,同化是非常困难的,即使你和当地文化已经有 97% 相通。天哪,如果你来自完全陌生的文化,这几乎是不可能的吗?

DHH: ……以及外国规范和其他内容。当然,这就是我刚才引用的统计数据所证明的,文化越不相似、差距越远,成功的可能性就越小。

Lex Fridman: 表达这种立场是否会让你失去友谊、人际关系?

DHH: 是的,但我想说,不仅仅是这一点。这更多的是 2020 年左右发生的巨大分歧,我认为许多政治断层线确实在那时出现了。我的意思是,在美国的简写,我想是你是不是 woke,也就是认同“觉醒”政治立场?显然,我原以为和一些人相处多年,关系一直不错,可政治分歧一出现,才发现已经不是那么回事了。我认为这很遗憾。我想我已经尽力去理解这些分歧从何而来,部分原因是这些年来我对其中几个话题改变了主意,就像,好吧,有时你只是在一段时间后改变了主意。有时,你在获得新信息后会改变主意。

DHH: 你可能会因为各种各样的原因和时刻改变主意,但我们不会在同一个时间表上改变主意,或者根本不会改变主意。

DHH: 因此,让身边有一些不是什么都和你想法相同的人,至少经常和他们交流,我认为这是相当健康的。我的意思是,我偶尔会和我哥哥讨论政治。我的意思是,我们在所有这些话题上的看法都不太一致,有时讨论会变得有点激烈,但随后也会冷静下来,我们意识到,好吧,好吧,所以我们在这一点上不同意,然后我们在很多其他事情上达成一致。我们欣赏很多相同的事情。现在,这实际上是我们在 Basecamp 爆发那场重大风波时发生的事情之一,我开始以一种全新的方式认识到这一点——早期的规范,即与陌生人甚至熟人,当然还有同事谈论政治、宗教或金钱,并不是一个好主意。

DHH: 如果不总拿政治分歧去刺激对方,那么你与某人保持良好工作关系的可能性就会大得多。所以我实际上认为自由派和保守派应该合作。我认为如果不同阵营彻底隔绝,并且不能有任何重叠或互动,那么这个国家的情况会更糟。我认为,如果你不一直关注彼此的差异,那么交往就会容易得多。一起专注于你们喜欢的事情。科技圈里有些人和我渐渐疏远了,可我们本来有那么多共同点,对 Ruby 或其他事物有如此多的共同热爱,这不是不幸吗?

Lex Fridman: 我想生活在一个谈论差异也很有趣的世界。即使是根本性的差异,也不要过于情绪化。因为差异首先就是有趣的地方。而且,这也是你成长的方式。如果差异被接受并且被聚集到可以讨论的社区中,这是一个社会健康的标志。

DHH: 我看过 William F. Buckley 节目的一段片段,觉得那就是很好的例子。我记得节目叫 Firing Line,还是——

Lex Fridman: 是啊是啊

DHH: ……类似的东西。他请了一位黑豹党成员来参加讨论。很明显,这两位先生在政治上没有太多共同点。他们能够进行 25 分钟的对话,我想我看了。Buckley 只是问,“那么你对此有何看法?你对此有何看法?”就像,对方的回答也很符合你对 70 年代黑豹党成员的预期。就像,没有太多和解的语气。我只是想,哇,这太罕见了。如果你今天看过那个节目,那将会是一场争吵。这只是来来回回的指责。

DHH: Buckley 能和那些他强烈反对的人好好谈话,认真探讨他们观点里的思想,让他们把理由讲出来。这让我想起一个已经远去的时代,我很希望能回到那种状态。我一直喜欢和朋友聊政治,前提是相信大家能就事论事,不会因为立场不同,就连对方这个人都一并否定。

Lex Fridman: 但在当今时代,这种情况变得越来越难实现。因此,你刚才所阐述的内容很重要,要经常说出来,以提醒人们我们都应该为之奋斗的理想,即能够存在分歧并谈论它们。因为政治很有趣。就像我已经习惯说我现在讨厌政治一样,但我真正的意思是,无论当前正在发生什么系统,有某些主题,我们知道你可以说的所有短语,说出某些话,就会被归进蓝色或红色阵营,接着来的便是争吵,而不是对话。

Lex Fridman: 如果不去管网上那些风向,我可能只是想客观分析一下世界局势,说一些自以为没什么冒犯性的话,却立刻有人跳出来:“这家伙是个左派混蛋”,或者“右翼法西斯”。我真的会吃惊,也确实吃惊过。我没那么紧跟网上的争论,只是认真阅读、做准备,比如了解乌克兰战争。结果某些话竟然会被当成站了这边或那边,并因此招来恶毒的攻击,这让我很震惊。

Lex Fridman: 但那次攻击的作用是说,“嘿,你这个混蛋,还以为自己可以不受阵营约束、自由思考,选一个阵营——……然后老老实实待在那个该死的阵营里。”穿上那件蓝色衬衫或红色衬衫。然后,实际上我意识到事情平静下来了。只要你说“我是蓝色阵营的”或者“我是红色阵营的”,系统就不再盯着你找茬。但如果你只是好奇地探索世界并推理世界,系统就会惩罚你。我讨厌这样,因为我想回到 Buckley 和黑豹党成员的那场讨论上。

Lex Fridman: 大家只是交换观点。可现实一点来看,我意识到除非我真的关心某个问题,否则不要提及政治。因为我意识到这是有代价的。他们会将你放入蓝色阵营或红色阵营。所以得更慎重地选择什么时候开口。

DHH: 是的。我也试图更加意识到这一点。然后,当我确实选择谈论它时,通常是因为我经过深思熟虑,而且我想……“你知道吗?这是值得的。”现在,我这么说,然后我也发现自己一直在想相反的事情,我因为技术上的工作关注了某个人,然后我——……知道了他的政治立场。我经常想:“我希望我不知道这一点。”所以,这是虚伪的——……然后想到其他人,然后说,“好吧,偶尔我会——

DHH: ……参与一场有争议的讨论,”然后你必须接受这是有代价的。我确实认为你应该、更多的人应该对此有所认识。再说一次,我们都在这里自相矛盾,但我们会说,“如果我们能在更自由、更开放的论坛上谈论政治,并从思想层面推敲不同观点,那不是很好吗?”是的,会的。目前在社交媒体等环境下这可能吗?这是相当困难的。现在,也许这只是一个阶段,我们终究能走过去。

Lex Fridman: 是的。我希望如此。

DHH: 也许有一种方法可以回到 Buckley 与黑豹党成员的对话,即使是在社交媒体上,这些讨论不会导致我们所经历过的那种恶意的围攻和取消文化闹剧,对吧?事实上,我认为我们现在比五年前更接近这个目标。比如,2020 年的部落主义和这些部落对异端分子实施的制裁比 2025 年要严重得多。当然是在科技领域。现在,我知道如果你在学术界,我的意思是,尝试进入我不知道的哈佛大学社会学系,并提到一些右翼思想。我认为这不会很好,我也不认为你会很快恢复过来。

DHH: 但在科技领域,至少在许多其他商业领域,现在可能会出现与 2020 年共识不一致的观点。这是肯定的。

Lex Fridman: 不过,Rails 社区里还是有些风波,其他地方也有。后来怎么样了?都还好吗?

DHH: 从某种意义上说,每一轮风波都在缩小。所以,就好像我们在 2020 年左右,在同一时间,我们经历了大规模风波的爆发高峰,而其他社区也经历了争议风波的爆发高峰。然后你就会发现,每次新爆发的事件都会减少。那些执着于这种意识形态斗争的人,数量也越来越少。在这一点上,在我看来,X 发生的最好的事情之一就是 Bluesky 和 Mastodon 的出现。因为这有点像这个蜜罐,专门针对当时 X 和 Twitter 上最恶毒的人,对吗?

DHH: 他们聚到一个越来越小的回音室里,一轮又一轮地清洗“不够纯粹”的人,每轮都再缩小一点,最后剩不了多少。而现在留在那儿的人,对我而言,就是眼不见、心不烦。这并不是说 X 是某种完美的地方,或者那里偶尔没有行刑队,或者没有……但是这样的情况比较少。就像,每次我被卷进 Mastodon、Bluesky 上的讨论,或者只是远远围观,就像,“哦,该死,是的,这就是 Twitter 过去的样子。天哪。”现在你实际上可以像我一样在 X 上,而且,我 90% 的参与都是关于很酷的 Linux 的东西,很酷的技术东西。

DHH: “看,我发现了一台新电脑。你能看出它有多快吗?”我可以与其他同样对计算机感兴趣的人进行这些对话。然后还剩下 10%,好吧,我会插话一些有争议的事情,我们可以在那里进行一些讨论。然后我们就可以重新对计算机感到兴奋了。该算法实际上非常擅长找到你会感兴趣的东西,或者说,未必有趣,而是让你停不下来。有时会让你生气,但还是会吸引你,因此,从实际行为中显露的偏好是大多数人想要一个“为你”页面。他们不满足于只看关注账号的 feed。

Lex Fridman: 不,但他们沉迷于“为你”页面,对吧?

DHH: 他们……是的,是的。这是真的。

Lex Fridman: 我认为 LLM,如果我们有一个强大的 LLM 来做个性化的 feed,它会做得更好。难的是怎样把它大规模提供给所有人。

DHH: 嗯,问题是,reward function 优化的是 engagement。一旦一旦把 engagement 当目标,就会顺着人的原始本能走,问题也就来了。但我也不想那么消极。对我来说,我知道我们都有自己的个性化算法,有时它会变得有点过分。但我想说,平均而言,在过去 10 年里,这是有史以来最好的 X。我说,作为一个关心很多技术谈话、很多 Linux 谈话的人,等等。现在,这种情况能够以一种不会经常被那些想将其拖入某些政治讨论的人来破坏的方式发生……

DHH: ……我发现真的很棒。我觉得 X 很适合找到这样的讨论。现在,它也是一个寻找其他东西的地方,我们都有自己的算法,所以你不能对 X 是什么或不是什么一概而论。你的 feed 可能和我的 feed 完全不同,也和别人的 feed 完全不同,对吧?

Lex Fridman: 是的,我无法对此发表评论,因为我采访了各种各样的人,我的提要可能只是——

DHH: 对你的 feed 来说,这是好事还是坏事?毕竟你也得关注那些内容,对吧?

Lex Fridman: 不好。

DHH: 好的。

Lex Fridman: 这很糟糕,因为我可能会说,“我正在吃这个苹果。它太美味了。”

DHH: 哦。

Lex Fridman: 然后一群人会出现,“好吧,那是因为你是 Zelensky 的托——

DHH: 是的,对。

Lex Fridman: ……或者你就是 Putin 的托,你这个狗屎。”就像,好吧。我就回到——

DHH: 我偶尔也会碰上,心想:“等等,什么?我们到底在聊什么?你为什么突然这样说话?”这也是我喜欢播客的原因。即使写长文章、认真展开论证,读者听到的,也可能是他们脑子里预先替我配好的语气。论点还没看,就已经认定“这家伙是个法西斯”之类的,再带着标签去理解每个字。但如果亲眼看见、亲耳听见我是怎么说的,他们还是可能不同意——当然,很多人就是不同意——可要把眼前这个人彻底否定、恨之入骨,就没那么容易了。

DHH: 至少这是我发现的,也是我得到的回应,人们会说,“好吧,我有一定的观点,然后我在 Lex 的节目里听你讲了以后。这实际上听起来更合理。”

Lex Fridman: 但更重要的是,如果人们只是对其他人采取这种方法,例如假设他们是好人,我会很高兴。

DHH: 是的。

Lex Fridman: 然后,如果他们有你不同意的观点,他们是一个有观点的好人。你也许会认为他们很愚蠢,好吧。只是认为他们想岔了。但把他们视为好人。可偏偏贬低别人、辱骂别人,又最容易吸引互动。

DHH: 对。

Lex Fridman: 如果你接近别人时,就只想着寻找他的缺点,你总会在他们身上发现不好的地方。他们有一些令人烦恼的事情。

DHH: 100%。

Lex Fridman: 如果你以这种方式看待别人,你就不会从中吸取教训,而且你的心里会充满仇恨。这样生活、这样对待世界,实在很糟。可互联网偏偏会鼓励这种做法。如果你只是接近那些你真正不同意的人,那就太好了,就像,哦,我可能会从这个人身上学到一些东西。黑豹党成员也好,William Buckley 也好,我们可能本来会讨厌他们,但也可以试着去喜欢他们。

DHH: 说个小例子吧。有个人叫 Theo,不知道你有没有关注他。

Lex Fridman: 是啊是啊。

DHH: 我们因停止使用 TypeScript 而发生了一些事情——

Lex Fridman: 是啊

DHH: ……我们在一个项目里这么做了,他不赞成,还对这件事和其他一些做法发表过批评。在那之后我想,真是个笨蛋。而且,你知道吗?我仍然认为这是一个愚蠢的举动,然后我也可以想,好吧,这家伙真的很喜欢 AI。他正在尝试所有这些模型,我们可以分享一些对此的兴奋,所以我昨天才开始关注他。

Lex Fridman: 太棒了。

DHH: 我当时想,你知道吗?我不必在所有事情上都同意你的观点。我甚至不必喜欢你所做或所说的一些事情。无论如何我都可以关注你。因此,如果我能重新关注 Theo,那么我认为这里就有世界和平的空间。

Lex Fridman: 对,他就是个很好的例子。很有主见,也经常改变想法,有时说话有点刻薄,但我觉得他本质上是个好人。

DHH: 不管怎样,我只是,你知道吗?当有人谈论我关心的事情时,我的 feed 就会更有趣,是的,我不必在所有事情上都同意你的观点。我就是不必这样。

22 长寿、过度优化与对死亡的恐惧​

Lex Fridman: 你提过妻子说过的一句话,我觉得挺有意思:科技圈附近这些男性对极端长寿的执着,有点像女性的厌食症,是焦虑和失控感在身体上的表现。听起来好像真有那么几分道理。

DHH: 很多人都觉得有道理。那条推文很火,不知道你注意到没有,Bryan Johnson 也来回复了。我能理解他为什么觉得这话是在挤兑自己,而且我想,Jamie 当时想到的人里,大概也包括他。可这又是个例子:我虽然不认同 Bryan 的目标——他的口号好像是“Don’t Die”——

DHH: 我其实是愿意接受死亡的,不想永远活下去。比如,我认为人类的寿命大约为 90 到 100 岁听起来比较合适。我拥抱生命的有限性。我们不必在这一点上达成一致。事实上,Bryan 对我来说是一个更有趣的人,因为我们不同意这一点,而且 Bryan 愿意拿自己的身体去实践这个目标,这真的很有趣。现在,我可以有这样的观点——这真的很有趣,我很高兴 Bryan 正在追求他的这种激情——然后也发现我妻子的分析是正确的,似乎确实存在一些潜在的、我不知道的恐惧……

DHH: 昨天我和 Jamie 谈论了这件事,她把这件事和一种感觉联系起来:有人觉得自己还没有真正活够。他们生活不够的原因之一也许是现代社会现在是一个彼此监视的社会,不一定是国家在监视,而是人们互相看着。到处都有拍照手机。每一次轻率行为,甚至是忘情的欢乐,或者有些出糗的举动都极有可能被记录下来,然后被分享到被嘲笑的地步。在这种情况下,人类的理性反应是退缩,确保你不会像没有人在看一样跳舞,因为——

DHH: ……他们很可能会拍下你的样子,放到网上,让你永远尴尬下去,所以也许你根本不应该跳舞。因此,如果我们都退缩到几乎没有真正生活的地步,我们就会坚持希望它永远持续下去。现在——

DHH: ……我的意思是,我确信这个观点并不适用于所有情况。我甚至不知道这是否适用于 Bryan 或这里的其他人。但我认为这是有道理的:如果你觉得自己真正活过,你就可以认为我已经活得够多了,而且结局并不是什么值得抗争的事情。现在,是否也有可能这一切都只是面对死亡时的一种事后自我解释,如果明天有一种长生不老的药丸,我们都会服用它?是的,那是可能的。如果我们这样做,社会是否也可能变得更糟?是的。人类的寿命是否有可能是出于社会学原因而不仅仅是生物学原因?是的。

DHH: 所以我认为这些都是有趣的问题,我只是认为她的分析确实有所帮助。这个讨论是后来出现的。我的意思是,我认为那条推文已经有一年了。但就在最近,我们一直在谈论那些把生活过度优化的人。我看到 Chris Williamson 在 Modern Wisdom 中说,“是的,好吧,也许我们确实有点过分了。”触发事件的是 Diary of a CEO,主持人在其中说了一句话,大意是“我喝了一杯酒,接下来的三天就毁了。”

Lex Fridman: 好的。

DHH: 对我来说,我的意思是,在他的情况下,我确信这是真的。就像,如果你已经很长时间没有喝任何酒了,而你只喝了一点,确实可能有影响。但我认为,对于很多人来说,包括我自己在内,还有一些东西触发了一种本能反应,我当时想,“操,伙计,我现在应该喝一杯酒,尽管我通常不喝酒。”事实上,我认为喝酒就是一个值得仔细看的小例子。看起来大家都不喝了,酒类销量降了很多……尤其是在年轻人中。一方面,就纯粹的健康指标而言,无论如何,我们可以说,“哇哦,这不是很棒吗?”

DHH: 然后我说,“是的,我不太确定是这样。”酒精作为社交润滑剂的作用,也许被忽视了,的确被忽视了。我的意思是,我们绝对处于孤独、痛苦、抑郁等流行病之中,其中相当一部分可能是因为你与其他人互动不够。现在,那是在我们讨论恋爱和成家之前,对吧?这些指标也在下降,人们越来越难找到伴侣。还有——

DHH: ……其中很多已经转移到具有各种负面结果和后果的应用程序,对吧?也许我们会回顾过去,或者也许我们已经在回顾过去并思考,“呃,你知道吗?也许偶尔喝醉一次并不是世界上最糟糕的事情。”先不说喝不喝醉,也许每个周五或周六外出时喝几杯酒就是帮助社会达到现在的样子的一部分。也许事实上,人类酿造、饮用发酵饮料已有大约 13,000 年,这件事也许有它的社会作用,而我们却在没弄清作用之前,就拆掉了“Chesterton 的栅栏(Chesterton’s fence)”,最后自食其果,对吗?

Lex Fridman: 正如你提到的,本着这一精神,所以当我穿越中国农村时,我在 20 岁出头的时候确实吸了一点烟,但我只是为了那次旅行而抽烟——

DHH: 建立社交联系的媒介,对吗?

Lex Fridman: 我平时几乎不喝酒,可那趟旅行为了和人交往,喝了很多。这是他们表达爱的方式。我还吃了很多碳水化合物,这……我平时吃的是低碳水饮食。我就是喜欢肉。因为这是他们表达爱的方式。在那里,人们会一起抽烟;而在大多数社会里,人们会一起喝酒。这是一种纽带。在许多情况下,无论你如何衡量,其带来的好处都可能超过长期的负面后果。

DHH: 这是现代性的短视,我们把事情简化为,嗯,在这项长期研究中,一杯就意味着你患某些心脏缺陷的风险增加了 0.1%。是的,但如果你根本没有真正生活,那还有什么意义呢?再说一遍,翻转另一面也很容易。就像唯一的生活方式就是每个周末喝醉、吃一堆垃圾、每天抽 40 支烟。不,不是。就像它不一定是非此即彼。这是我不再佩戴 Oura Ring 的原因之一。所以我戴着 Oura 睡眠环很多年了,四年了。有一天,我想,“我不需要知道我……”……“一夜没睡好。”这我自己知道。我不想说它增加了焦虑,因为我本来没那么焦虑,但它多加了一遍提醒——

DHH: ……我一晚上没睡好,到底是为了什么?为什么我需要所有这些统计数据?为什么我需要优化一切?以至于,在 Diary of a CEO 中的那件轶事之后,我又想,“操,我想要相反的东西。”就像——我几乎不喝酒。大概一个月才喝一杯。但你知道吗?我周末倒该喝上一杯,也许两杯。

DHH: 另外,我一直不怎么为饮食操心,这得益于我娶了一位……先插一句,千万别把四十多岁的女人叫作 wonderful woman。我妻子当时气坏了:去年我在她生日那天来录节目,已经够过分了,居然还在节目里这么称呼她。在她听来,wonderful woman 像是在说一位住在 Rochester 郊区、六十五岁、叫 Nancy 的女士。我当时还想辩解……“不是,我真不知道啊,我是丹麦人,哪懂这个?”可这话也没讨着好。所以,以后我改说 awesome woman。

DHH: 如果你娶了一位 awesome woman,她不仅会做饭,而且喜欢做饭,你知道吗?这里有一种非常传统的劳动分工,在人类社会中已经相当稳定了几万年,这也许也不是世界上最糟糕的想法。我还知道有很多男人喜欢做饭,也有很多女人不喜欢做饭。就算这听起来有点刻板印象,它也确实帮到了我。就像,我认为如果我不定期吃相对健康的食物,我就无法对食物如此放松。但总体而言,就是别再把生活处处当作优化任务,也不必因此走到另一个极端。你也不必是沙发上的胖子。你可以四处走动。

Lex Fridman: 是的。然后我们谈论的更重要的一点是生命的有限性。

DHH: 是的。

Lex Fridman: 我同意你的观点。

DHH: 这其实成了我放进 Omarchy 的一个功能:memento mori,铭记死亡。点一下 Amaci 里的时钟,会弹出日历。里面第一个有意思的东西,是从网上借来的点子。有个账号叫 Years Progress,每天更新一条进度,比如“2026 年已经过去了 63%”,不知道你见过没有,就是一条不断填满的进度条。我把它放进了日历。但如果双击它,就会问你:“哪年出生?预计能活到几岁?”默认寿命是 90 岁。我填入 1979 年,然后在年度进度下面——

Lex Fridman: 噢,真漂亮。

DHH: ……会多出一条进度条,显示你的人生已经走过多少。我想我是 62%。我想,如果你将鼠标悬停在它上面,就会显示“Memento mori”。

Lex Fridman: 真漂亮。

DHH: 很多人觉得它很病态,但这就是为什么它是隐藏彩蛋。它不会直接展示出来。你必须点击一些东西才能到达那里。我喜欢这个提醒。我喜欢提醒我时间是有限的,我应该充分利用它。而这也是有孩子带来的一种特别体会。你真的意识到那些陈词滥调都是真的。天哪,时间过得真快。我还记得如今 13 岁的孩子一岁、两岁时的样子。我当时想,“这只是昨天。”它之所以成为陈词滥调,是因为它是一种共同的经历。陈词滥调是好的。它们提醒你,你是人类经历的一部分,而在你之前,也有人经历过同样的事情。

23 永恒轮回与人类文明的未来​

Lex Fridman: 我得问一下。你提到那位 amazing woman,一位了不起的女人,而且厨艺很好。

DHH: Amazing。

Lex Fridman: Amazing。

DHH: 一定记住:不是 wonderful,要说 amazing。

Lex Fridman: Amazing。对了,你之前是不是吐槽过牛角面包?我在推文里看见了。丹麦的牛角面包就更好吗?

DHH: 其实丹麦牛角面包不是特别好吃。在我看来,在所有地方中,唯一能找到半像样的牛角面包的地方是 7-Eleven,这对我来说很搞笑,因为在美国的 7-Eleven 是一个地方,至少在芝加哥,你会去买一杯冰沙,并尽量避免被谋杀。但在丹麦,7-Eleven 是一家非常高档、超级好的便利店,而且他们恰好制作了不错的牛角面包。我在美国生活了 20 年,这一直让我感到困惑。我还没有吃过一个牛角面包能达到哥本哈根 7-Eleven 便利店牛角面包的水平。这似乎不太可能。

Lex Fridman: 你明白为什么了吗?

DHH: 不,我真的考虑过聘请一名调查记者来查明真相,因为我听到的理论数量五花八门。这是水。这是黄油。这就是技能。这是这个,这是那个,这是另一件事。我想,这些解释我都觉得说不通。如果是黄油的话,直接进口不行吗?我记得这边一些超市就卖 Lurpak 的丹麦黄油。所以不可能是这样。可以是技能吗?不,这不可能是技能。美国有很多法国人和比利时人,他们是世界上最好的牛角面包师。比如,是什么原因?然后我得到第二件事,那就是……“不,不,你只是没有去对地方。”我真的去过十五家所谓的——

DHH: ……“正确的地方”,所有的牛角面包都是屎。因此,在我离开地球之前,我必须弄清楚为什么美国无法制作出合适的牛角面包。我不知道,我甚至没要求达到法国、比利时顶尖牛角面包的水平——……它们是世界上最好的牛角面包。我只想吃到哥本哈根 7-Eleven 那种水平的牛角面包。这样的要求是否太过分了?

Lex Fridman: 这是一个令人着迷的谜团。再把话题放宽一点,你最喜欢什么……这让我想知道,你最喜欢的一餐是什么?就像,如果你,如果我给了你最后一顿饭,然后杀了你。

DHH: 这取决于是午餐还是晚餐。如果是午餐的话——

Lex Fridman: 一顿饭。什么……我觉得如果你被谋杀了,午餐或晚餐并不重要。

DHH: 嗯,这取决于你一天中的什么时间被谋杀。

Lex Fridman: 噢,我明白了。

DHH: 如果是下午执行,我只吃午餐。

Lex Fridman: 好的。

DHH: 如果我吃午饭,那就是在哥本哈根北边的 Louisiana 博物馆。两天前我刚刚和 Jamie 一起去过那里,我们一直都去那里。博物馆很可爱。我们并不是冲着展览去的,而是去那里的餐厅。这本身听起来很疯狂。就像——

Lex Fridman: 是的,确实如此。

DHH: ……你要、你要开车半个小时去一家自助餐厅。好吧,碰巧的是,这可能是我一生中吃过的最好的午餐。那里的厨师棒极了,不仅食物很棒,更让我这个习惯从系统角度想问题的人惊讶的是,我们去的时候,我想可能有 200 个人在等待他们的食物。

Lex Fridman: 噢,该死。

DHH: 我们的食物五分钟就送来了。他们的菜单很小,而且显然是批量制作的,而且非常美味。

Lex Fridman: 只是博物馆的自助餐厅吗?

DHH: 这是博物馆的一家自助餐厅,恰好有我一生中吃过的最好的午餐。

Lex Fridman: 具体是什么菜?午餐都吃些什么?

DHH: 北欧美食。有意思的是,看菜单时我就在想:“要是小时候看到这个,我肯定会说,这里我才不吃呢。”

Lex Fridman: 好的。

DHH: 就像,我不知道——

Lex Fridman: 这很奇特。

DHH: ……根茎类食材、洋葱,还有各种健康的东西,光听着一点食欲都没有。可坐下来一吃,简直像听见天使唱歌。不过,最绝的还得单独说:黄油。他们的打发黄油,是我吃过的全世界最好吃的黄油。

Lex Fridman: 我认为这也与牛角面包之谜有关。

DHH: 这之间肯定有点关系。但实际上——即使在巴黎,我也从来没有吃过像哥本哈根 Louisiana 博物馆的黄油那样美味的打发黄油。我真的愿意开车 30 分钟……去 Louisiana 博物馆的自助餐厅吃面包和黄油。

Lex Fridman: 嗯,你是怎么发现的?就在有一天你去了博物馆,然后——

DHH: 我想我们刚刚去了博物馆——

Lex Fridman: 你尝了一整道菜吗?

DHH: ……我们吃了午餐,我们就像……

Lex Fridman: 这很奇怪。

DHH: 这可以与最好吃的餐厅相媲美——……我一生中去过的地方,我去过 Noma 好几次,该尝试的也尝试过,而这家完全能和那些餐厅并列。

Lex Fridman: 好的。既然你提到了,晚餐怎么样?你必须思考一些不同的事情吗?

DHH: 嗯,我觉得哥本哈根有很多不错的选择,但实际上我会选西班牙的一家。马贝拉有间酒店叫 Puente Romano,就在海边。它的海滩餐厅供应新鲜海鲜,难以置信的美味。名字我一时想不起来了,但是,是的,如果你查一下,Puente Romano 的海滩海鲜店非常棒。

Lex Fridman: 美味的食物有多少是取决于和你在一起的地方和人,对吧?或者说你第一次来的时候的经历?

DHH: 我的意思是,氛围确实有帮助,但我认为我的味蕾也只是——

Lex Fridman: 好吧,那个——

DHH: ……很能分辨——

Lex Fridman: 所以它确实是好吃,

DHH: ……味道。

Lex Fridman: ……这只是美味的食物。

DHH: 是真的好吃。就拿那家餐厅来说,人特别多,绝不是那种让我想舒服地坐上两个小时的地方。可食物实在太好吃了。

Lex Fridman: 这是我在全国各地旅行时所做的事情之一,我意识到别先入为主,多试一试就好。因为我猜你可能会感到惊讶。也许我会找到你的牛角面包。好吧,我们已经讨论了生命终有尽头。我们谈论了食物。

DHH: 临终安排都定好了。

Lex Fridman: 一千年后,你认为人类、人类文明的未来是什么?你认为我们能成功吗?

DHH: 一千年后?

Lex Fridman: 是的。

DHH: 伙计,我很难预测 12 个月后的情况。

Lex Fridman: 我知道。

DHH: 一千?

Lex Fridman: 你认为我们有机会吗?

DHH: 哦,我赌乐观。我要赌一个多行星物种。我敢打赌 Elon 会把火箭送上火星,我们就会弄清楚如何弯曲时空并发现一些虫洞之类的东西。

Lex Fridman: 一旦我们这样做了,你认为,你认为地球上的所有人类都会死一两次,并在我们得到良好的备份后再恢复回来吗?

DHH: 我的意思是,这实际上是我最喜欢的《黑镜》剧集之一,他们被上传到 20 世纪 80 年代海滨小镇的某个地方。我只是想,哇,这个设定既阴暗,又很美,因为大家都认同:80 年代真的挺棒。就像,我对大多数年代没什么怀旧情结,但我确实对 80 年代怀旧。

Lex Fridman: 但是——

DHH: 他们会说,无论你在什么地方、什么时间,你 12 岁或……或 14、15 岁时听的音乐,诸如此类的东西,都会让你难以忘怀。就像,不,我只是,到 80 年代结束时,我也才十岁。这就是我的童年,至今我仍然对 80 年代有着难以置信的喜爱。所以如果我要上传到天空——

Lex Fridman: 你希望它是 80 年代。

DHH: ……我就选八十年代。

Lex Fridman: 哇。我想我实际上从来没有听过有人这么说过。通常是 70 年代或 90 年代。

DHH: 哦,还有——

Lex Fridman: 因为八十年代是——

DHH: 我真的不喜欢 90 年代。我们可以谈谈这个吗?

Lex Fridman: 不,我说完了。还没说完。

DHH: 对我来说,这是虚无主义的伟大转折点。音乐、流派、时尚……一切都从魅力、流行、乐观,甚至雅皮士等一切——……转变为 Grunge 摇滚和 Nirvana 乐队。即使如此,我的意思是,我喜欢音乐,但我不喜欢背后的价值观,不喜欢它所依托的那套东西。这里面有一种失败主义——……回想起来,我回想起来,如果我要重新接入 Matrix,那将是 80 年代。

Lex Fridman: 那充满了乐观和乐趣——……还有色彩。

DHH: 是的。我记得我有这条橙色的裤子——……上面有白色的点。这只是 80 年代孩子们穿的很正常的事情。我今天从来没见过这样的事。或者我的意思是,即使在 90 年代,一切都变成了西雅图灰色。简直是大倒退。

Lex Fridman: 所以 Nietzsche,你知道,这种永恒轮回的想法。如果像《土拨鼠之日》那样永远循环下去,你会希望穿着 80 年代带有白点的橙色裤子。

DHH: 也许我会跳过橙色裤子,但是——……我肯定会选择 80 年代的。

Lex Fridman: 明白了。好吧,DHH。非常感谢你所做的一切。感谢你给我们所有人带来了灵感,感谢你在世界上创造了很酷的东西,也感谢你今天的发言。

DHH: 随时。Lex,再次感谢你邀请我。

Lex Fridman: 是的。感谢你收听我与 DHH 的这场对话。如果你想支持节目,请查看简介中的赞助商信息;那里还有联系我、提问、反馈等链接。最后,送给大家 Ralph Waldo Emerson 的一句话:“一旦你作出决定,整个宇宙都会协力促成它。”感谢收听,希望下次再见。