前言

用 Cursor 也快半年了,从最开始的「试试看」变成了「关了不会写代码」。这篇不讲概念,只写我实际在用的工作流和技巧。

核心认知

AI 编程助手不是代替你写代码,是放大你的决策能力。你决定架构和方向,它帮你落地实现细节。用好了是十倍效率,用不好就是产出大量需要重构的垃圾代码。

我的日常工作流

1. 结构化 Prompt

别写「帮我做个登录页面」,改写成:

1
2
3
4
5
6
7
8
任务:实现手机号验证码登录页面
技术栈:Flutter + Riverpod
要求:
- 手机号输入框,格式校验
- 验证码发送按钮,60 秒倒计时
- 登录按钮,loading 状态
- 错误提示 toast
- 页面路由:登录成功后跳转首页

信息密度越高,生成结果越准。

2. 善用 .cursorrules

项目根目录放一个 .cursorrules 文件,告诉 AI 你的项目约定:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
你是 Flutter 项目「雷达快传」的开发者助手。

技术栈:
- Flutter 3.x + Dart
- 状态管理:Riverpod
- 网络请求:Dio
- 路由:GoRouter

代码规范:
- 组件文件用小写下划线命名:login_page.dart
- 类名大驼峰:LoginPage
- 每个 Widget 文件最多 200 行
- 复杂逻辑抽到单独的 service 或 provider
- 注释用中文
- 不写 print,用 debugPrint

有了这个,AI 生成的代码风格统一,少了很多返工。

3. Token 预算管理

Cursor 按 token 计费(Pro 用户每月 500 次快速请求 + 不限量慢速),省 token 的实用技巧:

  • 小任务走 Tab 补全:变量命名、引用路径补全、简单函数,按 Tab 就够了
  • 中任务走 Ctrl+K:改一个函数、调一个样式、加一个参数,选中代码 + Ctrl+K 描述需求
  • 大任务才开 Chat:新增页面、重构模块、写测试,才用 Chat/Composer
  • 长对话记得重置:上下文越长 token 消耗越大,一个任务搞完了开新会话
  • 不要让它猜:给明确的文件路径和代码上下文,少让它搜索

4. 代码审查习惯

AI 生成的代码必须审查,我主要查这几点:

  • 空安全问题:Dart 的空安全是否绕过(! 滥用)
  • 异常处理:网络请求、文件读写有没有 try-catch
  • 性能隐患build 方法里有没有创建不必要的对象
  • 硬编码:URL、字符串、尺寸是否写了常量
  • 库依赖:有没有引入项目里没装的第三方包

大概 20% 的生成代码需要手动调整,主要是边界条件和业务逻辑。

5. 多文件联动

Composer 模式下,输入 @ 可以引用文件:

1
2
@login_page.dart @auth_provider.dart @api_service.dart
给这个登录功能加上"记住密码"的能力

AI 会同时理解这三个文件的上下文再生成代码,比逐个文件改准确率高多了。

解决疑难 Bug

碰到报错,直接把错误信息贴给它:

1
2
Error: LateInitializationError: Field '_user@12345678' has not been initialized.
代码在 @home_provider.dart 第 45 行

比你自己排查快 10 倍。但前提是你得理解它给的解释——别盲信,验证一下逻辑。

不适合交给 AI 的事

  • 架构设计:选 BLoC 还是 Riverpod?项目怎么分层?这些你自己决定
  • 性能瓶颈:AI 看不出你的列表为什么卡,它只能给通用优化建议
  • 业务理解:你的产品逻辑只有你自己知道,AI 的猜测不可靠
  • 安全相关:加密、鉴权、支付——不要让它写,所有安全代码必须手动审查

配合其他工具

工具 用途 配合方式
Cursor 代码生成、重构 主力
Sublime SQL、配置文件、大文件浏览 轻量编辑器,不消耗 token
Warp/终端 构建、部署、Git Cursor 终端也能用但太重

一句话总结

Cursor 是我的「高级自动补全」,不是「自动驾驶」。方向盘得在自己手里。