產業脈動 2026 年 10 月 14 日

2026-10-14 — Anthropic 以自研 Scion 取代 git 管理 monorepo

primary=https://www.anthropic.com/engineering/redesigning-source-control

Anthropic 以自研 Scion 取代 git 管理 monorepo

Anthropic Engineering · 2026-10-13

Anthropic 把 monorepo 從 git 搬到自研的版本控制系統 Scion,commit、rebase、merge 全部改在伺服器端完成,用戶端不再持有完整副本。團隊七人約五個月完成遷移,同時配套重寫了 code review 工具 Antique。

這篇是 Anthropic 於 2026-10-13 發布的工程文章,文中也明說 Scion 並非 git 的通用替代品。

原本的問題

文章給的量級是:2026 年 5 月每天約合併 2,500 個 change,到 9 月已超過 30,000 個。main 分支歷史接近 100 GB,壓縮後的 working copy 超過 25 GB,CI 每天約 25 million 次 checkout。作者估計若照 git 原生方式抓取,每天流量會超過 600 PB。

他們先用過 shallow clone、sparse checkout、promisor remote、以 blob 儲存的 seed,尖峰時還有數百個內部 git mirror。這些手段隨合併速度上升越來越難維運,seed 也離 main 的最新狀態越來越遠。

根本矛盾在設計假設:git 是去中心化的,為離線、持有完整副本的用戶端而生。Anthropic 的用戶端幾乎都是永遠在線的 agent 與 job,這個假設反而成了負擔。

採用的方法

Scion 的設計原則包括:

  • 用戶端永遠在線,需要時才抓資料,只保留有上限的本地 object cache。
  • 歷史、blame、commit、merge、rebase 都由伺服器處理,沒有東西要 push。
  • 全 repo 在任何地方(含伺服器)都沒有完整物化的副本,也沒有 packfile,因此不需要 repo 維護。
  • working copy 是選用的、稀疏的;CI 可以只用 API 取 diff 或寫入,不必 checkout。

資料模型上,工作單位是 changeset,是 write-ahead log 的一筆紀錄,由伺服器建立。它不像 git commit 指向一棵 tree,而是列出相對於第一個 parent 的變動檔案,並以 content-addressed 指標指向壓縮 blob。refs 只建議用於 main 與 release branch,移動 ref 是對單一 Spanner row 的 compare-and-swap。

blame、path history、commit-graph skip list 等由 changeset 透過同一套遞迴的 derived data 機制算出,新增類型不需要改用戶端。

傳輸與快取架構

gitScion
用戶端流程告知伺服器已有的 object,取回 packfile從 root tree 遞迴要缺少的 tree,再要缺少的 blob
請求對象動態組出的 pack不可變 object,任何 cache 都能回答
大型傳輸單一大型回應無單一多 GB 回應,可續傳

拓撲分三層:每個節點一個 scion-daemon,向區域性的 scion-cache 取資料,cache 再向 scion-server 取未命中的內容,後者讀 Spanner 或雲端儲存。三層使用相同 RPC,但層級被嚴格執行以隔離故障。

權限與審查也跟著搬到伺服器:Scion 支援 repo 層級與目錄層級的存取控制,Antique 可以表達語意化的核准規則,例如把只改註解的變更與動到敏感邏輯的變更分開處理。團隊另外建了 hermetic simulation、fuzzing 與 rate limiting,並稱 Scion 是公司內測試最完整的程式庫之一。

實際效果

  • CPU 與記憶體用量約為先前 git mirror 架構的 1/200。
  • CI 與研究 job 的 checkout 從分鐘級降到秒級;CI 單項就多出 25% 的 CPU 容量。
  • 每一層 cache 命中率都高於 99%。
  • 用 Claude Mythos Preview 重寫 git 到 Scion 的 ingestion pipeline,記憶體少 20 倍、快 4 倍,並保留排序不變式。

影響範圍

多數團隊不該照抄。文章自己的評估是 Scion 與 git 差異很大,需要自己的 code review、code search 與 CI,只適合極大型 monorepo,且 Anthropic 的 token 花費異常高。

真正可借用的是想法:如果你的 CI 與 agent sandbox 佔了 checkout 流量大宗,可以檢查它們是否真的需要完整歷史,改用 sparse 與 virtualized checkout,或把查詢(blame、bisect、revert)改成 API 呼叫。作者也希望 server-side RPC、新的伺服器架構、可組合的 sparse 與 shallow 功能能回到 git 生態,並表示希望與 GitHub、GitLab 與開源社群合作。

流程面也變了:全域 merge queue 鎖不適合 agent 規模,團隊改投資 post-merge 與 pre-deploy 測試,接受並行變更會衝突,由 Claude 修復。文章未公布 Scion 或 Antique 是否開源。

原始來源:Redesigning source control at Anthropic


End of article
0
Would love your thoughts, please comment.x
()
x