2005 年 4 月, Linus Torvalds 为了给 Linux 内核开发弄个版本控制系统,用了 10 天功夫,开发出了 Git。

打开网易新闻 查看精彩图片

他应该想不到,这个本来是为 Linux 内部所用的软件,竟然伴随着 GitHub 的崛起,风卷残云一般席卷了全球。

他更想不到,20 年后,这个为人设计的软件,有一天竟然被 AI 疯狂使用,最后被AI 巨头 Anthropic 给抛弃了!

01

Git 出了什么问题?

当年Linus 为了照顾全球各地的内核开发者,把 Git 设计成了分布式的版本控制系统:每个人都可以clone一份完整的Linux源码,然后想去哪儿“浪”去哪儿“浪”。

在飞机上,火车上,在偏僻的小岛上......即使是没有网络,你都可以打开笔记本里的 Linux 源码,舒舒服服地编程。

等到有网络了,把改动 Push 给其他人。

这套设计让 Git 获得了极大的灵活性,也成为它成功的重要原因。

但是到了 Anthropic ,这个设计反而遇到麻烦了,因为写代码的不再是人了,而是大量的 AI Agent ,它们不会到处“浪”,而是永运在机房里,永运在线。

这些 Agent 运行在一个个沙箱里,任务结束,环境就可能被销毁,检出的代码也随着消失。

下一个任务启动,又要准备新的环境,检出代码。

打开网易新闻 查看精彩图片

还有很多 Agent 任务只需要少量文件,甚至只需要查询历史、比较差异,把一个仓库全部下载到自己的沙箱里有点儿得不偿失。

对于一个只有几百 MB 的仓库,这算不上什么大问题,无非是多clone几次而已。

但是 Anthropic 的代码仓库量实在是太大,还是个单体仓库,主分支就达到了 100 GB !

更要命的是,这个仓库的代码量还在疯狂地增长,每天合并的代码变更从5月的 2500 次,暴涨至 9月的30000次:

打开网易新闻 查看精彩图片

Anthropic 每天仅 CI 就要进行约 2500 万次代码检出,还没算开发环境、Agent 沙箱和研究任务。

如果每次都按完整仓库的规模获取数据,理论流量将超过 600 PB/天,这就太吓人了。

Anthropic 必须得想招儿,不能每次都从零开始下载。

他们尝试过 Git 浅克隆、稀疏检出、内部 Git 镜像、仓库快照等优化方案,甚至在高峰期运行了数百个内部 Git 镜像。

打开网易新闻 查看精彩图片

但随着主仓库越来越大,代码合并速度越来越快,这套基础设施也开始吃不消了。

仓库快照刚准备好,主分支可能又前进了一大截,为了追上最新代码,就得不断刷新快照。

与此同时,稀疏检出和部分克隆虽然减少了下载量,却让依赖历史信息的 diff、blame 等操作变得更加麻烦。

Anthropic 逐渐发现,光靠给 Git 打补丁,已经越来越难满足这种规模的开发需求了。

02

抛弃Git

之前我给大家分享过 Facebook 和 Google 的故事,它们都是坚持单一代码仓库(Monorepo)的策略,发展到最后,都搞出了自家的版本控制系统。

Facebook 的叫Sapling (服务器端是Mononoke),Google 家的叫 Piper。

(参见文章:《》)

Anthropic 一看,它们能搞,我也能,何况我还有这么强的 Claude。

于是,Anthropic 找了 7 个人,借鉴了 Sapling 和 Mononoke 的设计,准备造个新轮子,名字叫做 Scion (后裔,继承人)。

Scion 的核心思路很简单:既然绝大多数任务都在线运行,客户端为什么非得保存一整份完整仓库呢?

在 Git 里,客户端通常拥有完整的仓库数据,可以自己查询历史、比较差异,也可以离线工作。

Scion 则把更多工作交给服务器,客户端需要什么,就按需获取什么。

需要查询历史、比较差异,甚至执行某些版本管理操作时,也可以直接调用服务器 API,不必先把整个仓库下载到本地。

比如,CI 任务只是想知道两个版本之间改了哪些文件,直接向服务器查询就行。如果任务确实需要运行代码,再获取所需的目录和文件。

但是这些还远远不够,因为 AI Agent 检出代码的次数实在太多,于是 Sicon 搞了一个三级缓存:

打开网易新闻 查看精彩图片

100 个 CI 任务需要读取同一个文件,如果每个任务都从远端仓库独立获取数据,就会产生大量重复传输。Scion 先检查节点级缓存,没有,再检查区域级缓存,都没有,才向后端请求。

在 Claude 的深度参与下,经过 5 个月,团队完成了 Scion 的开发,并把 Anthropic 的主代码仓库从 Git 迁移了过去。

最终的结果相当不错:

缓存命中率在各层都超过 99%

基础设施的 CPU 和内存开销相比原来的 Git 镜像系统减少约 200 倍!

CI 和研究任务的代码检出快了 100 倍,典型任务的耗时从分钟级降至秒级。

03

不知道 Linus 看到 Scion 会有什么感想? Git 非常适合分布式、离线工作的那些特性,竟然严重妨碍了 Anthropic 随着代码仓库不断增长而扩展规模的能力。

不过,Scion 是专门为 “AI Agent 高频自动写代码 + 巨型单体仓库” 的场景量身定制的,像 Anthropic 这样,大规模使用 AI 编程的公司恐怕还不多。

对于大部分人来说,Git 没有过时,依然是最正确的选择。