我用Cursor开发了3个月,整理出这套提效4倍的工作流

0 阅读10分钟

上周,一个粉丝给我发私信:

"你之前说Cursor很牛,但我用了两周,感觉也就那样。写代码还是要自己改很多,速度也没快多少。"

我当时就笑了。

因为我刚开始用的时候,也是这种感觉。

用了3个月,踩了一堆坑之后,我才搞清楚:Cursor不是一个更好的代码补全工具,它是一个需要你重新学会"提问"的编程范式。

大多数人用Cursor,只用到了它10%的能力。

今天我把自己摸索出来的工作流,完整地写出来。

一、我的效率提升到底是怎么来的?

先说结论,再说方法。

用Cursor之前,我一天的有效编码产出大概是200-400行。 用Cursor之后,同等质量下,产出稳定在800-1200行。

提升了3-4倍,不是吹的,是实测数据。

但这个提升不是从第一天开始的。

1周:感觉没什么用(效率几乎没变)
第2周:开始有感觉(提升约50%)3周:找到节奏(提升约150%)4周后:进入正循环(提升300%+)

为什么会有这个曲线?

因为用好Cursor需要重新建立一套工作习惯。你原来的习惯是"先想清楚,再动手写",而Cursor的正确用法是"先描述清楚,让AI起草,再迭代优化"。

这是两种完全不同的节奏。

二、我踩过的3个最贵的坑

在讲工作流之前,先说说我交过的"学费"。

坑1:把Cursor当高级补全工具用

错误用法:

写几个字,等AI补全,不满意就删掉重写

问题:

  • 补全粒度太小,AI没有上下文
  • 效率提升有限,还经常打断思路
  • 和直接用IDEA没什么差别

正确姿势: 不要等AI补全,要主动描述需求,让AI生成完整的代码块。

坑2:Prompt写得太简单

错误用法:

"写一个登录接口"

AI生成的:

// 最基础的登录逻辑,没有任何业务细节
public String login(String username, String password) {
    // ...
}

需要自己改的:太多了

正确用法:

"写一个用户登录接口,要求:
1. 支持用户名+密码登录
2. 密码用BCrypt加密
3. 登录失败超过5次锁定账户30分钟
4. 登录成功返回JWT token,有效期7天
5. 记录登录日志(IP、设备、时间)
6. 异常要用统一的Result包装返回"

AI生成的: 80%可以直接用的代码。

区别在哪里: 你给的上下文越丰富,AI生成的质量越高。这是废话,但大多数人就是懒得写清楚。

坑3:AI生成完就直接提交

这是最危险的坑。

我第一个月有一次,让AI写了一个文件上传接口,看了一眼能跑,就提交了。

结果被同事review的时候发现:

  • 没有文件大小限制
  • 没有文件类型校验
  • 上传路径直接拼接用户输入(路径穿越漏洞)

AI写的代码功能上是对的,但安全性是有问题的。

这让我建立了一个铁律:AI生成的代码,安全相关的部分必须人工review,不能偷懒。

三、我现在的完整工作流

踩完坑之后,我建立了一套稳定运行的工作流。

第一步:需求拆解(用Claude,不用Cursor)

拿到需求之后,我第一步不是打开Cursor,而是打开Claude。

为什么?

Cursor适合生成代码,Claude适合分析和思考。我会把需求丢给Claude,让它帮我:

我要做一个xxx功能,需求是:[粘贴需求文档]

请帮我分析:
1. 这个需求有没有遗漏的边界情况?
2. 建议的数据库表结构是什么?
3. 有哪些技术风险需要提前考虑?
4. 推荐的实现步骤是什么?

这一步花15-30分钟,但能省去后期大量的返工。

一个真实的例子:

需求:做一个优惠券系统

我以为很简单,Claude帮我分析后发现了7个我没想到的问题:

  • 优惠券能不能叠加?
  • 退款时优惠券怎么处理?
  • 库存扣减有没有并发问题?
  • 过期未使用的优惠券如何清理?
  • ……

这些坑,提前想清楚,比上线后修复便宜10倍。

第二步:架构设计(自己来,AI辅助)

需求想清楚之后,我会自己画出:

  • 核心的数据库表结构
  • 主要的接口设计
  • 关键的业务流程

这一步不能完全交给AI。

架构设计需要结合你的团队现状、技术栈、业务场景做判断。AI给的方案往往是"教科书级别的正确",但未必适合你的实际情况。

我会让AI做的是:

"根据这个表结构,帮我检查有没有明显的设计问题"
"这个接口设计有没有RESTful规范的问题"

用AI做review,而不是做设计。

第三步:编码实现(Cursor主导)

这一步才是Cursor发挥威力的时候。

我的Prompt模板(Java后端):

基于以下信息,帮我实现[功能名称]:

技术栈:Spring Boot 3, MyBatis-Plus, Redis, MySQL 8
已有的相关代码:[粘贴相关实体类/接口]

需要实现:
1. [具体功能点1]
2. [具体功能点2]
3. [具体功能点3]

要求:
- 异常用GlobalExceptionHandler统一处理
- 返回值用Result<T>包装
- 需要加事务的地方加@Transactional
- 写清楚注释
- 不要写单元测试(我单独让你写)

为什么要粘贴已有代码?

这是很多人忽略的关键点。Cursor能看到你的项目上下文,但你要让它知道你项目的规范和风格,最好的方式是直接粘贴示例代码。

AI会自动学习你的代码风格,生成的代码和你的项目融合度会高很多。

第四步:单元测试(全交给AI)

这是我觉得收益最大的地方。

写单元测试是我最讨厌的工作之一,现在全部交给Cursor:

基于上面实现的代码,帮我写完整的单元测试:
- 使用JUnit5 + Mockito
- 覆盖正常流程、边界情况、异常情况
- 每个测试方法要有清楚的中文描述
- 覆盖率目标:核心业务逻辑 > 80%

AI写测试的质量出乎我意料的好。它会自动想到很多边界情况,比我手写的覆盖更全面。

时间对比:

  • 以前手写测试:1小时
  • 现在让AI写:5分钟生成 + 10分钟review

提升:4倍。

第五步:Code Review(最重要的一步)

这一步绝对不能省。

我的review清单:

功能性检查:

  • 业务逻辑是否正确?
  • 边界情况是否处理?
  • 异常是否合理抛出?

安全性检查:

  • 有没有SQL注入风险?(MyBatis-Plus基本没有,但自定义SQL要看)
  • 有没有敏感信息泄露?
  • 接口有没有做权限校验?
  • 文件操作有没有路径穿越风险?

性能检查:

  • 有没有N+1查询?
  • 循环里有没有数据库操作?
  • 大数据量的场景有没有分页?

规范性检查:

  • 命名是否符合团队规范?
  • 注释是否清楚?
  • 是否有魔法数字需要抽成常量?

这个review过程,我平均要改掉AI生成代码的20-30%。

但这20-30%的修改,比从零写节省了太多时间。

四、一个完整的实战案例

上个月做了一个消息通知系统,我把完整过程记录下来了。

需求: 支持站内信、短信、邮件三种通知方式,根据用户偏好发送

Day 1上午(2小时):需求分析

用Claude分析后确定:

  • 通知模板系统(不同类型通知的内容模板)
  • 用户通知偏好设置
  • 通知发送记录(便于排查问题)
  • 失败重试机制(发送失败自动重试3次)
  • 策略模式实现不同渠道(方便扩展新渠道)

Day 1下午(1.5小时):架构设计

自己设计了4张表:

  • notify_template(通知模板)
  • user_notify_config(用户偏好)
  • notify_record(发送记录)
  • notify_retry(重试队列)

Day 2(4小时):编码实现

用Cursor生成:

  • 4个Entity类:10分钟
  • Mapper接口:15分钟
  • NotifyService核心逻辑:45分钟(包含review)
  • 三个渠道的具体实现类:30分钟
  • Controller层:20分钟
  • 单元测试:15分钟生成 + 20分钟review

总编码时间:约2.5小时

Day 2下午(1小时):联调和修复

发现并修复了2个bug:

  • 一个是AI在并发场景下的幂等性没处理好
  • 一个是重试逻辑的指数退避实现有问题

总耗时:1.5天

如果纯手写:我估计要3-4天。

五、几个让效率翻倍的小技巧

技巧1:给Cursor建一个项目规范文件

在项目根目录创建.cursorrules文件,写清楚你的项目规范:

# 项目规范

## 技术栈
- Spring Boot 3.x
- JDK 17
- MyBatis-Plus 3.5.x
- Redis(缓存)
- RabbitMQ(消息队列)

## 代码规范
- 所有接口返回Result<T>
- 异常统一用BusinessException抛出
- 日志用Slf4j,不要用System.out.println
- 常量放在对应模块的Constants类里

## 命名规范
- 接口文件名以I开头:IUserService
- 实现类不加Impl:UserService
- DTO类名以DTO结尾

配置之后,Cursor生成的代码会自动遵循这些规范,review工作量减少一半。

技巧2:用@符号引用文件

在Cursor里,用@文件名可以直接引用项目中的文件:

参考@UserService的实现方式,帮我实现OrderService的退款逻辑

这样AI能直接看到你的代码风格,生成的代码一致性更强。

技巧3:让AI解释它自己的代码

看到AI生成了不熟悉的写法,不要直接用,先问清楚:

你这里用了CompletableFuture.allOf,能解释一下为什么这样写吗?
有没有更简单的替代方案?

这样做有两个好处:

  • 避免引入自己不理解的代码
  • 顺便学习了新的写法

技巧4:分步骤生成,不要一次要太多

不好的方式:

帮我实现整个用户模块,包括注册、登录、修改密码、找回密码、注销账户

好的方式:

先帮我实现用户注册功能
[review后]
好,现在帮我实现用户登录,注意复用刚才的密码校验逻辑
[review后]
继续,实现修改密码功能

分步骤生成,每一步都能review和调整,最终的代码质量高很多。

六、我的工具链全貌

用了3个月,我的工具链已经固化:

需求分析阶段:Claude(思考和分析)
架构设计阶段:自己来,Claude辅助review
编码实现阶段:Cursor(主力)
代码调试阶段:IDEA(断点调试无可替代)
API测试阶段:Bruno(轻量,比Postman好用)

IDEA我现在每天只用1-2小时,专门用来调试。

其他时间全在Cursor里。

七、一个重要的提醒

用Cursor提高效率之后,省出来的时间,要花在刀刃上。

很多人提效之后,摸鱼的时间多了。

这是最大的浪费。

我省出来的时间,用在:

  • 深入理解需求和业务(以前没时间做)
  • 做架构设计和技术选型(以前赶时间跳过)
  • 做Code Review(以前互相review没时间)
  • 学习新技术(以前下班太累)

AI提升的是执行效率,但不会替你做思考。

多出来的时间,要用来做AI做不了的事。

写在最后

用Cursor3个月,最大的感受不是"代码写得更快了",而是工作方式变了

以前:想清楚 → 动手写 → 调试改bug 现在:描述清楚 → AI起草 → 我来优化

以前花在"打字"上的时间,现在花在"思考"上了。

这才是AI工具真正的价值。


你现在用的是什么AI编程工具?有什么心得?欢迎评论区分享。


后端AI实验室 不讲概念,只谈实战 代码开源,每周更新

扫码_搜索联合传播样式-标准色版.png