前段时间我一直在换 AI 编程工具。

今天觉得 Cursor 顺手,明天看别人用 Claude Code 一把梭重构项目,又想试试终端 Agent。再过两天看到 Copilot cloud agent 能在 GitHub 上开分支、提 PR,又觉得这才是正路。

折腾一圈下来,结论挺朴素:

别再用“哪个工具最强”来选 AI 编程工具了。

因为只要模型能力没差到离谱,真正决定体验的不是它能不能写出代码,而是它能不能嵌进你的工作流。

更准确一点说,是你有没有能力把一件开发任务拆成它能稳定完成、你也能稳定验收的形状。

以前我们要的是补全,现在要的是交付

最早用 AI 写代码,大家的期待很简单:

我写一半,你帮我补一半。

比如:

function formatDate(date: Date) {
  // AI 帮我补完
}

这类场景里,AI 更像一个聪明点的 autocomplete。错了也没关系,反正就几行代码,扫一眼就知道。

但现在不一样了。

你会开始把这种任务丢给 AI:

帮我把这个列表页的筛选逻辑抽成 hooks,顺便把接口缓存和 loading 状态处理好,不要影响现有交互。

这就不是补全了。

这是一个小型开发任务。

它要读上下文、理解组件边界、判断状态放哪、修改多个文件、最好还能跑测试。到了这一步,工具之间的差异才会被放大。

Cursor 的优势是离代码近,编辑器里来回改很舒服;Claude Code 这类终端 Agent 更像“我给你一个任务,你自己去仓库里跑”;Copilot cloud agent 适合 GitHub 工作流,尤其是 issue 到 PR 的链路;Codex CLI 这类本地 Agent 则更强调在本机仓库里读写文件、执行命令、受权限控制地完成任务。

所以问题不是“谁吊打谁”。

问题是:你的任务,应该发生在哪个地方?

我现在会先判断任务属于哪一类

我自己会粗暴分成四类。

第一类,随手写几行代码。

比如工具函数、类型定义、正则、样式微调。这种任务没必要开很重的 Agent,编辑器里的补全或者 Chat 就够了。你要的是快,不是完整流程。

第二类,局部功能开发。

比如加一个弹窗、补一个表单校验、改一个页面状态。这类我更倾向在 Cursor 这种编辑器里做,因为我需要一边看 UI、一边看 diff、一边微调。它像坐在旁边的同事,我说一句,它改一块。

第三类,跨文件重构。

比如把旧请求层迁到新 SDK,把某个模块从 Options API 迁到 Composition API,把散落的权限判断收口。这类任务我更愿意交给 Claude Code / Codex 这类 Agent。它们适合先读仓库,再规划,再动手。只要你给的验收条件够清楚,它们能省很多重复劳动。

第四类,明确的 issue 修复。

比如“这个 bug 在 xx 场景复现,期望行为是 xx,请修复并补测试”。这类任务很适合 GitHub Copilot cloud agent 这种跑在仓库工作流里的东西。它不一定最快,但天然带分支、提交、PR 这套流程,团队协作时心理负担会小一点。

你看,换个角度之后就清楚多了。

不是选一个“终极工具”,而是给不同任务找不同入口。

真正拖后腿的,经常不是 AI,而是任务描述太虚

我见过很多人抱怨 AI 写代码不靠谱,但他给 AI 的需求长这样:

帮我优化一下这个页面。

这句话给人也不好干。

优化什么?性能?结构?样式?可维护性?首屏?包体积?

能不能改交互?能不能动接口?有没有历史坑?怎么判断优化成功?

AI 最容易在这种任务里自由发挥,然后产出一堆看起来很努力、实际上不敢合的代码。

我现在给 AI 派活,会尽量写成这种格式:

目标:
把订单列表页的筛选状态同步到 URL query,刷新页面后能恢复筛选条件。

范围:
只改 order-list 页面相关文件,不要改全局 request 封装。

约束:
1. 保留现有默认筛选逻辑
2. 不新增状态管理库
3. URL 里不要出现空值字段

验收:
1. 选择状态=已支付,刷新后仍然选中
2. 清空筛选后,URL query 被移除
3. pnpm test 通过

这段不复杂,但比“优化一下”强太多。

AI Agent 最吃这种东西:目标、范围、约束、验收。

你给得越像工程任务,它干得越像工程师。

还有一个反直觉的点:AI 越强,测试越重要

以前 AI 弱的时候,它写错很明显。

变量名乱、类型不对、逻辑断层,扫一眼就知道不能用。

现在麻烦了。

它写出来的代码越来越像那么回事,命名也顺,结构也漂亮,甚至还会顺手抽象一下。最危险的不是“它不会”,而是“它错得很像对”。

比如它可能:

  • 把边界状态漏掉
  • 改掉一个隐含业务规则
  • 删除一个看似没用但实际兜底的判断
  • 为了通过类型检查引入更宽松的类型
  • 在你没注意的文件里加一层多余抽象

这时候,靠肉眼 review 是不够的。

我现在会把“让 AI 写代码”默认绑定三个动作:

  1. 让它先说计划,不急着改
  2. 改完必须看 diff,不接受整包信任
  3. 能跑测试就跑测试,没测试就让它补最关键的一两个 case

尤其是第三点。

很多人觉得测试是拖慢速度,但在 AI 编程里,测试反而是加速器。因为它给 Agent 一个明确反馈:你不是“看起来写完了”,而是“跑过了”。

不要让 AI 替你做技术判断

我踩过一个坑。

有次我让 AI 帮我重构一个老模块,它很快给了一个“更现代”的方案:抽 hooks、拆 service、加类型、顺手把几个分支合并掉。代码看起来清爽了不少。

但 review 的时候我发现,它把一个历史兼容逻辑删了。

那个逻辑丑是真的丑,但不是没用。

它是在处理一个旧版本客户端传来的脏数据。

这类事情 AI 很难天然知道。它只能从代码表面推断“这里重复”“这里可以合并”“这里命名不好”。但它不知道这段代码背后挨过什么打。

所以我现在对 AI 的定位更保守一点:

  • 它适合做体力活
  • 它适合提出方案
  • 它适合帮你查漏补缺
  • 它不适合替你拍板业务取舍

技术判断还是要人来做。

不然最后代码是 AI 写的,锅还是你背的。

我比较推荐的一套日常用法

如果你刚开始认真用 AI 编程工具,可以试试这个节奏。

小需求直接在编辑器里改。

比如 Cursor / Copilot 这类,贴近上下文,响应快,适合边写边调。

复杂一点的任务先让 Agent 做计划。

不要一上来就“直接改”。先让它读代码、列影响范围、说准备改哪些文件。你看完计划再放行。

跨文件修改后,一定让它自查。

可以直接问:

请检查刚才的改动:
1. 有没有没用到的代码
2. 有没有破坏现有行为
3. 有没有遗漏测试
4. 有没有可以简化的地方

最后自己看 diff。

这一步不要省。AI 写得越多,你越要看 diff。不是不信任它,而是这是开发流程的一部分。

最后说句可能不太讨喜的话

AI 编程工具不会让所有程序员都变强。

它更像一个放大器。

你本来就知道怎么拆任务、怎么验收、怎么 review,它会把你的速度放大。

你本来就习惯需求不清直接开写、测试能省就省、出了问题靠猜,它也会把这些毛病放大。

所以 2026 年再讨论 AI 编程,我觉得重点已经不是“会不会用 Cursor”或者“Claude Code 牛不牛”。

重点是:

你能不能把开发工作组织成 AI 可以参与、但最终仍然由你负责的流程。

工具会继续换,模型会继续卷。

但目标、边界、约束、验收,这些东西不会过时。

评论区可以聊聊:你现在更常用哪类 AI 编程工具?编辑器型、终端型,还是 GitHub 这种后台 Agent?我也想看看大家真实项目里是怎么搭配的。

更多推荐