在这里插入图片描述

Cursor的安装及基础使用我就不过多介绍了,这些内容可以查看官方文档。Cursor目前还在快速迭代中,所以本篇内容及截图仅针对1.5.1版本。如果未来有变化,以官方文档为准,我会尽量保证更新。

本篇是我在使用Cursor中学习和总结的使用技巧,其中部分技巧是通用的,不管未来使用什么辅助编程工具,也都适用。Cursor很强大,不善于使用,就无法发挥它的强大功能。

隐私模式

首先注意安全隐私,建议公司项目代码,在Setting -> General -> Privacy 下设置为Privacy ModePrivacy Mode (Legacy),这样公司的代码等数据不会用于AI训练或改进产品。

在这里插入图片描述

模式选择

在这里插入图片描述
目前Cursor有两种模式可选。Agent和Ask。

Agent模式

Agent模式具备完整的自主探索和多文件编辑能力,是一个全能智能助手。

核心特性:

  • 自动探索和学习整个代码库
  • 进行跨文件的大范围修改和重构
  • 拥有所有工具权限,包括使用MCP工具、搜索、编辑、终端命令等
  • 支持自动运行(Auto-run)和自动修复错误(Auto-fix errors)

适用场景:

  • 快速启动新项目并生成项目架构
  • 实现复杂的新功能模块
  • 进行大规模代码重构和调试
  • 生成测试代码和项目文档

Ask模式

Ask模式专为学习和理解代码而设计,采用只读模式,不会对代码进行任何自动修改。

核心特性:

  • 只读,确保代码安全。不过生成代码的右上角有按钮可以执行代码合并。
  • 自动搜索相关文件和上下文
  • 专注于问题解答和知识传递
  • 支持代码解释和最佳实践建议

适用场景:

  • 理解和学习现有代码库
  • 获取编程问题的详细解答
  • 进行代码审查和质量评估
  • 学习特定技术框架和库的使用方法

总的来说,问问题用Ask,写功能用Agent。初学者建议从Ask模式开始,熟悉后再使用Agent模式。

模型选择

在这里插入图片描述
Cursor支持来自主要提供商的前沿编程模型,包括OpenAI、Anthropic、Google和xAI等。同时也可以自己配置其他模型。Cursor基本上第一时间都会支持市面上发布的最新模型。

  • Auto模式:根据任务类型和当前负载自动选择最佳模型。速度快,适合日常编程。

  • MAX Mode:某些模型支持此模式,它允许更长的推理和更大的上下文,最多可达100万个token(普通模式约200k tokens的上下文窗口(约15,000行代码))。虽然大多数编码任务不需要使用最大模式,但对于更复杂的查询,特别是处理大型文件或代码库时,它可能会有所帮助。此模式是按使用的token量收费,如果使用不慎,费用很可怕。所以一般任务不要开启。

  • 对于复杂任务,推荐手动选择使用claude-4-sonnet或gemini-2.5-pro。这是目前在AI编程方面效果最好的模型。**同样的提示词,在不同模型下效果差距很大。**当然还有更强的claude-4.1-opus模型,效果比 Sonnet 好很多,但是只能使用MAX Mode,且价格很昂贵。
    在这里插入图片描述

  • 模型名称后面带大脑图标的说明是推理模型,速度会慢一些,但是生成效果和质量更高。一般生成UI或者实现需求推荐使用。不过此类模型付费账号每月有使用次数限制(例如Pro账号: 每月约225次 Sonnet 4请求, 约550次Gemini请求, 约500次GPT 5请求)。一次请求最多可以包含 25 次 Tool Calls,包括生成代码。所以建议根据情况使用这些模型,不要浪费次数。

MCP

Model Context Protocol (MCP)是Cursor 1.0的重要升级,为AI与外部工具的集成提供了标准化协议。简单说就是AI可以调用更多的工具来获取上下文并实现你的需求。

在这里插入图片描述

MCP的使用需要注意的是,不用打开过多的MCP工具,只勾选当前需要的。Cursor目前最多同时支持40个MCP注册方法,过多的MCP会对上下文造成污染。比如我们如果只是生成UI代码,那么只开第一个就行,其余关闭。

最后推荐打开自动运行的开关,方便Agent自动运行MCP工具,否则每一步都要手动确认。

在这里插入图片描述

Rule

Cursor会默认对项目的代码建立索引,学习项目的代码风格。基本可以完成大多数任务。但是如果想做更细致的指令控制,可以添加rule,类似角色设定。

包括不同模型生成的代码也会有不同的差异,所以给AI说明项目使用的技术栈,三方框架版本,自定义组件的使用方法,项目结构及规范等。帮助AI更好的生成代码,减少幻觉,也避免每次重复提示词说明。

**我个人是强烈推荐每个项目添加规则。**如果你觉得AI写的代码不好,其实最大原因就是因为没有定好规则和选对模型。

Rule编写参考: https://github.com/PatrickJS/awesome-cursorrules/tree/main/rules

例如:

- 按照这个目录结构实现代码

  assets/
  ├── fonts/                 # 字体文件
  └── images/                # 存放图片文件

  lib/
  ├── dev/                   # 测试包工具
  ├── entity/                # 数据模型
  ├── gen/                   # 自动生成的代码
  ├── l10n/                  # 多语言
  ├── res/                   # 资源文件
  │   ├── text_styles.dart   # 文字样式
  │   └── colors.dart        # 颜色常量
  ├── routes/                # 路由管理
  ├── screen/                # 页面
  │   ├── xx_page.dart       # xx页面
  │   ├── main/              # 主页功能页面
  │   └── setting/           # 设置相关页面
  ├── utils/                 # 工具类和辅助函数
  │   ├── net/               # 网络相关工具
  │   └── channel/           # 平台通道相关工具
  ├── widget/                # 可重用UI组件
  └── main.dart              # 应用入口点


- **目录划分规则**- **lib/**:包含所有Dart代码。
  - **screen/**:应用所有页面,按功能分组。
  - **widget/**:可重用UI组件。
  - **utils/**:工具类和辅助函数。
  - **entity/**:数据模型。
  - **res/**:资源文件(颜色、主题等)。
  - **l10n/**:本地化资源。
  - **routes/**:应用路由管理。
  - **gen/**:自动生成的代码,不要修改。
  - **assets/**:存放项目中的资源文件。

- **screen/ 目录结构**:
  - 页面按功能模块分组(如main/、setting/)。
  - 每个页面文件命名为`<功能>_page.dart`。

- **widget/ 目录结构**:
  - 通用可重用组件。
  - 命名应反映其功能,如`dialog_widget.dart`。

- **utils/ 目录结构**:
  - 工具类按功能分组(如net/、purchase/)。
  - 命名为`<功能>_util.dart`。

- **entity/ 目录结构**:
  - 数据模型和DTO。
  - 可能包含生成的代码(.g.dart文件)。

- **routes/ 目录结构**:
  - 路由定义和生成的路由代码。

- 命名约定
  - **文件命名**:使用snake_case(如`splash_page.dart`)。
  - **类命名**:使用PascalCase(如`SplashPage`)。
  - **变量/函数**:使用camelCase(如`loadData`)。
  - **颜色**:使用camelCase,规则color{HexValue}{Opacity?}(如`colorF1F1F1`,`colorFFFFFF60`)。
  - **文字样式**:使用camelCase,规则text{Size}{Weight}{ColorHex}(如`text20BoldFFFFFF`)。
  - **图片命名**:使用snake_case,规则{category?}_{description}_{state?}.{ext}(如`icon_back.png`)。

- 核心原则
  - **关注点分离**:UI、数据和业务逻辑分离。
  - **单一职责**:每个类/文件只有一个目的。
  - **DRY原则**:避免代码重复。
  - **可测试性**:代码应易于测试。
  - **一致性**:整个项目保持一致的代码风格和组织。
  - **图片引用**:图片引用使用Assets类中的常量(如:Assets.images.iconBack.image(width: 20, height: 20))。
  - **颜色引用**:颜色引用使用Colors类中的常量(如:Colors.white),如果没有先添加再引用。
  - **文字样式**:`MaterialApp`中有设置全局字体,`TextStyle`中不需要重复指定。
  - **文字样式引用**:`TextStyle`引用使用TextStyles类中的常量(如:TextStyles.textBold14),如果没有先添加再引用。
  - **其他**:添加图片或是路由后,执行命令`flutter packages pub run build_runner build --delete-conflicting-outputs`,生成代码。

- 代码风格
  - 遵循Flutter/Dart的官方风格指南。
  - 适当使用注释,特别是对于复杂的逻辑。
  - 优先使用const构造器,提高性能。

编写的rule(mdc格式文件)放在项目的.cursor\rules目录下。通用的规则应用范围选择Always,不用每次使用手动添加。类似的写一些README或者文档,使用时@添加上,为AI提供更多的上下文信息,减少AI幻觉。

上下文管理

Token的使用量和费用是挂钩的,所以注意日常使用习惯,避免不必要的消耗。对话框右上角可以查看当前窗口已使用的token数量。

在这里插入图片描述

  1. 每次实现一个新功能,就重新打开一个对话窗口。不要接着之前不相关的对话提出新需求,浪费token也会给AI造成干扰。
    在这里插入图片描述
  2. 添加相关的代码和文件,不相关的上下文不要添加,浪费token也会给AI造成干扰。比如使用Active Tabs,就是使用你当前打开的代码文件。注意关闭不相关的。
  3. 一般是选择整个文件给到AI,但如果想针对某个文件中的某段代码提问,可以选中代码,点击Add to Chat。
  4. .cursorignore 文件用于告诉 Cursor 编辑器哪些文件和目录不参与 AI 分析、索引和搜索,工作方式与 .gitignore 完全一致,且会继承 .gitignore 中的规则,在此基础上追加或覆盖。默认也会忽略常见二进制和媒体文件:*.exe、*.dll、*.jpg、*.mp4 等。所以如果有项目中有敏感信息需要保护,或者排除一些文件,可以创建.cursorignore 文件,在里面添加规则。
  5. .cursorindexingignore 文件仅用于排除索引,不影响Cursor对该文件的访问。合理编写和管理 .cursorignore.cursorindexingignore,可以大幅提升 Cursor 的索引与分析效率,节省 AI 计算资源,并有效保护敏感信息。
    在这里插入图片描述

明确需求

  • 模糊的描述就等于模糊的代码,明确的描述你的需求,描述的越详细生成的结果越贴近你的预期。甚至你可以告诉它你的实现思路,按你的思路去实现。

    例如:“帮我对接接口xxx”。不如说的详细一些,“参考xxx页面数据请求,帮我对接接口xxx,传入参数xxx,接口返回json数据xxx”

  • 同时不要一次提出过多的需求,将需求合理的进行拆解。通过多轮对话,一步步的告诉它,也便于你一步步的review代码。

版本控制

使用Cursor实现功能的前后,最好及时Git提交。虽然Cursor提供了检查点,支持批量回退,但是操作修改变多后,其实就比较乱了。如果AI生成的代码不满意,可以直接用Git的回滚,重新生成。千万不要将自己的之前的代码修改和AI的修改混到一起,这样不便于检查。

注释

一般AI生成的代码,会生成部分注释,大多数情况是不含注释的,这种代码的可读性及可维护性比较差,不利于后期维护。所以我们可以明确要求加上注释,或者如果你觉得每行都解释比较冗余,可以要求:“适当使用注释,特别是对于复杂的逻辑”。

Tab

具有多行编辑、跨文件建议和上下文感知代码补全的自动补全功能。按照官方的说法,tab越用越好用。

一般情况下,写个小功能,小逻辑没必要大材小用的使用Agent模式。写代码的过程中tab就会根据上下文自动补全代码,如果补全有问题,可以写一段注释说明来引导它。然后点击tab键采用补全代码。

在这里插入图片描述
在这里插入图片描述

其他

  • 如果因网络原因等问题,在对话中AI长时间卡住没有结果返回,或者返回结果慢,没必要一直等待。可以点击聊天框右边的停止按钮,再发送指令“继续”让AI接着工作。
  • 同样的,如果你发现生成的内容已经不是你想要的,及时停止。避免不必要的消耗。
  • 大模型都是预训练的,所以所具备的知识不会是实时更新的,比如gemini-2.5-pro的数据就截止25年1月。如果你使用的框架较新,或者是新系统新版本造成,大概率当前的模型无法解决问题。所以这时就需要联网搜索,来补充上下文。联网搜索相关问题,可以输入框@Web,Cursor会通过 exa.ai 搜索网络以查找最新信息并将其添加为上下文。或者使用外部的AI工具,开启联网搜索寻找答案。

总结

核心原则就是:选对人(模式,模型)+ 精炼的说明背景(Rule,文档,注释)+ 明确需求

用好AI编程工具需要具备的能力:

  • 准确的描述你的需求。
  • 将复杂问题拆解的架构能力。
  • 有一定的编程能力,可以分辨生成的代码的质量,避免盲目接受。
  • 调试能力,快速定位问题。
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐