Cursor 工程师详解 Git 托管 20 年难题与 Origin 设计

AYi · @AYi_AInotes · X·2026-08-20 08:50·6天前
AI 导读

Cursor 工程师 Vicent Martí 发文《Git at any scale》,梳理 20 年 Git 托管难点,并介绍其存储系统 Origin 的数据库式设计:将 S3 当作 WAL、本地 NVMe 仅作缓存,闲置仓库可 0 副本、热仓库可拉 100+ 读副本,压测约 120-300+ push/s。作者强调 Origin 仍为 early beta,镜像仓真相源仍是 GitHub。

AYi@AYi_AInotes
42AI 编辑部评分,满分 100

Cursor 工程师详解 Git 托管 20 年难题与 Origin 设计

2026-08-20 08:50· 6天前
AI 导读

Cursor 工程师 Vicent Martí 发文《Git at any scale》,梳理 20 年 Git 托管难点,并介绍其存储系统 Origin 的数据库式设计:将 S3 当作 WAL、本地 NVMe 仅作缓存,闲置仓库可 0 副本、热仓库可拉 100+ 读副本,压测约 120-300+ push/s。作者强调 Origin 仍为 early beta,镜像仓真相源仍是 GitHub。

这可能是我今年读过最狠最牛逼的一篇技术文章了,

@cursor_ai 的Vicent Martí写的Git at any scale,老哥在GitHub干了十年Git存储,libgit2那拨人,

先说清楚,这跟Origin上线的软文没关系,Origin现在还是early beta,压测数字不是SLA,镜像仓的source of truth仍是GitHub,

但这篇文章把20年Git托管为什么这么难,讲成了一条干净到可怕的问题链,

最炸的几个点,

第一,Git的分布式在服务端是原罪,Linus给内核去中心化工作流设计的东西,今天所有公司都跑在中心化托管上,客户端每台电脑一份完整仓库是优点,到了服务端就变成了枷锁,服务器上的仓库必须和你笔记本上的长得一模一样,文件系统语义、随机IO、DAG指针追逐,全是按这个假设长出来的,托管Git难,根源在数据模型就别扭,

第二,你不能把Git对象扔进S3或者KV就完事,Git是DAG,读一个commit得先拿到它才知道下一个tree的key,读了tree才知道blob,对象级分布式会被往返延迟打死,有人试过DHT,普通操作还行,git clone因为协议必须吐packfile直接崩了,

第三,GitHub 2013年做的Spokes后来成了行业标准,本地NVMe放完整仓库,packfile复制,引用更新走三阶段提交,强一致,任意副本可读,但死穴很硬,副本越多push越慢被最慢那台拖死,每个仓库要3个副本闲着也占着,仓库必须精确路由checksum坏了赶紧修,官方原话叫repos as pets not cattle,2013年3副本是最优解,今天巨型monorepo不够用,agent海量短命小仓更不够用,

第四,整篇最值钱的翻转,Cursor的Continuity把S3当WAL,磁盘上的Git只是缓存,

Push先写成S3上的WAL,没持久化绝不ack,本地NVMe是标准Git仓库继续用原版Git工具少发明新bug,没有Paxos没有Raft没有路由表没有外部数据库,用S3的原子CAS选primary,复制通知甚至走不可靠的UDP gossip,丢包无所谓,replica对S3做conditional GET,304说明已是最新,200就追上,

有人压成一句话,S3是块魔法软件,你肯让它当真相源,就能消掉90%的Git托管难题,不完全夸张,

第五,伸缩形状终于对上了Agent世界,闲置仓库可以0副本下次访问再从WAL物化,热monorepo可以拉到100+读副本读吞吐线性涨push不回退,压测S3 Standard约120 push/s,S3 Express One Zone 300+,瓶颈变成Git自己的compaction,

人一天几次clone push,agent是几十上百个同时clone开分支rebase修CI,旧架构两头难受,小仓浪费3副本,大仓加不了副本,这才是Origin存在的真正理由,

第六,那句金句也是设计原则,系统降级时永远正确,健康时永远快,降级从S3重建正确性不丢,健康走本地NVMe快,WAL里有完整provenance每个push每次repack都能回放,Git出bug时能精确倒带,

对不搞底层的人,记住三件事,

Cursor做的事情跟GitHub皮肤完全无关,它在给成千上万agent同时撞同一个仓库修地基,上一轮Cloud Agent自动跟PR修CI,底层要的就是这种存储,

别因为这篇文章立刻搬家,Origin早期功能不全定价和安全细节还少,镜像仓push仍回GitHub,

可带走的心智只有一句,别把缓存当真相,日志才是真相,

AI写代码的瓶颈,正在从模型会不会写,变成仓库能不能被一百个agent同时撞而不炸,

我觉得这篇博客真正厉害的地方,是它把这句话写成了一个可运行的存储系统,

但设计厉害和产品打赢是两回事,应该是先敬畏技术,再等产品落地。

CursorWe're making Git hosting more reliable, performant, and scalable. This post traces 20 years of Git infrastructure and explains how that history led us to design...