昨天刚把 Cursor 的 Composer 关掉,改用 Claude Code 直接操作终端,结果发现了一个反直觉的问题
上周有个需求让我彻底放弃 Cursor 2.0 的“自动补全”功能,结果反而把开发效率提上去了。当时我一边敲代码一边嘀咕:这玩意儿越来越像 AI 在替我决定写什么,而不是我在决定 AI 帮我写什么。
今天早晨调试一个微服务时发现,某个接口返回的 NullPointException 居然发生在三层嵌套的对象链里——第一个对象来自 Redis,第二个是本地缓存,第三个是远程调用回来的 DTO。Cursor 的 Composer 模式给我生成了 47 行代码,其中 38 行是空指针防御,但最后一行还是挂了。我盯着屏幕发了五分钟呆,突然意识到:它不是在生成代码,是在制造伪代码。
转头我就把 Claude Code 拎出来跑了一次同样的任务。输入指令是:“给这个接口加一层空值检查,如果 Redis 缓存为空且本地缓存未命中,则触发远程降级请求。” 三分钟后它丢给我一个完整的函数定义,附带了日志埋点和超时控制。更离谱的是,当我问它“为什么这里要用 Optional 而不是判空?”时,它居然翻出了去年 GitHub Issue #2183 的讨论记录,说:“因为 Spring Boot 3.2.5 之后默认开启了 null-safety 注解,直接用判空会触发编译警告。”
我当场就愣住。说实话,之前我一直觉得 Claude Code 只是个命令行工具,能写写脚本、改改文件就很不错了。没想到它连版本兼容性这种细节都能精准捕捉。后来我又让它在同一个项目里重写那个失败的接口,这次没再依赖 Composer 的“多文件编辑”,而是直接通过终端执行 claude edit --file src/main/java/com/example/ApiService.java,然后逐步追加逻辑——每次修改都要求它展示 diff 输出,并且强制执行一次单元测试。最终 RT 从 1200ms 降到了 400ms,不是因为速度变快了,而是因为代码量少了近一半。有意思的是,原本需要手动配置的三个环境变量,现在全部由它根据 .env.template 自动生成,还自动校验了权限路径。
有人可能会说:那你怎么保证生成的代码质量?我自己亲测过,上周对比了同一批 bug 修复任务的产出结果。用 Cursor 平均每次修复耗时 14 分钟,包含两次调试循环;Claude Code 只要 6 分钟,而且只有一次 rerun 就被测试覆盖了。当然这不是绝对优势 —— 当涉及到复杂的状态机转换或者事件驱动架构时,Claude Code 容易跳过边界条件处理。比如有一次我要实现一个“订单支付成功后同步通知第三方系统”的功能,它默认把所有回调放在主线程里跑了,结果导致数据库连接池爆满。我赶紧改了指令:“请把异步队列放在独立线程池中执行,并添加重试机制和死信队列监控”,这才稳住局面。
这时候我才真正明白两者本质区别在哪里:Cursor 试图让你感觉不到自己在写代码,而 Claude Code 是把你当工程师对待。前者像保姆喂饭,后者递给你刀叉说“你自己切”。这让我想起去年刚接触 LLM 编程助手时的兴奋劲儿——那时总觉得只要提示词足够漂亮,就能一键写出生产级代码。但现在看来,真正的生产力不来自于“少写字”,而在于“更快定位问题根源”。
前两天我还特意做了个小实验:拿同一个遗留模块分别让两个工具重构。Cursor 花了半小时把所有方法重命名为 camelCase,然后报了个错说找不到 import 路径;Claude Code 则在五分钟后发现 import 缺失并主动提出建议,同时保留了原有业务逻辑不变。虽然它没问我意见就直接改了文件,但我检查完 diff 后反而放心了——因为它至少知道哪些地方动了根子。
不过话说回来,我也不是全盘否定 Cursor。它的 Bolt 功能确实值得玩味,尤其是那些快速原型验证的场景。比如只需要画个页面布局或者搭个表单提交结构的时候,拖拽+自然语言组合起来效率极高。只是千万别指望它能帮你搞定那些需要深入理解上下文的任务。就像我同事小王说的:“用 Cursor 写 Hello World 没问题,但要让它写核心算法?除非你愿意每天陪它吵架。”
所以我现在的策略很简单:日常 CRUD 用 Bolt 快速搭建骨架,关键路径交给 Claude Code 精细打磨。中间穿插几次人工 review,重点看异常处理和性能瓶颈部分。这种混合打法下来,整个迭代周期缩短了大概三分之一,而且线上事故率几乎为零。当然前提是你要清楚每个工具的擅长领域在哪——盲目信任任何一个都会吃大亏。
你有没有类似的经历?比如明明选了最先进的工具,结果还是踩了更坑的泥潭?欢迎在下面分享你的故事,咱们一起聊聊怎么避免这些看似聪明实则愚蠢的选择。
你在实际项目中有踩过类似的坑吗?或者有更好的解决方案?欢迎在评论区分享你的经验。