cover

去年底我第一次装 Cursor,用了五分钟就关了。

原因是它给我自动补了一行 Thread.sleep(99999),美其名曰「等待异步任务完成」。我当时心里想:就这?传说中要替代程序员的 AI,就给我补了个 sleep?

后来被同事摁着头重新用了一个月,我才发现一件事——不是我太挑剔,是我一直用错了方式。三个月后,我已经回不去没有 AI 补全的编码状态了。

转折点在哪?是我终于搞明白了这四个工具各自最擅长什么。

先说我的判断,不一定对,但都是真金白银换来的经验

不想折腾、装完就用的 → Copilot(免费版够你撑一阵)<br>愿意花点时间上手的 → Cursor(效率上限确实高)<br>维护几十万行祖传代码的 → Codex(全局搜索是降维打击)<br>以上都不想花钱的 → 先把 Copilot Free 用透了再纠结

下面不列表格,我只讲三个让我「这玩意还真有两下子」的真实瞬间。

瞬间一:Cursor 猜到了我还没想到的事情

代码补全场景

写一个 Spring Boot 的 RestTemplate 工具类。敲到一半,我脑子还没转过来要不要加连接池,Cursor 已经把完整的静态初始化块甩我脸上了——超时时间、连接池大小、重试策略、异常处理,一条龙。

重点不是它写得快,是写完之后我扫了一眼,发现它选的是 HttpComponentsClientHttpRequestFactory,而不是 SimpleClientHttpRequestFactory

前者自带连接池复用,后者每次 new 一个新连接。我入行前两年都不知道这个区别。

这才是 AI 补全让我回不去的真正原因——不是偷懒,是它在补我的认知盲区。就像一个坐你旁边的老程序员,你不开口他也知道你在哪容易栽跟头。

瞬间二:Codex 花十秒找到了我查了三小时的 bug

全局搜索场景

一个 NPE,堆栈指向 order.getPromotion().getDiscountRate()

正常排查流程:点进 Promotion 类 → 看构造函数 → 看 setter → 看数据库字段。一切正常。三个小时过去了,开始怀疑人生。

Codex 干了什么?我选中报错行,它花了不到十秒,把整个项目里所有调用 getPromotion() 的地方全搜出来了。然后告诉我:有 3 处调用没做 null 检查,其中 2 处走了 Optional,但你报错那处是直接链式调用,裸奔。

它还画出了完整的调用链——从 Controller 到 Service 到 Repository,哪几层做了防护、哪几层没有,一目了然。

这种感觉就像你熬夜查 bug 查到怀疑人生,旁边有人递过来一张纸:「排查完了,问题在这。」

Copilot 和 Cursor 做不到这个,因为它们只看当前文件和上下文窗口。Codex 索引了整个项目的代码仓库,所以能全局感知。代价是它目前只支持 VS Code,而且补全速度比 Cursor 慢一点。

瞬间三:Copilot 在「写垃圾代码」这件事上赢了

代码生成场景

承认吧,大部分时候我们写的代码都算不上「优雅的设计」——Controller 调 Service、Service 调 DAO、写 DTO 转换、配个配置文件。纯体力活,毫无技术含量。

但活总得有人干。

我在 Controller 里敲了一行注释:

// 接收用户注册请求,校验参数,调用 UserService.createUser,
// 返回统一响应体 Result<UserVO>

Copilot 把整个方法补全了。参数校验、异常处理、日志打印,连 @Validated 都自己加上了。

我不想把时间耗在这些事上。脑力应该留给需要思考的架构和逻辑,体力活交给 AI。这才是合理分工。

三个工具的真实差别

不搞产品评测那一套,我就说人话:

Cursor 厉害的地方是它的对话框。Cmd+K 一开,想干嘛直接说普通话——重构、加注释、修 bug、写单测,大部分时候一把过。代价是你得换编辑器,从 JetBrains 切过来需要适应几天。

Copilot 强在它不需要你改变任何习惯。它就是你 IDE 里一个插件,该出现的时候自己出现。弱点是深度不够——问复杂问题它喜欢给安全但平庸的答案,不会给你惊喜。

Codex 的长板很明确:全局视野。排查问题时它是神兵利器,但日常写代码用不上它。而且是 VS Code 独占。

Windsurf 我试了一周就卸了。它老在我写代码的时候跳出来提建议——「其实这里用 Builder 模式更好」,出发点是好的,但时机不对。我赶着吃饭呢。

我现在怎么用

公司项目(Java/JetBrains):Copilot 写胶水代码,自己把关核心逻辑。公司的代码安全要求高,Copilot 的隐私策略能过合规。

个人项目(各种语言/VS Code):用 Cursor。每天省下至少俩小时,干点什么都行。

遇到复杂 bug:切 Codex 做地毯式搜索。不过大部分时候 Cursor 已经够了,Codex 属于核弹级别——有它安心,但平时用不上。

说两句不好听的

我见过很多人说「AI 编程都是花架子,真本事还得自己写」。

说这话的,要么没认真用过,要么打开默认补全用了三分钟就下了结论。我三个月前也是这么想的。直到那个 Thread.sleep 事件之后,我才发现自己错在哪——

问题不在 AI 不够强,在我一直把它当打字工具用。真正的用法是把它当成一个从来不会嫌你问题蠢的搭档。你不会的,它教你。你想不到的,它提醒你。你不想干的,它帮你干。

这才叫协作。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐