Agent 替你写代码没问题,但这 3 类后端任务让它当场翻车

📅 2026/7/21 23:28:28
Agent 替你写代码没问题,但这 3 类后端任务让它当场翻车
我在过去一个月里把日常工作里最典型的 8 类后端任务挨个交给 AI Agent 处理记录了每一类任务的接手率、节省的时间、还有——它在哪里翻车。结论是有几类任务AI 真的比你快但有几类任务你交给它最后修烂摊子的时间比自己做还长。先给你一个结果数字单测编写这件事我以前每次要花 40 分钟现在 5 分钟交给 AI自己只需要 review 10 分钟整体省了 25 分钟。但线上故障排查我让 AI 介入了 3 次有 1 次它给出的修复方案引入了新问题排查时间反而比自己来更长。这篇文章想说清楚的就是这件事AI Agent 的真实天花板在哪。AI Agent 后端工程师一个月实测对比图图后端工程师使用 AI Agent 前后的工作感受对比测试条件说一下工具是 Claude Code终端运行 GitHub CopilotIDE 内补全偶尔用 Cursor 处理大型文件重构。代码库是一个中等规模的 Java Spring Boot 后端服务大约 15 万行代码有内部数据库、缓存层和三方接口依赖。测试周期连续 4 周工作日每天正常使用不刻意回避复杂场景也不挑简单任务喂给 AI。每次使用 AI 之前我都记录这个任务准备让 AI 做什么任务结束后记录AI 的贡献比例和哪里出了问题。没有刻意打分就是工程师的日常习惯——遇到不对的地方记下来下次换个方法。这个测试有一个刻意的限制我没有特意去找AI 最擅长的任务来刷高接手率用的都是真实工作里自然遇到的任务包括那些明显复杂的、有大量内部上下文的场景。如果只挑简单场景AI 的表现会好看很多——但那不是你实际工作里会遇到的情况。不是实验室测试就是真实工作流。8 类任务的真实数据先给你一张汇总表后面逐类说任务类型 AI 接手率 节省时间 主要失败模式单元测试编写 85% 25-30 分钟/次 测试覆盖场景不全边界用例遗漏文档撰写 80% 30-40 分钟/次 接口描述不准确业务背景缺失代码样板生成 75% 15-20 分钟/次 偶发幻觉字段需要人工核对SQL 优化建议 60% 20 分钟/次 不了解索引现状给出无效方案Code Review 初筛 55% 30 分钟/次 误报率高容易淹没真正的问题需求拆解 40% 仅辅助 业务背景理解偏差拆解颗粒度不对接口设计 30% 仅辅助 不懂现有协议和内部规范线上故障排查 20% 负收益 给出听起来合理但实际错误的定位这个表只是统计结论数字背后的故事更值得说。单元测试最值得把它交出去的任务在这 8 类任务里单元测试是 AI 最能打的领域没有之一。原因很简单单元测试是典型的规则清晰、重复度高任务。给 AI 一段业务逻辑代码告诉它用 JUnit 5 Mockito让它把 happy path 和常见的 edge case 都覆盖一遍——大多数情况它都能给你一个像模像样的测试类结构正确mock 对象该写的也写了。我实测的 85% 接手率是这么定义的AI 生成的测试用例经过我 review 后不需要大改只需要补一两个业务特有的场景就能直接用。节省下来的时间最明显。以前写一个 Service 层的测试类从看代码、构思场景、写 mock、写断言整个过程大概 40 分钟。现在是贴代码给 AI5 分钟出初稿我花 10 分钟 review 和补充业务 edge case合计 15 分钟。时间直接砍一半以上。美团的工程实践里有一个观点说得很准当工程师从怎么写测试转移到设计测试场景本质上是从被动验证变成了主动质量架构师。这个变化是真实的。失败模式在哪 在于边界条件。AI 擅长写正常情况下应该怎样但对业务层面的特殊约束不敏感。比如我们有一个优惠券叠加逻辑互斥规则有 5 条AI 生成的测试用例只覆盖了 3 条剩下的 2 条需要你自己补。这不是它的错是因为这部分业务逻辑藏在 PRD 文档里AI 压根没见过。操作建议 把单测交给 AI但在 prompt 里显式告诉它除了 happy path还要覆盖哪些业务特殊场景。这比等它自己猜到快很多。文档撰写简单但要盯着它接口文档、变更说明、技术方案的初稿——这类任务 AI 做得也不错80% 的情况下给你一个能用的骨架。节省时间在 30-40 分钟主要体现在你不需要从空白开始写。AI 会帮你把标题结构列好把参数说明和示例补上你只需要核对和补充业务背景。主要风险是不可见的错误。 接口文档里 AI 偶尔会把字段名写错比如把 userId 写成 user_id或者对参数的业务含义描述得似是而非。这类错误如果你不认真 review会在协作时给下游开发或测试造成困惑。原则就一条AI 写初稿你来审字段和业务描述。别直接发出去。代码样板生成记住它有幻觉Controller 层、DTO 类、配置文件、CRUD 接口——这些有固定模式的代码AI 生成速度快、质量稳定75% 的情况下可以直接用或者微调后用。省下来的 15-20 分钟主要是手动敲模板这个纯体力活。对一个经验丰富的工程师来说这部分其实不费脑但就是烦。AI 接手之后你能把节省下来的时间放在真正需要思考的地方。关键警告 AI 有幻觉。它有时会生成一个看起来合理、但实际上不存在的方法调用或者引用了你项目里没有的类。你需要有意识地把生成的代码过一遍确保依赖都是真实存在的。这个检查现在已经是我的肌肉记忆——AI 写我核不跳过。根据 GitClear 的 2.11 亿行代码研究代码重复率从 2020 年的 8.3% 上升到 2024 年的 12.3%这背后有一部分原因是 AI 倾向于把相似逻辑复制而不是抽象复用。在接手代码样板生成的同时你要自己把关这段逻辑是不是已经有了。AI Agent 8类后端任务接手率对比图图8 类后端任务 AI 接手率对比越靠上越适合交给 AISQL 优化能帮你但不了解你的数据库这一项我给 60% 的接手率已经算是有条件地认可了。AI 在 SQL 优化上的帮助是真实的但有一个硬门槛它不知道你的索引现状。你贴一条慢查询给它它能告诉你这里应该加一个复合索引——但如果你没有告诉它现有的索引结构它的建议可能是重复的、甚至是矛盾的。我实测下来有效的用法是这样的把慢查询 SQL 贴给 AI同时贴上 SHOW INDEX FROM table_name 的结果让它基于现有索引结构给建议这样出来的建议60% 的情况下是有参考价值的。剩下 40% 的问题往往是 AI 不了解数据量分布、业务查询频率或者多表 join 的历史包袱这些它没有上下文给不出准确判断。有一个场景它表现很好把一条写得很乱的 SQL 让它重写成可读性更好的格式同时检查明显的性能反模式比如 SELECT *、子查询里的排序、笛卡尔积。这类静态审查它完全胜任。数据库是共享的真相——这句话是真的。Agent 写错一条 migration或者给出错误的索引建议而你直接执行了影响的是整个服务的稳定性不是一个函数的 bug。这个领域给 AI 的权限要比其他地方更谨慎。Code Review 初筛有用但会产生噪音把 PR 的 diff 贴给 AI 让它做 Code Review这件事我用了一个月结论是用来做初筛可以但不能替代人工 review。AI 能发现的问题主要是变量命名不规范、缺少 null check、明显的性能反模式、注释和代码不一致。这些属于样式显然错误层面价值有限但确实节省了资深工程师扫描这类低级问题的时间。真正的问题在误报率。 AI 会把一些在当前业务上下文里完全正确的写法标记为有问题生成一堆需要关注。如果你认真逐一看反而花了更多时间。我的解决方法是只让 AI 找安全漏洞和明显 NPE其余的不让它插嘴。更严峻的一个数字来自 Veracode 的 2025 研究AI 生成的代码里45% 在测试中引入了 OWASP Top 10 里的安全漏洞。这不是说 AI Code Review 没用而是说如果是 AI 生成的代码你更需要用安全 checklist 认真过一遍不能假设AI 写的应该没问题。Cloudflare 的工程团队有一个做法值得参考他们设置了 7 个专项 reviewer分别负责安全、性能、代码质量、文档等不同维度——也就是说Code Review 这件事本来就是多维度的不是让一个 AI 泛泛过一遍就算完的。需求拆解只能当辅助决策在你这里“帮我把这个需求拆成开发任务”——这句话我说了大概 15 次有用的不到一半。AI 拆解出来的任务问题集中在两个地方第一颗粒度不对。 它倾向于把任务拆得太细把写一个 Controller 接口和写对应的 DTO 类分成两个任务而实际上这是一个动作。或者反过来把需要拆成三个 PR 的工作合在一起完全不考虑代码审查和上线风险。第二不懂现有系统。 拆解任务需要知道这个功能和现有哪些模块有交集、“改这里会不会影响下游”。这些上下文不在 prompt 里AI 就只能按照通用的经验给出方案和你的实际情况往往有出入。我现在的用法是先自己梳理一个框架再让 AI 帮我检查有没有遗漏。反过来用让 AI 先拆我来修的体验比较差。接口设计AI 没有你的历史包袱接口设计的 30% 接手率说的是AI 给的建议我有三成左右是可以直接参考的。问题的核心在于好的接口设计很大程度上是对历史债务的管理。版本兼容性要求、已有的 RESTful 规范、内部团队的字段命名约定、某个接口当年为什么设计成这样而不是那样——这些都是只有做过这个系统的人才知道的上下文。AI 给你一个教科书级别的接口设计但教科书上没有你们团队的特殊约定。有一个场景 AI 确实有用把你的设计方案贴给它让它帮你找潜在的问题。比如这个接口设计有没有什么安全风险、“这个字段类型选 String 还是 Long有什么考量”。它作为橡皮鸭帮你把隐含的假设暴露出来比直接让它设计接口有用。线上故障排查小心这里最容易被坑这是整篇文章里我最想说的一节。接手率 20%负收益——这不是说 AI 完全没帮助而是说在生产故障场景里错误的帮助比没有帮助更危险。我遇到过一次真实的情况服务出现间歇性 504我把部分日志贴给 AI 让它分析它给了我一个听起来很合理的解释连接池耗尽建议增加 maxPoolSize 配置。我照做了问题没有解决反而因为连接数增加引发了数据库侧的更高负载。真正的原因是下游服务有一个慢接口需要加超时控制——这个信息没在我贴的日志里AI 没有全局视角给出了错误定位。Brex 做了一个正经的 AI 值班工程师系统结果他们发现一个关键规律“升级模型带来的效果提升远不如写好 runbook 文档”。Agent 擅长按流程执行不擅长在没有流程的情况下发明新的排查路径。DreamOps 项目实测数据用 AI Agent 辅助处理基础设施故障解决时间从 30-60 分钟缩短到 2-5 分钟——但有一个前提问题类型已经有成熟的处理流程。对于从未见过的问题模式AI 的表现显著下滑。故障排查的正确姿势 AI 可以帮你快速过滤日志里的关键词、帮你写日志查询语句、帮你列出同类问题的常见原因——但最终的根因判断需要你来做。把 AI 当成加速你的信息检索不要让它主导你的判断方向。线上故障排查 AI Agent 正确用法流程图图线上故障排查中 AI Agent 的正确介入方式那个让人不舒服的数字在说 AI 帮你快了多少之前有一个研究结论我觉得必须提。2025 年 7 月非营利机构 METR 发表了一项随机对照试验16 位有丰富经验的开源项目开发者在真实的大型代码库上完成 246 个任务。结果显示允许使用 AI 工具的开发者完成任务的时间比不允许使用的慢了 19%。更反直觉的是同一批开发者认为 AI 让他们快了 20%——感知和实际刚好相反。METR 找到了原因写 prompt、验证 AI 输出、修复 AI 引入的问题、在大型代码库里帮 AI 补充上下文——这些隐性成本加在一起超过了 AI 带来的速度增益。尤其是对熟悉代码库的资深工程师来说他们脑子里有大量 AI 没有的上下文而 AI 每次都需要重新被教。这个结论不是说 AI 没用而是说使用 AI 的方式决定了效果不是工具本身。对于代码量超过 10 万行、依赖关系复杂的成熟项目直接把任务交给 AI 往往不如先把上下文整理清楚再交。另一个数字来自 Stack Overflow 2025 开发者调查45% 的工程师表示调试 AI 生成的代码比预期更费时间。不是 AI 不好而是很多人用错了场景。METR 研究里还有一个细节值得注意这 16 位开发者在任务结束后都相信自己用 AI 更快了。感知和数据之间有 40 个百分点的偏差。这说明当你感觉 AI 在帮你的时候不一定真的帮了你——那种感觉在进展的感觉有时候是在帮 AI 生成的错误收拾烂摊子。检验的方式只有一个测量不要凭感觉。