Aaron Friel、Taylor Blau、Ted Nyman · OpenAI · 阅读原文
原始来源:Aaron Friel、Taylor Blau、Ted Nyman · OpenAI
很多 Agent 同时改代码,会产生大量分支、推送,以及持续集成(CI,即自动构建和测试流程)对同一版本的重复读取。OpenAI 的工程文章介绍 Pando:保持 Git 的使用方式,重做仓库服务端。它针对两个负担分别设计——不同分支写入不要争抢一个全仓库顺序,许多客户端读取相同历史时不要反复压缩同一批对象。
Git 的 packfile 是把文件和提交等对象压缩在一起的传输包。Pando 接收推送时,把包保存在对象存储,并在元数据中记录分支版本及其依赖。读取时选择已有包,通过区域缓存交给客户端。为了使包可复用,服务端会限制推送前向客户端宣告的共同历史;代价是某些分支会重复发送部分对象,而不是让每个读者都得到最小的定制包。
一致性承诺也随之改变:单个分支的更新有序,不同分支却不保证来自同一时刻的全局快照。官方报告生产环境推送延迟中位数下降近80%,但这依赖其单仓库负载与基础设施。文中的千客户端动画是解释设计取舍的合成模拟,不是生产测试,也没有计算构建和测试时间。
可信度 65 · 重要性 82 · 新颖度 77
技术与主题
Agent 系统 · AI 编程 · 系统与效率 · 基础模型 · Git对象存储 · 因果一致性 · packfile复用 · 分支并发
Pando 工程团队
作者解释为何不为每个读取请求生成最小包。
忠实转述(非原句):团队指出,多宣告一些分支,可以让写入者少上传对象,却让这个包依赖更多历史,难以直接交给其他读者。完全不宣告历史又会接近全量克隆。他们默认以主干为共同基础,在冗余传输与容易复用之间作取舍;这一选择来自自身单仓库的包大小分布。
编辑评读
Pando给出的可迁移方法,是先判断哪些东西真的必须一起改变。若两个Agent写不同分支,它们不必因为共享同一仓库而排队;若两名读者需要相同历史,服务器也不必为每人重新包装。这里可以分别测量协调等待和重复计算,定位到底是哪一种成本妨碍了并行。
代价必须跟着接口一起传递。一个同时读取多个分支的自动化,如果原本假设它们是同一时刻的整体状态,就需要重新检查这一假设。较大的重复包也意味着服务端CPU节省可能交换了客户端带宽。普通团队可以先统计分支间竞争、压缩计算与网络分别占多少,再决定是否需要这种后端;不能用一家公司近80%的改善推断所有仓库都值得重建。本文保留这一部署边界,尚未取得外部同负载测试。
需要留意
- 生产性能由OpenAI自报;本轮HN讨论页没有实质评论。
- Pando不是本期可直接安装的通用开源服务器产品。