← The Pragmatic Engineer

System.Xml.XmlElement

系统.Xml.XmlElement
Wed, 14 Oct 2026 17:06:56 GMT  ·  The Pragmatic Engineer  ·  原文

Listen and watch now on YouTube , Apple , and Spotify .

立即在 YouTube、Apple 和 Spotify 上收听和观看。

See the episode transcript at the top of this page, and timestamps for the episode at the bottom.

请参阅本页顶部的剧集记录,以及底部的剧集时间戳。

• turbopuffer – The turbopuffer engineering team is doing something really cool: they are completely redesigning their storage architecture from first principles to make search faster, cheaper, and more reliable at scale.

•turbopuffer –turbopuffer 工程团队正在做一些非常酷的事情:他们根据第一原则完全重新设计其存储架构,以使大规模搜索更快、更便宜、更可靠。

And they’re documenting all of it!

他们正在记录这一切!

Follow along their rewrite at turbopuffer.com/v3

请访问turbopuffer.com/v3 关注他们的重写

• Linear – one of the big challenges for us devs is the sheer amount of code to review.

• 线性——我们开发人员面临的一大挑战是需要审查的代码量巨大。

Linear Diffs is a new feature to review PRs inside of Linear, with all the context in one place.

Linear Diffs 是一项新功能,用于审查 Linear 内部的 PR,并将所有上下文集中在一个地方。

It even supports stacked PRs.

它甚至支持堆叠 PR。

Check it out

检查一下

• WorkOS – how do you deal with agents and permissions?

• WorkOS – 您如何处理代理和权限?

WorkOS built Airlock , the authorization layer for AI agents.

WorkOS 构建了 Airlock,即 AI 代理的授权层。

It evaluates every request against the agent’s intent and your rules and either allows it, denies it, or routes it to a human for approval.

它会根据代理的意图和您的规则评估每个请求,然后允许、拒绝或将其发送给人工批准。

Works with Claude Code, Codex and MCP gateways.

可与 Claude Code、Codex 和 MCP 网关配合使用。

Give it a spin

试一试

What do developer tools look like inside Uber, today?

如今 Uber 内部的开发者工具是什么样子的?

They are very different from what you would see at most places.

它们与您在大多数地方看到的非常不同。

For example, can you guess what service a system called DevPods, Code Inbox, Slate or Wisdom would be providing to engineers?

例如,您能猜出名为 DevPods、Code Inbox、Slate 或 Wisdom 的系统将为工程师提供什么服务吗?

Today’s episode is a deepdive into the day-to-day tools of devs at Uber, our tour guide being on of Uber’s longest-tenured engineers: Uday Kiran Medisetty .

今天的节目深入探讨了 Uber 开发人员的日常工具,我们的导游是 Uber 任期最长的工程师:Uday Kiran Medisetty。

Uday is one of the few Distinguished Engineers at the company, and leads much of the work on agentic AI, today.

Uday 是公司为数不多的杰出工程师之一,目前领导着代理人工智能的大部分工作。

With Uday, we talk through how Uber’s developer infrastructure prepared it for AI agents.

我们与 Uday 一起讨论 Uber 的开发者基础设施如何为人工智能代理做好准备。

We look at the systems Uber built before generative AI and the new tools that connect agents to its code, internal services, and engineering knowledge.

我们研究了 Uber 在生成人工智能之前构建的系统,以及将代理与其代码、内部服务和工程知识连接起来的新工具。

Uday explains how engineers use background agents, why tools like Slate make development (and bugfixing!) more efficient, and how code review is changing.

Uday 解释了工程师如何使用后台代理、为什么像 Slate 这样的工具可以使开发(和错误修复!)更加高效,以及代码审查如何发生变化。

We also cover Uber’s approach to token costs and how it measures productivity as the engineer’s role changes.

我们还介绍了 Uber 的代币成本方法,以及随着工程师角色的变化,它如何衡量生产力。

1.

1.

Uber’s service count changed erratically: in 2015, when Uday joined, there were two services in total.

Uber 的服务数量变化无常:2015 年 Uday 加入时,总共有两项服务。

By 2019, there were thousands.

到 2019 年,人数已达数千人。

In 2026, there will be about the same number of services than in 2019, even though the business is about 10x larger than back then!

到 2026 年,服务数量将与 2019 年大致相同,尽管业务规模比当时大约 10 倍!

2.

2.

Uber built most services in-house because off-the-shelf software could not handle its scale – or simply did not exist!

Uber 内部构建了大部分服务,因为现成的软件无法应对其规模,或者根本不存在!

Examples of services Uber built because it had to:

Uber 构建的服务示例是因为它必须:

M3DB

Uber was emitting about 500 million metrics per second, with no vendor being able to handle this load, so they built it themselves.

Uber 每秒发出大约 5 亿个指标,没有供应商能够处理这个负载,所以他们自己构建了它。

Observability company Chronosphere was built on top of the open sourced M3DB, and we previously covered how Uber built its observability platform .

可观测性公司 Chronosphere 是建立在开源 M3DB 之上的,我们之前介绍过 Uber 如何构建其可观测性平台。

Cadence : a durable workflow engine for multi-day flows like driver onboarding.

Cadence:持久的工作流程引擎,适用于驾驶员入职等多日流程。

No such system existed at the time when Uber needed it.

当 Uber 需要这样的系统时,还没有这样的系统。

Temporal was built on top of the open sourced Cadence framework.

Temporal 构建在开源 Cadence 框架之上。

Morpheus : a system combining feature flags and experimentation, including switchback tests, with support for two- and three-sided marketplaces that Uber operates.

Morpheus:一个结合了功能标记和实验(包括折返测试)的系统,支持 Uber 运营的双边和三边市场。

Again, no such solution existed when Uber needed it.

同样,当 Uber 需要时,这样的解决方案并不存在。

3.

3.

At Uber, cities are a first-class concept that go all the way down to physical infrastructure.

在 Uber,城市是一个一流的概念,一直延伸到实体基础设施。

Another reason Uber had to build a lot of its custom tooling is how the concept of cities is a “basic primitive” that needs to be handled across systems like observability, feature flagging, deployments, and even service sharding.

Uber 必须构建大量自定义工具的另一个原因是,城市的概念是一个“基本原语”,需要跨系统进行处理,例如可观察性、功能标记、部署,甚至服务分片。

For example, in the early days, some services had their database sharded by cities.

例如,在早期,一些服务的数据库按城市进行分片。

Even today, each city is pinned to a cloud region, and can fall over to another region at any time.

即使在今天,每个城市都被固定在一个云区域,并且可以随时转移到另一个区域。

We previously covered how Uber moved from bare metal to the cloud .

我们之前介绍过 Uber 如何从裸机转向云。

4.

4.

A single AI model gateway has paid lots of dividends.

单一的人工智能模型网关已经带来了很多红利。

In 2023, Uber’s platform team made the decision that everything built with AI needs to be model- and harness-agnostic.

2023 年,Uber 的平台团队做出决定,用人工智能构建的所有东西都需要与模型和工具无关。

They built Model Gateway to support switching between Anthropic, OpenAI, other vendor models, and now also supports open models they run.

他们构建了模型网关来支持 Anthropic、OpenAI 和其他供应商模型之间的切换,现在还支持他们运行的开放模型。

Having the Model Gateway in place made it easy to extend with these parts:

有了模型网关就可以轻松地使用这些部件进行扩展:

AI Guard : a middleware run by the security team.

AI Guard:由安全团队运行的中间件。

It checks all requests and responses, and measures latencies (and flags overly slow models or queries)

它检查所有请求和响应,并测量延迟(并标记过慢的模型或查询)

5.

5.

AIFX allows engineers to switch harnesses without losing settings.

AIFX 允许工程师在不丢失设置的情况下切换线束。

Uber currently supports Claude Code, Codex, and OpenCode as harnesses.

Uber 目前支持 Claude Code、Codex 和 OpenCode 作为工具。

AIFX (short for AI Foundations) is a wrapper on top of all of these, so when an engineer changes harnesses, all their settings, skills and plugins move with them.

AIFX(AI Foundations 的缩写)是所有这些之上的包装器,因此当工程师更改线束时,他们的所有设置、技能和插件都会随之移动。

6.

6.

Uber has a hybrid approach to AI spend: engineers get allocated a spend tier.

Uber 对人工智能支出采取了混合方法:工程师被分配一个支出等级。

When they hit the limit, their manager can sign off to spend more in that month.

当他们达到限额时,他们的经理可以批准在该月增加支出。

Basically, for the right type of work, there is no spend limit, but Uber doesn’t want engineers to carelessly burn tokens.

基本上,对于正确的工作类型,没有支出限制,但 Uber 不希望工程师不小心烧掉代币。

A plugin called CostCheck works across sessions and gives tips on how to improve an engineer’s cost profile.

一个名为 CostCheck 的插件可以跨会话工作,并提供有关如何改善工程师成本状况的提示。

Uber has reduced token costs by about 50% the last few months, as we previously covered.

正如我们之前报道的那样,过去几个月 Uber 已将代币成本降低了约 50%。

7.

7.

All PRs are still reviewed by engineers, but Uber built tools to help devs decide how much time they need to spend on each code change.

所有 PR 仍由工程师审核,但 Uber 构建了工具来帮助开发人员决定在每次代码更改上需要花费多少时间。

Uday admits that code review has become a big bottleneck inside the company, and Uber built Code Review to make it easier and more efficient for devs to do these reviews.

Uday 承认代码审查已经成为公司内部的一大瓶颈,Uber 建立了 Code Review 是为了让开发人员更容易、更高效地进行这些审查。

By the time a dev reviews a change, AI code review has run, screenshots and videos of the feature have been added (when applicable), and risk scores are assigned to the change.

当开发人员审查变更时,人工智能代码审查已经运行,该功能的屏幕截图和视频已添加(如果适用),并且风险评分已分配给变更。

8.

8.

Uber had to declare an internal “code red” for its CI system earlier this year.

今年早些时候,Uber 不得不为其 CI 系统宣布内部“红色代码”。

This was because CI jobs more than doubled in a 12-month timeframe, pushing load on CI systems overly high.

这是因为 CI 工作在 12 个月的时间范围内增加了一倍多,导致 CI​​ 系统的负载过高。

To keep build speeds at bay, the team moved simple CI jobs (eg linting, build and template rules) to the “inner loop:” so agents run these commands with the afx validate command before opening a PR.

为了控制构建速度,团队将简单的 CI 作业(例如 linting、构建和模板规则)移至“内循环”:因此代理在打开 PR 之前使用 afx validate 命令运行这些命令。

9.

9.

Uber tags PRs by the type of work each of those PRs do.

Uber 根据每个 PR 所做的工作类型来标记 PR。

In the past, Uber measured “PR velocity:” how long it took for a PR (or, as Uber calls it: a “diff”) to get to production.

过去,Uber 衡量的是“PR 速度”:PR(或者 Uber 称之为“差异”)需要多长时间才能投入生产。

With agents, doing so makes less sense, because it’s easy to create dozens or even hundreds of PRs, and many of those PRs might have no business impact on the product.

对于代理来说,这样做的意义不大,因为很容易创建数十甚至数百个 PR,并且其中许多 PR 可能对产品没有业务影响。

​So Uber now tags all PRs by type: feature, bugfix, maintenance, testing, or docs.

因此,Uber 现在按类型标记所有 PR:功能、错误修复、维护、测试或文档。

​They are seeing the percentage of “feature PRs” going up, and the percentage of “maintenance PRs” going down.​

他们看到“功能 PR”的百分比上升,而“维护 PR”的百分比下降。​

10.

10.

The job of a software engineer inside a place like Uber is to build context.

在 Uber 这样的公司里,软件工程师的工作就是构建上下文。

As Uday reflects on how the job has changed:

乌代回顾了这份工作的变化:

“The job of engineering is, in some sense: ‘how do you build the right context for the agents to produce reliable output?’

“从某种意义上说,工程的工作就是:‘如何为代理构建正确的环境以产生可靠的输出?’

Also, [being good at] multitasking has become a thing.

此外,[擅长]多任务处理已经成为一件事。

Before, it would take so much time to create a PR, so you would be laser-focused on it.

以前,创建公关需要花费很多时间,因此您需要全神贯注于它。

But now you’re constantly switching between so many things.

但现在你不断地在很多事情之间切换。

You need to be able to verify your work and pick any code smells from the agent [to avoid] shipping regressions into production.

您需要能够验证您的工作并从代理中挑选任何代码气味[以避免]将回归传送到生产中。

Context engineering, ability to multitask, and ability to review and verify the outputs: these skills have become much more important now because you’re able to parallelize a lot more than before.”

上下文工程、多任务处理能力以及审查和验证输出的能力:这些技能现在变得更加重要,因为您能够比以前更多地并行化。”

11.

11.

Uber’s AI tooling was seemingly built in a year: in reality, it was built on top of a decade worth of dev tooling investment.

Uber 的人工智能工具看似是在一年内构建的:实际上,它是在十年的开发工具投资基础上构建的。

Minion – built in 2025 – is powered by DevPods, which Uber created in 2017.

Minion 建于 2025 年,由 Uber 在 2017 年创建的 DevPods 提供支持。

Uber’s MCP Gateway was fast to build, thanks to existing Thrift and Protobuf registries.

得益于现有的 Thrift 和 Protobuf 注册表,Uber 的 MCP 网关构建速度很快。

Jaeger tracing made Slate routing and Context graph easier, and so on.

Jaeger 跟踪使 Slate 路由和上下文图变得更容易,等等。

In Uday’s words: “All the things that we built to make life easier for engineers: it makes it easier for our agents as well!”

用 Uday 的话说:“我们打造的所有东西都是为了让工程师的生活更轻松:它也让我们的代理更轻松!”

• Scaling Uber with Thuan Pham (Uber’s first CTO): https://newsletter.pragmaticengineer.com/p/scaling-uber-with-thuan-pham-ubers

• 与 Thuan Pham(Uber 首位首席技术官)一起扩展 Uber:https://newsletter.pragmaticengineer.com/p/scaling-uber-with-thuan-pham-ubers

• How Uber uses AI for development: inside look: https://newsletter.pragmaticengineer.com/p/how-uber-uses-ai-for-development

• Uber 如何利用人工智能进行开发:内部观察:https://newsletter.pragmaticengineer.com/p/how-uber-uses-ai-for-development

• Developer Experience at Uber with Gautam Korlam: https://newsletter.pragmaticengineer.com/p/developer-experience-at-uber

• Gautam Korlam 在 Uber 的开发者体验:https://newsletter.pragmaticengineer.com/p/developer-experience-at-uber

• Hypergrowth startups: Uber and CloudKitchens with Charles-Axel Dein: https://newsletter.pragmaticengineer.com/p/high-growth-startups-uber-and-cloudkitchens

• 高速增长的初创公司:Uber 和 CloudKitchens 以及 Charles-Axel Dein:https://newsletter.pragmaticengineer.com/p/high-growth-startups-uber-and-cloudkitchens

中文为机器翻译,仅供参考。