资料名称: Anthropic 工程团队 2026 年 10 月 13 日发布的复盘《Redesigning source control at Anthropic》,10 月 15 日补充了相关先导项目的细节。
帖内资料: 正文全文,含六条设计原则、changeset 数据结构、三层服务架构、迁移过程与量化收益、七条工程经验,以及作者对适用范围的自述与脚注。
时间覆盖: 合并量数据覆盖 2026 年 1 月至 9 月;文章发布于 10 月 13 日、10 月 15 日更新;Scion 的建设与迁移发生在 2026 年上半年,耗时五个月。
许可与引用: 网页未标注转载许可;文中提到的 Meta Sapling(含其服务端 Mononoke)是开源项目,仓库为 GPL-2.0,引用其代码需按该许可处理。
适用任务: 超大型 monorepo 的版本控制选型、AI 写码后的开发者基础设施容量评估、工程团队结构与评审流程调整。
这篇复盘回答的是一个很具体的问题:AI 把写代码变便宜之后,先撑不住的是哪一环。答案是源码控制、构建和 CI——这些为人手规模设计的基础设施。数字很直白:2026 年 5 月日均合并约 2,500 次代码变更,到 9 月日均超过 30,000 次,四个月放大十倍以上。
压力压在哪儿,文章算得很细。主分支历史接近 100 GB,压缩后的工作副本超过 25 GB;每天为 CI 执行约 2,500 万次代码检出,还没算开发者环境、智能体沙箱和研究任务;如果每次都老实拉一份,一天就是 600 PB 以上流量。他们一度靠堆内部 git 镜像顶着,峰值跑着几百个,但合并率继续涨,镜像越来越难维护,基于快照的种子离主干越来越远,diff、blame 这类依赖历史的功能在部分克隆上越来越难保正确。
让作者决定重做的是一个判断:git 是去中心化设计,每个克隆都完整、能离线算 diff 和 blame;而他们几乎所有客户端都是智能体与任务,本来就在线。把去中心化系统当中心化系统用,那些让 git 优秀的性质反而成了负担。于是反过来问:如果设计之初就假定客户端永远在线,会做成什么样。
答案是 Scion,一套自研版本控制系统,五个月把主仓库从 git 全量迁完,同期还做了代码评审界面 Antique、代码搜索、源码控制权限体系,以及大规模已审代码的排队与落地方式。六条原则都是对着 git 的某个假设反着来:客户端永远在线、需要数据时向服务端取;客户端与服务端不对称,历史、blame、建提交、合并、变基都在服务端,客户端只维护有上限的对象缓存、落工作副本、监听文件变化;全部查询走 API,任务不必先有本地仓库,作者说自动二分与自动回滚流水线没有这种廉价程序化访问就做不起来;一切组件水平扩展,任何地方都没有完整副本、连服务端也没有,没有 packfile 所以不需要仓库维护;提交必须廉价、增量、无锁,开销只与改动大小有关,除主分支和发布分支外不鼓励用引用;工作副本是可选项且天生稀疏,稀疏检出只含要的目录,虚拟检出按需落盘。
数据结构上最值得记的是 changeset:一条预写日志里的记录。git 提交存的是指向整棵树的指针,changeset 存的是相对第一父的变更文件列表,加上指向压缩后内容的内容寻址指针。因为不接收 packfile、不加锁、不做跨服务协调、不移动引用,所以能吃下很高的写入吞吐。但 changeset 只记改动,答不了「这行最后是谁改的」,于是 blame、路径历史、提交图跳表都被归为「派生数据」,用一套递归机制算出来——每个 changeset 的值由它父提交的值推得。
好处是加新索引容易、可按需计算不必提前物化、客户端看不到内部结构所以能随时换实现。
服务端分三层:节点上的 scion-daemon 为整机任务缓存对象,区域内的 scion-cache 从内存按磁盘格式直接吐对象,最上游的 scion-server 读数据库或对象存储。三层响应同样的 RPC,客户端不必知道缓存拓扑,但分层被严格执行以隔离故障域。收益是:每层命中率都在 99% 以上且无长期状态,扩容容易;整体 CPU 与内存占用比原来的 git 镜像方案小 200 倍;CI 与研究任务检出从分钟级降到秒级,快约两个数量级;仅 CI 就省出 25% 的 CPU。
建设过程本身也是案例:七个人、五个月,做了 Scion、Antique 和另外半打系统,全量迁移完成,期间日均合并量还涨了十倍。有个细节说明工具反过来加速了工具自己——年初他们把 git 到 Scion 的摄取流水线手写了个原型,自认为不错;拿到内部早期模型后让对方整体重写,没给额外说明,新版本内存占用降到二十分之一、速度提升到四倍,同时保住了摄取顺序与数据结构上的隐式不变量。
七条经验里最有用的是第二条:工程师没有被贬值,但工作内容变了。作者说,参与这套系统的工程师现在都承认模型写代码比自己强,但人提供的仍是对系统间高层组件的理解和设计取舍。两个「人的作用常常是说不行」的例子:有系统为查某个改动何时合入主干,直接线性读提交日志而不去问评审工具;有次对抗式评审对某个内部服务过度不信任,导致模型加了一堆多余校验和复杂度。
现在团队仍逐条审每个变更请求,但审的是意图,不是逐行读代码。
其余几条同样具体:因为模型写得快,这套系统成了他们测过最严、防御最密的代码库之一,即便工期紧也给每个非平凡的基础设施交互建了封闭模拟,另有模糊测试和限流;模型还顺手找到祖先查询的算法优化,原因是原实现漏用了某个索引,这类分析过去要专家花几天到几周。安全侧,Scion 支持仓库级权限,也能对单个目录设权限,在不放弃 monorepo 好处的前提下保护最敏感的代码;评审工具能表达审批上的语义约束,把「只改注释」和「动敏感逻辑」区分开。
运维侧他们造了若干「superfans」:让模型分别盯住单一组件的健康度、接入遥测与日志。最后一层反思更彻底——智能体规模下传统合并队列失去意义,几百上千个变更能在测试跑着时合入,全局仓库锁复现不出来,于是把投入转到合并后与部署前的自动测试,代价是并发改动可能冲突,但模型修冲突往往比人发现冲突还快。
适用范围必须写清楚,因为这篇最容易被读成「git 要完了」。作者很克制:Scion 绝不是 git 的通用替代品,这些设计只在真正巨大的 monorepo 里成立——要么几万名工程师,要么成群智能体在拼命写代码。他们还承认一个特殊条件:自己愿意为内部使用烧掉的 token 量远超其他企业现实中的打算,既为开发服务,也在测模型能力。
所以没做成公开产品,理由是偏离 git 太远、要连带迁移整条开发生命周期、还得自备评审与 CI。真正建议的是把最有用的部分搬回 git:服务端不必照客户端逻辑工作,平台可提供像 Scion 那样完整的服务端 RPC 甚至跨平台标准化;协商协议也不必维持现状,稀疏与浅克隆可以组合得更好。文章最后专门致意 git 社区近二十年的工作,明确自己贡献范围很窄。
────────────────
原文地址,以及文中点名的 Sapling/Mononoke 仓库与 Bonsai 数据模型定义的位置,都列在下面,回帖就能看到。


雷达卡


京公网安备 11010802022788号







