数百台内部代码镜像服务器的网卡吞吐同时逼近极限,持续集成流水线的拉取队列仍在不断积压。短短四个月内,Anthropic 核心单体仓库的日均代码合并量从 2026 年 5 月的 2,500 次暴增至 9 月的 30,000 次以上。大量 Claude 编程智能体在沙盒中全天候自主运行研究循环、微调程序性能并构建新服务,将主分支历史推高至近 100 GB,单次压缩工作区也超过 25 GB。在 Anthropic 的持续集成环节中,每天就会触发 2,500 万次 Git 代码检出,尚未计入开发环境与智能体沙盒。若按传统方式全量拉取,单日 Git 流量将突破 600 PB。面对彻底见顶的物理吞吐瓶颈,工程团队耗时五个月构建了自研版本控制系统 Scion 与配套代码审查平台 Antique,完成了对 Git 的全面替换。
离线对等假设撞上全天候在线沙盒
统治软件工程二十年的 Git 诞生于人类工程师离线协作的时代。当时的核心设计假设是每个客户端都是对等的完整节点。开发者的笔记本电脑可能随时断开网络,因此本地必须保有一份完整的仓库历史副本,并在本地独立完成差异比对、分支合并与历史溯源。
当代码提交的主力变成云端智能体后,这一底层假设彻底失效。编程智能体与构建节点始终运行在高速内网的数据中心里,根本不存在拔掉网线在飞机上写代码的离线场景。与此同时,单个智能体沙盒往往只存活几分钟,改完几行代码并通过测试后就会立刻销毁。
这就像派快递员去拧紧一颗螺丝,却强迫他背上整座工厂二十年的全套图纸档案。在 Git 架构下,让只存活几分钟且永远在线的智能体沙盒背负近百吉字节的完整历史仓库,是拖垮研发基础设施的物理错配。
为了给 Git 续命,Anthropic 曾尝试用对象存储中的压缩快照种子配合部分克隆机制,让工作节点先下载种子再从镜像拉取增量提交。但在日均三万次合并的极高频写入下,主分支顶端每秒都在剧烈推进,静态快照种子刚生成就已严重滞后。更棘手的是,Git 的命令设计并未将本地对象与远程延迟加载对象做彻底隔离,局部克隆一旦执行历史溯源或文件比对,极易触发海量远程对象的隐式拉取,瞬间击穿镜像集群。

客户端退化为薄壳把计算交回服务端
顺着谷歌 Piper 与 Meta Sapling 的超大规模单体仓库演进脉络,Scion 彻底抛弃了对等分布式模型,将客户端与服务端改造成高度非对称的解耦架构。客户端不再继承全量历史状态,而是退化为极薄的工作区文件壳层;服务端则接管全局版本图谱存储与重度图计算。
| 维度 | 传统 Git 对等克隆 | Scion 非对称架构 |
|---|---|---|
| 客户端角色 | 保存完整历史副本的全功能对等节点 | 仅挂载当前工作区文件的极薄缓存壳层 |
| 数据传输量 | 每次检出拉取近百吉字节历史或巨型快照 | 仅按需拉取当前任务触达的文件切片 |
| 历史与溯源 | 依赖本地对象图计算,局部克隆易触发卡顿 | 全部交由服务端集中式索引直接计算返回 |
| 排障与回滚 | 需在重型工作区拉取代码后执行本地二分 | 免克隆调用服务端接口驱动流水线闭环 |
在非对称架构下,智能体沙盒启动时无需等待庞大的仓库克隆。只要明确当前任务的目标目录与文件边界,客户端在拉取阶段就会提前终止无关目录与历史树节点的遍历,仅通过网络流式获取所需的最小文件切片。代码差异比对、历史提交检索与逐行溯源等重度操作,在 Scion 中全部转化为轻量级的服务端 API 调用,从根源上消除了无意义的海量数据搬运。
免克隆接口接管二分排障与自动回滚
当日均代码合并跨入三万次量级,单靠人类工程师手动拉取代码排查故障已完全不可行。版本控制系统必须从面向人类命令行的本地工具,演进为可供自动化工作流直接编排的服务端基础设施。
在传统模式下,一旦主分支出现构建破损或测试退化,排障系统必须先初始化一个沉重的本地克隆工作区,再反复切换提交节点执行二分查找。Scion 将版本历史图谱完全托管在服务端后,二分定位与回滚操作不再依赖任何本地工作区。

自动化监控服务只需直接调用 Scion 的服务端接口,即可在云端版本图谱上快速锁定引入故障的精确提交,并立即联动代码审查平台 Antique 生成经过验证的回滚变更。每个提交节点的状态检出、测试验证与回滚生成都变成了无状态的独立接口调用,使高并发流水线具备了极高的可观测性与自动化自愈能力。
对于绝大多数尚未达到单日三万次合并与 100 GB 历史的常规工程团队而言,目前完全不必盲目弃用 Git。但智能体并发编程带来的负载突变已经近在眼前。工程团队无需等待自研底层存储,今天就可以着手剥离持续集成节点与智能体沙盒中的全量历史克隆,利用浅层检出与稀疏目录约束工作区体积,并将代码检索与自动化排障逐步收归服务端接口执行。
资料:Anthropic 工程技术复盘 https://www.anthropic.com/engineering/redesigning-source-control
