请参考:

AI - CurSor概述,安装注册(一)

AI - CurSor核心功能+应用(二)

一、CurSor精准上下文

在 Cursor 中,精准指定“上下文(Context)” 是提升 AI 辅助编程效率的关键。通过明确代码范围、项目结构和业务逻辑,可让 AI 更准确地理解需求,是AI读懂代码,精准响应的关键

1.1、Codebase Indexing 代码库索引

打开项目时,每个 Cursor 实例都将初始化该工作区的索引。初始索引设置完成后,Cursor 将自动为添加到工作区的任何新文件编制索引,以使您的代码库上下文保持最新:

  • 快速 “读懂” 你的项目结构(哪些是工具文件、哪些是业务逻辑)
  • 定位相关代码(如搜索 getUser 时,知道优先查 userService.js
  • 理解代码关系(如 Order 类和 Product 类的关联)

Cursor 中的作用:AI 分析索引内容后,生成代码时会更贴合项目实际(如使用已有工具函数、遵循命名规范)。

1.1.1、代码库索引配置和示例

代码库索引的状态位于 cursor settings > Indexing & Docs

测试示例:

查看当前项目结构,并使用文字图形形式罗列出来!

1.1.2、忽略文件配置

Cursor 读取项目的代码库并为其编制索引以支持其功能。可以通过将 .cursorignore 文件添加到根目录来控制,哪些文件被忽略和Cursor限制访问。

  1. 提升索引速度:排除大型依赖、生成文件(如 node_modulesdist
  2. 避免干扰:某些配置文件可能包含敏感信息或与当前任务无关

配置 .cursorignore忽略文件:

  1. 自己创建 .cursorignore 文件添加到代码库目录的根目录下,并列出要忽略的目录和文件

  2. 使用cursor配置快捷创建忽略文件 cursor setting > Indexing & Docs > Configure ignored files

忽略文件配置测试:

  1. 创建忽略文件

  2. 添加忽略配置

    # Add directories or file patterns to ignore during indexing (e.g. foo/ or *.csv)
    index.html
    style.css
    main.js
  3. 测试效果展示

1.2、Rules 规则

1.2.1、规则介绍

Rules是给Cursor AI功能(规则适用于 Chat和 Cmd K)生成结果添加规则和限制,让 AI 生成的代码贴合团队规范,减少人工二次修改成本,主要的作用如下:

  • 可约束代码风格(如强制用驼峰命名、要求函数必须写注释 )
  • 能限定技术选型(如禁止使用某老旧库、优先用项目指定工具类 )
  • 提前指定核心参数(如提前设置连接数据库的地址和账号密码等)

Rule主要的配置方案有两种:

维度 项目规则(Project Rules) 用户规则(User Rules)
作用范围 仅对当前项目生效,团队成员共享相同规则 对所有项目生效,个人专属配置
存储位置 项目根目录下的 .cursor/rules/随意.mdc 文件 用户配置目录(如 ~/.cursor/rules
同步方式 随项目代码提交到版本库(如 Git),团队共享 仅本地生效,不随项目同步
适用场景 统一团队编码规范(如函数注释格式、依赖版本) 个人习惯(如快捷键、AI 响应风格)

注: 项目规则和用户规则同时存在并且规则冲突,项目规则优先级更高!!!

1.2.2、项目规则配置
  1. 项目下创建规则文件

    • 创建文件夹自定义文件项目/.cursor/rules/随意命名.mdc
    • 快捷命令方式创建 Ctrl + Shift + P > “New Cursor Rule”
  2. 编写项目规则文件

  3. 项目规则文件测试及效果展示

import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 简易的内存身份验证服务。
 */
public class AuthService {

    private final Map<String, String> credentialStore = new ConcurrentHashMap<>();

    /**
     * 注册新用户。
     *
     * @param username 待注册用户名
     * @param password 明文密码
     * @return 注册是否成功
     */
    public boolean zmzwfRegister(String username, String password) {
        if (!zmzwfIsValidCredential(username, password) || credentialStore.containsKey(username)) {
            return false;
        }
        credentialStore.put(username, password);
        return true;
    }

    /**
     * 登录已有用户。
     *
     * @param username 用户名
     * @param password 明文密码
     * @return 登录是否成功
     */
    public boolean zmzwfLogin(String username, String password) {
        if (!zmzwfIsValidCredential(username, password)) {
            return false;
        }
        return Objects.equals(credentialStore.get(username), password);
    }

    /**
     * 校验用户名及密码的有效性。
     *
     * @param username 用户名
     * @param password 密码
     * @return 凭证是否合法
     */
    private boolean zmzwfIsValidCredential(String username, String password) {
        return username != null && !username.trim().isEmpty()
                && password != null && !password.trim().isEmpty();
    }
}

1.2.3、用户规则配置

1、用户规则在cursor settings -- Rules and Commands

2、添加规则内容即可

如果有数据库,连接数据库
地址:localhost
账号:root
密码:root

3、用户规则不支持 MDC,它们只是纯文本

1.2.4、mdc语法

Cursor 的 MDC(Markdown with Cursor)语法是专门为编写项目规则设计的轻量级格式,它结合了 Markdown 的可读性和元数据配置能力。

1.2.4.1、MDC 文件组成部分:
  1. 前置元数据(Frontmatter)
    • 用 --- 包裹的 YAML 格式配置
    • 定义规则的基本属性(如作用范围、优先级)
  2. 规则内容(Markdown 正文)
    • 用 Markdown 语法写具体规则
1.2.4.2、前置元数据
---
# 官方约定字段(推荐用,AI 更易理解)
description: "后端项目规则"
globs: "src/**/*.java"
priority: 10

# 自定义字段(自己或团队约定含义)
author: "技术团队"
review_date: "2025-11-28"
special_rule: "仅周一至周五生效"
---

常用元数据字段

字段 作用 示例
description 描述规则用途,指导 AI 如何应用规则 "后端项目规则"
globs 指定规则生效的文件范围(支持 glob 语法) "src/**/*.{java,js,xml}"
priority 规则优先级(数值越大越优先),解决规则冲突 10
version 规则版本号(可选) "1.0.0"
1.2.4.3、规则内容(Markdown 正文)

用 Markdown 的标题、列表、代码块等语法写具体规则,常见结构:

代码风格规则(最常用)

# 一、代码风格
1. 函数必须包含 JSDoc 注释  
   - 至少包含 `@param` 和 `@return` 描述  
2. 变量命名必须使用驼峰命名法(camelCase)  
3. 每行代码长度不超过 120 个字符  

# 二、技术选型
- 禁止直接使用原生 fetch,必须通过项目封装的 request 工具  
- 优先使用 React Hooks 而非 Class 组件  

安全约束规则

# 安全规范
1. 禁止使用 eval() 函数  
2. SQL 查询必须使用参数化查询,防止注入攻击  
3. 敏感信息(如 API 密钥)必须从环境变量读取  

特殊语法:引用项目文件

用 @file 引用项目内的配置文件,让 AI 参考:

# 工具链配置
1. ESLint 规则必须符合 @file .eslintrc.js  
2. 测试用例必须遵循 Jest 框架规范  
1.2.4.4 完整示例(TypeScript 项目规则)
---
description: "TypeScript 项目编码规范"
globs: "src/**/*.ts"
priority: 10
---

# 一、基础规范
1. 所有文件必须使用 UTF-8 编码  
2. 统一使用 2 空格缩进  

# 二、类型约束
1. 禁止使用隐式 any 类型  
   - 示例:`const num: number = 123`(显式)  
   - 禁止:`const num = 123`(隐式)  
2. 接口命名必须以 `I` 开头(如 `interface IUser`)  

# 三、项目约束
- 所有 HTTP 请求必须通过 @file src/utils/request.ts 封装的工具  
- 状态管理必须使用 Redux Toolkit,禁止直接修改 state  

1.3、@符号

在 Cursor 中使用 @ 符号在聊天中引用代码、文件、文档和其他上下文的指南,直接更具体的指定上下文环境!

以下是所有可用 @ 符号的列表:

  • @Files- 引用项目中的特定文件
  • @Folders - 引用整个文件夹以获得更广泛的上下文
  • @Code - 引用代码库中的特定代码片段或符号
  • @Docs- 访问文档和指南
  • @Git- 访问 git 历史记录和更改
  • @Past Chats- 使用汇总的 Composer 会话
  • @Cursor Rules-使用光标规则
  • @Web- 参考外部 Web 资源和文档
  • @Lint Errors- 引用 lint 错误(仅限Chat)

1.3.1、@Files使用和测试

1、准备测试文件ArrayUtils.java

//需求:写一个工具类计算数组平均值

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class ArrayUtils {

    // main方法调用average方法
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 4, 5};
        double average = average(array);
        System.out.println("平均值:" + average);
    }

   // 按tab会完成补全average方法
   public static double average(int[] array) {
     if (array == null || array.length == 0) {
       return 0.0;
     }
     int sum = 0;
     for (int i = 0; i < array.length; i++) {
       sum += array[i];
     }
     return (double) sum / array.length;
   }



   public void arrayFor() {   
     //在循环上方添加注释:// 使用 Stream 重构
     //光标放在循环代码块的任意位置,按 Tab 键 重构
     List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
     List<Integer> evenNumbers = numbers.stream().filter(num -> num % 2 == 0).collect(Collectors.toList());
    
     //在循环上方添加注释:// 使用 Stream 重构
     //  for (int num : numbers) {
    //     if (num % 2 == 0) {
    //         evenNumbers.add(num);
    //     }
    //  }
   }

   // 姓名
   String name = "张三"; 
   // 年龄  
   Integer age = 18;  
   // 地址
   String address = "北京"; 


   // 给下面方法添加注释
   /**
    * 相加
    * @param a
    * @param b
    * @return
    */
   private int add(int a, int b) {
    //代码添加注释
    System.out.println("第一次输出");
    return a + b;
   }
   /**
    * 
    */
   private int subtract(int a, int b) {
    return 0;
   }

   /**
    * 
    */
   private int devide(int a, int b) {
    return 0;
   }

   public void test() {
    System.out.println("Hello");
    if (true) {
        System.out.println("World");
    }
}

2、测试@File对话

查询@ArrayUtils.java 罗列其中的方法

3、查看对话结果

1.3.2、@Code使用和测试

1.3.3、@Docs使用和测试
  • @Docs作用说明

    @Docs 将 Cursor 连接到来自常用工具和框架的官方文档。当需要以下内容的最新权威信息时,请使用它:

    • API 参考:函数签名、参数、返回类型
    • 入门指南 :设置、配置、基本用法
    • 最佳做法 :源中的推荐模式
    • 特定于框架的调试 :官方故障排除指南
  • @Docs对应文档配置

    可以通过cursor settings -- Indexing & Docs(cursor近期更新频繁,配置页面会有调整)来进行文档索引配置。粘贴所需文档的 URL 后,将显示以下模式:

地址: https://baomidou.com/introduce/ (mybatis-plus的官网测试)

  • name:一般用于标识文档的名称、简称或唯一识别名,方便在系统里区分不同文档配置。比如这里填MyBatis - plus,就是用框架名称作为文档标识,后续可通过这个name快速找到、关联对应的文档配置。
  • prefix:常指文档 URL 的前缀部分,可用于拼接完整文档路径,或作为统一的基础地址标识。像填的https://baomidou.com ,可能是该框架文档介绍板块的基础前缀,后续若要拼接具体文档子页面路径(如某个功能详细说明路径 ),可以基于这个prefix去扩展,让文档地址管理更规整 。
  • entrypoint:一般是文档的入口地址,即用户访问该文档时最先进入的页面。这里和prefix填了一样的地址,说明https://baomidou.com/introduce/ 就是MyBatis - plus文档的起始访问页面,用户通过这个entrypoint能直接进入到对应文档内容开始浏览 。

1.3.4、@Web使用和测试

@Web作用说明

@Web 在实时 Internet 上搜索当前信息、博客文章和社区讨论。当您需要时使用它:

  • 最近的教程 :社区生成的内容和示例

  • 比较 :比较不同方法的文章

  • 最近更新 :Very Recent updates or announcement(最近的更新或公告)

  • 多种视角 :不同的问题处理方法

对比@Docs和MCP配置

1.3.5、@Linter Errors使用和测试

1、@Linter Errors作用和说明

@Linter Errors 符号会自动捕获并提供有关当前活动文件中的任何 linting 错误和警告的上下文。

2、准备错误代码(BubbleSort.java)

public class BubbleSort {
    /**
     * 冒泡排序方法
     * @param arr 待排序的数组
     */
    public static void bubbleSort(int[] arr) {
        int n = arr.length;
        // 外层循环控制排序轮数
        for (int i = 0; i < n - 1; i++) {
            // 内层循环进行相邻元素比较和交换
            for (int j = 0; j < n - 1 - i; j++) {
                // 如果当前元素大于下一个元素,则交换它们
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }

    /**
     * 打印数组的辅助方法
     * @param arr 要打印的数组
     */
    public static void printArray(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            //此处故意出现错误,会出现数组越界
            System.out.print(arr[i+2] + " ");
        }
        System.out.println();
    }

    public static void main(String[] args) {
        // 测试数组
        int[] arr = {64, 34, 25, 12, 22, 11, 90};
        
        System.out.println("排序前的数组:");
        printArray(arr);
        
        // 执行冒泡排序
        bubbleSort(arr);
        
        System.out.println("排序后的数组:");
        printArray(arr);
    }
} 

3、测试@Lint Errors 对话

二、CurSor应用-Chrome浏览器插件设计

Cursor官网开发指导流程:

2.1 Cursor设计Chrome浏览器插件

1、需求设计

  • 创建:sbs_chrome插件需求和要求说明
    实现一款Chrome的插件,要包含下面三个功能:
       1. 解释选中的段落或者关键词
       2. 翻译选中的段落或者关键词(支持中文和英文翻译即可)
       3. 朗读选中的段落或者关键字(支持中文和英文朗读)
       4. 润色和替换选中的文本文案
    细节要求:
       1. 当选中段落或者关键词时,出现插件,直接悬浮在选中关键词和段落上!(显示顺序:解释,翻译,朗读,润色)
       2. 解释,翻译,润色的结果直接在悬浮下方出现结果即可
       3. 翻译添加语言选择(翻译目标: 中文还是英文)
       4. 润色结果可以进行修改,同时提供一键替换功能,替换目标文案内容(可编辑情况下可以直接替换)!
       5. 翻译、解释、润色功能实用kimi的api实现即可,具体参考配置kimi api文档
       6. 朗读直接调用chrome浏览器内置插件即可(提供中文和英文朗读)
       7. 并且帮我们写好readme文档,写清在chrome部署插件的过程

2、设计和生成项目UI设计图

  • chat agent模式对话:

@sbs_chrome插件需求和要求说明 根据插件需求文档,帮我写一份项目的UI文本设计图,将设计图写到 sbs_ui_chrome插件UI设计图 文件中! 要求页面简洁,清晰!

  • 生成 sbs_ui_chrome插件UI设计

# Chrome插件UI设计文档

## 1. 悬浮菜单设计

### 1.1 基础悬浮菜单
​```
+------------------------+
|     功能按钮组         |
+------------------------+
| [解释] [翻译] [朗读] [润色] |
+------------------------+
​```

### 1.2 功能展示区域
​```
+------------------------+
|     功能按钮组         |
+------------------------+
| [解释] [翻译] [朗读] [润色] |
+------------------------+
|     结果展示区域        |
|                        |
|                        |
+------------------------+
​```

## 2. 各功能界面设计

### 2.1 解释功能
​```
+------------------------+
|     功能按钮组         |
+------------------------+
| [解释] [翻译] [朗读] [润色] |
+------------------------+
|     解释结果           |
| 选中的文本解释内容...    |
+------------------------+
​```

### 2.2 翻译功能
​```
+------------------------+
|     功能按钮组         |
+------------------------+
| [解释] [翻译] [朗读] [润色] |
+------------------------+
| 目标语言: [中文 ▼]      |
+------------------------+
|     翻译结果           |
| 翻译后的文本内容...      |
+------------------------+
​```

### 2.3 朗读功能
​```
+------------------------+
|     功能按钮组         |
+------------------------+
| [解释] [翻译] [朗读] [润色] |
+------------------------+
| 朗读语言: [中文 ▼]      |
| [▶ 开始朗读] [■ 停止]   |
+------------------------+
​```

### 2.4 润色功能
​```
+------------------------+
|     功能按钮组         |
+------------------------+
| [解释] [翻译] [朗读] [润色] |
+------------------------+
|     润色结果           |
| 润色后的文本内容...      |
|                        |
+------------------------+
| [编辑] [替换原文]       |
+------------------------+
​```

## 3. 设计规范

### 3.1 颜色方案
- 主色调:#4A90E2(蓝色)
- 背景色:#FFFFFF(白色)
- 文字颜色:#333333(深灰)
- 边框颜色:#E5E5E5(浅灰)

### 3.2 字体规范
- 主字体:系统默认字体
- 标题:14px
- 正文:12px
- 按钮文字:12px

### 3.3 间距规范
- 内边距:8px
- 按钮间距:4px
- 功能区间距:12px

### 3.4 交互规范
1. 选中文本后,悬浮菜单自动显示在选中文本附近
2. 点击功能按钮后,结果区域自动展开
3. 鼠标移出悬浮菜单区域,菜单自动隐藏
4. 所有按钮hover效果:背景色变浅
5. 编辑区域支持直接修改,替换按钮一键替换原文

## 4. 响应式设计
- 悬浮菜单宽度:最小200px,最大400px
- 高度自适应内容
- 确保在各种屏幕分辨率下都能正常显示 

3、配置和导入kimi docs文档

配置位置: cursor settings > Indexing & Docs > add new doc

platform.moonshot.cn/docs

4、生成kimi api key

登录kimi api 用户中心: https://platform.moonshot.cn/console/api-keys

创建kimi api key (第一次赠送15元):

在这里插入图片描述

2.2 Chrome插件实现

1、准备一个参考界面()

2、实现插件功能

@sbs_chrome插件需求和要求说明 @sbs_ui_chrome插件UI设计图 基于需求和UI设计图,以@plugin.png 图片风格,直接在当前chrome-plugin文件夹下实现插件功能,同时提取单独配置文件用于填写kimi api url和key的位置!代码添加中文注释,实现后再次自检查,确保插件正常运行和实现功能!

3、配置kimi api key

// API配置
const config = {
    // Kimi API配置
    kimi: {
        apiUrl: 'https://api.moonshot.cn/v1', // 替换为实际的Kimi API URL
        apiKey: 'YOUR_KIMI_API_KEY'  // 替换为实际的Kimi API Key
    },
    
    // 默认设置
    defaults: {
        translationTarget: 'zh', // 默认翻译目标语言:zh-中文,en-英文
        speechLanguage: 'zh'    // 默认朗读语言:zh-中文,en-英文
    }
};

// 导出配置
export default config; 

2.3 Chrome插件调试和发布

1、chrome浏览器--右上角三个点--扩展程序--管理扩展程序--加载未打包的扩展程序--选中项目所在的文件夹

2、第一次回出现问题(使用cursor调试)

在这里插入图片描述

将插件文件夹发布到chrome浏览器,报图片的错误,你给我从网上查找几张图片放在对应的位置即可!

将插件文件夹发布到chrome浏览器,报图片的错误,你给我从网上查找几张图片放在对应的位置即可。 很大概率,cursor不给我们生成缺少的图片,安全原因,那么就需要我们自己手动添加!!

3、有错误信息显示

Uncaught SyntaxError: Cannot use import statement outside a module 解决错误信息!

4、插件--详情--扩展程序选项 再次配置Kimi API地址和Key

确保添加完成

功能测试和调试(有问题就让cursor自动修复)

  • 翻译
  • 解释

  • 润色

  • 朗读

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐