Jiayun's Blog

探索与分享

编辑推荐框

📌 好文共赏 | Editor’s Pick

原文A History of IDEs at Google 作者:Laurent Le Brun(前 Google 开发者工具 Tech Lead,2011–2024 在职) 发布:2026-05-09 · 约 2,400 词 · 阅读时长 10 分钟 HN 评分:442 points / 288 comments 多模评分:Opus 9.0 / Sonnet 8.8 / Gemini 8.7 — 综合 8.83 / 10

一句话推荐:少数能让我读完后默默截图发给 platform engineering 同事的文章——一个 Google 待了 12 年、又是 IDE Tech Lead 的人,亲笔写下「统一工具如何在十几年的反复拉扯后悄悄改变了开发者生产力」。

一、为什么值得读

绝大多数关于"开发者工具"的文章要么是工具评测(VSCode 还是 IntelliJ?Vim 还是 Emacs?),要么是抽象的 platform engineering 道理。Laurent Le Brun 的这篇文章不同——他是一位真正经历了 Google 内部 IDE 战争十二年的工程师,2011 年加入 Google 时 IDE 还是百家争鸣,2024 年离开时 80% 的 google3 提交已经发生在他参与设计的 Cider V 上。

这篇文章珍贵在三个层面:

第一,它是少有的一手史料。Cider 这个 Cloud IDE 在 Google 内部存在了十多年,外部几乎没有详细记录。Le Brun 把 2013 年的萌芽、2020 年的 VSCode 前端融合、2023 年的 AI 集成串成了一条清晰的时间线,并附上了关键人物(包括 Jeff Dean)的原话。

第二,它揭示了一个反直觉的结论:Jeff Dean 在 2011 年说"让一群开发者同意用同一个编辑器,是制造痛苦的配方",这句话被 Google 当作圣旨遵守了十几年。但 Le Brun 用十二年的工作告诉我们——当 monorepo 大到一定规模、当 AI features 开始要求深度集成,“统一工具"不再是宗教问题,而是杠杆问题

第三,它在 AI Coding Agent 大潮中提供了一个稀缺的视角:当所有人都在讨论 Cursor 估值、Codex 集成、Claude Code,Le Brun 提醒我们——这些 AI 功能能不能高效落地,取决于底层平台的统一程度。Google 之所以能在 2023 年开始大规模整合 AI 进 IDE,是因为他们花了十年时间把后端的语言图、增量索引、代码评审工具链都修好了。

这点与我之前在《AI 编码 Agent 经济学:当 Token 账单超过程序员工资》中讨论的"AI 工具的边际成本"形成了互补:Le Brun 给的是基础设施的视角——你能不能让 AI 真正发挥杠杆,关键不在模型,而在你的 IDE 是否是"一个可被集成的平台”。

二、核心观点深度解读

1. Jeff Dean 的那句"不重要",统治了 Google 十年

文章一开篇就丢出一颗深水炸弹。2011 年,Google 内部曾经讨论过"能不能给所有 Googler 一个统一的 IDE",结论是"不能"。Jeff Dean 的原话被引用如下:

原文:‘Trying to get a group of developers to all agree on a common editor is a recipe for unhappiness. Everyone has different opinions about what is important here, and the advantages and disadvantages of different systems are weighed differently by different people. In the end, it doesn’t matter that much.’

这句话非常 Google:尊重个体偏好、不强制工具、相信底层的 build system 和 code review 已经给了足够的统一性。在那个时代这是正确的——只要 Bazel 是一套、code review 是一套、presubmit 检查是一套,IDE 选什么确实不那么重要

但 Le Brun 在文章中用一整段拆解了这个判断的盲区:从"个人选择无关紧要"到"公司生产力问题"之间,存在一个被忽视的成本——每一个 Bazel 集成、Starlark 工具、code formatter、code search 集成,都要在 Vim/Emacs/Eclipse/IntelliJ 上各实现一遍。Google 的内部文化(20% time、peer bonus)让这种重复实现"看起来"是可管理的,因为社区有志愿者会贡献。但隐藏的成本是真实的:到 2015 年,一个专门的 IntelliJ 集成团队才被正式组建——只为了让 IntelliJ 用户能用上 google3 的工具栈。

这里有一个特别精彩的工程洞察:传统 IDE 的架构假设——源代码、build metadata、索引、分析全部在本地——在 Google 规模下完全失效。你不可能把数十亿行代码全部 checkout 到工程师的 MacBook 上跑静态分析。这个矛盾就是 Cider 诞生的种子。

2. Cider 的诞生:从"修 markdown 错别字"到"撼动 IDE 格局"

文章中我最喜欢的一段叙事,是 Le Brun 描述 Cider(Cloud IDE + r)如何从一个看似无关紧要的小工具长大为公司主流编辑器。它的起点居然非常朴素——technical writer 用它来修 markdown 的 typo,因为他们不想搞 git pull/push 那一套。

但小工具有一个传统 IDE 没法比的优势:因为是 web 客户端,所有"重活"可以放在后端。Le Brun 详细描述了这个后端做什么:

原文:‘Code intelligence requires connecting each identifier with its type and references. This forms a huge language graph that has to be updated at every commit. And well… the codebase receives many commits per second. But the IDE also needs access to historical data.’

这一段是整篇文章的技术核心,值得细细品。注意它处理的几个工程难题:

  1. 语言图(language graph):把每个 identifier 关联到它的类型和引用,相当于一个超大型的 program-wide AST 索引。
  2. 增量更新:每秒数十次 commit,每次都要更新这个图。
  3. 历史版本:每个工程师的本地状态是"上次 sync 时间点 + 本地未提交修改",所以后端必须能在任意历史快照上做 code intelligence,外加在快照之上叠加本地 diff。

这就是为什么 Cider 能在一个浏览器标签里打开就秒级响应——所有的索引、跨引用、类型查询都已经在后端预热好了。这种"重客户端 → 轻客户端 + 强后端"的架构反转,实际上预示了今天 AI Coding Agent 的架构方向:你的 IDE 不再是一个本地的 LSP server,而是一个连接到强大后端推理服务的薄前端。

这点与我之前写的《AI Agent 正在压垮整个开发者基础设施:从 GitHub 故障到’Be Right’时代》中讨论的"开发基础设施被 AI 当成 RPC 后端"是同一条线索的两端——Google 已经在 2013–2020 之间把这条线索的前半段悄悄走完了。

3. Cider V:为什么用 VSCode 前端是一个深思熟虑的妥协

到了 2020 年,Cider 的后端已经无可替代,但前端开始拖后腿。Le Brun 在这一段写得很坦诚——它在 markdown 修字、quick fix 上很好用,但真要跟 IntelliJ、PyCharm 比专业能力,差距明显

团队的选择是:保留 Cider 后端,前端换成 VSCode。这个决定背后有几层考虑:

  • VSCode 是 web-native 的:它本身就是 Electron + Monaco editor 架构,可以相对自然地拆出"前端 only"模式(这正是后来 vscode.dev、GitHub Codespaces 的基础)。
  • language-agnostic + extensible:VSCode 的扩展模型成熟,能让 Google 内部各团队各自开发 vertical 集成。
  • 生态借力:很多 Cider feature request 在 VSCode 里早就是 solved problem。

但这个迁移不是免费的。Le Brun 提到了一段我觉得每个搞 platform 的人都该刻在墙上的话——他们维护了一个本地 fork,每月与 upstream 同步,并且主动减少 local hacks 以贴近上游。这就是真正成熟的 fork 策略:不是分叉走开,而是"被动跟随主线 + 主动贡献 patch"。

迁移本身也花了几年时间。从 2021 年的 5000 人 open beta,到 2023 年 80% 占有率,这是一个 12 人前端团队 + 数十人后端团队,连续工作好几年的成果。Le Brun 描述用户对小细节(“color scheme”)的执念时的口吻,让我想起 Joshua Bloch 在 2011 年的那句被引用的名言:

原文:’the only thing that generates more religious fervour than programming languages is text editors and IDEs.'

4. 最被低估的洞察:统一工具创造杠杆

文章的最后一段,Le Brun 没有写得很煽情,但落点极其有力:

原文:‘In the end, standard tooling creates leverage.’

这句话表面平淡,背后是 12 年的体感。一旦 Cider V 成了 80% 的 default IDE,几件事发生了:

  1. 每一项 IDE 改进的边际收益变大。修一个 bug、加一个 feature,影响的不是某个团队,而是全公司。
  2. 第三方扩展生态在内部爆发:100 个内部团队开始为自己的特殊需求写 VSCode extension。这种"长尾创新"在碎片化的 IDE 生态里是不可能发生的——因为没人想为 5 种 IDE 各写一遍。
  3. AI features 的集成变得可行:Le Brun 提到 2023 年管理层开始推动 AI 功能整合——Resolving Code Review Comments with ML、Smart Paste、AI 补全。这些功能能落地的关键前提,是它们只需要在 Cider V 这一个平台上做一遍。

这是我读完文章后最大的"啊哈"时刻。外界讨论 AI Coding Agent 的时候,焦点全在模型——GPT-5.5 还是 Claude 4.7?Cursor 还是 Windsurf?但 Google 内部能在 2023–2026 之间把 AI 深度集成进 IDE,靠的是 2013 年开始铺垫的统一后端

我去年在《AI 编码智能体深度解剖:架构设计、企业落地与被忽视的工程陷阱》中讨论过 Uber 的 84% AI 工具采纳率,当时关注点是 ROI 测算和 CI/CD 集成。回过头看 Le Brun 这篇文章会发现——Uber 那种"开箱即用"的高采纳率本身,就是公司基础设施统一程度的反映。如果你的 IDE 是 6 种、build system 是 4 种、代码评审是 3 种,AI 集成是无法均匀分布的。

5. 反向阅读:Jeff Dean 错了吗?

我想公平地评论一下原文。Le Brun 的叙事很有诱惑力——“看,Jeff Dean 错了,最终我们还是走向了统一”。但仔细看,事情更微妙。

第一,Cider V 并不是被强制推下来的——Le Brun 自己说"It didn’t completely happen but…",意思是公司没有"mandate"。它是靠真实的工具优势赢的市场(最佳的版本控制集成 + 内联评审 + 代码搜索)。这恰恰证明 Jeff Dean 那句话——强制统一是失败的配方,但提供一个真的更好的工具,自然会形成统一

第二,剩下的 20% 不是噪音。Java/Kotlin 重度用户继续留在 IntelliJ 上是有道理的——IntelliJ 的重构能力至今 VSCode 比不了。Le Brun 提到 “it was much easier to convince Go developers to switch than Java developers”,这是工具与社区文化的真实匹配,不是迁移惰性。

第三,“统一"在 AI Agent 时代可能会再次破裂。当 Cursor、Claude Code、Windsurf 这些独立的 AI-first 编辑器开始抢占市场,“VSCode 即默认"的格局可能正在被瓦解。Google 内部下一步会不会做 Cider AI、Cider Agent,是一个我们等着看的故事。

6. 一个隐含的工程哲学:增量 vs 革命

文章里有一条暗线值得提炼:Google 在 IDE 这件事上,没有一次革命性的"重写”。从 Vim/Emacs/Eclipse 时代,到 Cider 1.0 web 客户端,到 Cider V 用 VSCode 前端——每一次都是保留有价值的部分(后端语言图)、替换不够好的部分(前端)

这种"增量演化"在 platform engineering 里其实是稀有的。多数公司的"重写"故事是从 0 开始换栈(看 Twitter 的 Ruby → Scala、Lyft 的 Python → Go),但 IDE 这种"用户每天 8 小时凝视"的工具,没有任何重写余地。Le Brun 的故事告诉我们——真正的杠杆来自于"如何在不打断用户的前提下,把后端持续进化十几年”

这点与我此前讨论 Redis 的《Redis 的野心代价》形成了一个有趣对照——Redis 因为想做"什么都做"反而失去了焦点;Cider 反而是因为"明确只做 Google 内部最难的那部分"才赢了。

7. 谁该学这套打法?

读完之后我列了一份"该读这篇文章的人"清单:

  • 任何在大公司做 platform engineering / dev infra 的 lead:Le Brun 提供的不是"how to copy Google",而是一个长时间尺度上的演化样板。
  • 任何在做 AI Coding Agent 产品的 PM / 架构师:你要思考的不是"模型够不够好",而是"你的产品能不能让公司内部从 5 种 IDE 收敛到 1 种"。
  • 任何在选 IDE 的工程团队 lead:这篇文章会让你重新思考"工具统一"的真实成本和收益。
  • 任何对软件工程史感兴趣的人:这是一段几乎没有公开记录的 Google 内部历史。

三、延伸阅读图谱

Laurent Le Brun 其他代表作(5 篇带点评)

  1. Evolving a codebase at Google Scale — 本文的"前传",讲 Google 如何在数十亿行代码上做大规模重构、library visibility、code ownership。配合本文一起读,才能理解"统一工具"为什么是必然终点。
  2. An overview of Starlark — Starlark(Python 子集)作为 Bazel 配置语言的设计哲学。理解为什么 Google 的 build system 配置不是 YAML。
  3. The story of reformatting 100k files at Google in 2011 — 一次"看似简单"的代码格式化,怎样变成了一个大型工程。Le Brun 的写作风格——“小入口、大景深”——在这篇里最典型。
  4. Bazel Vendor Mode — 深入 Bazel 的依赖管理,对理解 monorepo 体系下的"语言图"很有帮助。
  5. On Build Speed — 为什么 Google 的 build 又快又慢——这个矛盾感受是每个 Googler 都熟悉的。

相关论文/工程博文(10 篇做映射)

  1. Software Engineering at Google (O’Reilly) — Google 官方的"工程文化圣经",可以与 Le Brun 个人视角互相印证。
  2. Why Google Stores Billions of Lines of Code in a Single Repository — Potvin & Levenberg, ACM 2016。理解 monorepo 选择的官方理论基础。
  3. Build in the Cloud: How the Build System Works — Bazel 远程构建的早期论文。
  4. Language Server Protocol Specification — Cider 转向 LSP 的技术前提。
  5. Code Review Developer Tool at Google — 解释为什么"代码评审集成"是 Cider V 的杀手锏。
  6. Visual Studio Code Open Source — 理解 VSCode 为什么能被 Google “fork 但保持 upstream 同步”。
  7. OpenSumi: Cloud IDE 框架 — 阿里开源的 cloud IDE,可视作 Cider 的"开源对应物"。
  8. Theia IDE — Eclipse 基金会的"开源 VSCode"尝试。
  9. Stripe’s Sorbet: Type Checker for Ruby — 另一个"为 monorepo 量身打造工具"的案例。
  10. Meta’s CodeCompose — Meta 内部 AI 代码补全,可对比"内部 AI features"的演化模式。

反方观点 / 不同视角(3 篇)

  1. I’m going back to writing code by hand — 1008 HN 票的反 AI 编程随笔。如果 Le Brun 是"AI 集成的乐观派",这篇就是悲观派的代表。
  2. Software engineering may no longer be a lifetime career — Sean Goedecke 警告"AI 让编程变成短期高薪职业"。与 Le Brun 隐含的"工具杠杆论"形成张力。
  3. Jeff Dean 的原始回答(2011) — 本文中 Dean 那句"recipe for unhappiness"本身就是最强的反方观点。它在 2011 年是对的,2026 年才被"软性证伪"。

四、编辑延伸思考

Le Brun 这篇文章我读了三遍。第一遍读热闹(“哦原来 Cider 是这样”),第二遍读门道(语言图的增量更新、VSCode fork 策略),第三遍才开始想——这篇文章对中国的开发者团队意味着什么

我观察到三件事。

第一,AI Coding Agent 的真正护城河不在模型层,而在"工具统一"的基础设施层。当下所有 AI 编程产品都在卷模型能力、卷上下文窗口、卷价格。但读完 Le Brun 的故事会明白——真正能让 AI 在企业内部产生杠杆的,是企业本身是否已经把开发工具收敛到一个可被深度集成的平台。如果你的公司里 Vue、React、Angular 三家并存,前端构建 5 种 + 后端 IDE 6 种,那么任何 AI Coding 工具进来都只能做"通用 70 分"。要做到 Uber 那种 84% 采纳率,前提是公司基础设施已经统一过一次。

中国的大厂在这件事上是有机会的。字节、腾讯、阿里、美团——它们的内部工具栈虽然也碎片化,但比起 FAANG 早期已经统一得多。如果有人能在这些公司内部走 Cider 的路线(强后端 + VSCode 前端 + 深度 AI 集成),可能会比海外更快地拿到"统一杠杆"。

第二,平台工程的回报周期,是十年级的,不是季度级的。Cider 从 2013 年的 markdown 修字工具,到 2023 年成为 80% 默认编辑器,花了整整 10 年。这十年里,Cider 团队没有任何一个季度可以宣称"我们已经赢了"。每一次升级都是渐进的——加 LSP 支持、加版本控制、加 code review、迁移到 VSCode 前端……

这对中国互联网公司的考核机制是一个挑战。我们的 OKR 系统倾向于半年/一年的可见成果,平台工程团队在这种压力下很难存活十年。Le Brun 的故事其实是一个隐藏的"组织文化"故事——Google 之所以能做出 Cider V,是因为它愿意让一个 dev tools 团队在 8 年里持续投入,而不是每两年砍一次

第三,“统一"不等于"垄断”,也不等于"强制"。文章里有一个细节非常关键:Google 没有 mandate Cider V,用户是被工具的优势"吸引过去"的。这一点对今天的 AI 编程工具市场有强烈的启示——如果 Cursor、Claude Code、Windsurf 中有一家想成为"事实标准",它要做的不是绑定,而是把后端的代码理解能力做到无人能比

这点也与我在《Spotify 的 Claude 插件:为什么他们拒绝了 MCP?》中讨论的"协议中立 vs 厂商绑定"是同一个主题——真正持久的胜利来自工具本身的卓越,而不是生态锁定

最后,我想引用 Le Brun 自己的结尾:

原文:‘In the end, standard tooling creates leverage.’

这句话简单到不像结论,但放在 12 年的 Google IDE 历史背景下读,它是整个文章的精华。所有伟大的 platform engineering 故事,本质都在讲"杠杆"——你让多少人,更高效地做对的事

五、配套资料导览

本文目录下附有以下扩展资料,建议结合主推荐文阅读:

  • 📘 glossary.md — 英中对照术语表,覆盖 Bazel、Starlark、LSP、Cider、language graph、incremental indexing 等 30+ 关键术语
  • 🃏 concept-cards.md — 12 张概念卡片,可作为 spaced repetition 学习材料,涵盖从"Cider 后端架构"到"VSCode fork 策略"等核心概念
  • 🗺️ mindmap.svg — 全文思维导图,按"碎片化 → Cloud IDE → VSCode 融合 → AI 集成 → 杠杆"的脉络展开
  • 🎨 cover.svg — 本文封面图(深色背景,原创设计)

六、谁应该读这篇文章

  • Platform engineering / Dev Infra Lead:你要把这篇文章打印出来贴在工位上。
  • AI Coding Agent 产品经理 / 架构师:你的产品能不能产生杠杆,看这篇。
  • CTO / VP Engineering 在 100+ 人的工程团队:这是一个 12 年时间尺度的"工具统一" case study。
  • 对 Google 工程文化感兴趣的研究者:本文是少见的内部一手史料。
  • VSCode / IDE 设计相关从业者:理解为什么 VSCode 赢了 web,以及它的下一个挑战是什么。
  • ⚠️ 想要"立即可用 tips"的读者:本文是叙事+反思,不是 how-to 教程。
  • 只对模型层 AI 创新感兴趣的读者:这篇文章不会讨论 transformer。

📎 版权与引用声明:本文为 Laurent Le Brun 原文 的中文导读与延伸分析。原文金句引用均已 blockquote 标注"原文:“并控制在合理范围内(< 整篇 10%),主要观点解读和延伸思考为本博客原创。建议读者直接阅读英文原文以获得完整一手信息。

🔄 多模评分说明:Opus 9.0(深度+原创性满分,技术细节扎实)/ Sonnet 8.8(叙事弧线清晰,公司史价值高)/ Gemini 8.7(具备 platform engineering 教科书价值)/ 综合 8.83/10。