「原始碼已經不是我們軟體的來源了」:Zed 創辦人想把 Git 換掉

「原始碼已經不是我們軟體的來源了」:Zed 創辦人想把 Git 換掉

發布於
·19 分鐘閱讀
AIAI Agent開源產品創業產業觀察程式開發設計VC投資

TL;DR

  • Zed 創辦人 Nathan Sobo 說了一句很重的話:對話才是軟體真正的來源,程式碼只是下游產物
  • 他曾在 GitHub 做了九年 Atom,順便生出 Electron,然後親口承認那是一場「跟魔鬼的交易」
  • Zed 用 Rust 從零刻了一套 UI 框架 GPUI,直接跟顯示卡講話,目標是按下按鍵後下一次螢幕更新就看到字
  • 新產品 Delta 底下是 DeltaDB,一套記錄每一次編輯操作的版本控制,不是只記快照
  • 你可以把跟 AI 的整段對話分享出去,同事點連結就能跳進來,還能看到「這行是哪個模型寫的」
  • 網頁版把 Rust UI 編譯成 WASM 跑在瀏覽器裡,等於「把桌面搬進瀏覽器」,跟 Electron 剛好反過來
  • Nathan 對 UI 未來的判斷:語言是更好的介面,所以未來的 UI 只會越來越少

Syntax.fm 是 Wes Bos 跟 Scott Tolinski 兩位資深前端工程師主持的網頁開發 Podcast,講話很鬆,但常常會不小心聊出產業裡最尖的東西。這集在二〇二六年八月十二日播出,來賓是 Nathan Sobo,Zed Industries 的共同創辦人兼執行長。

Zed 是一款用 Rust 從零寫起的開源程式編輯器,今年募了三千兩百萬美金的 B 輪,同時公布了他們的新武器 DeltaDB。Nathan 本人的履歷更有意思:他在 GitHub 待了九年,是編輯器 Atom 的主要推手,而 Atom 為了跨平台衍生出來的 Electron,到今天還在你我的電腦上吃 RAM。所以當這個人跳出來說「我要把 Git 換掉」的時候,至少值得聽完。

一場自己承認的魔鬼交易

Nathan 講 Atom 的那段很坦白。當年的目標是可駭改、跨三大平台,最快的路徑就是把一個瀏覽器打扮成桌面應用程式。他們做到了,Electron 也活了下來。

代價是效能。瀏覽器那一整套抽象層,為了向後相容、為了跑在所有裝置上,天生就是最小公倍數。他說他坐在那裡盯著 Chrome 開發者工具的效能分析圖,看著一堆自己完全不知道裡面在幹嘛的時間切片、看著垃圾回收在跑、看著樣式重算跟重排,那種完全沒有控制權的感覺,讓他無法想像自己接下來十年都在這種東西裡寫程式。

Atom 最後輸給 VS Code,他的復盤也很誠實:不是輸在設計,是輸在 TypeScript 跟後來長出來的 LSP(Language Server Protocol,讓編輯器跟語言工具溝通的標準協定)。VS Code 整個乘著這條線起飛,而 Atom 那邊還在用 CoffeeScript 寫(他特別加了一句「那不是我選的」)。等他們意識到 LSP 會變成基礎設施,已經太晚了。

這段有點 Pied Piper 的味道。技術不差、想法很前面,但對手是更成熟的團隊、更成熟的程式碼庫,加上一個你沒押到的技術轉折,然後就結束了。

目標是零延遲:一切從 shader 開始

到了 Zed,他做了一個聽起來很瘋的決定:不用任何現成的 UI 框架,從 shader(顯示卡上跑的小程式)開始寫起。

他一開始還想偷懶,用 Rust 寫核心、Electron 包外層,結果光是把資料序列化成 JSON 送出來,效能就沒了。最後乾脆全部自己來,去 YouTube 上翻寫 Shadertoy 那個人的教學,學怎麼寫最原始的 shader、怎麼幫一個 2D 應用程式做算圖器。當時沒有 AI agent 可以問,全靠自己啃。

目標只有一句話:收到鍵盤敲擊,在螢幕的下一次更新(V-Sync)就要有像素出來。零可感知延遲。

六年後,這套框架叫 GPUI,開源在 Zed 的程式碼庫裡,有人拿去做過高頻量化交易的看盤軟體。Nathan 說他們沒有像 Rails 那樣去經營一整個生態系,因為 Zed 自己動得太快了。

要不要再選一次 Rust?他說百分之百會。開源專案要收陌生人的 pull request,記憶體安全跟嚴格的型別檢查是命。唯一的抱怨是編譯太慢,然後他補一句「我每次講都有人在留言區說不慢,拜託,它就是比我想要的慢」。

真正的重點:對話變成上游

前面那些都是鋪陳,這集最有殺傷力的是這段。

Nathan 說,Zed 從第一天的願景就是「在程式碼裡對話,而且對話跟程式碼綁在一起」,而不是像 Git 那樣,對話綁在一張張快照上。但過去兩三年,特別是去年秋天之後,這件事的方向整個反過來了:

以前是我們先寫完程式碼,然後在裡面留言討論。現在是對話先發生,程式碼從對話裡長出來,變成下游的產物。

這句話值得停三秒。如果對話才是真正的 source of truth,那你今天在 GitHub 上 review 的那個 diff,本質上是在看一份翻譯稿,而且是被壓縮過的翻譯稿。

他對 Git 的批評也很直接:Git 是 Linus 為了讓人在核心郵件列表上互相寄 patch 而設計的,一切以快照為單位,跑在 email 的節奏上。這在人類手打程式碼的年代還行,因為 diff 大致上可以當成「需要討論的內容」的合理代理。但當 agent 一口氣吐出一萬行 diff,這個代理就崩了。網頁載不動、你看不懂、寫的人自己也沒完全看懂。這件事我之前在一週合併六十個 PR,然後整個專案爛掉裡聊過,Syntax 這群人顯然一直在這個題目上打轉。

Delta 是什麼:把整段對話變成可以共用的空間

Delta 是 Zed 的第二個產品,底下是 DeltaDB。

DeltaDB 用的是 CRDT(無衝突複製資料型別,讓多人同時改同一份東西不會互相打架)。它不只記 commit,而是把每一次編輯操作、每一個流進來的 token 都連續記下來。他們甚至沒有依賴作業系統的檔案系統,而是自己用 B-tree 建了一套虛擬檔案系統模型,用寫時複製的持久化資料結構,讓「複製一整份工作目錄」變成幾乎免費的操作。檔案系統對他們來說只是一個「使用者介面」,真正的真相在資料庫裡。

聽起來很硬,但使用者看到的東西很簡單:

你跟 agent 開了一個 thread,做到一半覺得卡住,把連結丟給同事。同事點開,他的機器上會同步出一份一模一樣的工作目錄,而且他看得到你從頭到尾的完整上下文視窗,可以直接接手跟 agent 對話,也可以在任何一行留註解。所有人的編輯即時同步,不需要 commit、不需要 push。

還有一個細節我覺得特別有意思:每一行程式碼都可以查是哪個 agent、哪個模型寫的。model blame。以後 review 的時候大概會出現「這段是 Opus 寫的,難怪」這種對話。

介面設計上也不是又一個聊天視窗。Nathan 說他們把對話當成「文件」而不是「聊天」,游標可以在裡面自由移動,agent 吐出來的任何東西,不管是它跑的指令、它改的程式碼、還是那種列到英文字母 Z 的巢狀清單,你都可以把游標放上去直接開始打字註解。他的理由很生活化:他受夠了要記住「agent 剛剛講的那個選項是 C 還是 F」。

決策疲勞才是真正被解決的問題

主持人講了一段我很有共鳴的話。以前一天可能做十個、二十個真正重要的決策,現在是無止盡的「這樣可以嗎」「要用哪個方案」「要不要繼續」,一整天都在被問問題。

Nathan 接得更狠:既然現在我們做的事情就只剩下「決定」,那把人拉進決策的過程,才叫 review。你可以把對話紀錄釘在 pull request 上讓別人事後讀,但為什麼不直接讓那段對話本身就是協作的?

他提到自己在 Pivotal Labs 的經歷:那是一家配對程式設計的公司,早上九點到晚上六點,兩個鍵盤兩個滑鼠插同一台機器,整天一起解問題。他說那段時間讓他進步得非常快,而他做工具做了二十年,本質上就是想把那個經驗搬到網路上。

當然,很多人聽到「配對」就開始冒冷汗,因為那意味著要跟人講話。但這裡有個更務實的角度:AI 讓產出變得極便宜之後,稀缺的東西從「誰能寫」變成「誰能判斷」,而判斷這件事,兩顆腦袋確實比一顆穩。這跟Design Engineer 正在崛起講的其實是同一件事的兩面:生產不再是門檻,剩下的差距全在品味跟判斷力。

從瀏覽器搬到桌面,再從桌面搬回瀏覽器

Delta 有網頁版,做法是把 GPUI 編譯成 WASM,用 WebGL 當繪圖層。所以你在瀏覽器裡看到的介面,其實是 Rust 寫的原生 UI,不是 HTML。

Nathan 自己講得很好笑:以前 Electron 是把瀏覽器搬到桌面上,現在他們是把桌面搬進瀏覽器裡,繞了一圈回來,但這次不用 HTML。瀏覽器對他來說只是通路,是為了讓人點個連結就能加入,不用先下載安裝。

更妙的是混合模式:桌面版可以在你自己的電腦上跑程式碼,網頁版跑在他們的雲端執行器上,而同一個 thread 裡兩邊可以來回交棒。

商業上的邏輯也很清楚。演算法本身不依賴中央協調者,但他們還是先做中心化的 Delta.dev,一方面體驗比較穩,另一方面「這一直是 Zed 要靠協作服務賺錢的計畫」。編輯器開源,協作收費,這個模型不新,但在 agent 時代可能終於找到了非付不可的理由。

他對 UI 未來的判斷

最後主持人問到生成式 UI 的話題,Nathan 的回答很乾脆:未來的 UI 會變少,因為終極的使用者介面就是語言。

他的論證有意思。過去四五十年,唯一能用語言跟電腦講話的只有工程師,而且過程痛苦到要背一堆括號跟分號(他說他試著跟九歲的兒子解釋這件事,講到一半覺得整件事實在很荒謬)。那些設計得最精緻的圖形介面,最後都逼近了手語的複雜度,難學到不行,所以大家只好停在很粗糙的公約數上。自然語言打開之後,這個天花板就沒了。

但他也不認為圖形會消失,Delta 是圖形應用程式而不是終端機 agent 就是這個立場。圖示、進度條、圖表這些東西在等寬字元的格子裡做不出來。他們已經內建 Mermaid(用文字語法畫流程圖的格式,可以想成圖表版的 Markdown),因為那對 agent 來說是 token 效率最高的畫圖方式。

還有一個很日常的例子。他去找小孩的夏令營資訊,網站爛到無法導覽,他直接把整個網站丟給 agent 說「你讀,然後回答我的問題」。他的結論是:我不想瀏覽,我想直接問;我根本不想要那個介面,我只想要那件事被完成。

我的看法

我對 Delta 這套東西的判斷是:方向對,但落地會比 demo 難。

對的部分很清楚。當 agent 產出量遠超過人類的閱讀速度,以「快照」為單位的協作就是壞掉的,這件事只會越來越明顯。把對話升級成一等公民、可以分享、可以多人同時進去、還能追到是哪個模型寫的,這是往正確方向走的。

難的部分是習慣跟權力。Git 難用,但它是免費的、去中心化的、每個人都會的。要人把工作流搬進一個中心化的付費平台,等於重新交出一部分掌控權。Nathan 自己也說了,長期他想取代 GitHub,短期先當補充。這種話通常代表他很清楚這仗要打很久。

另外一個我還沒想清楚的問題是:把整段跟 agent 的對話變成可共享的資產之後,這些對話會不會反過來變成新的噪音來源?一萬行 diff 讀不完,難道八萬 token 的對話紀錄就讀得完了嗎?我猜真正的解法還是在索引跟摘要那一層,而 Nathan 提到的「全域索引,把程式碼庫當成所有對話的畫布」大概就是在回答這個。那部分還沒出貨,值得盯著看。

不過有一件事是確定的:一個花六年時間、只為了讓按鍵到像素之間沒有延遲的人,做出來的東西通常不會太隨便。

這類把技術決策跟產業轉折串在一起的觀察,我在 wilsonhuang.xyz 上會持續寫,訂閱一下就不會漏掉。

Sources:

推薦閱讀

喜歡這篇文章嗎?

訂閱電子報,每週收到精選技術文章與產業洞察,直送你的信箱。

💌 隨時可以取消訂閱,不會收到垃圾郵件