当前位置: 首页 > article >正文

AI编程Cursor之高级使用技巧

一、引言

以Cursor为代表的新一代AI驱动的代码编辑器,通过其强大的Agent模式和高级功能,为开发者提供了高效、智能的编程体验。本文将详细介绍Cursor的Agent模式功能以及一些实用的高级使用技巧,帮助你充分挖掘Cursor的潜力。

目前版本Cursor有很多与Agent模式相关的,总的目的就是让Agent模式更强大,更智能,更符合开发者的使用习惯。这也是为了和Windsurf直接展开竞争,毕竟Windsurf的Agent模式已经很强大了,Cursor不能落后太多。

本文主要介绍Cursor高级使用技巧,以及Agent模式。除了Agent模式外,Cursor还提供了许多高级功能,帮助开发者更高效地完成任务。

二、Cursor常规使用技巧

(一)上下文管理:精准控制代码范围

在开发过程中,准确的上下文管理对于提升AI生成代码的质量至关重要。Cursor通过@命令和上下文胶囊(Context Pills)功能,让开发者可以精确控制AI的工作范围。

使用方法:
  • 上下文胶囊:在聊天窗口顶部显示当前的上下文范围,开发者可以添加或移除胶囊,以调整AI的关注范围。

  • 文件选择:使用#加文件名的方式,指定某个文件作为上下文。

    例如,输入#main.py,AI将只关注main.py文件中的内容。

下图是Context Pills的示例,可以看到,Cursor会自动提取当前文件可能的上下文,并显示在聊天窗口顶部。

技巧点:
  • 在处理大型项目时,利用上下文胶囊可以显著提高AI生成代码的准确性。

  • 在复杂任务中,可以通过分段提供上下文,逐步引导AI完成任务。

(二)智能补全与自动生成:快速实现代码编写

Cursor的代码自动补全功能,不仅可以根据上下文生成代码,还支持通过自然语言描述生成完整的代码模块。

快捷键:
  • **Ctrl + K**:打开命令输入框,用于输入自然语言指令或关键字。

  • Tab键:接受AI的补全建议。

实例:
  1. 代码生成:通过自然语言输入“读取CSV文件并训练机器学习模型”,Cursor会自动生成完整的代码。

  2. 代码优化:当现有代码需要改进时,Cursor会根据上下文提供优化建议,开发者可以选择接受或拒绝。

高级用法:
  • 嵌套生成:在生成代码后,可以进一步要求Cursor添加注释、优化性能或处理异常情况。

  • 多模型支持:Cursor支持GPT、Claude等多种模型,开发者可以根据需求选择不同的模型,提高生成结果的质量。

(三)代码交互:与代码“对话”

Cursor的Chat模式是一个强大的交互工具,允许开发者直接与代码“对话”,获取解释和建议。

使用方法:
  • **快捷键Ctrl + L**:打开聊天面板,与代码进行交互。

  • 提问:可以针对整个代码库或特定代码段提问,例如“这段代码的作用是什么?”或“如何优化这段代码?”

下图是Chat模式的@选项,可以看到,用户聊天的时候,也可以自主选择各种上下文,来更好的提出问题。

实例:
  1. 代码解释:当不确定某段代码的功能时,使用聊天功能获取详细解释。

  2. 代码改进:通过对话询问如何优化代码,Cursor会提供多种改进方案,并解释每种方案的优缺点。

(四)版本控制与检查点:确保代码安全

Cursor内置了强大的版本控制功能,每次生成代码或修改文件时,都会自动创建一个检查点(Checkpoint)。

使用方法:
  • 回滚代码:如果对当前修改不满意,可以随时回滚到之前的版本。

如下图所示,如果对修改不满意,可以点击restore恢复到修改之前的状态。

优势:
  • 在尝试新功能或大规模重构时,检查点功能可以作为“后悔药”,确保代码安全。

  • 方便团队协作时追踪代码变更。

(五)文档生成与管理:提升项目可维护性

Cursor不仅可以生成代码,还可以自动生成项目文档,包括函数说明、使用指南等。

实用技巧:
  • 从一开始就写Readme:在创建项目时,让Cursor生成详细的Readme文件,明确项目目标和功能。

  • 代码注释:要求Cursor在生成代码时自动添加清晰的注释,提升代码的可读性。

示例:

在项目初期,输入指令“生成项目的Readme文件”,Cursor会根据代码库内容生成一份详细的文档,包括功能描述、使用方法和依赖项说明。然后再随后的任务中,Cursor会根据代码库内容自动更新Readme文件。

(六)Rules for AI:自定义AI行为

Cursor允许开发者通过 Rules for AI 功能自定义AI的行为,使其更符合个人或团队的开发需求。这一功能可以在Cursor的设置中找到,路径为:Settings > General > Rules for AI。

使用方法:
  • 打开设置:在Cursor中,导航到 Settings > General > Rules for AI。

  • 添加规则:在规则编辑框中输入自定义规则,例如要求AI优先生成某种语言的代码或遵循某种设计模式。

  • 保存并应用:完成规则配置后,点击保存,AI将根据新规则调整行为。

下图是我设置的几个规则,可以看到,我让Cursor遵循著名的ThinkingClaude提示词,具体效果大家可以去试试,主要是为了展示Cursor的思考过程。

常见应用场景:
  • 编码规范:要求AI遵循特定的代码风格或团队的命名约定。

  • 技术栈偏好:优先生成与项目技术栈匹配的代码,例如Python或JavaScript。

  • 性能优化:让AI生成更高效的算法或代码实现。

示例规则:
- 优先生成Python代码- 使用中文回复- 在代码中添加详细注释- 使用Windows的命令行命令
 

(七)自定义AI规则:个性化你的Cursor

Rules for AI是针对整个Cursor的设置,所以类似System Prompt,Cursor还支持通过.cursorrules文件进一步自定义AI的项目行为,开发者可以根据个人习惯和项目需求调整AI的工作方式。

下面这个Python的rules文件,来自网络,大家可以从下面网站寻找

https://cursorlist.comhttps://cursor.directory/rules

配置示例:
你是Python、FastAPI以及可扩展API开发方面的专家。关键原则- 撰写简洁的、专业性的回复,并附上准确的Python示例。- 使用函数式、声明式编程;尽可能避免使用类。- 优先选择迭代和模块化,而非代码复制。- 使用带有助动词的描述性变量名(例如,is_active、has_permission)。- 目录和文件使用小写字母并以下划线分隔(例如,routers/user_routes.py)。- 对于路由和实用函数,优先使用具名导出。- 使用“接收对象,返回对象(RORO)”模式。Python/FastAPI- 对于纯函数使用def定义,对于异步操作使用async def定义。- 为所有函数签名添加类型提示。在输入验证方面,优先使用Pydantic模型而非原始字典。- 文件结构:导出的路由器、子路由、实用工具、静态内容、类型(模型、模式)。- 在条件语句中避免不必要的花括号。- 对于条件语句中的单行语句,省略花括号。- 对于简单的条件语句,使用简洁的单行语法(例如,if condition: do_something())。错误处理与验证- 优先处理错误和边界情况:    - 在函数开头处理错误和边界情况。    - 对于错误条件,使用提前返回以避免深度嵌套的if语句。    - 将正常执行路径放在函数的最后,以提高可读性。    - 避免不必要的else语句;改用if-return模式。    - 使用防护子句尽早处理前置条件和无效状态。    - 实现恰当的错误日志记录和用户友好的错误消息。    - 使用自定义错误类型或错误工厂来实现一致的错误处理。依赖项- FastAPI- Pydantic v2- 异步数据库库,如asyncpg或aiomysql- SQLAlchemy 2.0(如果使用对象关系映射(ORM)功能)FastAPI特定指南- 使用函数式组件(普通函数)和Pydantic模型进行输入验证和响应模式定义。- 使用带有清晰返回类型注释的声明式路由定义。- 对于同步操作使用def定义,对于异步操作使用async def定义。- 尽量减少@app.on_event("startup")和@app.on_event("shutdown")的使用;更倾向于使用生命周期上下文管理器来管理启动和关闭事件。- 使用中间件进行日志记录、错误监控和性能优化。- 对于I/O密集型任务,使用异步函数、缓存策略和延迟加载来优化性能。- 对于预期的错误,使用HTTPException并将其建模为特定的HTTP响应。- 使用中间件处理意外错误、进行日志记录和错误监控。- 使用Pydantic的BaseModel实现一致的输入/输出验证和响应模式。性能优化- 尽量减少阻塞I/O操作;对于所有数据库调用和外部API请求,使用异步操作。- 使用Redis或内存存储等工具对静态数据和频繁访问的数据进行缓存。- 使用Pydantic优化数据的序列化和反序列化。- 对于大型数据集和大量的API响应,使用延迟加载技术。关键约定1. 依靠FastAPI的依赖注入系统来管理状态和共享资源。2. 优先考虑API性能指标(响应时间、延迟、吞吐量)。3. 限制路由中的阻塞操作:    - 倾向于使用异步和非阻塞流程。    - 对于数据库和外部API操作,使用专用的异步函数。    - 清晰地构建路由和依赖关系,以优化可读性和可维护性。有关数据模型、路径操作和中间件的最佳实践,请参考FastAPI文档。 

实用场景:
  • 针对特定项目(如后端API开发或机器学习模型训练),定义专属的AI行为规则。

  • 在团队协作中,确保AI生成的代码符合团队的编码规范。

三、Agent模式:你的智能编程伙伴

什么是Agent模式

Agent模式是Cursor中一项核心功能,它通过深度集成AI技术,主动与开发者的代码库交互,提供上下文相关的建议、代码生成和操作支持。Agent模式的设计目标是成为开发者的“智能编程伙伴”,帮助完成复杂任务并提升开发效率。

核心功能:
  • 自动上下文提取:Agent会自动从代码库中提取相关上下文信息,帮助开发者快速定位问题或生成代码。

  • 运行终端命令:无需离开编辑器,即可直接运行命令行操作。

  • 文件操作:支持文件创建、修改、删除等操作,简化开发流程。

  • 语义搜索:通过代码语义搜索功能,快速找到关键代码片段。

  • 工具调用:Agent最多支持连续调用25个工具,可以胜任更加复杂的开发场景。

如何启用Agent模式

启用Agent模式非常简单,只需使用快捷键 ⌘.(Mac)或 Ctrl + .(Windows/Linux),即可激活Agent功能。在Agent模式下,你可以通过命令行或快捷键执行以下操作:

  • 上下文管理:通过@命令快速调整AI的关注范围。

  • 终端操作:直接在编辑器中输入命令,Agent会自动执行。

  • 文件交互:通过命令快速创建、修改或删除文件。

或者直接在Composer右下角点击agent按钮,也可以启用Agent模式,如下图所示。

使用场景

如果是一般的聊天交互,比如你想让Cursor帮你修改某个文件,那么Normal模式就可以完成,不需要启用Agent模式。

如果需要Cursor独立的去完成一项相对复杂的任务,那么Agent模式可以做的事情非常多,以下是一些常见的使用场景:

  • 代码重构:当需要对某个模块进行重构时,Agent会根据代码库上下文提供优化建议,并自动生成替代代码。

  • 错误修复:当代码出现错误时,Agent不仅会标注问题,还会提供详细的修复建议,并自动修复。

  • 自动化任务:通过Agent,可以实现文件批量操作、脚本生成等自动化任务,大幅提升效率。

  • 代码生成:通过Agent,可以实现代码生成,比如生成一个完整的项目。


正如之前提到的,Agent模式可以连续调用最多25个工具,所以它会自己努力尝试各种方法,直到完成任务,中途不需要用户的干预。这就是它的强大之处,也是它和普通聊天模式最大的区别。

比如我让Cursor帮我生成一个后端项目,它会自动生成一个完整的项目,包括项目结构、前后端代码、测试用例等。

总结

Cursor通过Agent模式的增强和一系列高级功能,为开发者提供了一个智能、高效的编程环境。从代码生成、优化到文档管理,再到自定义AI规则,Cursor几乎覆盖了开发流程的各个环节。无论是个人开发者还是团队协作,Cursor都能显著提升工作效率。

如果你还没有尝试过Cursor这些方法,不妨也去试试。通过合理利用Agent模式、高级技巧和自定义规则,你也可以成为编程效率的“10倍开发者”!


http://www.kler.cn/a/567110.html

相关文章:

  • iOS for...in 循环
  • SpringBoot项目启动报错:PathVariable annotation was empty on param 0.
  • thinkphp下的Job队列处理
  • C语言多级指针详解 - 通过实例理解一级、二级、三级指针
  • day01_Java基础
  • 请谈谈 Node.js 中的流(Stream)模块,如何使用流进行数据处理?
  • Windows提权之第三方提权(九)
  • uniapp选中日期移动到中间
  • P8682 [蓝桥杯 2019 省 B] 等差数列--sort()
  • 宝塔webhooks与码云实现自动部署
  • 基于ArcGIS Pro、Python、USLE、INVEST模型等多技术融合的生态系统服务构建生态安全格局高阶应用
  • 【产品小白】怎么量化用户体验呢
  • 解锁 Hutool - Captcha:轻松打造图片验证码
  • 陕西省地标-DB61/T 1121-2018 政务服务中心建设和运营规范
  • Scanpy单细胞h5ad数据转化为Seurat对象
  • win11编译pytorchaudio cuda128版本流程
  • 【分库分表】基于mysql+shardingSphere的分库分表技术
  • JDK17安装方法/如何安装JDK17/环境变量配置
  • C++奇迹之旅:C++的单例模式
  • STM32G431RBT6——(2)浅析Cortex-M4内核