Anthropic 自研版本控制 Scion:五個月告別 git,全文翻譯與 HN 討論整理

代理寫程式太快,git 先撐不住。Anthropic 五個月用 Scion 取代 git,全文翻譯加 13 則 HN 留言整理加一頁懶人包。

前言

代理寫程式的速度太快,版本控制先撐不住。Anthropic 在五個月內用自研系統 Scion 取代 git,同期每日合併量從 2,500 筆飆到超過 30,000 筆。以下先附一頁懶人包,再附原文全文翻譯與 HN 討論整理。

懶人包

手機版若看不到內嵌頁面,可直接開啟:https://derek-static.pages.dev/anthropic-scion-lazy.html

原文翻譯:在 Anthropic 重新設計版本控制

原文:https://www.anthropic.com/engineering/redesigning-source-control

在 Anthropic,寫程式碼早已不是做系統或做研究的瓶頸。Claude 能自主迭代研究迴圈、對複雜程式做微觀最佳化、從零開始做新服務,速度與規模前所未見。現在的瓶頸,反而是那些為人類規模而設的開發基礎設施:版本控制、建置與 CI。

2026 年 5 月,Anthropic 平均每天合併約 2,500 筆程式變更;到 9 月,每天合併超過 30,000 筆。我們預期這個成長速度短期內不會放緩;對合併程式碼的潛在需求,幾乎是無限的,每解掉一個瓶頸,產生的程式碼量馬上又再往上跳。

為了支撐這種成長,我們做出自研版本控制系統 Scion,並在五個月內把單一儲存庫從 git 完整遷移過去。同一期間,我們還開發並上線了程式碼審查介面(名為 Antique)、程式碼搜尋、功能完整的版本控制權限系統、管理並落地大量已審查程式碼的新作法等。本文聚焦 Scion 是怎麼做出來的。這是個有趣的案例:Claude 寫程式碼的能力,既是把我們推入這個處境的原因,也是我們能快速做出高品質、可擴展系統的手段。

單一儲存庫的成長

Anthropic 用 Claude 寫軟體的程度遠超幾乎所有其他公司,所以我們總是最先看到為人類規模而設的工具在哪裡開始吃力。版本控制只是其中一例。

Git 是去中心化系統:每個複製都是一份完整、自足的儲存庫,可以離線計算差異、讀取歷史與責任追溯、取出任何版本。對絕大多數儲存庫來說,這是正確的設計,也是 git 成為標準的一大原因。

但隨著單一儲存庫長大,它越來越不適合這個設計空間。光是主分支的歷史就將近 100 GB,壓縮後的工作複本也超過 25 GB。我們每天為 CI 做約 2,500 萬次程式碼取出,還沒算開發者環境、代理沙盒與研究任務。若都用原始方式抓取,相當於每天超過 600 PB 的 git 流量。

Git 有淺複製、稀疏取出、承諾者遠端等處理部分儲存庫的工具,也有內部鏡像與 blob 快照等變通作法,我們全都用過——高峰期營運了數百個內部 git 鏡像。這爭取到時間,但隨著合併速率上升,營運越來越困難。快照在兩次更新之間離主分支尖端越來越遠,要讓依賴歷史的操作在部分複製上正常運作,需要越來越多細心維護。

退一步看,我們其實是把 git 當集中式系統在用,只有一份權威複本,但幾乎所有客戶端都是生來就線上的代理與任務。讓 git 擅長分散式、離線工作的那些特性,反而在儲存庫變大時拖累擴展能力。於是我們自問:如果從一開始就假設代理永遠線上來設計版本控制,會長什麼樣子?

代理規模版本控制的六項原則

第一,客戶端永遠線上。幾乎所有客戶端都是代理與任務,把客戶端與協定設計成伺服器永遠可達,需要資料時再去抓。

第二,客戶端與伺服器不對稱。伺服器負責回答檔案歷史與責任追溯問題、建立提交、執行合併與變基等。客戶端只維護有限的本地物件快取、把工作複本檔案鋪到磁碟、監控檔案系統變化。它自己幾乎算不了什麼,但本地需要的資料少得多。

第三,功能完整的版本控制服務能驅動許多新應用。客戶端用的所有版本控制查詢都同時以 API 暴露,很多任務根本不需要本地儲存庫。沒有這種廉價、可程式化存取版本控制的手段,內部許多工具在這個規模下根本不可行。

第四,所有東西都必須能水平擴展。儲存庫資料分散存放,每個元件都能獨立擴展;即使在伺服器端,也沒有任何一份完整具現化的儲存庫複本,也沒有相當於打包檔的東西,所以不需要儲存庫維護工作。

第五,提交必須廉價、增量、無鎖。每次提交、變基或合併都在伺服器上發生,所以沒有東西要推送,但每個操作都必須快。成本必須隨變更大小擴展,而非隨儲存庫整體大小擴展。開發流程不鼓勵使用分支與標籤這類參照,主參照或發版分支除外,因為每台伺服器都要達成一致,全域狀態是潛在的擴展難題。

第六,工作複本是選配,且生來稀疏。CI 任務若只需要某個提交與其合併基準點的差異,直接問伺服器即可。協定以稀疏取出為中心,只包含客戶端要求的目錄,以及按需具現化檔案的虛擬化取出,客戶端只為實際讀到的東西付費。

Scion 如何運作

在 Scion,工作單位是變更集,即寫入前日誌中的一筆。git 提交存的,是指向樹的指標,變更集存的,是相對第一個父節點的變更檔案清單,以及指向 blob 儲存中壓縮檔案內容的內容定址指標。變更集在伺服器端建立,一建立就隨處可用。這種結構讓系統能以極高吞吐量接受變更集,因為沒有打包檔要接收、沒有鎖定或跨伺服器協調、也沒有參照要搬動。

變更集只記錄變更了什麼,光靠它無法快速回答某一行最後是誰改的。為此,Scion 從變更集再建出額外資料結構,包括專門的檔案責任追溯與路徑歷史結構,以及提交圖的跳表。凡不是變更集本體的,都稱為衍生資料,全部經由同一套通用機制計算。每種衍生資料都是遞迴定義的:某個變更集的值,由其父變更集的值算出來。好處有三:容易新增種類、可選即時或延後計算、客戶端看不到內部實作所以可自由最佳化。

一小組 Scion 伺服器為客戶端需要的任何操作提供 API。所有資料都是內容定址的,存進去就不再變,任何伺服器都能安心快取。客戶端經由 socket 與守護行程對話,由它為整台機器存物件;守護行程從定期更新的快照出發,之後只跟同區域的快取伺服器要東西;快取缺物件時,才去問權威伺服器。三層回應完全相同的 RPC,嚴格分層以隔離故障域。

每一層的快取命中率都超過 99%。基礎設施體積只有先前 git 鏡像的兩百分之一。CI 與研究任務取出程式碼快了兩個數量級,以秒計而非分鐘;光 CI 就省下 25% CPU 容量。

開發 Scion 學到的事

第一,小團隊快速開發會變得更常見。七人團隊在五個月內做出 Scion 與 Antique,外加半打相關系統,並完整遷移過去,而同期每日合併量還成長了十倍。

第二,工程師的價值不減,但工作在改變。參與的工程師現在都認為 Claude 寫程式碼比他們強,但工程師仍提供跨系統高層元件的理解與設計取捨判斷。很常發現,工程師的角色是跟 Claude 說不。團隊成員仍會審查每個變更請求,但現在看的是變更的意圖,而非逐行讀程式碼。

第三,最佳化與品質大幅推升。憑藉 Claude 寫大量程式碼的速度,Scion 是測試與防禦最完備的程式庫之一:密封模擬、模糊測試、精密限流一應俱全。Claude 還隨手找到重大演算法最佳化,那本來要專家花數天到數週分析調校。

第四,為單一儲存庫安全的新形態打下基礎。支援儲存庫層級的豐富存取控制,也能對個別目錄套用權限。程式碼審查工具能表達複雜的語義核准約束,區分單純註解修改,以及敏感的邏輯變更。

第五,新等級的營運卓越成為可能。團隊指派 Claude 緊盯單一元件的健康狀態,稱為超級粉絲。它們能看遙測與日誌,像個沒別的事、只會一直重整圖表找異常的資深工程師,能抓到傳統告警看不見的細微新穎問題。

第六,徹底重想既有假設。正規的合併佇列在代理規模下不太合理:測試還在跑的同時就有數百甚至數千筆變更合併。團隊轉而投資合併後與部署前的自動化測試。併發變更可能衝突,但 Claude 修衝突的速度,通常比人類找出衝突還快。

回饋生態系

Scion 絕不是一般用途的 git 替代品。這裡談的概念,只對真正巨大的單一儲存庫有意義。實務上很難把 Scion 做成對其他組織廣泛有用的形態:與 git 差異極大,內部工具高度客製。

不過,團隊預期這類問題在未來六到十二個月會更常見。他們認為最有影響力的事是分享思路,讓其他開發者能把 Scion 最成功的部分套用到 git:git 伺服器不必跟 git 客戶端同一種作法,新穎的伺服器架構,確實能顯著提升擴展能力,平台可以提供功能完整的伺服器端 RPC,協商協定也不必長得跟今天一樣。最後,他們肯定 git 社群花了近二十年為數百萬開發者擴展平台,期望與 GitHub、GitLab 及開源社群合作。

HN 網友怎麼看

本次討論串共 13 則留言,風向分三派。

帳號 觀點
steveklabnik 大實驗室背書集中式回歸,順勢推廣自家 git 相容橋
trnvll 自家模型優勢恐怖,用次級模型競爭的公司會被甩開
jcims 數 Claude Code 發版說明的條列點數,對照本文圖表
amelius 等四人 提案把提示詞當原始程式碼提交,追問規格驅動開發、可重現性存疑
JohnMakin 批評怪 git 用法滲進模型訓練,害外部代理操作走鐘
mijoharas 酸:這不就是重發明 SVN
willmeyers 類比大型遊戲與 3D 資產版控
memonkey 抱怨文件,要一部淺顯的解說影片
jsrozner 歪樓:拿 iPhone 重複拍攝類比代理狂產程式碼

三個值得帶走的點:集中式回歸是共識,超大單體儲存庫加永遠線上客戶端,繞一圈回到類 Piper 架構並不意外;最有火藥味的是模型行為汙染指控,把技術文跟模型訓練掛鉤;提示詞即原始程式碼分支正反合,可對照提交必須廉價增量的脈絡。

出處

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *