关注+星标公众号,不错过精彩内容
整理 | 屠敏
来源 | CSDN
“对于 AI,我有一种爱恨交织的复杂情感。”
近日,在北美开源峰会上,Linux、Git 的创建者 Linus Torvalds 与 Verizon 开源项目办公室负责人 Dirk Hohndel 进行了他们的第 30 次公开对谈(https://www.youtube.com/watch?v=fi29pfLcW4I&t=2s)。谈及 AI 时,Linus 给出了这样一个颇为耐人寻味的评价。
在 Linus 看来,过去二十多年里,Linux 内核社区形成了一套成熟且稳定的开发和维护流程。然而大约从半年前开始,情况发生了变化——“最近两个版本的 commit 数比过去几年增加了约 20%。起初我以为大家是对 7.0 版本感到兴奋,但事实证明我错了。”
他发现,变化的源头是 AI。AI 涌入 Linux 项目后,一方面,帮助大家发现过去难以察觉的问题;另一方面,大量由 AI 生成的重复性漏洞报告开始“压垮”维护者。
而对于当下火热的 AI 编程浪潮,Linus 依旧保持着一贯的犀利风格:“如果你炫耀 99% 的代码是 AI 写的,那我敢打赌,你 100% 的代码其实都是编译器写的。”
那么,在这位开源世界最著名的“代码守门人”眼中,AI 究竟改变了什么,又没有改变什么?
在这场对谈中,Linus 不仅分享了 AI 给 Linux 社区带来的真实影响,还谈到了漏洞披露规则、AI 编程、开源项目维护、给年轻开发者的建议,以及自己的业余爱好等话题。他坦言,AI 发现 Bug 是一件好事,但整个开源社区仍需要时间去适应这种全新的工作方式。


Linus 的业余爱好:“我将改变音乐世界”
Dirk Hohndel:大家早上好,我参与 Linux、开源以及其他很多领域已经很长时间了。我总是很珍惜能有机会和这位老友聊天。
Linus Torvalds:是的,我是 Linus。我已经很久不参加正式的公开演讲了,这就是为什么我们一直保持这种问答(Q&A)或“炉边谈话”形式的原因。
Dirk Hohndel:这实际上是我们的第 30 次对话了,所以今天我们要庆祝一下我们的小小周年纪念。让我们先聊点不一样的。我知道你是 3D 打印的忠实粉丝,巧合的是,我们拥有同款 3D 打印机。在这个技术领域,基本上所有东西都是开源的,包括整个软件栈。我们使用的工具通常也是开源的。
我从你那里了解到,我们都不喜欢可视化工具,而是更喜欢实际编写程序代码的工具。所以关于 OpenSCAD(用于建立实体 3D 物件的开源软件),你实际参与过它的代码贡献吗?还是仅仅作为一名使用者?
Linus Torvalds:我只是个使用者。不少偏理智的人可能会使用那些带图形界面的可视化工具,能直观看到自己在做什么。但当你像我一样有编程背景时,我更喜欢用文本描述事物,将 3D 打印视为一种编程。
确实,所有的相关软件都是开源的。但与此同时,这对我来说也是一种消遣方式,我可以接触到物理实体。不过,这显然不是我的日常工作。在写代码时,我喜欢这种能极其贴近硬件并在不同层面上工作的感觉。我会使用这些开源工具,但从未想过要加入那些项目的开发,因为那和我熟悉的代码领域太不一样。
Dirk Hohndel:对我来说,最有意思的地方在于,每当我觉得某个东西不好用,想亲手把它改好时,我都会去看看它的代码。结果往往是发现自己根本不知道该从哪里下手。但这恰恰是一个很好的学习过程。它会不断提醒我,这个世界上还有无数我不了解的领域,而这些领域里依然有很多人在做着有趣的事情。
另外一个很有意思的变化是,过去很长一段时间里,人们总觉得开源软件功能强大但体验粗糙,而闭源软件则更加精致。但现在情况已经不同了。如今很多开源软件的界面和用户体验都非常出色,我也非常认可它们的质量。以 3D 建模软件为例,一些开源产品已经达到了行业领先水平。
Linus Torvalds:我认为,我们已经走过了那个“开源只属于工程师”的时代。
看看现在有多少人在游戏领域讨论 Linux 就知道了。当然,我不会说今年就是“Linux 桌面元年”——这个玩笑我从 1998 年就开始跟媒体讲了。但我确实认为,在商业软件和各种严肃应用场景中,开源早已获得广泛认可。
我的观点一直没变:软件本身极其复杂,而管理复杂基础设施最有效的方式就是开源。因为开源能够让任何人都有参与的机会。
当然,大多数人其实并不想参与开发,就像我使用 3D 打印软件时,也不会主动去贡献代码一样。但开源的价值就在于,无论你来自哪家公司、哪个国家,只要你愿意参与,机会始终在那里。
Dirk Hohndel:我们经常谈论你的非主流项目。我长期以来一直在开玩笑说,Linus 不止做了两个项目(大家常说的是 Linux 和 Git),其实他做了三个。Linux、Git 和 Subsurface(一个潜水日志程序,目前由我维护)。但事实证明,就在几周前,Linus 做了第四个项目。Linus 的 GitHub 上有一个”项目,你甚至可以自己动手做一个吉他音效踏板。
Linus Torvalds:先别急着玩,在你开始玩之前,你得先把它制造出来。所有的制造文件也都是开源的。所以你可以选择把设计文件发送给你喜欢的 PCB 制造商。你可以尝试手动放置组件,但我建议你不要这样做,因为那非常细碎。
我最开始是手动做的,但后来我决定,对于更高级的项目,你确实需要让专业人士为你放置组件。如果你喜欢吉他踏板或音乐,并想要一个真的很酷的吉他踏板,你可以自己做一个。它附带硬件和软件设计文件。
Dirk Hohndel:我是预览版的测试者之一,效果真的很不错。它的地址是 github.com/torvalds/guitar-pedal,去看看吧。
Linus Torvalds:我也将改变音乐世界。我很确定。
Dirk Hohndel:我也对此深信不疑。

提交量暴涨 20%,原以为 7.0 吸引了大家,才发现是 AI 闯入 Linux
Dirk Hohndel:不久前你发布了 Linux 内核 7.1-rc4。按照惯例问一下,现在进展如何?
Linus Torvalds:我常说我们在过去 20 年里一直做着同样的事情。我个人做了 35 年,但自从切换到 Git 并建立现代发布流程后,这个过程已经稳定运行了 20 年。
过去我总说一切顺利、进展平稳。但大约半年前,情况发生了变化。
在过去的六个月里,我们看到了大量的 commits,全是微小的细节。从数据上看,最近两个版本的提交量比过去几年增加了约 20%。起初我以为大家是对 7.0 版本感到兴奋(我会定期更改主版本号),但事实证明我错了。真正的改变在于 AI 工具。AI 工具已经足够好用了,以至于我们看到各方面的开发活跃度都有了明显提升。
Dirk Hohndel:六个月前,我们在东京谈过这个,这些工具实际上降低了初始门槛,降低了编写 Linux 内核补丁的入门难度。这些工具承担了很大一部分工作,这确实产生了影响。而且这种影响不全是正面的。在 rc4 的发布公告中,你宣布了新的安全披露指南,其中特别提到了对 AI 的看法。
Linus Torvalds:现场有多少人使用 AI 来辅助编程?看来几乎所有人都在用。对于 AI,我有一种爱恨交织的复杂情感。
从技术角度看,我非常喜欢这些工具,觉得它们非常有用且有趣。但它确实也带来了一些痛点。在 Linux 乃至大多数项目中,最大的痛点不在于代码本身,而在于当它强迫你改变工作方式时。人们习惯了原有的节奏,知道自己喜欢怎么工作。我大约在 2000 年左右不得不改变我的工作方式,因为随着 Linux 的成长,我个人已经无法再维持原来的管理规模了。那是我在内核开发中最痛苦的经历之一,那是 25 年前的事了。
我认为我们现在在 AI 身上也看到了类似的影响:它迫使人们走出舒适区。AI 生成的错误报告和代码带来了一些社会性问题。这不单纯是“Linus 的管理规模”问题,而是人们整体无法应对这种规模的增长。学会如何以负责任的方式、以能与社区和其他开发者协作的方式使用工具,这都需要时间。
我们最近遇到的一个痛点是。当人们用 AI 发现 Bug 时,很多时候这些 Bug 确实可能是安全问题。几十年来我一直说安全 Bug 就是 Bug,但硬币的另一面是,Bug 往往也意味着安全隐患,你甚至可能还没意识到这一点。
人们觉得用 AI 发现了一个 Bug,第一反应就是发给安全列表。结果内核的安全列表被成百上千的人用同样的 AI 工具生成的重复报告给淹没了。结果往往指向同一个潜在原因,但我们却被这些报告轰炸了。而那个列表的参与者很少,因为它本应是高度保密的,我们把所有时间都花在了把这些报告转发给更了解相关领域的开发者上。
所以我们做出了政策调整:基本上,如果你是用 AI 发现的 Bug,请直接将其视为公开信息。因为如果你能用 AI 发现它,另外 100 个人也能用 AI 发现它。当然,对于真正的安全问题,你可能不想把漏洞利用方法公之于众。不要成为那种在周五下午公开炫耀“看,我可以搞垮这家大公司”的人。告诉大家问题是什么,但没必要教大家如何让别人过得很惨。所以我们在 AI 方面确实遇到了一些痛点。
这并不是技术本身不好,我很喜欢这项技术,但它引发的社会问题还有待解决。
Dirk Hohndel:我认为“社会问题”是关键。这种趋势已经存在很久了,我不确定 Heartbleed 漏洞是不是第一个,但有些公司就喜欢给 Bug 贴标签、做 Logo、创建域名,想以此出名。然后他们在与维护者沟通之前就将其公开。最近 Linux 内核有四个本地提权漏洞,其中两个就是以这种方式披露的。我的回应总是:我永远不想和这样的公司合作,因为你对 Linux 这么干,你就会对所有人这么干。
但这四个 Bug 确实带出了你刚才谈到的挑战:在内核开发者了解这些漏洞与全世界了解它们之间,时间差是零分钟。所以你根本没有机会去修复它,没有机会准备补丁,没有机会帮助那些运行代码的人。所以你说你希望所有 AI 发现的 Bug 都公开。我理解其中的逻辑,但你能进一步解释一下,这如何避免维护者总是处于被动地位吗?
Linus Torvalds:遗憾的是,我认为我们无法回避这一点。内核有大约 3500 万行代码,代码量巨大。这意味着每天都可能会有 Bug 发生,这并不奇怪。
过去我们修复 Bug 时,可能不会详细说明它的安全影响,只告诉大家“已修复,请升级”,大多数人并不会意识到发生了什么。但在 AI 时代,自动化分析变得极其简单。
上周我们修了一个 Bug,三小时内就有博客文章分析了它的安全影响。安全人员喜欢关注度,这是他们的成名之道。所以人们会竞相运行 AI 工具并发布惊人的公告。这就是现实。
但这并不意味着我们不该做开源。如果你认为 AI 不能对闭源软件进行逆向工程,那你就错了。我认为闭源软件的情况甚至更糟,因为 AI 无法帮你修复问题,但 AI 绝对能帮你找到那些漏洞。
Dirk Hohndel:你刚才提到了一点非常重要。我注意到,最近几周出现了一些大张旗鼓的漏洞披露。一些公司愿意花费大量资源去指出某个 Bug,但奇怪的是,尽管涉及的都是开源代码,这些披露往往没有附带修复补丁。
这又回到了社会责任感的问题。为了在媒体和记者面前获得关注而发现一个 Bug,却不愿意进一步推动修复工作,我觉得这多少有些令人遗憾。
Linus Torvalds:公平地说,有时候发现 Bug 确实比修复 Bug 更容易。
不要误会。虽然这听起来可能有些消极,但实际上我认为,从整体来看这是一件好事。AI 能够发现源代码中的 Bug,短期内确实会带来一些阵痛,但从长远来看,这些 Bug 被发现、被修复之后,软件最终会变得更好。
所以,我对这件事总体上是乐观的。
我想再次强调,问题不在于 AI 本身不好,而在于任何新工具出现时都会带来一些社会层面的阵痛。我们已经积累了 35 年的代码,如今 AI 发现了一些过去没有发现的问题,我们需要时间去消化和处理这些新发现。
总之,找出的 Bug 越多,软件就越安全,真正的麻烦是那些你还没发现的漏洞。

AI 给维护者带来的压力
Dirk Hohndel:我们刚才在后台聊到了 AI 给维护者带来的影响。维护者本来就面临着“职业倦怠”的问题,如今 AI 生成的错误报告洪流更是雪上加霜。在代码审查、理解补丁等工作上,有没有什么 AI 工具能够帮助维护者减轻负担?
Linus Torvalds:我们确实使用了大量自动化工具,其中也包括 AI。
不过我想先指出一点:Linux 内核目前运行得很好。每次版本发布都有超过 1000 人参与贡献,我们拥有一批非常可靠的维护者,而且他们中的大多数都能通过这份工作获得不错的报酬。
但想想看,GitHub 上有数以亿计的仓库,还有成千上万个形形色色的项目。有些项目可能只是某个人维护了十几年的“心头好”,整个团队可能只有一到三个人。当这些维护者遭遇 AI 生成的报告洪流时,确实很容易被压垮。尤其是当你试图向报告提交者追问更多信息时,对方却像“打一枪换一个地方”一样消失了,甚至根本不回复你的问题。真正的倦怠风险恰恰存在于这些地方。
至于我个人,我主要是在和人打交道。作为最上层的维护者,我其实已经不写太多代码了。只有在一些自己感兴趣的项目上,比如吉他踏板或者 Subsurface,我才会亲自写代码。
我的工作更多是管理人,而不是管理代码。我也不建议大家用 AI 去管理人与人之间的关系。
当然,我们确实拥有不少优秀的自动化工具。比如 Google 开发的 Syzkaller 补丁测试系统,它会自动检查邮件列表中的补丁。虽然它的反馈有时并不完美,但确实能够发现很多问题。现在,许多核心开发者也会在本地运行 AI。我建议大家也去尝试,不要完全受制于大公司。

对于初入职场的开发者,有什么样的建议?
Dirk Hohndel:你刚才提到了“成千上万的小项目”,这暴露了你的年龄。本周 GitHub 宣布他们现在有 4.8 亿个存储库。最近的一项研究显示,其中有 60 万个项目被认为对企业用户至关重要。这个规模已经大到难以想象。
接下来,我们聊聊社会问题和人的协作,对于那些正处于职业生涯初期的人,现在很多人在唱衰,说代码都会被 AI 来完成。而另一方面,也有像 Jim Zemlin 那样乐观的人认为我们在科技行业创造了更多就业机会。你对初入职场的人有什么建议?他们应该关注什么?
Linus Torvalds:我的观点一直是,AI 是一个伟大的工具,但它仅仅也只是一个工具而已。
当我听到有人炫耀说“我们 99% 的代码都是 AI 写的”时,我会很生气。因为这些人中,我敢保证,他们从来不会说自己“100% 的代码其实都是编译器写的”。但这其实是一回事。
我成长于编写机器代码的年代。我说的机器代码不是汇编语言,而是实际的数字。那会在你脑海中留下印记,我到现在还记得 6502 处理器上的 LDA 的操作码是十六进制的 A9。
后来我意识到,亲手写数字并计算分支偏移量挺傻的,于是有人发明了汇编器。再后来我发现编译器也很好。现在我发现 AI 工具也不错。
我依然在写代码,只是不再像以前那样通过 Data 语句输入数字了。我百分之百确信,AI 正在改变编程,但它并没有改变编程的本质。就像你们都用编译器生成代码一样,你们中的许多人也会用 AI 来辅助生成。这和我们以前经历过的技术革命本质上是一样的。AI 会将你的生产力提高 10 倍,而我认为编译器将生产力提高了 1000 倍。所以 AI 很棒,但它并没有颠覆编程。它可能会改变其他领域,但我是个程序员,我不在乎。
Dirk Hohndel:我觉得有一点始终没变:优秀的开发者还是能写出优秀的代码,而普通开发者依然更容易写出有 Bug 的代码。这个在 AI 时代依然成立。那些真正理解系统和复杂性的开发者,知道如何通过 Prompt 引导 AI 产出高质量代码;而对系统缺乏理解的人,往往只会让 AI 生成更多错误。
Linus Torvalds:我认为,开发者必须理解系统最终是如何运行的。虽然现在已经没人直接写机器代码了,但我依然会去看工具生成的代码,也会检查汇编层面的结果。
即便使现在的我用编译器,甚至让 AI 帮我生成一些小项目,我还是会去看最终生成的汇编代码,因为那才是我的舒适区。而且我现在仍然会折腾微控制器,在这种场景下,你确实需要检查生成的代码,确保它真的按照你的意图运行。
对于那种一次性、写完就扔的小项目,AI 的表现非常出色,我们把这种方式称为“氛围编程”。但如果你要构建的是一个需要维护 35 年的严肃项目,那就不能只靠写提示词,让别人或 AI 替你生成代码。
Dirk Hohndel:遗憾的是,我们时间到了。我还有很多问题,我想我得留到明年在温哥华再问了。谢谢大家!
Linus Torvalds:谢谢大家。