Zed 在 2026 年 4 月 29 日到达了 1.0,真正值得看的,已经越过这个版本号本身。[1] 更值得看的,是团队为了敢于使用这个版本号,究竟先把什么东西造了出来。若把 Zed 看成一个熟悉编辑器的 Rust 重写版,再在外面接上新的 AI 功能,它就会显得很普通。真正更深的一层设计有更强的架构主张。Zed 是一套垂直整合的编辑器栈,渲染、语法理解与协作都被当成编辑器原生系统来设计,没有把这件事交给浏览器外壳、再由插件市场补偿。[1][2][3][4][5]

这一点重要,是因为它改变了项目实际提供的交换条件。Electron 一代编辑器常见的路径,是先拿到一个非常灵活的应用外壳,再花很多年把响应速度一点点买回来。Zed 走的是反方向。它预先假定,延迟、语法结构与共享在场感都应该尽量贴近编辑器内核,即使这意味着团队要把更多基础设施自己做掉。[1][2][3] 若想明白 Zed 为何看起来确实不同,真正该看的就是这里。

GPUI 作为时间模型,已经越过外观细节

Nathan Sobo 在 1.0 文章里把这层判断写得很直白。经历过 Atom 之后,团队认定 web 技术给编辑器设下了天花板,于是他们把 Zed 按“像视频游戏那样”的方式重建出来,让整个应用围绕 GPU shader 的数据喂送来组织,并为此用 Rust 从头写了一个自定义框架 GPUI。[1] Antonio Scandurra 更早的 GPUI 渲染文章,则把这种压力讲成了工程约束。在 120 Hz 显示器上,应用每一帧只有 8.33 毫秒,要完成状态更新、界面布局与像素输出。[2] 这组数字承担的是调度条件,宣传意味退到次要位置。

也正因为如此,GPUI 更适合作为一种架构承诺来理解,位置高于悦目实现花样。那篇渲染文章描述的,是一套围绕特定图元定制 shader 的系统,没有把界面交给通用 web layout 与 paint 管线。[2] 团队想要的是,让界面元素以更明确的方式在 GPU 上并行完成工作,因为 Atom 已经让他们见过另一种结果:垃圾回收停顿、DOM 重排与浏览器抽象,都会直接落进编辑过程的热路径里。[1][2]

这条架构取向仍有边界:每一类编辑器任务不会因此天然变快。它意味着项目先决定了一处必须打赢的战场。Zed 想先把最普通的交互成本压低,再去谈模型调用、代码动作与协作会话。若接受这个前提,GPUI 就会从旁支位置进入产品第一依赖的位置。[1][2][7]

GPUI 的 ownership 模型,让 UI 树不至于坍成临时拼接的共享状态

第二层架构平时更不显眼,却同样重要。在 GPUI ownership 那篇文章里,Sobo 解释说,每一个 model 或 view 都由一个顶层对象 App 持有,新状态通过 Entity<T> 这样的 handle 创建出来。[3] 这些 handle 没有直接拥有底层状态,它们只是带着类型信息,去访问仍旧由应用统一持有的状态。[3] 这是在 Rust 更严格的 ownership 体系里,专门为动态桌面 UI 提出的回答。

它之所以重要,是因为编辑器内部充满了会长期存在、持续变动、又彼此频繁通信的对象:buffer、panel、modal、project tree、diagnostic、task、terminal、协作面板。若系统纪律不足,这些关系很快就会长成一片直接引用与 callback 陷阱。GPUI 的做法,是把 ownership 中心放回应用本身,再让状态访问经过这个中心,以此让整张图保持可读。[3]

事件模型也在重复同一种取向。那篇文章先回顾了更早一套事件系统里由 reentrancy 触发的生产 bug,随后解释 GPUI 如何改用 effect queue,在更新结束后统一 flush,从而得到 run-to-completion 语义,防止事件递归地套进事件里。[3] 对复杂 UI 来说,这本来就是有价值的设计;放进编辑器场景,它更显得贴身,因为一次用户动作往往会同时引发语法更新、诊断刷新、装饰变化、panel 重绘与文件系统反应。Zed 的回答,是把这条链条做成显式且可调度的过程,不走只追求书写方便的短路径。[3]

语法智能住在编辑器自己的数据结构里,而不只依赖 LSP 往返

第三层架构,藏在许多“它为什么看起来更利落”的编辑细节下面。Max Brunsfeld 的 Tree-sitter 文章讲得很明确:Zed 仍然把某些标准语言智能交给 LSP,但许多编辑行为要求编辑器自己理解代码的语法结构。[4] Tree-sitter 给 Zed 的,是 incremental parsing、文件局部暂时失效时仍可用的结果,以及跨很多语言保持一致的 query 模型。[4]

最关键的细节,在于 Zed 怎样存放并更新这些语法状态。对于多语言文档与包含大量 injection 的文件,文章说整组 syntax tree 被放在一种 copy-on-write B-tree 里,也就是 sum tree。[4] 与编辑范围相交的树会被重新解析,injection 会以迭代方式重算,而 copy-on-write 结构让这些更新能够在 background thread 上进行,同时主线程仍继续使用前一份 snapshot。[4] 这是一种典型编辑器难题的架构答案:怎样在持续保持结构感知的同时,不让每次修改都显得更重。

也正是在这里,Zed 的架构开始显得连贯。GPU 优先的渲染循环,负责把可见界面的成本压低;GPUI 的 ownership 模型,负责把可变状态约束住;Tree-sitter 加 sum tree 这一层,负责让语法感知在持续编辑压力下保持 incremental。[2][3][4] 单看其中任何一层,都还不足以解释整个产品,把它们放在一起时,解释才完整。

协作被当成编辑器状态,已经越过会后附上的房间功能

Zed 的协作文档之所以有价值,在于它清楚表明,多人功能已经越过漂浮在编辑器上方的宣传配件。[5] 文档写得很明确:Zed 支持 real-time multiplayer editing,支持作为持久项目房间的 channels,支持 shared projects,也支持内建 voice chat。[5] 更重要的是,它同时给出一条非常硬的边界条件:分享项目会让协作者获得该项目范围内的 local file system 访问,因此你只能和可信任的人协作。[5]

这条警告本身就是架构线索。对 Zed 来说,协作已经越过评论线程与云端同步 presence 标记。它直接伸入本地编辑器正在操作的 project state 里。[5] 这意味着项目选的是一处更深、更有力量、也更带风险的整合点。协作已经进入编辑器数据模型,脱离了晚些时候附着上去的社交层位置。

这也解释了,为何协作愿景会在 Zed 的公开写作里反复出现。团队谈论的重点已经越过结对编程本身的新奇性,他们真正想说的是,编辑器可以从一开始就按共享环境来建,没有先做成单人软件、再在外面补上开会功能。[1][5] 至于每一个团队是否都想要这种结构,那是另一回事;从架构角度看,这个承诺已经写得很清楚了。

这套栈最强的地方,与它真正的边界

采用 Zed 最强的理由,已经越过 AI 界面这一层。现在很多编辑器都有。更强的理由在于,它为那些真正关心本地交互延迟、关心语法感知在持续修改下仍旧轻盈、也关心协作足够原生以至于会反过来改变编辑器形状的团队与个人开发者,提供了一套完整而一致的栈。[1][2][4][5] 若这些优先级与你一致,这套设计就说得通。

边界也同样清楚。Zed 的架构是有主张的、中心化的、垂直整合的。这样的做法可以产出更干净的产品,同时也意味着,你接受的是团队选定的基底:GPUI 不走浏览器原语,编辑器自有的语法结构也超出 LSP 单一边界,shared-project 协作带有强信任前提,并且不采用更松散的浏览器中介模型。[1][2][3][5][6] 顺着这些材料往下看,我的判断是,Zed 更像一条关于“编辑器应当直接拥有什么”的强论点,也没有摆出要满足所有工作流的通用平台姿态。[1][2][3][4][5][7]

所以,Zed 在 2026 年值得关注,已经越过“它很快”这一层。它更像一次认真尝试,试着重新划定编辑器的边界。它的核心论点是:编辑器应当比 Electron 一代更积极地拥有时间、结构与共享在场感。若这个论点最终站得住,Zed 最重要的贡献将超出某一个孤立功能,而会是一种让这些功能显得天然属于同一件事的架构。[1][2][3][4][5]

来源

  1. Nathan Sobo,《Zed is 1.0》——2026 年 4 月 29 日的 1.0 发布文,说明 Zed 如何以“像视频游戏那样”的 GPU 优先 Rust 编辑器自我定位。
  2. Antonio Scandurra,《Leveraging Rust and the GPU to render user interfaces at 120 FPS》——GPUI 的渲染目标、8.33 毫秒帧预算,以及自定义 shader 路线。
  3. Nathan Sobo,《Ownership and data flow in GPUI》——App ownership、Entity<T> handle、effect queue 与 run-to-completion 语义。
  4. Max Brunsfeld,《Enabling low-latency, syntax-aware editing using Tree-sitter》——incremental parsing、CST、tree query、language injection 与 copy-on-write 的 sum tree。
  5. Zed 文档,《Collaboration》——real-time multiplayer editing、channels、shared projects、voice chat,以及关于本地文件系统访问的 trust warning。
  6. Nathan Sobo,《Zed is now open source》——GPL 编辑器代码、AGPL 服务端组件、Apache 2.0 的 GPUI,以及团队对可持续性的表述。
  7. InfoQ,《The Creators of the Atom Code Editor Open-Source Zed, Their New Rust-Based High-Performance Editor》——从独立媒体视角回看 Zed 开源时对 GPUI 与原生栈押注的概括。
  8. Wikimedia Commons,《File:Programmer at work (Unsplash).jpg》——本文题图所用工作台照片的来源页。