作者丨Tim Anderson
編譯丨諾亞
出品 | 51CTO技術(shù)棧(微信號(hào):blog51cto)
Zed 編輯器項(xiàng)目(目前仍處于預(yù)發(fā)布階段)現(xiàn)已在 AGPL、GPL 和 Apache 許可下開(kāi)源。該編輯器以其高性能和多種AI輔助選擇為特色,但目前仍處于預(yù)覽階段且僅限于Mac平臺(tái)使用。
昨日,Zed創(chuàng)始人內(nèi)森·索博(Nathan Sobo)在一篇帖子中解釋道,Zed項(xiàng)目在GitHub上的代碼庫(kù)中,編輯器部分采用了GPL許可,服務(wù)器端組件則使用了AGPL(GNU Affero通用公共許可證),而GPUI(GPU加速用戶界面)部分采用了Apache 2.0許可。GPUI是由Zed團(tuán)隊(duì)開(kāi)發(fā)的一款Rust UI框架。
在此之前,索博曾創(chuàng)建過(guò)Atom編輯器以及Electron框架,后者被全球最流行的編輯器和輕量級(jí)IDE——VS Code所采用。Electron基于Chromium瀏覽器組件和V8 JavaScript引擎構(gòu)建,而Zed具有非常不同的代碼基礎(chǔ),它用Rust編寫(xiě)并編譯成原生代碼。
與擁有超過(guò)55,000個(gè)擴(kuò)展插件的VS Code不同,Zed目前僅具備初步的插件模型,并未形成完整的擴(kuò)展生態(tài)系統(tǒng);其FAQ中指出,“在Zed開(kāi)源之前我們不會(huì)添加插件系統(tǒng),但一旦完成開(kāi)源,我們將致力于擴(kuò)展性功能的開(kāi)發(fā)?!边@表明未來(lái)不久將會(huì)在這方面有更多的工作進(jìn)行。
得益于Rust的高性能以及缺乏插件,Zed運(yùn)行速度極快,針對(duì)開(kāi)發(fā)者對(duì)VS Code的最大痛點(diǎn)——性能問(wèn)題提供了解決方案。
有開(kāi)發(fā)者評(píng)論Zed新聞時(shí)表示:“VSCode對(duì)我來(lái)說(shuō)總是感覺(jué)極其緩慢……VSCode在基本代碼檢查和語(yǔ)法檢測(cè)方面的滯后讓我感到極度煩惱,最終不得不放棄使用它?!?/p>
另一位開(kāi)發(fā)者則說(shuō):“對(duì)于那些還沒(méi)試過(guò)Zed的人來(lái)說(shuō),這是我25年開(kāi)發(fā)生涯中首次使用的不讓人分心的GUI編輯器。很難描述當(dāng)我擺脫其他編輯器中的各種圖標(biāo)、菜單、顏色等像圣誕樹(shù)般的場(chǎng)景時(shí),我的專注度提高了多少。”
盡管Zed所提供的AI輔助功能在體驗(yàn)上尚顯粗糙,但對(duì)于偏好最大程度控制的開(kāi)發(fā)者而言可能會(huì)感到滿意。Zed同時(shí)支持GitHub Copilot和OpenAI。
關(guān)于Copilot的集成,Zed團(tuán)隊(duì)成員Mikayla Maki表示:“平衡其視覺(jué)和心理負(fù)擔(dān)至關(guān)重要,因?yàn)檫^(guò)于積極的Copilot可能適得其反,與現(xiàn)有如LSP自動(dòng)補(bǔ)全等功能產(chǎn)生沖突。因此,我們引入了按語(yǔ)言禁用Copilot的設(shè)置,增加了75毫秒的文本建議延遲,并在出現(xiàn)沖突時(shí)優(yōu)先考慮語(yǔ)言本身的LSP(語(yǔ)言服務(wù)器協(xié)議)而非Copilot。”
圖片
Zed編輯器的OpenAI助手面板是一個(gè)高度可配置的獨(dú)特功能。開(kāi)發(fā)者可以選擇模型類型,并且在任何時(shí)候,甚至在與AI對(duì)話過(guò)程中都可以更改模型。使用這一功能需要擁有OpenAI賬號(hào),并在Zed中配置API密鑰。這些密鑰是按照使用的令牌數(shù)量計(jì)費(fèi)的,而Zed會(huì)始終顯示選定模型剩余的令牌數(shù)。
與OpenAI大型語(yǔ)言模型的交互通過(guò)CMD-Enter提交,而不是僅用Enter鍵,這樣做的目的是使其“盡可能接近常規(guī)編輯器的感覺(jué),因此按下Enter鍵只會(huì)插入新的一行”。這也意味著用戶很難意外消耗令牌。響應(yīng)內(nèi)容會(huì)實(shí)時(shí)返回,如果看起來(lái)沒(méi)有幫助,可以通過(guò)按下Escape鍵取消請(qǐng)求。
此外,Zed還具備內(nèi)聯(lián)助手功能,能夠查看周圍代碼的上下文信息。Zed團(tuán)隊(duì)的另一位成員Marshall Bowers曾發(fā)布過(guò)關(guān)于利用AI進(jìn)行內(nèi)聯(lián)文檔編寫(xiě)以及將代碼從一個(gè)模板系統(tǒng)翻譯到另一個(gè)模板系統(tǒng)的案例,例如執(zhí)行類似“使用auk的DSL方式重寫(xiě)這段HTML,就像上面的post_link函數(shù)那樣”的命令。他表示,在處理大部分模板代碼時(shí),最終都采用了AI協(xié)助完成。
根據(jù)路線圖規(guī)劃,未來(lái)Zed將支持無(wú)需OpenAI密鑰的AI輔助功能,同時(shí)提供終端中的內(nèi)聯(lián)智能輔助、簡(jiǎn)化后的助手界面,以及讓AI能夠“在內(nèi)聯(lián)狀態(tài)下訪問(wèn)緩沖區(qū)、文件、LSP、終端提示符等內(nèi)容”。
除了缺乏擴(kuò)展插件之外,Zed還有一些其他問(wèn)題。目前,對(duì)于Rust、TypeScript和Python等語(yǔ)言的支持較好,許多其他語(yǔ)言部分支持,但也有一些語(yǔ)言,比如如Microsoft的C#,尚未得到任何支持,盡管功能描述中提到:“正在積極開(kāi)發(fā)使Zed連接任意語(yǔ)言服務(wù)器的能力”。
另一個(gè)問(wèn)題是Zed當(dāng)前僅限Mac平臺(tái)使用。針對(duì)此問(wèn)題有一個(gè)GitHub議題指出,計(jì)劃增加對(duì)其他平臺(tái)的支持。路線圖中包含了Linux和Web端支持(Web端可能采用Rust可以編譯為目標(biāo)的WebAssembly技術(shù)),但在撰寫(xiě)本文時(shí)并未提及Windows平臺(tái),這暗示W(wǎng)indows版本的開(kāi)發(fā)可能需要更多時(shí)間,或者用戶需通過(guò)Windows Subsystem for Linux(WSL)來(lái)間接使用。
參考鏈接:https://devclass.com/2024/01/25/rust-based-zed-editor-now-open-source-with-built-in-support-for-openai-and-github-copilot/