向微软“复仇”!支持OpenAI、Copilot 的Zed编辑器要干掉VS Code:Rust+少插件,速度贼快

编译 | 核子可乐、李忠良

Zed 是一款支持多人协作的代码编辑器,底层采用 Rust,且默认支持 Rust,还自带了 rust-analyzer,主打“高性能”。1 月 24 日,备受关注的 Zed 项目宣布正式开源。

Zed 代码库将采用 Copyleft 许可证,其中编辑器部分使用 GNU General Public License (GPL),服务器端组件则采用 Affero General Public License (AGPL)。此外,GPUI UI 框架将以 Apache 2 许可证分发,允许开发者构建高性能桌面应用程序,并自由选择许可证分发其应用。此次开源转变意味着 Zed 的代码和相关组件将面向所有开发者开放,赋予社区更大的灵活性和合作空间。


最近在 GitHub 上发表的一篇帖子中,Zed 的编辑器创始人 Nathan Sobo 详细介绍了 Zed 编辑器的多个关键组件以及它们各自的开源许可证。Zed 的编辑器本体采用了 GPL 许可证,体现了对开源精神和自由共享的强调。而其服务器端组件则采用了 AGPL 许可证,为网络部署的应用程序设置了更严格的共享要求。

此外,Zed 团队还开发了一个 GPU 加速的 UI 框架——GPUI,它遵循 Apache 2 许可证,旨在超越基于 Web 的 Electron 框架的限制,利用 GPU 加速来提供更流畅和响应更快的用户界面。

谈到 Nathan Sobo ,他不仅仅是Zed的创始人,还是Electron框架和广受欢迎的Atom编辑器的开发者。Electron是一基于Chromium浏览器组件和V8 JavaScript引擎的框架,现已成为全球领先的轻量级IDE和编辑器——Visual Studio Code (VS Code)的一部分。然而,Zed在技术实现上走了一条与Electron完全不同的路线。Zed是用Rust语言构建的,直接编译为本机代码,这种方法与基于Web技术的Electron形成了鲜明对比。

有趣的是,Atom 编辑器曾被微软收购并最终被淘汰以支持 VS Code, Zed 的出现似乎带有一种“复仇”之意。

Zed 编辑器:
Rust+ 少插件,速度极快

在功能和性能方面,Zed 与市场上的主流产品 VS Code 形成了鲜明对比。尽管 VS Code 以其超过 55,000 个插件选项而著称,但 Zed 尚在开发其插件模型,还未形成自己的完整生态系统。Zed 项目 FAQ 中提到,在开源之前,他们不会添加插件系统,但一旦开源,将致力于增强其可扩展性。

Zed 的一个显著优势是其卓越的性能,这在很大程度上得益于 Rust 的高效特性以及目前较少的插件数量。这种设计策略使 Zed 拥有极快的运行速度,直接针对了 VS Code 用户群体中最关心的性能痛点。

一位开发人员在 Zed 帖子下评论道,“VS Code 的运行速度向来极其缓慢……而经历过烦人的基本代码检查和 linting 代码分析之后,我干脆弃坑了。”

另一位用户也表示,“各位还没体验过 Zed 的朋友,我可以向大家保证,这是我 25 年开发生涯中用过的唯一一款不会让人分心的 GUI 编辑器。以往的工具总是用图标、菜单、色彩等花里胡哨的元素扰人心神,而现在我的注意力可谓空前集中,这正是 Zed 的优势所在。”

Zed 的 AI 辅助方法虽然比较粗糙,但反而迎合了那些想要强调自身控制权的开发用户。Zed 支持 GitHub Copilot 与 OpenAI。

关于 Copilot,Zed 开发团队成员 Mikayla Maki 表示,“在视觉效果和心智负担间求取平衡至关重要,过于急切地扩大 Copilot 功能反而会得不偿失,甚至与 LSP(语言服务协议)自动补全等原有功能发生冲突。为此我们引入了针对各种语言禁用 Copilot 的设置,还在建议代码片段前添加了 75 毫秒的防误操作机制。而一旦出现冲突,Zed 会优先选择语言的真实 LSP,而非 Copilot 建议。”


Zed OpenAI 助手面板(图片来自 Zed 说明文档)

作为独立功能,Zed 的 OpenAI 助手面板拥有极高的可配置空间。

开发人员可以选择模型类型并随时变更,甚至在 AI 会话期间也能灵活切换。当然,大家需要先拥有一个 OpenAI 账户,并在 Zed 中配置 API 密钥。这些密钥将按使用的 token 量计费,而 Zed 将始终显示所选模型的剩余 token 数量。

与 OpenAI 大语言模型间的交互会通过 CMD-Enter(而不止是输入)来提交,旨在让使用感受“尽可能接近传统编辑器,即按下回车键只会插入换行符”。这样就避免了意外消耗 token 的情况。对于传回的响应结果,如果开发者觉得没什么帮助,也可以用 ESC 键快速取消。

Zed 还提供内联助手功能,可帮助查看当前代码的上下文。Zed 团队成员 Marshall Bowers 发布了关于如何用 AI 进行内联文档,以及在不同模板系统间翻译代码的文章。其中提到 “使用 post_link 等函数 auk DSL 重写此 HTML”之类的命令。他还提到,AI 可用于协助补全大部分模板代码。

Zed 开源革新的背后动机

Nathan Sobo 在谈及将 Zed 开源的决策时指出,主要目的是为了打造一款卓越的产品。他们的愿景是创造世界上最先进的代码编辑器,并且让广泛的开发者社区参与其使用和改进。由于 Zed 的目标用户群体主要是程序员,开源能够吸引更多的人才加入其开发。此外,开源的过程本身更有趣,有助于与用户建立更深层次的联系。Sobo 表示,他们不仅为 Zed 的成果感到自豪,而且也珍视在创建过程中的经历,并希望与社区分享这一过程,从中学习并不断完善 Zed。

Sobo 进一步强调,他们坚信,要构建并维护世界级的编辑器,最佳方式是将其与一个可持续的商业模式结合。为了支持一个全职团队持续领导 Zed 的开发,他们认为开源并不与商业成功相冲突。相对于出售专有编辑器,他们更愿意提供与用户编辑器无缝集成的服务,从而提高用户和团队的生产力。例如,Zed Channels 就是一种这样的服务,它目前对所有人免费,但计划在一段试验性测试期后对私人使用开始收费。他们还看到了通过提供服务器端计算支持 AI 功能作为另一种变现方式。

Sobo 明确表示,他们决定开源迄今为止编写的所有代码。然而,未来他们可能会针对商业和企业用例提供专有产品,尽管这些专有代码只会占他们开源代码的一小部分。他们还承诺,创造收入的需求永远不会干扰用户编写软件的需求,比如他们承诺永远不会在 Zed 中展示横幅广告,且如果这种情况发生,用户总是可以选择从源代码构建自己的 Zed 版本。

Zed 未来:无缝 AI 集成与跨平台支持

根据项目路线图,Zed 未来将支持无 OpenAI 密钥 AI 功能,在终端中实现 AI 内联辅助、简化辅助界面,并允许 AI 访问“缓冲区、文件、LSP、终端提示符”等功能。

除了扩展不足之外,Zed 还存在其他一些问题。首先是能够支持的编程语言有限。目前支持效果最好的是 Rust、TypeScript 和 Python,其他部分语言也能支持,但微软 C# 等语言则完全无法支持。此外项目描述还提到,“目前正积极开发将 Zed 与任意语言服务对接的功能”。

最后一个问题,就是当前 Zed 还只提供 mac 版。在 GitHub 上的回应中,开发团队表示未来将支持其他平台。路线图中提到了对 Linux 和 Web 的支持计划(Web 版可能通过 WebAssembly 实现,这也符合 Rust 的语言特性)。但截至本文撰稿时,项目组还从未提及 Windows 版本。也就是说除非通过 Windows Subsystem for Linux,否则 Windows 平台的用户恐怕还要再等上一段时间。

参考链接:

https://devclass.com/2024/01/25/rust-based-zed-editor-now-open-source-with-built-in-support-for-openai-and-github-copilot/

https://zed.dev/roadmap

https://zed.dev/blog/zed-is-now-open-source

活动推荐

在 2023 年 12 月 28 日至 29 日,QCon 全球软件开发大会在上海盛大召开,专注于探索软件开发的前沿趋势和创新技术。在这个快速变化的技术领域,如何打造一个既稳定又灵活,能适应未来变革的系统架构?如何确保架构的可扩展性和可维护性,满足不断发展的业务需求?针对这些挑战,我们精选了一系列关于架构设计的精彩演讲,并经过分享嘉宾授权,「AI 前线」为您独家呈现这些不容错过的演讲 PPT。

关注「AI 前线」,回复关键词「架构设计」免费获取。

今日荐文








图片

你也「在看」吗? 👇