深入 Uber 的 AI 基础设施

Pragmatic Engineer 2026-10-21T09:36:41.745099

可在 YouTube、Apple 和 Spotify 上收听和观看。本期文字稿见页面顶部,时间戳见页面底部。

本期赞助

本期内容

Uber 内部的开发者工具现在是什么样?和大多数公司看到的很不一样。比如,你能猜出 DevPods、Code Inbox、Slate 或 Wisdom 这些系统分别为工程师提供什么服务吗?

DevPods、Code Inbox、Slate 和 Wisdom:Uber 工程师日常使用的 20 多个内部工具中的四个。

本期节目深入探访 Uber 开发者的日常工作工具,带我们参观的是 Uber 任职时间最长的工程师之一:Uday Kiran Medisetty。Uday 是公司少数几位杰出工程师之一,目前负责智能体 AI 的大量工作。

我们和 Uday 聊了 Uber 的开发者基础设施如何为 AI 智能体做好准备。我们回顾了 Uber 在生成式 AI 之前搭建的系统,以及把智能体连接到代码、内部服务和工程知识的新工具。Uday 解释了工程师如何使用后台智能体,为什么 Slate 这类工具能让开发(以及修 bug!)更高效,以及代码审查正在发生什么变化。我们还聊了 Uber 对 token 成本的处理方式,以及在工程师角色变化之际如何衡量生产力。

与 Uday 对话的收获

以下是今天这期节目里 11 条有意思的发现:

  1. Uber 的服务数量变化很不规律:2015 年 Uday 加入时,总共只有两个服务。到 2019 年,已经变成数千个。而到 2026 年,服务数量会和 2019 年差不多——尽管业务规模大约是那时的 10 倍!

  2. Uber 大部分服务都是自研的,因为现成的软件要么扛不住它的规模,要么根本不存在!以下是 Uber 不得不自建的几个例子:

  3. uOwn:显示某个服务或资产归谁所有。2015 年时,市面上还没有这样的产品。
  4. M3DB:Uber 每秒产生约 5 亿条指标,没有供应商能扛住这个负载,所以自己造了一个。可观测性公司 Chronosphere 就是基于开源的 M3DB 构建的;我们之前也介绍过 Uber 如何搭建它的可观测性平台。
  5. Cadence:一个持久化的工作流引擎,用来处理持续多天的流程,比如司机入驻。Uber 需要它的时候,市面上没有这样的系统。Temporal 就是基于开源的 Cadence 框架构建的。
  6. Morpheus:一个把功能开关和实验结合起来的系统,支持 switchback 测试,并且兼容 Uber 运营的双边和三边市场。同样,Uber 需要它时,没有现成的方案。

  7. 在 Uber,“城市”是一等概念,一直延伸到物理基础设施层。Uber 不得不自建大量工具的另一个原因,是“城市”这个概念属于“基础原语”,需要在可观测性、功能开关、部署,甚至服务分片等系统中统一处理。比如早期,有些服务的数据库就是按城市分片的。即便在今天,每个城市仍绑定到一个云区域,并且可以随时故障转移到另一个区域。我们之前也介绍过 Uber 如何从裸金属迁移到云上。

  8. 统一的 AI 模型网关带来了很大回报。2023 年,Uber 的平台团队做了一个决定:所有用 AI 构建的东西,都必须做到模型无关、工具无关(model- and harness-agnostic)。

他们搭建了 Model Gateway,用来支持在 Anthropic、OpenAI 等厂商的模型之间切换,现在还支持他们自己运行的开放模型。Model Gateway 就位后,扩展新能力就方便多了:

5. AIFX 让工程师切换工具时不丢配置。 Uber 目前支持 Claude Code、Codex 和 OpenCode 三种工具(harness)。AIFX(AI Foundations 的缩写)是在这些工具之上封装的一层,工程师换工具时,设置、技能和插件都会一并带过去。

6. Uber 对 AI 花费采用混合管理。 每位工程师会被分配一个消费额度档位;用超了,经理可以审批当月追加。大致的原则是:只要工作对路,就没有花钱上限,但 Uber 不希望工程师随手乱烧 token。有个叫 CostCheck 的插件会跨会话统计,并提示如何优化个人的成本结构。如我们之前报道过的,Uber 最近几个月把 token 成本降了约 50%。

7. 所有 PR 仍由工程师评审,但 Uber 做了一些工具,帮开发者判断每次代码改动该花多少时间。 Uday 承认代码评审已经成为公司内部的一大瓶颈,于是 Uber 开发了 Code Review 工具,让评审更省事、更高效。开发者打开一个改动时,AI 代码评审已经跑完,功能截图和录屏(在适用的情况下)已经附上,改动也被打上了风险评分。

8. 今年早些时候,Uber 不得不为其 CI 系统宣布内部「红色警报」。 原因是 CI 任务在 12 个月内翻了一倍多,把 CI 系统的负载推得过高。为了保住构建速度,团队把简单的 CI 任务(比如 lint、构建和模板规则检查)挪进了「内循环」:让 agent 在开 PR 之前就用 afx validate 命令跑一遍。

9. Uber 会给每个 PR 打上工作类型标签。

过去,Uber 用「PR 速度」来衡量:一个 PR(Uber 内部叫「diff」)从提交到上线要多久。有了智能体(agent)之后,这个指标就不太管用了:现在很容易一口气创建几十甚至几百个 PR,其中很多对产品根本没有业务影响。于是 Uber 现在给所有 PR 按类型打标签:功能、修 bug、维护、测试、文档。他们发现「功能类 PR」的占比在上升,「维护类 PR」的占比在下降。我觉得这种分类思路很巧妙!

  1. 在 Uber 这样的公司里,软件工程师的工作就是构建上下文。Uday 这样反思这份工作的变化:

「从某种意义上说,工程工作变成了:'你如何为智能体构建正确的上下文,让它们产出可靠的结果?'你必须真正精通上下文工程。另外,多任务处理能力也变得重要了。以前创建一个 PR 要花很长时间,所以你会全神贯注在这上面。但现在你要不断在众多事情之间来回切换。你需要能够验证自己的工作,从智能体的产出中嗅出代码坏味道,避免把回归问题带到生产环境。上下文工程、多任务能力、审查和验证输出的能力——这些技能现在重要多了,因为你能并行的东西比以往多得多。」

  1. Uber 的 AI 工具看似是一年之内建成的,实际上是建立在十年开发工具投入的基础之上。2025 年打造的 Minion,底层靠的是 Uber 在 2017 年创建的 DevPods。Uber 的 MCP Gateway 之所以能快速搭建,得益于已有的 Thrift 和 Protobuf 注册表。Jaeger 追踪让 Slate 路由和上下文图(Context Graph)的实现变得更简单,如此等等。

Uday 的原话是:“我们为了让工程师的日子好过而做的一切,同样也让我们的 agent 更轻松了!”

本集相关的 The Pragmatic Engineer 深度文章

时间轴

参考资料

找到 Uday Kiran Medisetty 的渠道:

节目中提到的内容:

—— 制作与市场由 Pen Name 负责。

查看原文