跳到主要内容

面向 Cursor 的 AI 提示工程

AI Prompt Engineering for Cursor

Cursor 不仅仅是一个 IDE 编辑器;它是一个由高级语言模型驱动的智能编码伙伴。Cursor 中 AI 生成的代码、解释和建议的质量在很大程度上取决于您如何与它沟通。本指南教您专门针对 Cursor 环境的提示工程艺术和科学,涵盖有效提示编写、上下文管理、系统提示和可重用模板。

理解 Cursor 的 AI 架构​

在编写提示之前,了解 Cursor 如何处理您的请求至关重要。Cursor 将大型语言模型直接集成到编辑体验中,结合使用:

  • 内联补全:基于光标位置和周围代码的实时建议
  • 聊天界面:用于复杂任务和解释的对话式交互
  • 命令面板操作:对选定代码块的快速 AI 操作
  • Composer:基于高级描述的多文件编辑和生成

每种交互模式都受益于不同的提示策略。内联补全严重依赖本地上下文,而聊天界面允许详细的说明和后续问题。

Cursor 背后的模型理解代码语义、项目结构和常见编程模式。但是,它们不是读心者。清晰、结构化的提示比模糊的请求产生明显更好的结果。

编写有效的提示​

平庸与卓越的 AI 响应之间的差异通常归结为提示质量。在 Cursor 中,有效的提示具有您可以学习一致应用共同特征。

具体且明确​

模糊的提示产生模糊的结果。始终指定您想要的确切行为,包括输入格式、输出格式和边缘情况。

比较同一任务的这两个提示:

模糊:

写一个处理用户的函数。

具体:

编写一个名为 `getActiveUsers` 的 TypeScript 函数,该函数:
- 接受 User 对象数组和 Date 阈值
- 仅返回 lastLoginDate >= threshold 的用户
- 按 lastLoginDate 降序排序结果
- 包含 JSDoc 文档
- 通过返回空数组优雅地处理空数组

具体的提示为 Cursor 提供了足够的约束,使其能够在第一次尝试时生成生产就绪的代码。模糊的提示需要多次后续迭代。

提供上下文和约束​

Cursor 的 AI 在您打开文件的上下文中运行,但提示中的显式上下文可以提高准确性。提及相关技术、框架和架构决策。

当要求 Cursor 生成 React 组件时,请包含:

使用以下技术创建一个用户资料卡片的 React 组件:
- 严格模式的 TypeScript
- 使用 Tailwind CSS 进行样式设置
- 使用 React Query 进行数据获取
- 使用 Zod 进行表单验证
- 为屏幕阅读器提供可访问的 ARIA 标签

此上下文确保生成的代码与您的技术栈一致,而不是使用任意的替代方案。

提示

在 Cursor 的聊天中使用 "@" 提及来引用特定文件、符号或文档。键入 @file.ts 或 @MyComponent 会将这些定义直接包含在提示上下文中,从而提高相关性。

请求代码附带解释​

对于复杂的实现,要求 Cursor 解释其推理。这有助于您验证正确性并从 AI 的方法中学习。

在 React 中实现一个自定义的 useDebounce hook。包括:
1. 完整的 TypeScript 实现
2. 关于清理如何防止内存泄漏的解释
3. 搜索输入的使用示例
4. 为什么这种方法比 useMemo 更适合防抖

生成的响应不仅包括可工作的代码,还包括教育内容,可提高您的理解。

上下文管理策略​

Cursor 的 AI 具有上下文窗口限制,这意味着它在生成响应时只能考虑一定量的文本。高效的上下文管理确保包含最相关的信息。

选择相关上下文​

使用 Cursor 的聊天功能时,AI 会自动包含打开的文件和最近的编辑。但是,您可以通过以下方式优化此功能:

  1. 保持相关文件打开:在处理功能时,保持相关的模型、控制器和测试文件打开,以便 Cursor 了解全貌。

  2. 使用显式选择:在提问之前突出显示特定的代码块。Cursor 优先考虑选定的文本而不是常规文件上下文。

  3. 最小化噪音:在开始复杂的 AI 会话之前关闭不相关的文件。大型配置文件或不相关的模块可能会不必要地消耗上下文预算。

迭代构建上下文​

对于多步骤任务,逐步构建上下文,而不是一次性全部倾倒。

步骤 1:"查看 @models/User.ts 中的 User 模型并识别缺失的验证规则。"

步骤 2:"基于这些验证规则,更新 @schemas/user.ts 中的 Zod 架构。"

步骤 3:"现在为更新后的架构生成涵盖所有边缘情况的单元测试。"

这种迭代方法保持每个提示的重点,同时通过对话历史保持连续性。

注意

Cursor 聊天中的长对话最终可能会超出上下文窗口,导致 AI 忘记早期的指令。对于非常长的任务,定期总结关键决策,或者使用整合的上下文摘要开始新的聊天。

系统提示和角色​

系统提示塑造 AI 的行为、语气和专业水平。虽然 Cursor 没有向用户公开原始系统提示编辑,但您可以通过持久性指令实现类似的效果。

建立编码标准​

在项目或聊天会话开始时,定义您的编码标准:

对于在此项目中生成的所有代码,请遵循以下规则:
- 对所有函数使用具有显式返回类型的 TypeScript
- 优先使用函数式编程模式而不是命令式循环
- 使用 async/await 而不是 Promise 链
- 为所有异步操作包含错误处理
- 遵循现有的命名约定:变量使用 camelCase,类型使用 PascalCase

Cursor 将在同一会话的后续响应中一致地应用这些标准。

基于角色的提示​

为 AI 分配特定角色以获得专家级响应:

作为审查此身份验证中间件的高级安全工程师。
识别潜在的漏洞,包括:
- 定时攻击
- JWT 弱点
- 会话固定风险
- CSRF 绕过向量

为每个发现的问题提供具体的代码修复。

基于角色的提示激活领域特定的知识,并改变 AI 优先处理代码不同方面的方式。

语气和细节调整​

控制响应的冗长性和风格:

提供简洁的要点解释。关注实际影响而不是理论概念。仅在代码示例说明非显而易见的模式时才包含它们。

这在您需要活动开发期间的快速答案而不需要冗长散文时特别有用。

常见任务的提示模板​

可重用的提示模板标准化了您与 Cursor 的交互,并减少了构思请求的心理负担。

代码审查模板​

审查以下代码是否存在:
1. 错误和逻辑错误
2. 性能问题
3. 安全漏洞
4. 类型安全问题
5. 可维护性问题

对于每个问题,请提供:
- 有问题的行
- 为什么这是个问题
- 修正后的版本

要审查的代码:
[在此处粘贴代码]

重构模板​

重构以下代码以改进[具体目标,例如可读性/性能/可测试性]。

要求:
- 保持确切的功能
- 使用[具体模式,例如策略模式/依赖注入]
- 如果逻辑复杂度增加,添加单元测试
- 保留所有现有的 JSDoc 注释

原始代码:
[在此处粘贴代码]

测试生成模板​

使用[测试框架]为[函数/组件名称]生成全面的测试套件。

覆盖要求:
- 正常路径场景
- 边缘情况(null、undefined、空数组、极值)
- 错误处理路径
- 如果适用,异步行为

使用描述性测试名称,遵循以下模式:"当[条件]时应该[预期行为]"。

文档模板​

按照 JSDoc/TSDoc 标准为以下模块生成 API 文档。

包括:
- 每个导出函数/类的描述
- 参数类型和描述
- 返回值描述
- 抛出的异常
- 复杂函数的使用示例

模块代码:
[在此处粘贴代码]

将这些模板存储在项目存储库中的 prompts.md 文件中。当您询问时,Cursor 可以引用它们:"对 @src/utils/auth.ts 使用代码审查模板。"

高级提示技术​

除了基本指令之外,几种高级技术可以解锁 Cursor AI 的更深层次功能。

思维链提示​

对于复杂的问题解决,要求 AI 逐步思考:

实现一个速率限制器,该限制器:
- 使用滑动窗口算法
- 支持按用户和按 IP 限制
- 将计数器存储在具有 TTL 的 Redis 中
- 返回适当的 429 头

在编写代码之前逐步思考算法。考虑:
1. 滑动窗口如何跟踪请求
2. Redis 数据结构选择
3. 竞态条件处理
4. 头计算逻辑

思维链提示通过迫使 AI 在生成实现代码之前阐明其推理来减少逻辑错误。

少样本提示​

提供所需的输入/输出对示例来指导 AI 的输出格式:

将以下错误对象转换为用户友好的消息。遵循以下模式:

输入:{ code: "INVALID_EMAIL", field: "email" }
输出:"请输入有效的电子邮件地址。"

输入:{ code: "PASSWORD_TOO_SHORT", field: "password", minLength: 8 }
输出:"您的密码必须至少为 8 个字符。"

现在转换:
输入:{ code: "USERNAME_TAKEN", field: "username" }
输出:?

少样本提示对于一致性格式化任务(如数据转换、日志解析和消息生成)特别有效。

负面提示​

明确告诉 AI 不要做什么:

为此组件生成一个 CSS 模块。不要:
- 使用内联样式
- 使用 !important 声明
- 添加供应商前缀(由 PostCSS 处理)
- 对字体大小使用像素值(改用 rem)

负面约束防止 AI 可能默认包含的常见反模式。

调试提示​

当代码不按预期工作时,结构化的调试提示帮助 Cursor 比通用的"修复此问题"请求更快地识别问题。

错误分析提示​

运行[操作]时出现以下错误:

[错误消息和堆栈跟踪]

相关代码:
[代码片段]

解释:
1. 此错误的根本原因
2. 为什么它在此特定上下文中发生
3. 修复它的最小代码更改
4. 如何防止将来出现类似错误

行为差异提示​

预期行为:[描述]
实际行为:[描述]

代码:
[代码片段]

识别逻辑偏离预期行为的位置并提供修正后的实现。
提示

使用 Cursor 进行调试时,粘贴完整的错误消息,包括堆栈跟踪。AI 使用行号和文件引用来更准确地定位问题。

评估和迭代提示​

提示工程是一个迭代过程。跟踪哪些提示产生最佳结果并随着时间的推移不断完善它们。

A/B 测试提示​

对于关键的代码生成任务,尝试多种提示变体:

变体 A:

编写一个计算分页偏移量的函数。

变体 B:

编写一个具有以下参数的 TypeScript 实用函数 `calculatePagination`:
- page: number(从 1 开始,默认为 1)
- pageSize: number(默认为 20,最大 100)
返回:{ offset: number; limit: number }

包含对无效输入抛出 RangeError 的验证。

比较输出并保留产生最完整、正确结果的模板。

构建提示库​

当您发现有效的提示时,将它们组织成个人或团队库:

# Cursor 提示库

## React 组件
- `react-component`:创建具有 props 接口的 TypeScript React 组件
- `react-hook`:生成具有清理逻辑的自定义 hook

## 后端
- `express-route`:生成具有验证的 Express 路由处理程序
- `prisma-query`:编写具有适当错误处理的 Prisma 查询

## 测试
- `unit-test`:为纯函数生成 Jest 测试
- `integration-test`:为 API 端点创建 supertest 套件

与您的团队分享此库,以标准化整个代码库的 AI 交互。

结论​

掌握 Cursor 中的提示工程将 AI 从偶尔的便利转变为开发工作流程的倍增器。通过编写具体的提示、高效地管理上下文、使用系统级指令和构建可重用的模板,您可以持续获得更高质量的代码和解释。

本指南的关键要点:

  • 具体性胜过简洁性;始终包含约束和上下文
  • 通过选择相关文件并迭代构建来主动管理上下文
  • 在对话开始时建立编码标准
  • 使用基于角色的提示进行专家级分析
  • 为重复性任务创建模板以节省时间
  • 应用思维链和少样本提示等高级技术
  • 迭代提示并构建有效模式的个人库

学习提示工程所投入的时间将通过更快的开发、更少的错误和 Cursor AI 生成的更可维护的代码来获得回报。