← 返回学习中心 · Agent 工程OiOi Academy
AGENT 理论 · 29

Uber 软件工厂:规模化成本优化

Uber 工程博客实战:70%+ PR 来自 agent 的规模下,用"成本方程 + 四层架构"管住 AI 编码开支。

原作者 @udaykiran(UberEng) 来源 X 转发 Uber 工程博客 发布 2026-08-29
🧭

开篇:规模化之后,账单先爆炸

以下来自 @udaykiran(经 @UberEng 转发)的 Uber 工程博客。当 AI 编码从"尝鲜"变成"主力",先爆炸的不是质量,是账单——Uber 的真实规模是这样的:

  • 70%+ 的 PR 归因于本地 / 云端 agent;
  • 3600+ 个 agent skills 覆盖整个 SDLC(软件开发生命周期);
  • 每天 30K+ 次 skill 执行;
  • 2026 年 2 月 → 8 月:周活用户 7 倍,agent 请求 9.4 倍;
  • 模型固定不变的情况下:每千请求成本降 34%,每 session 成本降 52%。
原文配图:Figure 1 —— 周活用户、agent 请求与成本曲线(2026-02 至 08)
原文配图:Figure 1 —— 周活用户、agent 请求与成本曲线(2026-02 至 08)
记住:核心结论:管住 AI 编码开支靠的是消灭零价值的 token 消耗,而不是一味压单价或降级工具。Uber 在用量涨 7 倍的同时,把单位成本砍下来一半。
🧮

成本方程:把总开支拆成六项相乘

Uber 把一次 agentic session 的成本拆成六个相乘的项,每一项都可以独立测量、独立优化:

  • 前两项 = 采用与参与度(adoption & engagement):希望它继续涨,不管用户是交互式使用还是让 agent 代劳;
  • 中间三项 = agent 替你多做的工作:在工程师真实请求之上,agent 自己规划、试错、走的冤枉路——这是优化的主战场,Uber 大部分精力都花在这里(帮 agent 规划更快、减少无效轮次和错误、优化输入 token);
  • 六项以图示完整呈现(Figure 4)。
原文配图:Figure 4 —— 总开支拆成六个相乘的项
原文配图:Figure 4 —— 总开支拆成六个相乘的项
高中生类比
就像餐厅算成本:食材、人工、房租、水电……每一项单独列出来,你才能知道该砍哪一项。成本方程就是给 AI 开支做的"分项账单",不拆开看,你只会看到一个吓人的总数。
🏗

四层架构:层越高,越可控

Uber 把 AI 的使用组织成四层,从最专用到最通用。关键规律:层越高,对成本、质量和模型选择的控制力越强(Figure 3)。

原文配图:Figure 3 —— agent session 运行的四层
原文配图:Figure 3 —— agent session 运行的四层

这直接导向 Uber 的战略转向:

把 SDLC 工作搬进受管环境:配上专用 benchmark + Pareto 最优模型。原文的判断是:优化一支"专用 managed agent 舰队"(每类工作配评测基准和最划算的模型),比优化几千个工程师各自的终端会话划算得多,也更容易规模化。

🎯

模型选择:benchmark 四步 + subagent 用弱模型

Uber 不靠"感觉"选模型,靠 benchmark-driven 的四步:

  1. 用真实工作建 benchmark;
  2. 在 harness 上跑 frontier 模型和开源模型;
  3. 选 Pareto 最优的;
  4. 持续跟进新模型。

Uber 对 Pareto efficient 的定义:cost / completed task(每完成一个任务的成本)+ 输出质量 + 模型可靠性,三者权衡。

实战案例 uReview(AI code review):用 precision / recall / F1 + cost per review 评估,把真实 PR 按 easy / medium / hard 分级,每种配置都测一遍再选(Figure 5)。

原文配图:Figure 5 —— uReview 测试过的所有配置
原文配图:Figure 5 —— uReview 测试过的所有配置
记住:最有效的降本杠杆:subagent 默认用弱模型。主模型负责分解任务和评估结果,subagent 只做执行——执行量最大,用弱模型直接砍掉最大头。
⚡

Token 优化三板斧:压缩、推理档、缓存

  1. 自动 compaction:上下文到 40 万 token 自动压缩——即使模型支持 1M 上下文也一样压;
  2. reasoning effort 默认 Medium:不需要每次都开最高档思考;
  3. prompt cache 玩 TTL:读缓存 0.1x 价格,写缓存按存活时间 5 分钟 1.25x / 1 小时 2x。interactive session 切 1 小时 TTL(工程师经常一闲置就超 5 分钟,避免缓存过期重建),subagent 短平快,保持 5 分钟。
原文配图:Figure 6 —— 两种 TTL 下 5 轮对话的对比
原文配图:Figure 6 —— 两种 TTL 下 5 轮对话的对比

用三种不同方式接到同样的工具,session 一开始的上下文开销天差地别。

原文配图:Figure 7 —— 三种方式下 session 初始上下文构成
原文配图:Figure 7 —— 三种方式下 session 初始上下文构成

🔧

工具调用:MCP 走 shell + code-mode

先看一个扎心的数字:100+ 个工具预载 schema,约 50K–70K token 的开销——活还没干,上下文先没了一大截。Uber 的两招:

  • 解法一 · CLI tool resolution:模型执行 shell 命令,网关动态解析——1K+ 个 MCP 工具映射成 CLI,不用全量预载;
  • 解法二 · tool search:按需加载,用到哪个拿哪个。

code-mode:把轮询踢出模型上下文

标准 MCP 流程里,查一次 SQL 要经历"发请求 → 轮询 2–5 次查状态 → 取结果",每一步都进模型上下文。code-mode 把整个流程收进一个自动化 Python 循环,在子进程里跑,只把摘要还给模型(Figure 8 左 vs 右)。

  • 5 条相同 SQL 实测:省 token 50%+——省的不是大数据 payload,而是 schema 初始化、多轮轮询、冗余的逐步推理这些 overhead;
  • 批量工作流:循环从 N 个模型轮次变成 1 个脚本,省 90%+;
  • 给最常用的 MCP 服务器预置了 25+ 个 code-mode skills,让标准工作流默认走最省的路。
原文配图:Figure 8 —— 同一个仓库查询,两种执行方式
原文配图:Figure 8 —— 同一个仓库查询,两种执行方式
原文配图:Figure 9 —— SaaS MCP 服务器统一走 MCP 网关
原文配图:Figure 9 —— SaaS MCP 服务器统一走 MCP 网关
高中生类比
标准 MCP 像每查一步都要打电话请示领导;code-mode 像写个脚本一次性跑完,只回来汇报结果。电话费(token)自然就省下来了。
🕸

上下文图:给 agent 装"内部地图"

AI Context Graph:2400 万节点、8000 万边、86 种节点类型、117 种边类型,整合了 30+ 个内部系统——Uber 给 agent 配的"内部世界地图"。

效果对比(Figure 10,同一个 prompt 同一个模型):

  • 有图 grounding:38 秒找到答案;
  • 无 grounding:20 分钟 + 2 个 subagent + 犯 3 次错,最后还答错了。
原文配图:Figure 10 —— 有/无图 grounding 的执行路径对比
原文配图:Figure 10 —— 有/无图 grounding 的执行路径对比
记住:上下文工程的本质:与其让 agent 在黑暗里摸索 20 分钟,不如先给它一张地图。
📊

可见性与未来:先看见浪费,再谈优化

harness 的状态行上有一个实时 cost counter(Figure 11);花到 50% / 80% / 100% 时发 Slack 告警——让花钱这件事"看得见"。

原文配图:Figure 11 —— 状态行上的 session 分析器与效率指南
原文配图:Figure 11 —— 状态行上的 session 分析器与效率指南

更狠的是 session 分析 dashboard:零配置,直接分析所有 session trace,标出 16 种反模式,每种都配财务影响和修复建议,包括:

  • 用 Opus 跑 Sonnet 就能搞定的简单多轮会话(模型路由不当);
  • 40KB 的 MCP 响应常驻上下文,每轮重复计费;
  • 长休息后恢复会话,缓存过期被迫全价重建;
  • 用户还没说话,先预载 10 万 token 的系统指令和工具定义。
原文配图:Figure 12 —— session 级成本 dashboard 识别浪费模式
原文配图:Figure 12 —— session 级成本 dashboard 识别浪费模式
  • Dynamic Model Routing:把 benchmark 覆盖到更多语言、仓库和 agent 形态,路由越准越省;
  • Deepening context-graph integration:让更多 autonomous agent 能查图;
  • Continuous Skill Improvement:从 skill 执行 trace 里自动收集 papercut(小毛病),自动生成 skill 更新。
记住:Uber 的终局判断:把 SDLC 工作搬进 managed 环境——模型路由、执行 harness、运营开支全部可控,这才是规模化省钱的正道。
词

术语翻卡:点卡片看解释

成本方程
cost equation
把一次 agent session 的总开支拆成六个相乘的项,每项独立测量、独立优化。
Pareto 最优
Pareto efficient
Uber 的选型标准:每完成一个任务的成本、输出质量、模型可靠性三者权衡后的最优点。
compaction
compaction
上下文到 40 万 token 时自动压缩,腾出窗口继续干活。
prompt cache
prompt cache
提示词缓存:命中时读 0.1x 价格;写按存活时间 5 分钟 1.25x、1 小时 2x 计费。
code-mode
code-mode
把"模型参与轮询"改成"子进程跑循环、只回摘要"的执行模式,省掉轮询 token。
Context Graph
AI Context Graph
Uber 的内部知识图谱:2400 万节点、8000 万边,给 agent 做 grounding 的"地图"。
测

自测一下:点问题展开参考答案

前两项是采用与参与度,Uber 希望它继续涨;中间三项是 agent 在工程师真实请求之外替它多做的工作(规划、试错、冗余轮次),砍掉的是纯浪费。

主模型只做任务分解和结果评估,subagent 承担大头执行量;执行量最大的一块用弱模型,省钱效果最直接。

它把"模型参与轮询"改成"子进程跑循环、只回摘要"——polling 的中间步骤不再进模型上下文。5 条相同 SQL 实测省 50%+,批量工作流省 90%+。

工程师经常一闲置就超 5 分钟,1 小时 TTL 避免缓存过期被迫全价重建;subagent 短平快,保持 5 分钟 TTL 就够了。