Anthropic 表示,內部單體儲存庫每天合併的變更從 5 月約 2,500 項,增至 2026 年 9 月每天超過 30,000 項。其10 月 13 日的工程說明介紹了 Scion,這套原始碼控制系統是為促成大部分成長的代理與自動化工作所打造。值得探討的工程問題是:當中央服務能處理歷史、提交與合併時,用戶端仍需自行完成哪些工作。

重大變革

  • 改變了什麼: Anthropic 在五個月內將單體儲存庫從 Git 遷移到 Scion。Scion 用戶端只擷取需要的物件,並將提交、合併、變基與歷史查詢交給伺服器。Anthropic 是為以線上代理與工作為主的負載打造此系統。
  • 為何重要: CI 工作可透過 API 要求差異或合併基點,而不必維護本機儲存庫。需要檔案時,稀疏或虛擬化檢出會限制寫入磁碟的內容。這使成本與營運責任轉向中央服務。
  • 後續觀察: Anthropic 表示,在其自有機群中檢出速度較快、基礎設施用量較低,但本文沒有獨立驗證。該公司稱 Scion 是客製化內部系統,遷移也需要調整程式碼審查、搜尋與 CI。

為何 Git 在這個單體儲存庫中變得昂貴

Git 的分散式設計讓每個完整複製本都具備離線工作所需的歷史與物件。Anthropic 表示,其單體儲存庫的主分支歷史接近 100 GB,壓縮後的工作副本則超過 25 GB。其 CI 機群每天約進行 2,500 萬次程式碼檢出,尚未計入開發環境、代理沙箱與研究工作。這些是 Anthropic 的工作負載數字,並非 Git 失效的一般門檻。

該公司先前已使用淺層複製、稀疏檢出、內部鏡像與儲存庫快照。它表示,隨著儲存庫與合併速率成長,數百個鏡像最終變得難以營運。Anthropic 的診斷很具體:多數用戶端本來就是在線的代理或工作,但工具仍承擔維持本機儲存庫的大部分成本。

Scion 將這種在線連線視為設計前提。該工程說明指出,伺服器會回應歷史與程式歸責查詢、建立提交,並執行合併與變基。用戶端保留容量受限的物件快取、將要求的工作檔案寫入磁碟,並監控本機檔案變更。放棄獨立執行這些操作的能力,是為了讓每個用戶端傳輸較少資料而作出的刻意取捨。

檢出可以更小,也可能不需要

Scion 透過 API 提供用戶端使用的原始碼控制查詢。Anthropic 表示,需要取得合併基點差異的 CI 工作可以直接詢問伺服器。自動化二分搜尋與還原流程也使用同一程式化路徑。對這些工作而言,工作可能完全不必實際建立工作副本。

工作需要檔案時,Scion 支援只包含指定目錄的稀疏檢出,也支援讀取時才建立檔案的虛擬化檢出。用戶端會遞迴要求缺少的特定樹與 blob,而非協商大型 packfile。每個要求的物件都有不可變、以內容定址的識別,因此快取可直接傳回,不必檢查內容是否改變。Anthropic 描述了用戶端與權威伺服器之間的節點層級常駐程式與區域快取;所有層級都使用相同的物件要求協定。

相較完整本機複製本,這種設計的故障與維護邊界不同。用戶端依賴服務執行 Git 可離線完成的操作,而服務必須依機群速度提供物件與歷史查詢。Anthropic 表示,設定快取層級的部分目的,是避免區域快取故障使上游伺服器不堪負荷。本文未提供該架構的可用性數據。

伺服器儲存與計算的內容

Scion 的工作單位是寫前日誌中的 changeset。Anthropic 表示,它會記錄相對於第一個父項變更的檔案,並以指標指向 blob 儲存中的壓縮檔案內容。伺服器建立 changeset 時,不必每次寫入都移動共用分支指標。其他衍生結構支援檔案歸責、路徑歷史與提交祖先等查詢;Anthropic 有些會立即計算,有些則延後處理。

這種分離對 API 設計很重要。工作可要求合併基點或檔案歷史,而不必攜帶本機計算答案所需的所有結構。維護這些結構的成本也轉移到 Anthropic 服務。該公司表示,儲存庫資料會分散配置、元件可獨立擴充,即使在伺服器上也沒有完整具現化的儲存庫副本。

Anthropic 表示,Scion 基礎設施使用的 CPU 與記憶體比先前 Git 鏡像設定少 200 倍,CI 與研究檢出如今只需數秒,而非數分鐘。該公司將 CI CPU 容量增加 25% 歸因於這項改變。這些比較是相對於 Anthropic 在自有工作負載下的先前內部系統;BIG CHANGE 未重現測量,也未檢視底層遙測資料。

遷移成本也是成果的一部分

Anthropic 表示,七名工程師打造了 Scion、搭配的程式碼審查工具 Antique 及相關系統,並在五個月內遷移單體儲存庫。該說明也提及新的程式碼搜尋、存取控制,以及審查與合併程式碼方式的變更。評估此設計的組織,必須把這些相鄰工作流程與原始碼控制服務本身一併納入考量。

Anthropic 明確表示,Scion 不適合作為通用 Git 替代品。其內部審查、搜尋與 CI 元件都是客製化的,改用非 Git 系統將需要變更整個開發生命週期。該說明較有限的架構教訓是:在線服務能替自動化用戶端回答更多原始碼控制問題,而用戶端只保留實際使用的檔案。Anthropic 指出,若不採用 Scion,仍可運用部分想法,例如更豐富的伺服器 API,以及更妥善地組合 Git 的 sparse 與 shallow 功能。

來源與延伸閱讀