比VS Code快得多!用Rust重寫(xiě),支持OpenAI、Copilot 的Zed編輯器...
Zed 是一款支持多人協(xié)作的代碼編輯器,底層采用 Rust,且默認(rèn)支持 Rust,還自帶了 rust-analyzer,主打“高性能”。1 月 24 日,備受關(guān)注的 Zed 項(xiàng)目宣布正式開(kāi)源。
Zed 代碼庫(kù)將采用 Copyleft 許可證,其中編輯器部分使用 GNU General Public License (GPL),服務(wù)器端組件則采用 Affero General Public License (AGPL)。此外,GPUI UI 框架將以 Apache 2 許可證分發(fā),允許開(kāi)發(fā)者構(gòu)建高性能桌面應(yīng)用程序,并自由選擇許可證分發(fā)其應(yīng)用。此次開(kāi)源轉(zhuǎn)變意味著 Zed 的代碼和相關(guān)組件將面向所有開(kāi)發(fā)者開(kāi)放,賦予社區(qū)更大的靈活性和合作空間。

最近在 GitHub 上發(fā)表的一篇帖子中,Zed 的編輯器創(chuàng)始人 Nathan Sobo 詳細(xì)介紹了 Zed 編輯器的多個(gè)關(guān)鍵組件以及它們各自的開(kāi)源許可證。Zed 的編輯器本體采用了 GPL 許可證,體現(xiàn)了對(duì)開(kāi)源精神和自由共享的強(qiáng)調(diào)。而其服務(wù)器端組件則采用了 AGPL 許可證,為網(wǎng)絡(luò)部署的應(yīng)用程序設(shè)置了更嚴(yán)格的共享要求。
此外,Zed 團(tuán)隊(duì)還開(kāi)發(fā)了一個(gè) GPU 加速的 UI 框架——GPUI,它遵循 Apache 2 許可證,旨在超越基于 Web 的 Electron 框架的限制,利用 GPU 加速來(lái)提供更流暢和響應(yīng)更快的用戶界面。
談到 Nathan Sobo ,他不僅僅是 Zed 的創(chuàng)始人,還是 Electron 框架和廣受歡迎的 Atom 編輯器的開(kāi)發(fā)者。Electron 是一基于 Chromium 瀏覽器組件和 V8 JavaScript 引擎的框架,現(xiàn)已成為全球領(lǐng)先的輕量級(jí) IDE 和編輯器——Visual Studio Code (VS Code) 的一部分。
然而,Zed 在技術(shù)實(shí)現(xiàn)上走了一條與 Electron 完全不同的路線。Zed 是用 Rust 語(yǔ)言構(gòu)建的,直接編譯為本機(jī)代碼,這種方法與基于 Web 技術(shù)的 Electron 形成了鮮明對(duì)比。
有趣的是,Atom 編輯器曾被微軟收購(gòu)并最終被淘汰以支持 VS Code, Zed 的出現(xiàn)似乎帶有一種“復(fù)仇”之意。
Zed 編輯器: Rust+ 少插件,速度極快在功能和性能方面,Zed 與市場(chǎng)上的主流產(chǎn)品 VS Code 形成了鮮明對(duì)比。盡管 VS Code 以其超過(guò) 55,000 個(gè)插件選項(xiàng)而著稱,但 Zed 尚在開(kāi)發(fā)其插件模型,還未形成自己的完整生態(tài)系統(tǒng)。Zed 項(xiàng)目 FAQ 中提到,在開(kāi)源之前,他們不會(huì)添加插件系統(tǒng),但一旦開(kāi)源,將致力于增強(qiáng)其可擴(kuò)展性。
Zed 的一個(gè)顯著優(yōu)勢(shì)是其卓越的性能,這在很大程度上得益于 Rust 的高效特性以及目前較少的插件數(shù)量。這種設(shè)計(jì)策略使 Zed 擁有極快的運(yùn)行速度,直接針對(duì)了 VS Code 用戶群體中最關(guān)心的性能痛點(diǎn)。

有多位開(kāi)發(fā)人員在 Zed 帖子下評(píng)論道,“在我使用 Zed 之前,我從來(lái)沒(méi)覺(jué)得我的VSCode慢?!薄癡S Code 的運(yùn)行速度向來(lái)極其緩慢……而經(jīng)歷過(guò)煩人的基本代碼檢查和 linting 代碼分析之后,我干脆棄坑了?!?/p>
另一位用戶也對(duì)其體驗(yàn)表示高度贊賞,“各位還沒(méi)體驗(yàn)過(guò) Zed 的朋友,我可以向大家保證,這是我 25 年開(kāi)發(fā)生涯中用過(guò)的唯一一款不會(huì)讓人分心的 GUI 編輯器。以往的工具總是用圖標(biāo)、菜單、色彩等花里胡哨的元素?cái)_人心神,而現(xiàn)在我的注意力可謂空前集中,這正是 Zed 的優(yōu)勢(shì)所在。”
Zed 的 AI 輔助方法雖然比較粗糙,但反而迎合了那些想要強(qiáng)調(diào)自身控制權(quán)的開(kāi)發(fā)用戶。Zed 支持 GitHub Copilot 與 OpenAI。
關(guān)于 Copilot,Zed 開(kāi)發(fā)團(tuán)隊(duì)成員 Mikayla Maki 表示,“在視覺(jué)效果和心智負(fù)擔(dān)間求取平衡至關(guān)重要,過(guò)于急切地?cái)U(kuò)大 Copilot 功能反而會(huì)得不償失,甚至與 LSP(語(yǔ)言服務(wù)協(xié)議)自動(dòng)補(bǔ)全等原有功能發(fā)生沖突。為此我們引入了針對(duì)各種語(yǔ)言禁用 Copilot 的設(shè)置,還在建議代碼片段前添加了 75 毫秒的防誤操作機(jī)制。而一旦出現(xiàn)沖突,Zed 會(huì)優(yōu)先選擇語(yǔ)言的真實(shí) LSP,而非 Copilot 建議?!?/p>

Zed OpenAI 助手面板(圖片來(lái)自 Zed 說(shuō)明文檔)
作為獨(dú)立功能,Zed 的 OpenAI 助手面板擁有極高的可配置空間。
開(kāi)發(fā)人員可以選擇模型類型并隨時(shí)變更,甚至在 AI 會(huì)話期間也能靈活切換。當(dāng)然,大家需要先擁有一個(gè) OpenAI 賬戶,并在 Zed 中配置 API 密鑰。這些密鑰將按使用的 token 量計(jì)費(fèi),而 Zed 將始終顯示所選模型的剩余 token 數(shù)量。
與 OpenAI 大語(yǔ)言模型間的交互會(huì)通過(guò) CMD-Enter(而不止是輸入)來(lái)提交,旨在讓使用感受“盡可能接近傳統(tǒng)編輯器,即按下回車鍵只會(huì)插入換行符”。這樣就避免了意外消耗 token 的情況。對(duì)于傳回的響應(yīng)結(jié)果,如果開(kāi)發(fā)者覺(jué)得沒(méi)什么幫助,也可以用 ESC 鍵快速取消。
Zed 還提供內(nèi)聯(lián)助手功能,可幫助查看當(dāng)前代碼的上下文。Zed 團(tuán)隊(duì)成員 Marshall Bowers 發(fā)布了關(guān)于如何用 AI 進(jìn)行內(nèi)聯(lián)文檔,以及在不同模板系統(tǒng)間翻譯代碼的文章。其中提到 “使用 post_link 等函數(shù) auk DSL 重寫(xiě)此 HTML”之類的命令。他還提到,AI 可用于協(xié)助補(bǔ)全大部分模板代碼。
Zed 開(kāi)源的背后動(dòng)機(jī)Nathan Sobo 在談及將 Zed 開(kāi)源的決策時(shí)指出,主要目的是為了打造一款卓越的產(chǎn)品。他們的愿景是創(chuàng)造世界上最先進(jìn)的代碼編輯器,并且讓廣泛的開(kāi)發(fā)者社區(qū)參與其使用和改進(jìn)。由于 Zed 的目標(biāo)用戶群體主要是程序員,開(kāi)源能夠吸引更多的人才加入其開(kāi)發(fā)。此外,開(kāi)源的過(guò)程本身更有趣,有助于與用戶建立更深層次的聯(lián)系。Sobo 表示,他們不僅為 Zed 的成果感到自豪,而且也珍視在創(chuàng)建過(guò)程中的經(jīng)歷,并希望與社區(qū)分享這一過(guò)程,從中學(xué)習(xí)并不斷完善 Zed。
Sobo 進(jìn)一步強(qiáng)調(diào),他們堅(jiān)信,要構(gòu)建并維護(hù)世界級(jí)的編輯器,最佳方式是將其與一個(gè)可持續(xù)的商業(yè)模式結(jié)合。為了支持一個(gè)全職團(tuán)隊(duì)持續(xù)領(lǐng)導(dǎo) Zed 的開(kāi)發(fā),他們認(rèn)為開(kāi)源并不與商業(yè)成功相沖突。相對(duì)于出售專有編輯器,他們更愿意提供與用戶編輯器無(wú)縫集成的服務(wù),從而提高用戶和團(tuán)隊(duì)的生產(chǎn)力。例如,Zed Channels 就是一種這樣的服務(wù),它目前對(duì)所有人免費(fèi),但計(jì)劃在一段試驗(yàn)性測(cè)試期后對(duì)私人使用開(kāi)始收費(fèi)。他們還看到了通過(guò)提供服務(wù)器端計(jì)算支持 AI 功能作為另一種變現(xiàn)方式。
Sobo 明確表示,他們決定開(kāi)源迄今為止編寫(xiě)的所有代碼。然而,未來(lái)他們可能會(huì)針對(duì)商業(yè)和企業(yè)用例提供專有產(chǎn)品,盡管這些專有代碼只會(huì)占他們開(kāi)源代碼的一小部分。他們還承諾,創(chuàng)造收入的需求永遠(yuǎn)不會(huì)干擾用戶編寫(xiě)軟件的需求,比如他們承諾永遠(yuǎn)不會(huì)在 Zed 中展示橫幅廣告,且如果這種情況發(fā)生,用戶總是可以選擇從源代碼構(gòu)建自己的 Zed 版本。
Zed 未來(lái):無(wú)縫 AI 集成與跨平臺(tái)支持 
根據(jù)項(xiàng)目路線圖,Zed 未來(lái)將支持無(wú) OpenAI 密鑰 AI 功能,在終端中實(shí)現(xiàn) AI 內(nèi)聯(lián)輔助、簡(jiǎn)化輔助界面,并允許 AI 訪問(wèn)“緩沖區(qū)、文件、LSP、終端提示符”等功能。
除了擴(kuò)展不足之外,Zed 還存在其他一些問(wèn)題。首先是能夠支持的編程語(yǔ)言有限。目前支持效果最好的是 Rust、TypeScript 和 Python,其他部分語(yǔ)言也能支持,但微軟 C# 等語(yǔ)言則完全無(wú)法支持。此外項(xiàng)目描述還提到,“目前正積極開(kāi)發(fā)將 Zed 與任意語(yǔ)言服務(wù)對(duì)接的功能”。
最后一個(gè)問(wèn)題,就是當(dāng)前 Zed 還只提供 mac 版。在 GitHub 上的回應(yīng)中,開(kāi)發(fā)團(tuán)隊(duì)表示未來(lái)將支持其他平臺(tái)。路線圖中提到了對(duì) Linux 和 Web 的支持計(jì)劃(Web 版可能通過(guò) WebAssembly 實(shí)現(xiàn),這也符合 Rust 的語(yǔ)言特性)。但截至本文撰稿時(shí),項(xiàng)目組還從未提及 Windows 版本。也就是說(shuō)除非通過(guò) Windows Subsystem for Linux,否則 Windows 平臺(tái)的用戶恐怕還要再等上一段時(shí)間。
參考鏈接:
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
聲明:本文為 InfoQ 翻譯整理,未經(jīng)許可禁止轉(zhuǎn)載。
往期推薦
我是 polarisxu,北大碩士畢業(yè),曾在 360 等知名互聯(lián)網(wǎng)公司工作,10多年技術(shù)研發(fā)與架構(gòu)經(jīng)驗(yàn)!2012 年接觸 Go 語(yǔ)言并創(chuàng)建了 Go 語(yǔ)言中文網(wǎng)!著有《 Go語(yǔ)言編程之旅 》、開(kāi)源圖書(shū)《 Go語(yǔ)言標(biāo)準(zhǔn)庫(kù) 》等。
堅(jiān)持輸出技術(shù)(包括 Go、Rust 等技術(shù))、職場(chǎng)心得和創(chuàng)業(yè)感悟!歡迎關(guān)注「polarisxu」一起成長(zhǎng)!也歡迎加我微信好友交流: gopherstudio
