从 Copilot 到 Agent:我的开发工作流正在被颠覆

发布时间:2026/6/23 4:09:45
从 Copilot 到 Agent:我的开发工作流正在被颠覆 前两年我用 Copilot更多是把它当成一个“更聪明的代码补全”。写一个函数它帮我补参数写一段注释它帮我猜实现写 React 组件它能把useState、useEffect、接口类型一路顺下来。那个阶段AI 像是坐在副驾驶上的人。方向盘还在我手里它偶尔提醒我“这里可以这样写”我觉得省事但谈不上颠覆。真正让我感觉不一样是最近开始把一些 Issue 丢给 Agent 之后。以前我面对一个 Bug大概是这样的流程先读需求再翻代码再本地启动再打断点再改再跑测试再提 PR。中间任何一步卡住都得自己切上下文。尤其是一些“不难但烦”的活比如补单测、修边界条件、改文案联动、补空状态、处理 lint 报错技术含量不高但会吃掉很多碎片时间。现在我会先问自己一句这件事是不是一定要我亲手写如果答案是否定的我就把它整理成一个 Issue交给 Agent。我现在给 Agent 的 Issue通常不会写得很随便。以前我们给人派任务可能一句“修一下列表分页问题”就完了因为人会追问、会脑补、会结合业务经验判断上下文。但 Agent 不一样它很能干也很容易一本正经地走偏。所以我会把 Issue 写成这样背景 订单列表在筛选状态下翻到第二页后切换筛选条件页码没有重置导致接口请求 page2页面为空。 期望 切换任意筛选条件后page 重置为 1并重新请求数据。 范围 只修改订单列表页相关逻辑不调整接口结构不改全局分页组件。 验收 1. 切换状态筛选后 page1 2. 切换日期筛选后 page1 3. 保留原有分页切换能力 4. 补充或更新相关单测这样的任务丢给 Agent成功率明显比一句“修分页 Bug”高很多。这也让我意识到AI Agent 时代的核心能力不是“会不会提问”而是“会不会定义任务边界”。PR 不再是我从零写出来的而是我审出来的以前一个 PR 的诞生路径很清晰我写代码我自测我提交我等别人 Review。现在变成了我写 IssueAgent 出 PR我 Review。这个变化很微妙。刚开始我会很不放心总想把 Agent 改过的每一行都看一遍。后来我发现真正重要的不是盯着它有没有写出“我会怎么写”的代码而是看它有没有破坏系统原有的约束。比如我 Review Agent 的 PR会重点看几个地方第一它有没有改超范围。很多 Agent 最大的问题不是不会写而是太积极。你让它修一个筛选 Bug它顺手重构了列表状态你让它补一个单测它顺手调整了组件结构。代码看起来更“优雅”但对真实项目来说这种优雅有时候就是风险。第二它有没有理解业务语义。技术上通过不代表业务上正确。比如“订单取消”和“订单关闭”在 UI 上可能都是灰色但在业务流转里完全不是一回事。Agent 很容易从命名和表象推断逻辑但老系统里的很多规则恰恰藏在历史包袱里。第三它有没有补对测试。我不太喜欢那种“为了覆盖率而覆盖率”的单测。断言了一堆 DOM 是否存在却没有覆盖真正的业务边界。Agent 写单测很快但我会要求它围绕 Bug 本身补测试原来会失败现在应该通过。慢慢地我发现我的时间从“写实现”转到了“看设计是否合理、边界是否完整、风险是否可控”。这不就是架构师和 Reviewer’s 工作吗写单测是我最愿意交给 Agent 的事如果说现在有什么开发任务最适合交给 AI Agent我个人会选单测。原因很简单单测有明确输入输出有现成上下文也有即时反馈。Agent 写完之后测试跑不跑得过结果很直观。我经常这样用它“请阅读这个组件和现有测试风格为新增的筛选重置逻辑补充单测不要重构组件代码。”这句话里我会特意加上“阅读现有测试风格”。因为在团队项目里测试代码最怕风格不统一。有的人喜欢data-testid有的人喜欢按文本查找有的人喜欢 mock hook有的人喜欢 mock service。Agent 如果不先看现有写法很容易写出一份“能跑但不像这个项目”的测试。它补完以后我一般只做三件事看测试名称是否表达业务意图。看失败场景是否真的能暴露 Bug。看有没有为了测试而修改生产代码。第三点很关键。好的单测是验证代码不是逼代码配合测试。修 BugAgent 适合处理“局部明确”的问题修 Bug 这件事我现在会分层处理。如果是样式错位、空值异常、状态没重置、接口字段兼容、表单校验遗漏这类问题我比较放心交给 Agent。因为它们大多有清晰复现路径影响范围也相对可控。但如果是性能问题、架构问题、跨模块数据流问题我不会直接让 Agent 自己改。我会先让它帮我做分析“请先不要修改代码分析这个页面首次加载慢的原因列出可能的瓶颈、涉及文件和验证方式。”这个用法非常舒服。以前排查问题我要自己从入口文件一路翻下去。现在 Agent 可以先帮我扫一遍把可能相关的组件、请求、缓存、渲染逻辑列出来。它的结论未必全对但能帮我快速建立地图。真正动手之前我会让它停一下“先给出修改方案不要提交代码。”这个习惯很重要。Agent 越强越不能让它一上来就大改。先让它讲方案再决定要不要执行这和带新人其实很像。我越来越像一个任务拆解者这段时间最大的感受是开发的体力活在减少但脑力活没有减少只是换了形态。以前我的价值更多体现在“我能不能把代码写出来”。现在我的价值更多体现在“我能不能判断什么代码应该被写出来”。这两句话差别很大。一个成熟开发者过去靠经验少写 Bug现在还要靠经验防止 Agent 制造新的 Bug。比如一个需求来了我会先拆哪些可以交给 Agent哪些必须我自己设计哪些地方需要补文档哪些边界必须写进验收标准哪些改动必须拆成多个 PR我不再把 AI 当成“搜索答案的工具”而是把它当成一个执行力很强、但需要明确上下文和边界的虚拟同事。它不会累不会嫌麻烦补测试很快改文档也快。但它没有项目历史记忆不知道某个奇怪判断背后曾经踩过坑也不知道某个“看起来重复”的逻辑其实是为了兼容老客户。所以我的角色变了。我不是少工作了而是从“写每一行代码的人”变成了“决定哪些代码该存在的人”。AI Agent 没有取代开发者它取代的是低质量的开发流程很多人问我Agent 会不会让程序员不值钱。我的感受刚好相反。它会让“只会等需求、写代码、交差”的开发方式越来越不值钱但会让真正懂业务、懂架构、懂质量控制的人更值钱。因为 Agent 可以快速产出代码但它不能替你负责。PR 合不合并还是你负责。线上出不出问题还是你负责。架构会不会越来越乱还是你负责。技术债是被清理还是被包装成“重构”还是你负责。AI Agent 把开发速度拉上来了也把 Review 的重要性拉上来了。以前代码写得慢很多问题还没机会发生。现在代码生成得太快如果没有边界、没有测试、没有审查项目反而会更快变乱。所以我现在越来越重视几件事Issue 写清楚。任务拆小。改动范围收窄。测试必须跑。PR 必须 Review。重要逻辑必须人来拍板。这套流程看起来慢但它反而是让 Agent 真正可用的前提。最后的真实感受从 Copilot 到 Agent我的工作流确实被改变了。我不再满足于让 AI 帮我补几行代码也不再把所有任务都攥在自己手里。很多过去我觉得“算了我自己改吧”的小问题现在会被我拆成 Issue交给 Agent 去处理。但我也越来越清楚AI Agent 不是魔法。它像一个速度极快的初中级开发读代码很快写代码很快执行力很强但需要你告诉它边界需要你检查结果需要你在关键位置做判断。这对开发者其实提出了更高要求。以前你写得快是优势。现在你拆得清楚、审得准确、守得住架构边界才是优势。AI 没有让我离代码更远。它只是把我从“埋头写代码的人”推向了“设计任务、控制质量、审查系统”的位置。也许这就是下一阶段开发者的分水岭不是会不会用 AI而是能不能管理 AI 写出来的代码。