Cursor核心功能及开发实战

Cursor三大核心AI功能

代码自动补全(Tab键)

基于 AI 模型,能根据代码上下文自动预测并生成代码补全建议,不仅支持单行代码补全,还能进行多行代码补全,甚至可以自动导入缺失的依赖。同时,它还具备智能代码重写功能,能够对多行代码一次性完成语法升级、结构重组、安全修复等操作,帮助开发者更高效地编写和优化代码。 Tab功能的开启:

  • Cursor Settings:

  • 页面下方

  • 注意如果Tab确认开启(VPN有关) 但不工作 可尝试调整Cursor Settings-Network

  1. 单行/多行代码补全

    • 已有代码片段:
    java 复制代码
    //需求:写一个工具类计算数组平均值
    public class ArrayUtils {
       // 按tab会完成补全
    }
    • 按Tab键--Cursor自动生成的代码
    java 复制代码
    //需求:写一个工具类计算数组的平均值
    public class ArrayUtils {       
        public static double average(int[] arr) {
            int sum = 0;
            for (int i = 0; i < arr.length; i++) {
                sum += arr[i];
            }
            return (double) sum / arr.length;
        }
    }
  2. 智能代码重写

    • 已有代码片段
    java 复制代码
    //使用Stream重构
    public void arrayFor() {    
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
        List<Integer> evenNumbers = new ArrayList<>();
        for (int num : numbers) {
            if (num % 2 == 0) {
                evenNumbers.add(num);
            }
        }
    }
    • 在循环上方添加注释:// 使用 Stream 重构,光标放在循环代码块的任意位置,按Tab键自动补全
    java 复制代码
    public void arrayFor() {    
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
        List<Integer> evenNumbers = numbers.stream().filter(num -> num % 2 == 0).collect(Collectors.toList());
    }
  3. 多行协同优化 Cursor 的 多行协同优化 核心能力:多行代码,一次性完成 语法升级、结构重组、安全修复

    • 多行数据联想
    • 多行批量修改
  4. 光标位置预测

    • 示例
    • Tab自动预测位置+补充注释
  5. 接受、接受部分和拒绝

    • 准备测试类
    java 复制代码
        public class Student {
         private String name;
        private int  age;
        //tab 
        //tab 接收完整补全
        //ctrl + -> 部分和逐步接收补全 [需要开启部分补全配置]
        //esc 或者 继续输入 拒绝补全
      }
  6. Tab相关配置说明 配置修改位置: cursor settings > tab

  • A powerful Copilot replacement that can suggest changes across multiple lines...

    • 作用:启用 / 禁用 Cursor Tab 功能。
    • 通俗理解:相当于 "总开关",勾选后才能用 Tab 键触发 AI 代码建议(如多行补全、智能续写);取消勾选则 Tab 仅作普通缩进。
  • Accept the next word of a suggestion via Ctrl+RightArrow

    • 作用 :开启后,可用 Ctrl+→(Windows/Linux)或 ⌘+→(Mac)逐个单词接受 AI 建议
    • 通俗理解:AI 给的建议很长时,不想全要?开这个功能,按快捷键 "挑着用"。
  • 场景 :比如 AI 建议 const fullName = firstName + " " + lastName;,但你只想用 firstName + " " + lastName 部分,就可通过该快捷键拆分接受。

  • Enable Cursor Tab suggestions in comments

    • 作用 :让 AI 在注释内容里也提供 Tab 建议
    • 通俗理解 :写注释时,AI 帮你补全思路!比如输入 // 实现冒泡排序的步骤:,按 Tab 自动续写步骤说明。
  • Show whitespace only Cursor Tab suggestions

    • 作用 :控制是否显示仅包含空白(空格、换行)的 AI 建议

    • 通俗理解 :这个配置项决定了 当按 Tab 时,是否让那些 "只调整空格、换行、缩进(没有实际代码逻辑变化)" 的建议显示出来。。

    • 案例

      csharp 复制代码
      public class Demo {
          public void test() {
              System.out.println("Hello");
               if (true) {
                  System.out.println("World");
                }
             }
      }
      • 勾选:把光标放在混乱的代码里(比如 public void test() { 这行后面) tab 会有修改建议
      • 不勾选:把光标放在混乱的代码里(比如 public void test() { 这行后面) tab不会有修改建议
  • Tab to import necessary modules with Cursor Tab. Only supports TypeScript

    • 作用 :在 TypeScript 中,写代码时缺模块,按 Tab 自动帮你导入依赖
  • Enable auto import for Python. This is a beta feature.

    • 作用:(测试版)为 Python 开启类似功能,按 Tab 自动导入缺失模块。

Chat对话模式

这是 Cursor 的 AI 助手功能,位于侧边栏。用户可以通过自然语言与代码库进行交互,比如提出问题、请求代码编辑、获取终端命令建议等,无需切换上下文。它还能了解代码库的结构和逻辑,代表用户对代码库进行更改,帮助重构代码库,甚至可以根据需求从零开始搭建项目,包括创建项目结构、安装依赖项和编写初始代码等。此外,Chat 提供了不同的模式,如 Agent 代理模式和 Ask 对话模式,Agent 模式可以自主探索代码库并进行修改等操作,Ask 模式则主要用于获取代码相关的解释和答案,不会直接修改代码。

Cursor Chat 核心功能解析

  1. 代码库智能操作与功能实现 - 深度理解项目架构与代码逻辑,支持直接对代码库进行增删改操作,高效实现新功能需求。无论是添加支付模块、集成第三方API,还是扩展业务逻辑,均可通过自然语言指令触发自动化代码生成与修改,大幅提升开发效率。
  2. 全链路代码重构与架构优化 - 基于对代码库组件依赖关系的分析,提供系统化重构方案。可实现单体架构向微服务拆分、技术栈升级(如Python 2→3)、反模式修复(如冗余代码提取)等复杂操作,同时自动维护跨文件引用关系,确保重构过程的稳定性。
  3. 项目自动化搭建与初始化 - 支持从零构建完整项目框架:根据技术栈需求(如React+Node.js、Spring Boot+Vue)自动生成标准化项目结构,配置依赖管理文件(package.json/maven pom.xml),甚至编写基础服务代码(如用户认证模块、数据库连接层),帮助开发者快速进入业务编码阶段。
  4. 智能错误定位与代码修复 - 基于错误日志(如编译报错、运行时异常)自动定位问题根源,提供针对性修复方案。可直接修改代码中的语法错误(如TypeScript类型不匹配)、逻辑漏洞(如空指针异常)或依赖冲突,同步生成修改前后的diff对比,确保修复过程透明可控。

快速开始

  1. 使用Ctrl+L访问侧边栏中的聊天。用自然语言输入我们的请求,AI 将做出相应的响应。

    注意: 与Chat 对话时,建议采用清晰、具体的语言格式,最好包含任务类型、上下文描述和具体要求。

  • 以下是几个参考模板:

    • 代码生成类
    markdown 复制代码
    [任务类型]:请生成一个 {功能描述} 的 {编程语言/框架} 实现
    
    [具体要求]:
    1. 使用 {特定技术/库}(如React、Nodejs等)
    2. 包含 {特定功能点}(如用户认证、数据可视化)
    3. 符合 {编码规范/设计模式}(如 SOLID 原则、TypeScript 类型约束)
    markdown 复制代码
    示例:请生成一个学习计划页面的HTML+CSS+JavaScript实现
    
    [具体要求]:
    1. 使用Tailwind CSS v3和Font Awesome
    2. 包含任务添加、编辑、删除功能
    3. 包含日历视图展示学习计划
    4. 包含学习进度可视化图表
    5. 符合现代UI设计原则和响应式设计
    6. 具有平滑的动画和交互效果  

    浏览器直接打开plan.html

    • 代码修改类
    css 复制代码
    [任务类型]:请优化 {上下文:具体文件路径/代码片段},实现 {预期目标}  
    
    [当前问题]:{错误描述/性能瓶颈/逻辑漏洞}  
    
    [具体要求]:  
    1. 保持 {UI 交互/核心业务逻辑} 不变  
    2. 使用 {技术方案} 改进(如 React 并发模式、Webpack 代码分割)  
    3. 修复 {具体问题}(如内存泄漏、TS 类型错误)  
    markdown 复制代码
    示例:请修改当前 React 项目的图片加载组件,优化首屏渲染性能。  
    当前问题:图片未懒加载导致首屏加载时间超过 3s,Lighthouse 性能评分仅 42 分。  
    要求:  
    1. 保持图片展示与交互逻辑不变  
    2. 使用 next/image 实现自动懒加载与响应式处理  
    3. 添加骨架屏占位与错误重试机制  
    4. 生成性能优化前后的 Lighthouse 对比报告 
    • 代码解释类
    css 复制代码
    [任务类型]:请解析 {代码模块/设计模式} 的 {技术要点}  
    
    [上下文信息]:{项目背景/技术栈/业务场景}  
    
    [具体问题]:  
    1. {语法糖/底层原理} 如何工作?  
    2. {设计选择} 的优缺点与适用场景  
    3. {潜在风险} 及优化方案 
    csharp 复制代码
    示例:请解释 Vue 3 组合式 API 中 ref 与 reactive 的区别与应用场景。  
    上下文:正在开发一个中大型后台管理系统,需选择状态管理方案。  
    具体问题:  
    1. ref 为什么需要 .value 解包?与 reactive 的响应式原理差异?  
    2. 何时应该使用 ref 而非 reactive?请举例说明  
    3. 组合式 API 中如何避免 ref 解包导致的代码冗余
    • 流程自动化类
    markdown 复制代码
    [任务类型]:请构建自动化工作流,实现 {业务目标}  
    
    [执行流程]:  
    1. 从 {数据源} 获取 {数据类型}(如 GitHub API 获取 PR 数据)  
    2. 执行 {处理逻辑}(如数据清洗、格式转换)  
    3. 将结果 {输出方式}(如保存至数据库、生成报表)  
    4. 触发 {后续动作}(如通知推送、定时任务)  
    
    [技术要求]:  
    1. 使用 {工具/框架}(如 GitHub Actions、Python Airflow)  
    2. 集成 {容错机制}(如重试策略、异常告警)  
    3. 生成 {可观测性} 输出(如日志追踪、执行统计)  
    markdown 复制代码
    示例:请创建自动化部署流程,实现前端项目代码推送到 main 分支后自动发布到生产环境。  
    执行流程:  
    1. 监听 GitHub main 分支代码变更  
    2. 使用 npm run build 生成生产包并进行代码压缩  
    3. 通过 SFTP 上传至服务器 /var/www/html 目录  
    4. 触发 Nginx 配置重载并记录部署日志  
    技术要求:  
    1. 使用 GitHub Actions 工作流  
    2. 添加部署前代码 lint 检查与单元测试  
    3. 失败时自动发送邮件通知并回滚至最近稳定版本
    • 命令行辅助类
    markdown 复制代码
    [任务类型]:请提供 {操作场景} 的 {操作系统} 命令方案  
    
    [需求详情]:  
    1. {具体操作}(如文件批量处理、环境配置)  
    2. 包含 {参数/选项}(如 -r 递归、-v  verbose)  
    3. 处理 {边界情况}(如空文件、权限问题)  
    markdown 复制代码
    示例:请提供 Linux 系统下清理项目中未使用依赖包的命令方案。  
    需求详情:  
    1. 扫描 Node.js 项目中 package.json 与源码的依赖引用  
    2. 列出所有已安装但未被引用的 npm 包  
    3. 支持交互式选择删除或生成清理脚本  
    4. 保留 devDependencies 中的测试依赖
    提示词优化技巧(结构化总结)
  1. 上下文锚定

    • 明确项目技术栈(如 "React + TypeScript 项目")、业务场景(如 "电商结算模块")
    • 示例:"在当前 Vue 3 管理系统中,实现商品库存预警功能"
  2. 需求颗粒度控制

    • 将复杂任务拆解为可执行步骤(如 "1. 创建数据库模型 2. 开发 API 接口 3. 实现前端表格")
    • 反例:"做一个电商网站" → 优化:"开发电商网站的商品搜索模块,包含分词匹配与筛选功能"
  3. 技术约束显式化

    • 指定必须 / 禁止使用的技术(如 "使用 Webpack 5 而非 Vite"、"禁止修改现有路由结构")
    • 示例:"用原生 JavaScript 实现,不依赖任何框架"
  4. 结果验收标准

    • 明确性能指标(如 "首屏加载 < 1.5s")、兼容性要求(如 "支持 iOS 14+ 与 Chrome 80+")
    • 示例:"生成的代码需通过 ESLint 校验(配置文件见 .eslintrc.json)"
  5. 示例引导策略

    • 提供目标代码片段或交互原型(如 "类似 axios 的请求拦截器写法")
    • 格式:" 请按如下风格实现:\njs\n// 示例代码\nfunction request(url) { ... }\n"

格式说明

  • 变量替换:{} 内为需自定义内容,实际使用时替换为具体描述
  • 层级规范:使用 [任务类型] 作为一级标题,[具体要求] 作为二级内容
  • 代码块示例 :通过 markdown 与 包裹,确保语法高亮与格式保留

Chat三种模式

  1. Agent代理模式(默认): 允许Cursor学习和理解我们的项目代码,并且代表们可以直接进行项目代码更改!
  2. Ask对话模式:获取项目代码相关的解释和答案,但是不会直接修改项目代码!
  3. Manual手动模式 :需要我们执行项目上下文(修改范围,后续会详细讲解)重点编辑!
Agent代理模式体验
  • Agent代理模式(默认):全自动代码库操作与复杂任务执行
  • 核心能力:
    • 深度分析项目结构与依赖关系
    • 自主执行多文件修改与跨模块重构
    • 维护长周期任务上下文
    • 独立探索您的代码库,识别相关文件,并进行必要的更改
    • 使用所有可用工具搜索、编辑、创建文件和运行终端命令
    • 将复杂任务分解为可管理的步骤并按顺序执行
  • 生成和修改示例

    1. 新打开一个文件夹
    2. Ctrl+L 开始Chat对话
    3. 对话用例
    markdown 复制代码
    使用html,css,javascript来实现一个贪吃蛇页面!
    要求:
      1. 要求有积分统计
      2. 页面要有多种背景可以切换
      3. 代码添加中文注释
      4. 不能使用var 只能使用let和const声明变量
    1. 生成代码


    5. 运行代码对话

    1. 后续调整代码对话

    在页面中添加倒计时功能,每次60秒!

  • Agent的配置选项

    • Model(选择模型 ):为代理模式预先选择大模型
    • Edit Keybindings(编辑快捷键): 为agent模式设置快速开启快捷键(默认 ctrl + i)
    • Auto-run ( 自动运行 ) :当你让 Agent 修改代码后,自动执行相关命令(如编译、测试、运行),验证修改的正确性。
    • Auto-fix errors ( 自动修复 ) :当自动运行过程中出现错误(如编译失败、测试报错),Agent 会尝试分析错误信息并自动修复。
Ask对话模式体验
  • 默认不会直接修改,需要手动应用修改内容

  • ask模式示例:

    这个贪吃蛇页面如何添加多种模式

  • Ask模式的配置选项

    • Model (模型) : 预先选择应作为 Ask (Ask ) 的默认模型
    • Keybinding : 设置键绑定以切换到 Ask 模式
    • 搜索代码库 : 允许 Cursor 搜索它自己的上下文,而不是当你希望 AI 看到文件时,你必须手动 @ 文件作为上下文
Manual手动模式体验
  • 与 Ask 模式不同,它不探索代码库或运行终端命令;它完全取决于您的具体说明和您提供的上下文(例如,通过** @文件名**),AI 生成修改建议后,还要用户手动点击 "应用" 才会改动代码,且通常是单文件 / 局部代码调整

  • Manual模式示例:

    在 @snake.js @snake.html 中,给所有代码添加注释和解释!

Chat模式的其他细节

代码编辑选项
  1. Review:在差异视图中查看建议的更改

  2. Apply:在"ask / Manual "模式下,使用"应用"按钮显式应用更改

  3. Accept/Reject(接受/拒绝) :进行更改后,决定是保留还是放弃更改(agent模式下)

Checkpoints数据还原
  • 有时,可能希望恢复到代码库的先前状态。Cursor 通过在发出的每个请求以及每次 AI 更改的代码库时自动创建代码库的检查点(Checkpoints)来帮助您解决这个问题。

要恢复到以前的状态,您可以:单击上一个请求的输入框中显示的 Restore Checkpoint 按钮,如下所示

注意:是回复到本次对话之前的状态!!不是本次对话产生的状态!

历史和新建会话

Chat相关配置说明

  • Cursor Settings--Chat

    • Default new chat mode:设置新聊天默认模式,选 "Agent" 则新聊天默认用智能代理交互 ,决定初始聊天交互载体。

    • Chat text size:调整 AI 聊天消息文字大小,"Default" 是默认尺寸,可按需改显示效果,让阅读更舒适。

    • Auto - refresh chats:勾选后,聊天面板闲置再打开时自动新建聊天,保持交互新鲜度,避免旧聊天堆积干扰。

    • Auto - scroll to bottom:新消息生成时自动滚动到聊天面板底部,不用手动翻,方便实时看最新内容。

    • Auto - apply to files outside context in Manual mode:手动模式下,允许聊天对当前上下文外文件自动应用更改,拓展操作范围,处理跨文件任务更便捷。

    • Include project structure(BETA) :勾选后,给模型提供简化目录树,辅助理解代码库布局,让 AI 更贴合项目结构做响应,尚处测试阶段。

    • Full folder contents:启用后,展示完整文件夹内容而非结构大纲,需详细文件内容时开启,便于深度查看。

    • Enable auto - run mode:允许 Agent 不经确认自动运行工具(如执行命令、写文件),效率高但有风险,需信任场景用,要留意误操作。

    • Command allowlist:仅指定命令能自动执行,精准管控,保障安全又保留特定自动操作。

    • Command denylist:列入的命令永不自动执行,规避危险命令,加固安全防线。

    • Delete file protection:启用后阻止 Agent 自动删文件,防误删关键文件,保护数据安全。

    • MCP tools protection:开启则 Agent 不能自动运行 MCP 工具,避免工具误操作影响系统。

    • Dot files protection:已勾选,阻止 Agent 自动改点文件(如.gitignore ),保护版本控制等配置文件。

    • Outside workspace protection:勾选后,Agent 无法自动创建 / 修改工作区外文件,防止影响外部系统,保障工作区独立性。

    • Dialog 'Don't ask again' preferences:管理曾选 "不再询问" 的对话框,方便回顾或重置交互确认逻辑。

    • Collapse input box pills in pane or editor:勾选则折叠聊天面板 / 编辑器输入框里的标识,节省空间,让界面更简洁。

    • Iterate on lints:启用后,Agent 模式聊天自动迭代修复代码检查(linter )错误,助力自动代码优化。

    • Hierarchical Cursor Ignore:启用后,cursorignore 文件规则作用于所有子目录,改配置需重启 Cursor,统一忽略规则时用。

    • Auto - accept diffs:启用后,合成器里的差异(diffs )在不在工作树中就会被接受,自动处理版本差异,简化流程。

    • Custom modes(BETA) :允许创建自定义模式,可按需定制交互逻辑,尚在测试,探索个性化玩法。

    • Play sound on finish(BETA) :聊天响应完成时播放声音提醒,不用一直盯着,及时知晓结果,测试功能。

    • Auto Group Changes(BETA) :自动分组聊天会话中与大语言模型(LLM )交互产生的更改,方便集中 review,测试阶段功能。

    • Web Search Tool(BETA) :已勾选,允许 Agent/ask 模式聊天联网搜索信息,补充知识,让回答更全面,测试功能

内联置能修改(Ctrl+K)

允许用户使用自然语言指令来编写和更新代码。开发者只需通过简单的文本描述,如 "实现一个冒泡排序函数""添加一个用户登录接口" 等,Cursor 就会根据这些自然语言描述生成相应的函数、类或完整模块等代码,将自然语言转化为可运行的代码,大大提高了开发效率,尤其适合快速实现一些功能需求或对代码进行快速修改。

内联编辑 (Cmd/Ctrl+K) 直接在编辑器窗口中生成新代码或编辑现有代码。
适合已知并精准修改文件内容!

  1. 触发修改提示框 在 Cursor 中,我们将按 Ctrl/Cmd K 时出现的栏称为"Prompt Bar"。它的工作原理类似于用于聊天的 AI 输入框,可以在其中正常键入,或使用 @引用其他上下文(后续讲解)。

    Ctrl K的模式说明:

    • 内联生成 :如果在按 Ctrl/Cmd K 时未选择任何代码,Cursor 将根据您在提示栏中键入的提示生成新代码。
    • 内联编辑:对于就地编辑,只需选择要编辑的代码,然后在提示栏中键入即可。
  2. Ctrl+K 体验

    • 内联生成
      1. 打开main.js,光标放文件末尾(无选中代码)
      2. 按Ctrl+K,输入提示: 生成一个带点击动画的按钮组件,用 JavaScript 实现,点击后控制台打印次数
      3. 实现效果
    • 内联编辑
      1. 继续打开刚刚的main.js

      2. 选中任意方法,按Ctrl+K,输入提示:

        方法添加注释和每行代码添加注释说明

Cursor精准上下文指定

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

Codebase Indexing 代码库索引

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

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

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

  • 代码库索引配置和示例
    • 代码库索引的状态位于 cursor settings--Indexing & Docs

    • 测试示例:

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

  • 忽略文件配置

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

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

配置 .cursorignore忽略文件:

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

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

Rules 规则

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

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

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

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

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

  • 项目规则配置

    1. 项目下创建规则文件

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

      yaml 复制代码
      ---
      description: "团队前端项目规范"
      priority: 1000
      ---
      
      # 代码风格
      1. 函数必须包含 JSDoc 注释
      2. 禁止使用 `var`,统一用 `const`/`let`
      3. 函数命名必须添加 sbs_前缀, 例如:sbs_login
      
      # 依赖管理
      - 优先使用项目内已有的工具函数(如 `utils/request`)
      - 禁止引入低版本的 lodash(<4.0.0)
    3. 项目规则文件测试及效果展示

  • 用户规则配置

    1. 用户规则在cursor settings -- Rules

    2. 添加规则内容即可

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

  • mdc语法了解 Cursor 的 MDC(Markdown with Cursor)语法是专门为编写项目规则设计的轻量级格式,它结合了 Markdown 的可读性和元数据配置能力。接下来,我们来说明下mdc文件语法。

    • MDC 文件组成部分:

      1. 前置元数据(Frontmatter)

        • --- 包裹的 YAML 格式配置
        • 定义规则的基本属性(如作用范围、优先级)
      2. 规则内容(Markdown 正文)

        • 用 Markdown 语法写具体规则
    • 前置元数据

    yaml 复制代码
        ---
        # 官方约定字段(推荐用,AI 更易理解)
        description: "前端项目规则"
        globs: "src/**/*.tsx"
        priority: 1000
    
        # 自定义字段(自己或团队约定含义)
        author: "技术团队"
        review_date: "2025-06-04"
        special_rule: "仅周一至周五生效"
        ---

    常用元数据字段

    字段 作用 示例
    description 描述规则用途,指导 AI 如何应用规则 "前端组件编码规范"
    globs 指定规则生效的文件范围(支持 glob 语法) "src/**/*.{js,ts,jsx}"
    priority 规则优先级(数值越大越优先),解决规则冲突 1000
    version 规则版本号(可选) "1.0.0"
    • 规则内容 用 Markdown 的标题、列表、代码块等语法写具体规则,常见结构:

      • 代码风格规则(常用)
      markdown 复制代码
      # 一、代码风格
      1. 函数必须包含 JSDoc 注释  
         - 至少包含 `@param` 和 `@return` 描述  
      2. 变量命名必须使用驼峰命名法(camelCase)  
      3. 每行代码长度不超过 120 个字符  
      
      # 二、技术选型
      - 禁止直接使用原生 fetch,必须通过项目封装的 request 工具  
      - 优先使用 React Hooks 而非 Class 组件 
      • 安全约束规则
      markdown 复制代码
      # 安全规范
      1. 禁止使用 eval() 函数  
      2. SQL 查询必须使用参数化查询,防止注入攻击  
      3. 敏感信息(如 API 密钥)必须从环境变量读取  
      • 特殊语法:引用项目文件 用 @file 引用项目内的配置文件,让 AI 参考:
      markdown 复制代码
      # 工具链配置
      1. ESLint 规则必须符合 @file .eslintrc.js  
      2. 测试用例必须遵循 Jest 框架规范  
    • 完整示例(TypeScript项目规则):

    yaml 复制代码
    ---
    description: "TypeScript 项目编码规范"
    globs: "src/**/*.ts"
    priority: 1000
    ---
    
    # 一、基础规范
    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  

@符号

  • 在 Cursor 中使用 @ 符号在聊天中引用代码、文件、文档和其他上下文的指南,直接更具体的指定上下文环境 以下是所有可用 @ 符号的列表:
    • @Files- 引用项目中的特定文件
    • @Folders - 引用整个文件夹以获得更广泛的上下文
    • @Code - 引用代码库中的特定代码片段或符号
    • @Docs- 访问文档和指南
    • @Git- 访问 git 历史记录和更改
    • @Past Chats- 使用汇总的 Composer 会话
    • @Cursor Rules-使用光标规则
    • @Web- 参考外部 Web 资源和文档
    • @Lint Errors- 引用 lint 错误(仅限Chat)
  1. @File使用和测试

    1. 准备测试文件main.js

      js 复制代码
      /**
       * 用户登录方法
       * @param {Object} params - 登录参数
       * @param {string} params.username - 用户名
       * @param {string} params.password - 密码
       * @returns {Promise} 登录结果
       */
      const sbs = async (params) => {
        try {
          const response = await request.post('/api/login', params);
          return response.data;
        } catch (error) {
          console.error('登录失败:', error);
          throw error;
        }
      };
      
      /**
       * 用户注册方法
       * @param {Object} params - 注册参数
       * @param {string} params.username - 用户名
       * @param {string} params.password - 密码
       * @param {string} params.email - 邮箱
       * @returns {Promise} 注册结果
       */
      const sbs = async (params) => {
        try {
          const response = await request.post('/api/register', params);
          return response.data;
        } catch (error) {
          console.error('注册失败:', error);
          throw error;
        }
      };
    2. 测试@File对话

      查询@main.js 罗列其中的方法

    3. 查看对话结果

  2. @Code使用和测试

  3. @Docs使用和测试

    1. @Docs作用说明

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

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

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

  4. @Web使用和测试

  • @Web作用说明

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

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

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

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

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

  1. @Lint Errors使用和测试

    1. @Linter Errors作用和说明

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

    2. 准备错误代码

    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);
        }
    } 
    1. 测试

Cursor智能插件开发实战

  • Cursor官网开发指导流程:

Cursor需求设计

  1. 需求设计

    • 创建:sbs_chrome插件需求和要求说明
    markdown 复制代码
        实现一款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设计图

  3. 配置和导入kimi doc文档

  4. 生成kimi api key 登录kimi api用户中心:platform.moonshot.cn/console/api... 创建kimi api key

Chrome插件实现

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

  2. 实现插件功能

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

  3. 配置kimi api key

    json 复制代码
    {
      "kimi_api_url": "https://api.moonshot.cn/v1/chat/completions",
      "kimi_api_key": "sk-xxxxxxxxxxxxxxxxxxxxxxx"
    } 
  4. 代码生成效果

Chrome插件调试和发布

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

  2. 第一次可能出现的问题(使用cursor调试)

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

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

    4.添加完成后进行功能测试和调试(有问题就让cursor自动修复)

    • 翻译
    • 解释
    • 润色
    • 朗读
相关推荐
counterxing5 小时前
Agent 跑起来之后,难的是复用、观测和评测
node.js·agent·ai编程
uccs5 小时前
大模型底层机制与Agent开发
agent·ai编程·claude
counterxing6 小时前
我把 Codex 里的 Skills 做成了一个 MCP,还支持分享
前端·agent·ai编程
夜雪闻竹6 小时前
vectra 向量索引文件损坏怎么办
ai编程·向量·vectra
ZzT6 小时前
Harness 到底指什么
openai·ai编程·claude
宅小年7 小时前
AI 创业最危险的地方:太容易做出来
openai·ai编程·claude
麦客奥德彪7 小时前
Android Skills
架构·ai编程
言萧凡_CookieBoty8 小时前
一文讲清 RAG:让 AI 读懂业务知识库的核心方法
ai编程
kyriewen9 小时前
产品经理把PRD写成“天书”,我用AI半小时重写了一遍,他当场愣住
前端·ai编程·cursor
Patrick_Wilson9 小时前
知识沉淀的四层模型:从个人笔记到企业资产,让文档真正长出复利
面试·程序员·ai编程