ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Uber 70% PR由Agent接管,AI账单零增长背后的工程逻辑

2026/9/2 5:38:04 拓冰建站 浏览量
Uber 70% PR由Agent接管,AI账单零增长背后的工程逻辑 先放一个判断Uber 用 Agent 接管 70% 代码 PR 这件事真正的信息量不在“AI 写代码”而在“AI 账单零增长”这个反直觉结果。过去一年很多团队对 AI 编程的印象还停留在两个极端要么觉得 Copilot 类工具只是“高级补全器”写不了一个完整 PR要么担心让 Agent 大规模提 PRAPI 成本会失控代码评审会变成垃圾回收站。Uber 这个案例恰好把两个问题一起回答了Agent 能不能在真实工程环境里大规模产出可合并的 PR以及当 AI 使用量上去之后成本为什么没有同步暴涨。这篇文章不打算复述新闻。我想拆的是这个结果是怎么发生的它背后改变了哪些工作流以及一个普通团队如果想复现类似效果应该从哪一步开始在哪几步最容易翻车。1. 先搞清楚“70% 的 PR 由 Agent 接管”是什么意思1.1 不是 70% 的代码由 AI 独立编写而是 70% 的 PR 由 Agent 参与这里首先要做一个关键澄清。很多文章把“Agent 接管 70% 代码 PR”理解成Uber 现在每 10 个 PR 里有 7 个是 AI 从零写出来的人类工程师只负责点合并按钮。这个理解不准确。“接管”在工程语境里更接近“Agent 承担了 PR 创建链路里的主要工作”。它参与的方式可能包括根据 issue 描述生成初始 diff、按已有代码风格补全实现、修复测试失败、更新文档和 changelog甚至根据 Review 意见迭代代码。但真正决定这个 PR 能不能合并仍然有一整套人工评审、CI 检查和负责人审批机制。所以更准确的说法是Uber 把 PR 从“人写机器审”变成了“Agent 起草 人审 机器校验”的大规模协作模式。这个区别非常重要。因为如果只在意“AI 写了多少行代码”就会忽略真正有价值的工程变化AI 已经嵌入到 PR 的完整生命周期里而不是作为一个孤立的代码生成器存在。1.2 为什么这个数字能说明 Agent 真正“能用”了70% 这个比例不是 Uber 内部某个团队做了一次实验而是覆盖了大量真实业务代码的统计结果。它意味着 Agent 生成的 PR 已经能够通过已有的 CI 检查、编译、测试、静态分析和一部分代码评审。过去 Agent 写代码最大的问题不是“写得不对”而是“产出根本无法进入评审流程”。很多代码看起来能跑但放到真实仓库里风格不一致、依赖引入错误、边界条件缺失、测试不完整评审人一眼就能挑出大量问题。结果就是 AI 只负责“写”人负责“全部返工”。Uber 这个案例里真正质的转变是Agent 的产出已经跨过了“能提交”的门槛进入了“值得评审”的区间。这是从“玩具”到“生产工具”的分界线。1.3 70% 不是终点而是组织流程再造的结果还需要看到另一层Uber 能跑到 70%不只是模型能力提升了而是整条工程体系为 Agent 适配了环境。包括代码库的模块化程度、测试覆盖率、CI 反馈速度、评审规范、PR 模板、甚至 Agent 可以访问哪些仓库和服务的权限边界。换句话说70% 不是“AI 突然变聪明了”而是“整个工程系统开始允许 AI 有效率地工作”。这给了其他团队一个重要的横向参考如果你也想让 Agent 大规模提 PR先不要急着问“哪个模型最强”而要先看自己的仓库和流程有没有为 AI 做好准备。2. 为什么“AI 账单零增长”比 70% 更值得关注2.1 看起来矛盾的组合用量涨了钱没涨如果只看“70% PR 由 Agent 接管”很多人的第一反应是那 API 成本不得爆炸Uber 的做法却给出了另一个结果AI 账单零增长。这不是说没花钱而是说在 PR 数量、Agent 参与比例大幅上升的情况下总成本被控制在一个稳定区间。这个组合在工程上其实很不寻常。因为通常“用得越多成本越高”是自然规律尤其是调用大模型 API 时Token 消耗是硬成本。如果 Agent 每天生成几千个 PR diff每个 diff 还要经历生成、评审意见迭代、多轮修改Token 量会成为一个不可忽视的数字。所以“零增长”背后一定不是魔法而是有明确的成本控制机制。2.2 成本控制的第一逻辑不是所有环节都调用大模型Uber 这类体量的公司处理成本问题的方式通常不是“不用 AI”而是“重新设计调用策略”。一个典型的 PR 生成流程Agent 可能会经历理解 issue 描述和仓库结构读取相关文件生成代码 diff运行测试根据报错修复提交 PR根据评审意见修改如果每一步都调用一次模型Token 消耗会成倍放大。常见做法是尽量把中间过程落到确定性工具上——比如直接读取文件、执行静态检查、跑测试、处理 Lint 报错——只在真正需要理解和生成的环节调用模型。这类流程组合有时候也被称为“Agent 链路里的工具优先策略”能靠脚本、解析器、编译器和正则解决的事情就不让模型参与。2.3 成本控制的第二逻辑用“更长上下文”换“更少返工”另一个常见策略是提高单次生成质量避免“生成—失败—再生成”的反复消耗。与其让 Agent 用很短的上下文先生成一个粗糙版本再在后续修复循环里烧掉大量 Token不如从一开始就把相关文件、项目规范、历史代码风格塞进上下文让模型一次产出更接近可合并状态的 diff。这个策略下单次调用的 Token 会变高但总成本反而下降。因为大模型成本的大头往往是多轮失败迭代而不是单次调用。用一句类比来说如果让一个新人写 PR你希望他自己带齐资料写还是让他先交一版你再逐条批注让他改十遍后者沟通成本更高而且极易返工。2.4 Token 层面的“零增长”不是目的ROI 才是回到“AI 账单零增长”这一点它真正有价值的解读不是“Uber 省钱省得好”而是Uber 用几乎不变的成本换来了显著提升的 PR 吞吐量。也就是说每份 AI 账单对应的产出效率变高了。如果 PR 数量涨了 50%成本却不变那单 PR 成本其实降了三分之一。这才是工程上更值得关注的结果。对中小团队来说虽然体量不同但可以借鉴同一个原则不要盯着“每个月花多少钱”而是盯着“每块钱换来多少可合并的 PR”。3. 从“人写”到“Agent 起草”的工作流变化3.1 一条典型的 Agent 生成 PR 链路下面这条链路不是 Uber 官方文档但它是当前生产环境里最常见的一种工程化写法可以当作一个通用参考。Issue 创建 - Agent 解析 issue 和关联代码 - 生成初始 diff - 自动运行相关测试和静态检查 - 根据失败信息修复并迭代 - 创建 PR - 触发 CI - 通知工程师评审这个流程里需要注意几点第一步不是让 Agent 写代码而是让 Agent 理解问题。包括 issue 描述、关联模块、涉及文件、已有测试。中间步骤不是一步到位。Agent 通常要经过多轮“生成—检查—修复”循环才能产出可提交的 diff。最后一步仍然保留人工评审。Agent 提 PR 不代表人不用看了而是人的工作从“写初稿”变成了“审终稿”。这种工作流的本质是把重复性、机械性、低上下文量的部分交给 Agent把判断、决策和问责保留给人。3.2 这个流程解决了过去三个顽固问题第一写 PR 初稿的速度。一个熟悉业务的老工程师写一个中等难度的 PR 可能也要二十分钟到一小时。Agent 可以在更短时间内生成初稿虽然不一定完美但至少把空白页的恐惧消掉了。第二代码风格一致性。大模型在上下文里读到足够多的仓库代码后生成的代码风格会比新人更加贴合仓库习惯。这是单次生成和长期学习共同作用的结果。第三重复劳动。比如修一个跨模块影响的 bug过去的流程需要先定位调用链再理解多个文件最后修改并补测试。Agent 可以在拉取相关文件后自动生成一个可评审的版本技术人员只需要关注逻辑对不对、边界有没有漏。不过这里要提醒一句Agent 可以把“写代码”变快但还不能把“该写什么”替你想清楚。如果需求本身模糊issue 描述不清楚Agent 生成的代码再快也是错的。3.3 评审环节从“看实现”变成了“看意图”这不是概念包装而是工作重点的真实迁移。以前人工评审 PR很大一部分精力花在“这行代码语法对不对”“这个变量名是否清晰”“是否少了类型声明”这类指标上。Agent 接手之后这些基础问题会大幅减少因为生成模型天然更少写出低级语法错误。评审者的注意力会转移到更重要的位置这个实现是否满足原始需求有没有漏掉边界情况性能上是否有隐患依赖引入是否合理安全性和权限处理是否正确是否考虑了兼容性这其实是好事。当一个工程师的精力从“挑语法错”变成“审逻辑和意图”时评审质量会上升而不是下降。但前提是评审人自己得真的去看代码。如果因为信赖 Agent就只瞄一眼测试绿了就合并那 Agent 也会给你回报一个足够隐蔽的问题。4. 想复现 Uber 的效果先按这四个维度检查你的团队4.1 代码库的质量Agent 能读懂的库才能改得好决定 Agent 产出质量的第一因素往往不是模型而是仓库本身的模块化和可读性。如果一个仓库里到处是巨型函数、隐式依赖、复制粘贴代码、没有测试Agent 即使能读也很难生成达标的修改。因为它没有足够清晰的上下文信号去判断“该在哪里改”“改了之后会牵连什么”。所以复现 Uber 效果的第一步不是引进最强 Agent而是先问我们的仓库能不能让一个不熟悉业务的新工程师快速上手如果答案是不能那 Agent 也会遇到同样的问题。反过来看一个测试覆盖率高、模块边界清晰、命名规范的仓库Agent 的可用性会成倍上升。这也是为什么很多团队在引入 AI 编程后反而开始重视代码质量和架构规范——不是 AI 带来的负担而是 AI 放大了优良工程基础的价值。4.2 CI 和反馈速度慢的 CI 会拖死 AgentAgent 迭代修复依赖一个关键反馈测试和静态检查要跑得快报错要足够明确。如果一次代码提交要等 30 分钟才知道结果Agent 的迭代效率会断崖式下降。它每改一次都得等半小时人也会在这个过程中逐渐失去耐心。更好的环境是小范围测试优先跑静态检查在本地执行报错日志能准确定位到文件、行号和原因快速失败而不是长时间挂起如果团队现在 CI 就要跑一个小时以上那么接入 Agent 之前还要先优化 CI 反馈速度。否则 Agent 只能靠“碰运气”提交返工率会非常高。4.3 权限和工具链Agent 能访问哪些仓库运行哪些命令一个 Agent 如果只能生成代码文件却不能运行测试、读取日志、查询 CI 状态那它的能力上限就只是一个高级补全器。要让 Agent 真正“接管 PR”需要给它一系列能力拉取代码库和相关分支读取指定文件运行特定测试获取测试失败日志安装依赖或至少在受限环境下提交分支并创建 PR响应评审意见这些能力在工程上对应的是权限管理、命令白名单、沙箱环境和日志系统。实际落地时这里也是安全风险最高的地方。必须限制 Agent 能访问的仓库范围、能执行的命令列表、能修改的文件路径否则就是给攻击面开了口子。注意不要把 Agent 的权限设置成“等同于一个全权限开发者的权限”。即使内部团队信任Agent 也可能因为上下文误判而执行危险命令。权限收敛是必须项不是加分项。4.4 成本预算没有成本控制Agent 只是另一个烧钱黑洞“零增长”不是自动发生的而是有预算上限和策略设计的结果。一个务实做法是给 Agent 系统设置三层预算单任务预算一次 PR 生成最大允许消耗多少 Token 或多少钱超出就停止并请求人工介入。团队月度预算每个团队、每个项目每月最多消耗多少 AI 资源。全局配额公司整体设置一个可控的AI工具预算池超过后自动降级或提醒。这三层预算的逻辑是先设上限再看结果。不要等到月底账单出来再后悔。5. 实际落地时最容易被低估的五个环节5.1 你如何准确描述需求Agent 的上限是人给它的上下文质量这是整个流程里最反直觉的一点Agent 生成代码的质量在更大程度上取决于“你对问题描述得有多清楚”而不是“模型有多强”。很多工程师使用 Agent 时给的指令是“修复这个 bug”“实现这个功能”然后期待 Agent 自己把事情全办好。如果 issue 本身只有一句话而且没有上下文Agent 只能猜测猜错之后还要经过多轮修改才能逼近正确答案。更有效的方式是提供结构化上下文问题复现步骤期望行为和当前行为的差异涉及的模块或文件相关日志或报错信息参照的历史 PR这是很多人忽略的一点给 Agent 写上下文就像给新同事做背景说明。你输入的信息质量直接决定输出质量。5.2 测试覆盖率不够时Agent 只能盲改Agent 的修复依赖于测试反馈。如果一个仓库几乎没有测试Agent 改完代码就失去了“什么是正确行为”的锚点它只能看着代码结构猜。没有测试保护的情况下Agent 生成的代码非常容易出现“看起来合理但破坏了既有行为”的问题。所以复现 Uber 类效果一个硬性前置条件就是核心模块必须有可运行的测试。没有测试就不要让 Agent 大规模提 PR。5.3 评审流程不能只保留“代码对错”还要保留“需求意图”如果团队把 PR 评审简化为“CI 过了就合”那么 Agent 的高产会变成一种诅咒。因为 CI 只验证了代码在已有测试下能跑并没有验证它是否解决了真实业务问题。一个合理的评审流程应该同时检查代码是否符合需求意图边界条件是否考虑完整是否引入不必要的复杂度性能、安全、兼容性是否受影响是否包含合理的测试换句话说Agent 接手“写”的部分后人的责任不是变轻了而是转移到更稀有的判断力上。5.4 Agent 会引入依赖但谁会负责审计依赖这是一个在生成式编程里特别容易被忽略的问题。Agent 在写代码时可能会顺手引入一个第三方库或者建议修改依赖版本。如果评审人没有仔细审计这类变更可能被合并进代码库。长期下来依赖增长会变成安全隐患和维护负担。建议在 Agent 生成 PR 时额外标注依赖变更并要求 Agent 说明引入依赖的理由。这样评审人可以快速判断“这个依赖真的有必要吗有没有更轻量或更成熟的替代”5.5 日志、追踪和可观测性是 Agent 系统自身的必需品当 Agent 开始大规模提 PR 时你还需要一套“Agent 行为日志系统”。也就是说你不仅要记录“Agent 最终提交了什么”还要记录“Agent 做了哪些尝试、为什么选了这个方案、修改了哪些文件、跑过哪些命令”。这不是为了监控员工而是为了排查问题。当某个 Agent 生成的 PR 在线上出问题时如果没有完整日志你根本不知道这个 PR 是怎么一步步变成这样的。传统开发里你可以问工程师当时的思路Agent 不会主动告诉你只能靠日志回溯。所以 Agent 系统的可观测性和业务系统的可观测性一样重要。这一点真正落地时最容易被忽略。6. 什么样的团队适合引入 Agent 提 PR6.1 适合先动手的团队仓库测试覆盖率高CI 反馈速度快代码风格统一模块边界清晰团队已经有 Code Review 文化和明确合并规范对 AI 工具成本有预算意识和观测手段工程师愿意花时间写清晰的 issue 描述这类团队接入 Agent 的收益会非常明显因为它原本的工程基础已经足够扎实Agent 只是把已有流程里的重复劳动替代掉。6.2 不适合急着上 Agent 的团队仓库混乱大量复制粘贴代码几乎没有测试CI 很慢评审流程形同虚设合并前没人认真看代码预算不清楚成本不可控工程师不愿改变工作习惯把 Agent 产出当免责声明这些情况下Agent 不但不会提升效率反而会制造更多隐藏债务。你会得到一个看起来很高产、实际上需要大量返工的代码生成机器。6.3 一个可参考的渐进路线如果团队想验证 Agent 提 PR 的适配度建议不要一开始就铺开全仓库而是按下面的步骤推进选一个模块边界清晰、测试覆盖良好的中等模块。先让 Agent 只负责“生成初始 diff”人工接手后续所有工作。记录 Agent 生成的 diff 有多少进入最终 PR多少被重写。确认流程稳定后再让 Agent 参与修复测试和响应简单评审意见。逐步扩大仓库范围同时建立成本预算和权限控制。稳定运行一个季度后再评估是否适合更大规模接入。这个路线的核心逻辑是先验证“可用”再验证“可控”最后才验证“可放大”。如果第一步可用性都达不到后续所有东西都无从谈起。7. 踩坑清单如果做不好这五个问题会集体爆发我把最常见的五个坑放在这里按严重程度排序。7.1 权限失控Agent 拥有过高权限执行了不该执行的命令或者修改了不该修改的文件甚至影响生产环境。这是最严重的一类问题。解决方式只有一个权限最小化。给 Agent 独立的服务账号限定仓库、分支、命令和文件路径禁止无差别写操作。7.2 成本失控Agent 在某个复杂任务上陷入多轮失败循环Token 消耗暴涨甚至一夜之间烧掉一个月的预算。解决方式每个任务都设置单次 Token 上限超时自动终止并通知负责人介入。7.3 评审退化为“看绿灯”CI 通过就被合并导致很多符合测试但不符合意图的代码流入主干。解决方式把评审重点放在需求意图、边界条件、依赖引入和安全隐患上而不是只关注测试是否通过。7.4 上下文质量被忽视issue 描述模模糊糊Agent 只能靠猜产出质量自然不会高。团队把锅扣到“Agent 不好用”上却忘了输入信息散乱。解决方式建立统一的 issue 书写模板明确包含复现步骤、期望行为、涉及文件和验收标准。7.5 没有 Agent 行为日志Agent 出了错整个团队不知道它是怎么得出这个结论的无法复盘。解决方式从一开始就记录 Agent 的每次命令、每次文件和每次决策路径并建立查看和审计界面。提醒一句如果你现在团队连“人工 PR 评审”都做得不够好那引入 Agent 只会把问题放大而不是解决。8. 从 Uber 案例里真正可以带走的方法论8.1 效率来自工程系统而不是单一模型Uber 这个案例里最容易误导人的地方是让人觉得只要选对模型就能实现 70% 的 PR 接管率。真正起作用的是一整套系统高质量仓库、快速 CI、清晰权限、成本控制、人工评审规范、issue 质量规范、Agent 行为日志。模型只是其中一个环节。打个比方一个厨师的厨艺再高如果厨房没有稳定供气、没有干净的台面、没有新鲜的食材、没有明确的菜品要求他也做不出稳定好菜。8.2 AI Agent 的落地路径先清理河道再放水所以我的判断是Agent 提 PR 的落地路径不是“先让 Agent 跑起来再看看哪里要修”而是“先把工程基础补齐再让 Agent 在好环境里跑”。这一步顺序很关键。反过来做的团队大概率会得出“Agent 代码质量不行”的结论。但真实原因往往是仓库和流程没有给 Agent 搭好跑道。8.3 每个团队都应该有自己的“AI 账单零增长”这个目标不一定意味着“完全不花钱”而更接近让 AI 成本和业务产出成比例而不是失控。如果你每月花 1000 元换来 100 个可合并 PR那这个成本就是合理的。如果每月花 3000 元还是只有 100 个可合并 PR那就需要反思调用策略了。建议每个团队都建立一个简单的看板当月 AI 支出、Agent 生成 PR 数量、被合并 PR 数量、被丢弃或返工 PR 数量、线上问题占比。用这些指标来调整 Agent 策略而不是拍脑袋决定“要不要用 Agent”。8.4 最后说回工程师个体的位置当 Agent 接管 70% 的 PR 初稿工作时工程师的核心竞争力并不会消失只是发生了转移。过去拼的是“谁写代码快”以后拼的是“谁能把需求拆清楚、谁能判断代码是否真的正确、谁能设计出 Agent 改不坏的架构、谁知道什么时候不该让 Agent 动手”。这不是威胁。对一个有经验的开发者来说反而是机会——因为你终于可以把时间从重复劳动里拿出来去做那些模型做不了的事情。9. 一个简单的自检框架决定你该不该让 Agent 大规模提 PR最后给一个可以直接拿去用的自检清单。每一项如果做不到都建议先补课再上 Agent。维度检查项通过标准仓库质量核心模块是否有单测覆盖率不低于核心模块可接受阈值Agent 改动能被测试捕捉CI 反馈代码提交后多久能知道结果最好在 10 分钟内给出明确结果权限收敛Agent 有哪些仓库和命令权限有独立受限账号不能操作生产环境成本预算单任务和团队月预算是否设定超出自动停止并通知负责人评审规范合并前是否有人工评审需求意图评审不只看测试绿灯更关注边界和意图Issue 质量上下文描述是否结构化有复现步骤、期望行为、涉及文件Agent 日志能否回溯 Agent 执行过程能查看命令、文件、修改内容和失败尝试如果这七项里超过三项不达标那我的建议非常明确先不要急着铺开 Agent先把这些基础补上。越是想让 Agent 高效工作越要先解决“环境是否允许 Agent 高效工作”的问题。这个案例真正值得记住的其实是这句话Agent 不是替代工程师的魔法而是让工程系统效率上一个台阶的杠杆。杠杆能不能撬动东西取决于你给它架在什么支点上。