原文: Redesigning Source Control at Anthropic,Anthropic 工程博客,2026-10-13
作者: Nick G. 与 Anthropic 源代码管理团队
这是阅读笔记,用自己的话转述,不是原文翻译。完整内容请看上方链接。
一、背景:瓶颈从写代码变成了源代码管理
- Claude 已经能大规模自主写代码、反复迭代,进出仓库的代码量涨得很快。
- 2026 年 5 月到 9 月,Anthropic 每天合入的变更从约 2,500 个涨到 30,000 个以上。
- 写代码不再是瓶颈,源代码管理成了新瓶颈。
- 为此 Anthropic 自研了 Scion,用大约五个月从 Git 迁了过去。
二、单仓库变大后,Git 撑不住了
- 光是提交历史就接近 100 GB,压缩后的工作副本也超过 25 GB。
- CI 每天检出约 2,500 万次,如果每次都完整拉取,流量大约是 600 PB。
- 镜像、部分克隆、快照这些办法都试过,加在一起运维负担太重。
- 根本问题在于:Git 是分布式的,按离线可用来设计;Anthropic 的智能体却一直在线。
- 重新设计时他们问自己:如果一开始就按智能体始终在线来设计,源代码管理会是什么样?
三、六条设计原则
- 客户端始终在线:不用再为离线优先做设计。
- 重活交给服务端:历史、合并、blame 都在服务端,客户端只留一份大小有上限的缓存。
- 所有查询都有 API:不需要本地仓库也能完成全部查询。
- 水平扩展:数据分散存放,避开 Git packfile 那种集中瓶颈。
- 操作便宜、不加锁:一次提交的开销取决于改了多少,不取决于仓库多大;支持服务端事务。
- 检出可选、可以只检出一部分:支持虚拟检出和部分检出,有些流程只用 API。
四、Scion 怎么运作
数据模型
- 基本单位是 Changeset(变更集),记录相对第一个父提交改了哪些文件,以及指向内容寻址 blob 的指针。
- 写入时不用 packfile、不用加锁、不用协调 ref,吞吐量很高。
- 派生数据(文件 blame、路径历史、提交图上的跳表等)单独递归计算;新增一种派生数据不需要改客户端。
服务架构
- 一小组可以水平扩展的 Scion 服务器提供所有 API,包括 diff、祖先查询、blame 等。
- 数据按内容寻址,所以可以放心大量缓存,不用互相协调。
- 检出分三层:
- scion-daemon(每台机器一个):本地对象存储,从定期快照启动
- scion-cache(每个区域一个):从内存里直接提供对象
- scion-server(权威数据源):从 Spanner 或云存储读取
- 每一层缓存命中率都在 99% 以上。
效果
- 基础设施规模只有原来 Git 镜像方案的约 1/200。
- CI 和研究任务的检出快了约 100 倍,从几分钟降到几秒。
- 仅 CI 一项就省下约 25% 的 CPU。
五、做 Scion 学到的几件事
- 小团队,速度快:7 名工程师用五个月做出了 Scion、代码评审工具 “Antique” 和相关系统,并且是在合入量涨了 10 倍的情况下完成迁移的。这在以前需要更多人做好几年。
- 工程师的角色变了:工程师们认为 Claude 写代码本身比人强。人的价值转到了高层设计、权衡取舍和做决策上。关键能力之一是“对 Claude 说不”,防止它违反约束或者过度设计。评审时看的是这次改动想做什么,而不是逐行读代码。
- 质量:大量使用封闭环境模拟(hermetic simulation)、模糊测试和限流。Claude 还找到了一些不容易想到的优化,比如祖先查询少了一个索引。作者认为这是 Anthropic 测试和防护做得最充分的代码库之一。
- 单仓库安全:按仓库和目录两级控制权限,评审审批规则很细;给人工评审时会把琐碎改动和敏感改动分开。
- 运维:让 Claude 实例当某个组件的“铁杆粉丝”,一直盯着它的遥测、日志和图表,能发现常规告警发现不了的细小问题。
- 重新看常规做法:传统的合并队列加锁不适合智能体规模,因为一轮测试还没跑完,可能已经有成百上千个变更合进来了。团队改成合入后测试、部署前自动测试;并发冲突由 Claude 处理,往往人还没发现,它就已经解决了。
六、对整个行业的意义
- Scion 不是通用的 Git 替代品,只适合超大单仓库:几万名工程师,或者大批智能体同时工作的场景。
- 作者预计 6–12 个月内,这类问题会变得很普遍。
- Anthropic 选择公开思路,而不是开源代码,免得别人重复踩坑。
- 给 Git 平台的建议:不改客户端协议也能加服务端 RPC;改进协商(negotiation)协议;让部分检出和浅克隆更好地配合使用。
- 作者希望和 GitHub、GitLab 以及开源社区一起,跟上开发者需求的变化。
对我们的启示
- 当智能体成为写代码的主力,基础设施的假设要从头检查一遍。哪些工具当初是按“人类开发者、会离线、规模有限”来设计的?
- 小团队配合 Claude 能在几个月内交付过去要几年才能做完的系统,但前提是人负责设计和约束,并且敢于对 Claude 说不。
