分析Claude Code采用Electron而非原生框架的技术和商业权衡,涉及跨平台IDE开发的实现选择。
编码 Agent 的现状可以用一个事实来总结:
Claude 花费 2 万美元让一个 Agent 群集用 Rust 实现(勉强)一个 C 编译器,但桌面版 Claude 是一个 Electron 应用。
如果你不熟悉 Electron,它是一个用网络技术(特别是 HTML、CSS 和 JS)构建桌面应用的开发框架。Electron 的优势在于它允许你构建一个同时支持 Windows、Mac 和 Linux 的桌面应用。另外,它让开发者能够重用现有的网页应用代码。对大小团队都很好用。你每天可能使用的许多应用都是用 Electron 构建的:Slack、Discord、VS Code、Teams、Notion 等等。
但也有缺点。Electron 应用体积臃肿;每个都要运行自己的 Chromium 引擎。最小应用大小通常在几百兆字节。它们经常反应迟钝或无响应。它们与操作系统功能的集成度不好。
(最后两个问题可以通过精心的开发和特定操作系统的代码来解决,但很少有人这样做。Electron 的优势(一个代码库、多个平台、只是网络技术!)不会促使开发者在 HTML/JS/CSS 之外进行优化。)
但这些缺点被一个能力大幅抵消:能够构建和维护一个应用,并将其部署到各个平台。
但现在我们有了编码 Agent!而编码 Agent 证明了自己在一件事上相当擅长:在给定明确定义的规范和测试套件的情况下,实现跨平台、跨语言的代码。
从表面上看,这个能力应该让 Electron 的优势过时了!与其编写一个网页应用并将其部署到各个平台,我们应该编写一个规范和测试套件,然后用编码 Agent 为各个平台生成原生代码。如果这个能力真实存在且被采纳,用户就会从小型、专注的团队那里获得流畅、高效、原生的应用,服务于广泛的市场。
但我们仍然在依靠 Electron。即使 Anthropic 是 AI 编码工具的领导者之一,经常发布令人印象深刻的 Agent 编码成就,仍然在 Claude 桌面应用中使用 Electron。而且这是一个缓慢、有 bug、体积臃肿的应用。
那么,为什么我们仍然在使用 Electron,而不是拥抱 Agent 驱动、规范驱动的开发未来呢?
一方面,编码 Agent 在开发的前 90% 表现很好。但最后那部分——处理所有边界情况以及在进入真实世界后继续支持——仍然困难、冗长,需要大量的 Agent 指导。
Anthropic 的 Rust 版 C 编译器在通过了大部分测试后撞上了这堵墙:
The resulting compiler has nearly reached the limits of Opus's abilities. I tried (hard!) to fix several of the above limitations but wasn't fully successful. New features and bugfixes frequently broke existing functionality.
生成的编译器在很大程度上是不可用的。最后一英里很难。
一旦程序进入真实世界,情况变得更糟。混乱、意外的场景堆积起来,开发永远不会真正结束。Agent 确实让事情更容易了,但困难的产品决策仍然需要人类判断。
而且,产生 3 个不同的应用(Mac、Windows 和 Linux),bug 和支持的工作量增加了 3 倍。当然,Electron 应用存在局部的古怪行为,但大多数都被统一的包装层所缓解。但原生应用就不是这样了!
好的测试套件和规范可能会让 Claude 团队能够为各个平台生成原生的 Claude 桌面应用。但该最后 10% 开发的额外开销,以及由此产生的支持和维护负担,仍然存在。
现在,Electron 仍然有意义。编码 Agent 很强大。但开发的最后一英里和支持表面积仍然是一个真实的问题。
在 Hacker News 上,Claude Code 的 Boris Cherney 加入了讨论:
Boris from the Claude Code team here.
Some of the engineers working on the app worked on Electron back in the day, so preferred building non-natively. It's also a nice way to share code so we're guaranteed that features across web and desktop have the same look and feel. Finally, Claude is great at it.
That said, engineering is all about tradeoffs and this may change in the future!
很好:开发者的熟悉度和跨多个平台的更简单可维护性值得这些"权衡"。我们拥有令人难以置信的编码 Agent,它们在代码转换方面很擅长,但仍然存在成本超过发布非原生应用成本的因素。