经验-cursor 如何有效使用

目前使用 cursor 做程序的实践, cursor 版本: 0.50.7

三大件 MCP + Doc + Rules

1. MCP 使用

MCP(Model Context Protocol)是 Cursor 提供的一种机制,允许 AI 助手通过外部服务器获取实时、准确的文档或数据,以增强代码生成的质量。以下是你提到的三个 MCP 的使用实践:

1.1 deepwiki

Deepwiki MCP 是一个开源工具,用于从 GitHub 仓库或 Deepwiki 网站(deepwiki.com)获取最新的文档或代码库内容,特别适合需要爬取 GitHub 仓库文档的场景。它通过 MCP 协议将爬取的内容转换为 Markdown 格式,供 Cursor 使用
使用方法:

1.2 context7

Context7 MCP 是 Upstash 提供的服务,专注于为 LLMs 提供版本特定的最新文档和代码示例,解决 AI 模型生成过时或错误代码的问题。它与 Cursor、Windsurf 等 MCP 兼容客户端无缝集成。
使用方法:

  • 在 Cursor 提示中添加 use context7,例如:Create a Next.js API route with Hono. use context7 Context7 将从官方文档拉取最新代码示例,注入到 LLM 的上下文。
  • 支持版本特定的文档查询,例如指定 Next.js 或 React Query 的具体版本

1.3 mcp-feedback-enhanced

在AI辅助开发工具中实现人机协作工作流。通过引导AI与用户确认而不是进行推测性操作,它可以将多达25个工具调用 consolidation 成一个以反馈为导向的请求,从而大大降低平台成本。
使用方法:

  • 配合 rules 使用, llm 制定多个计划, 调用该工具与用户进行确认, 确认后继续执行, 节省请求数

1.4 示例

 1{  
 2    "mcpServers": {  
 3        "deepwiki": {  
 4            "command""npx",  
 5            "args": [  
 6                "-y",  
 7                "mcp-deepwiki@latest"  
 8            ]  
 9        },  
10        "context7": {  
11            "command""npx",  
12            "args": [  
13                "-y",  
14                "@upstash/context7-mcp"  
15            ],  
16            "env": {  
17                "DEFAULT_MINIMUM_TOKENS""6000"  
18            }  
19        },  
20        "mcp-feedback-enhanced": {  
21            "command""uvx",  
22            "args": [  
23                "--python",  如果你是远程连接的, 最好加上这个参数
24                "/home/yunpiao/anaconda3/bin/python",  如果你是远程连接的, 最好加上这个参数
25                "mcp-feedback-enhanced@latest"  
26            ],  
27            "env": {  
28                "FORCE_WEB""true",  
29                "MCP_DEBUG""false"  
30            },  
31            "timeout"600,  
32            "autoApprove": [  
33                "interactive_feedback"  
34            ]  
35        }  
36    }  
37}}

2. Doc

Cursor 0.50.7 支持多种方式获取文档,以增强 AI 助手的上下文准确性。以下是你提到的三种方式:

2.1 自带的 docs 文档

Cursor 内置了 @ 语法,可直接调用特定库或框架的官方文档。例如,@nginx 会从官方来源获取 Nginx 的最新文档。

2.2 增加网页文档(爬虫方式-官方支持)

Cursor 0.50.7 支持通过爬虫方式从指定网页获取文档,官方提供了集成工具,允许用户指定 URL 并将内容注入 LLM 上下文。
cursor 命令输入框(crtl+shift+p 打开)中填写 >Add New Custom Docs, 之后填写需要进行爬取的网站, 例如https://nginx.org/en/docs/

2.3 增加 github 文档, 使用 deepwiki 方式

对于一些没有文档的 github\gitlab 项目可以使用 deepwiki 转换成 wiki, 用于添加 doc

最简单方法, 更改域名中的 github 为 deepwiki , 然后添加到 custom doc 里面

3. Rules

3.1 针对项目设置user cursor rules

我现在使用的 rules, 找不出出处了, 好像在一个回复里扒出来的, 如果这个有版权的话, 可以联系我删除

你是Cursor IDE的AI编程助手,遵循核心工作流(研究->构思->计划->执行->评审)用中文协助用户,面向专业程序员,交互应简洁专业,避免不必要解释。

[沟通守则]
1.  响应以模式标签 `[模式:X]` 开始,初始为 `[模式:研究]`。
2.  核心工作流严格按 `研究->构思->计划->执行->评审` 顺序流转,用户可指令跳转。

[核心工作流详解]
1.  `[模式:研究]`:理解需求。
2.  `[模式:构思]`:提供至少两种可行方案及评估(例如:`方案1:描述`)。
3.  `[模式:计划]`:将选定方案细化为详尽、有序、可执行的步骤清单(含原子操作:文件、函数/类、逻辑概要;预期结果;新库用`Context7`查询)。不写完整代码。完成后用`interactive-feedback`请求用户批准。
4.  `[模式:执行]`:必须用户批准方可执行。严格按计划编码执行。计划简要(含上下文和计划)存入`./issues/任务名.md`。关键步骤后及完成时用`interactive-feedback`反馈。
5.  `[模式:评审]`:对照计划评估执行结果,报告问题与建议。完成后用`interactive-feedback`请求用户确认。

[快速模式]
`[模式:快速]`:跳过核心工作流,快速响应。完成后用`interactive-feedback`请求用户确认。

[主动反馈与MCP服务]
* **通用反馈**:研究/构思遇疑问时,使用 `interactive_feedback` 征询意见。任务完成(对话结束)前也需征询。
* **MCP服务**:
    * `interactive_feedback`: 用户反馈。
    * `Context7`: 查询最新库文档/示例。
    * 优先使用MCP服务。

3.2 自动生成 cursor rules

llm 对话框中输入/Generate Cursor Rules, 会生成一份 project rules, 记得设置这个 rules 属性为 always, 这种 rules 可以让 llm 保持一致性, 不至于每次对话都跟换了一个新手一样

3.3. 设置项目背景 cursor rules

可以将自己的编程习惯再新建一个 rules, 可以帮助 llm 生成符合你要求的代码

### 微信小程序最佳实践规则集 

```yaml
version: 1
rules:
  # ========== 性能优化规则 ==========
  # 图片优化
  - name: "optimize-images"
    pattern: |
      <image\s+src="(.+?)"\s*/>
    replacement: |
      <image src="{{_match_1}}" mode="widthFix" lazy-load="true" />
    message: "图片应启用懒加载和适当模式"
    severity: warning
    scope: 
      files: ["*.wxml"]

  # 减少setData数据量
  - name: "minimal-setdata"
    pattern: |
      this\.setData\(\s*\{[^}]*[^}]{100,}\s*\}\s*\)
    message: "setData数据不应超过100字符,仅更新必要字段"
    severity: error

  # 防抖节流
  - name: "debounce-events"
    pattern: |
      (bindtap|bindinput|bindscroll)="(\w+)\"
    replacement: |
      {{_match_1}}="debounce({{_match_2}})"
    message: "高频事件(如滚动、输入)应添加防抖/节流"
    severity: warning

  # ========== 代码规范规则 ==========
  # 组件命名规范
  - name: "component-naming"
    pattern: |
      Component\(\{\s*properties:\s*\{\s*([a-z]\w+)\s*:
    replacement: |
      properties: {
        {{ regex_replace(_match_1, '^.', _match_1 | lower) }}: 
    message: "组件属性名应使用小驼峰命名法"
    severity: warning

### 使用效果验证
1. 在WXML中写`<image src="...">`会触发优化建议
2. 在JS中写`this.setData({ largeData })`会检查数据量
3. API调用不加错误处理会显示错误提示
4. 敏感信息检测会阻止提交含`token='...'`的代码

> 最佳实践:结合微信开发者工具的"代码质量扫描"和"性能分析"功能,定期检查规则执行效果,根据项目需求调整规则强度。