37DATA

Cursor AI 代码生成

一、背景

  1. AI助手Cursor引入,实践AI代码生成,智能化代码生成与优化。
  2. 提升开发效率,节省开发人力。
  3. 提升团队协作与学习效率,共享项目规则,使用同一种开发场景模式。
  4. 代码质量提升,使用AI重构代码、自动调试、bug修复、review、自动化测试

二、Cursor 功能简介

Image
  • Cursor 基于VSCode开发,深度IDE集成与多代码语言支持

  • AI 辅助编码

     -  Tab 自动补全代码,可预测下一次编辑,会根据最近的更改建议跨多行编辑代码

     -  Chat内联聊天,对项目文件进行全盘分析,与结合代码库的 AI 进行交谈

     -  Composer,专注于代码生成和文件操作,可根据自然语言描述生成完整的代码片段或文件。根据要求可以直接项目层面修改代码,并给出修改过程和修改的具体位置,然后由程序员决定是全部应用或部分应用AI的修改。在 Composer 中切换普通模式和代理模式,代理模式可以工具(如:数据库查询,执行 shell 命令等)进行更多操作。

  • 大模型使用,Cursor支持主流的各种大语言模型,实践下来效果最好的是Claude

      -  通过 .cursor/rules 系统定制代码规范与最佳实践

三、Cursor 使用场景

  1. 通用场景 

  • 自然语言的需求,代码生成

  • 代码调试
  • 代码重构

  • 代码单元测试

  • 代码文档
  • 代码注释
  • 业务化的开发场景

  • 四、Cursor AI对话框

    1)聊天中的 @ 符号

    默认情况下,用户消息将包含输入的文本以及引用的上下文。在 AI 对话框中可以使用 @ 符合添加对应上下文。

    Image
    • @Files 引入文件,使用文件内容进行 AI 分析

    • @Folders 引入文件夹,可以让 AI 了解整个项目结构

    • @Code 当前选中的代码,将选中的代码片段发送给 AI 分析

    • @Docs 引用内置的第三方在线文档内容进行 AI 分析

    • @Git 引入 Git 相关信息,如提交历史、分支等

    • @Notepads 使用记事本

    • @Cursor Rules 使用项目规则

    • @Codebase 引入整个代码库的上下文,让 AI 了解项目全貌

    • @Web 允许 AI 联网搜索获取信息

    • @Summarized Composers 将先前 Composer 会话的摘要版本作为上下文

    2)Codebase

    引入整个代码库的上下文,Cursor Settings 可以查Codebase的索引状态

    Image

    为了优化索引性能,可以使用该选项.cursorignore从索引过程中排除不必要的文件。

    .cursorignore
    .vscode
    .idea
    .gitignore
    .DS_Store
    logs
    data
    vendor

    Chat聊天功能,向AI提问,可帮助理解和探索代码

    Image

    3)Cursor Rules


    Cursor Rules 用于自定义 Cursor 中的 AI 辅助规则,通过规则约束和优化AI生成代码,设置统一编码风格、代码规范、错误处理,减少错误和不一致性。通过共享规则文件,确保团队成员遵循相同规则,减少沟通成本。

    把开发流程写在这里,目的是告诉AI怎么像程序员一样去做开发。

    项目规则配置和使用

    • 在项目根目录创建 .cursor/rules 文件(推荐使用 Markdown 格式)

    • 在 AI 窗口中 @Cursor Rules 选择mdc文件使用

    Image

    项目规则如何写

    • 分层管理规则文件,公共部分的规则可以@file 继承

    .cursor/rules/ 
    ├── common/       # 通用规则(如 Git 规范) 
    ├── frontend/     # 前端专项规则(JS/TS) 
    └── backend/      # 后端专项规则(Go/PHP/数据库)
    • 指定匹配文件规则,如: Glob 匹配 Go 文件(如 src/**/*.go)
    • 开发场景指定步骤顺序,第一步、第二步..
    • 细节描述,指定调用方法,指定文件生成顺序
    • 说明代码要求,指定参考代码文件,常用代码可存为代码片段引用
    • 代码规范,如引入:技术中心的代码规范

    4)Docs


    在线文档添加,@Docs 选择添加新文档 或者Cursor Setting中添加新文档 。Cursor 将索引并学习该文档,将其用作上下文。在聊天框 @Docs 选择对应的文档使用。

    Image
    Image

    5)Notepads


    在NOTEPADS添加记事本,@Notepads 选择对应的记事本使用

    • 可重复使用的代码模板

    • 参考的离线文档,比如:头条的指标信息

    Image

    五、Cursor项目规则开发示例

    针对指定开发场景的项目配置

    • 鲲鹏中台,拉取不同媒体广告信息和报表

    • 量子、鲲鹏(批量创建、计划管理、监控)

    • 易览数据爬虫

    第一步,配置项目Rules

    Cursor Setting -> General -> Project Rules,Add new rule 会在项目目录下的 ./cursor/rules/ 生成一个mdc文件

    Image

    在mdc文件配置代码生成的规则

    ## 代码框架

    ## 代码目录说明

    - 应用程序目录:包含主要的业务逻辑代码

    - 媒体相关代码:处理各种广告媒体的接口和数据

    - 公共代码:共享的工具类和通用功能

    - 配置文件:系统配置和参数设置

    ## 开发场景

    ### 场景1:新增已有广告层级指标

    - 1. 有说明具体指标,直接使用,没有说明具体指标,通过Doc联网查询对应的指标信息

    - 2. 判断是否需要在对应媒体的 API 类(ExampleMedia)Api.php 中已有方法中添加新指标字段

    - 3. 在对应媒体的 Simulator 类(ExampleMedia)Simulator.php 中已有方法中添加数据处理逻辑

    - 4. Sql文件对应的 example_table_name新增指标字段

    ### 场景2:新增已有广告层级属性

    - 1. 有说明具体属性,直接使用,没有说明具体指标key,通过Doc联网查询对应的指标信息

    - 2. 判断是否需要在对应媒体的 API 类中(ExampleMedia)Api.php 中已有方法中添加新属性字段

    - 3. 在对应媒体的 Simulator 类(ExampleMedia)Simulator.php 中已有方法中添加数据处理逻辑

    ### 场景3:新增广告媒体接口拉取

    - 1. 通过Doc联网查询对应接口信息

    - 2. 在对应媒体的 API 类(ExampleMedia)Api.php 中添加新接口

    - 3. 在对应媒体的 Simulator 中(ExampleMedia)Simulator.php 添加新接口调用和数据处理逻辑

    - 4. 在对应媒体的 servers/(ExampleMedia)Servers.php 添加调用方法

    ### 场景4:接入新媒体

    - 1. 新增媒体配置

        - example_platform/defined.php

        - example_platform/compatible.php(在对应事业线添加对应事业线媒体id配置)

        - example_platform/config.php

    - 2. 在媒体相关代码目录创建新媒体目录,按以下顺序逐个创建文件

        - 创建新媒体配置类 AdsConfig 类型

        - 创建新媒体 API 类,使用getAccessToken和commonCall

        - 创建新媒体 Simulator 类(参考 @ExampleSimulator.php 实现)

        - 创建新媒体 Servers 类, (参考 @ExampleServers.php)

    ## 注意事项

    - 先一步一步思考再生成代码

    - 尽量复用代码

    - 遵循现有代码结构

    - 做好错误处理和日志记录

    - 保持与现有功能的兼容性

    - 添加必要的注释说明

    - 判断开发场景,使用对应的开发场景步骤执行

    第二步,上传doc

    Cursor Setting -> Featuers -> Docs -> Add new doc

    把文档链接填入,并配置文档名称

    Image

    第三步,生成代码

    cmd + i 打开cursor composer

    Image

    指定规则,读取代码库,指定接口文档 + 功能需求,选择大模型,回车生成代码

    示例:

    @code-rule.mdc @Codebase @头条批量获取项目否定词 头条新增拉取批量获取项目否定词接口

    Image

    使用中如何优化项目规则

    让大模型输出思考过程,查看过程是否符合规则,chat 里面要求输出每一步的思考过程,补充细节和具体描述。提供模板文件,@file使用,指明参考模板文件生成。

    使用@docs @nodepads 提供在线和离线文档信息,提供链接,使用mcp插件fetch获取链接内容。

    Image

    六、总结

    1. AI代码生成实现开发流程革新
    2. 有效提升开发效率(60-80%代码自动生成),减少编写重复性代码,聚焦业务逻辑,节省开发人力
    3. 知识沉淀,共享项目规则,代码质量保障和风格统一