本指南分享了我在使用 Cursor IDE 开发软件项目时的实践方法,结合 Gemini(gemini-exp-1206、gemini-2.0-flash-exp)和 Claude(3.5 sonnet 和 3 opus),高效开发并维护代码质量。

1. 项目初始化:为 AI 协作打好基础

可以把你的项目想象成一个井然有序的工作坊,你和 AI 协作者(Gemini 和 Claude)将在这里一起构建出令人惊艳的作品。而第一步,就是要把工作坊搭建好。

1.1 使用 .cursorrules 文件定义协作规则

就像任何一个工作坊都需要一套规章制度,你的 AI 协作者也同样需要清晰的指引。你应该在项目根目录下创建一个 .cursorrules 文件。这个文件就像“宪法”,定义了 AI 应该如何与你的代码互动。

为什么要这么做: 这可以确保你和 AI 在优先级、代码规范和任务处理方式上达成共识。

示例 .cursorrules

  1. {
  2. "rules": {
  3. "context_initialization": {
  4. "description": "每次交互的起点",
  5. "steps": [
  6. "ALWAYS read `.notes/project_overview.md` and `.notes/task_list.md`"
  7. ]
  8. },
  9. "operational_protocol": {
  10. "description": "任务处理方式",
  11. "before_action": [
  12. "Create a MECE task breakdown"
  13. ],
  14. "code_changes": [
  15. "Read relevant code sections before editing",
  16. "Preserve existing functionality",
  17. "Maintain type safety"
  18. ]
  19. },
  20. "safety_requirements": [
  21. "NEVER break type safety",
  22. "ALWAYS maintain proper error handling",
  23. "ALWAYS document new code"
  24. ],
  25. "priorities": [
  26. {
  27. "source": ".notes/",
  28. "weight": 1.0
  29. }
  30. ],
  31. "modes": {
  32. "base": {
  33. "description": "适用于常规任务"
  34. },
  35. "enhanced": {
  36. "description": "用于复杂问题"
  37. }
  38. },
  39. "project_directives": {
  40. "name": "my_project",
  41. "ai_first": true
  42. }
  43. }
  44. }

1.2 使用 .cursorignore 控制文件可见性

你可以通过 .cursorignore 文件来告诉 AI 哪些文件不需要处理,类似于 Git 的 .gitignore

为什么要这么做: 避免让 AI 处理无关文件,提高效率、减少干扰。

示例 .cursorignore

  1. /node_modules
  2. /build
  3. /temp
  4. .DS_Store

1.3 用 .notes 构建信息中心

每个项目都需要一个“信息中枢”。你可以创建一个 .notes 目录,专门用于存放项目相关文档、会议记录、架构图、AI 对话日志等。这就像是你项目的大脑或知识库。

为什么要这么做: 可以确保你和 AI 拥有一致的项目认知和上下文。

.notes 目录中的关键文件:

  • project_overview.md:描述项目目标与整体架构。
  • task_list.md:记录任务清单、状态、优先级及备注。
  • directory_structure.md:自动更新的项目目录结构概览,方便 AI 理解代码组织方式。
  • meeting_notes.md:你与 AI 的交互记录,包含问题、回答、决策等内容。

2. 管理 .notes 和共享上下文

就像团队协作一样,如果你想与 AI 高效协作,大家必须拥有共同的项目理解。这时候就要用好 Markdown 文档 作为共享记事本。

2.1 填写 project_overview.md

这个文档就像你的“电梯演讲”,要简洁地概括项目目标、架构,最好还能附上一些用户旅程的示例。

示例:

  1. # Project Overview
  2. ## Goal
  3. 构建一个 Web 应用,用户可以创建和管理待办事项列表。
  4. ## Architecture
  5. - **Frontend:** 使用 TypeScript React 应用
  6. - **Backend:** 基于 Node.js 和云数据库的 Serverless API
  7. - **State Management:** 基于 React hooks 的自定义状态管理方案
  8. ## Key Features
  9. - 用户身份认证
  10. - 创建、编辑、删除待办事项
  11. - 标记任务为完成
  12. - 实时同步

2.2 创建 task_list.md

这是你的项目“任务列表”,应记录所有任务的状态、优先级和备注。

示例:

  1. # Task List
  2. ## High Priority
  3. - [ ] 实现用户登录流程。(**状态:**进行中,**分配给:**Gemini,**备注:**正在开发登录组件)
  4. - [ ] 设计数据库 schema。(**状态:**待办,**分配给:**Claude,**备注:**需要考虑可扩展性)
  5. ## Medium Priority
  6. - [ ] 创建待办事项的基础 UI。(**状态:**待办,**分配给:**Gemini,**备注:**等待登录完成)
  7. ## Low Priority
  8. - [ ] 增加任务分类功能。(**状态:**待办,**分配给:**暂无,**备注:**可后续实现)
  9. ## Completed
  10. - [x] 搭建项目结构
  11. - [x] 创建头部和底部的基础 React 组件

2.3 生成 directory_structure.md

这个文件用于描述项目的目录结构。你可以手动写,也可以用脚本自动生成。

手动示例:

  1. # Directory Structure
  2. - **components/**: 可复用的 UI 组件(例如 Button、Input、List)
  3. - **hooks/**: 自定义 React hooks(例如 useAuth、useData)
  4. - **lib/**: 工具函数和 API 客户端
  5. - **pages/**: 页面组件(例如 Home、Login、Register)
  6. - **styles/**: 全局样式与主题定义

自动脚本(PowerShell 示例):

  1. # 保存为 update_directory.ps1
  2. $projectRoot = "."
  3. $outputFile = "./.notes/directory_structure.md"
  4. function Get-FormattedDirectory {
  5. param ([string]$path, [int]$indent = 0)
  6. $indentString = " " * $indent
  7. $content = ""
  8. foreach ($item in Get-ChildItem -Path $path -Force) {
  9. if ($item.PSIsContainer) {
  10. $content += "$indentString- **$($item.Name)/**`n"
  11. $content += Get-FormattedDirectory -path $item.FullName -indent ($indent + 1)
  12. } else {
  13. $content += "$indentString- $($item.Name)`n"
  14. }
  15. }
  16. return $content
  17. }
  18. $markdownContent = @"
  19. # Current Directory Structure
  20. ## Core Components
  21. $(Get-FormattedDirectory -path \$projectRoot)
  22. "@
  23. $markdownContent | Out-File -FilePath $outputFile -Encoding UTF8
  24. Write-Host "Directory structure updated in $($outputFile)"

3. 提示词技巧与对话聚焦

现在你已经搭建好了数字化“工作坊”,文档让你、Gemini 和 Claude 保持同频,就可以开始使用 Composer(普通模式)与 Gemini 协作了。这正是“提示词艺术”的用武之地。

3.1 为什么上下文很重要?

  • 聚焦: 上下文就像聚光灯,帮助 AI 只关注相关代码,忽略无关内容。
  • 准确: 明确的项目目标和架构能提高 AI 回答的正确性。
  • 一致: 帮助 AI 保持架构一致性,避免误改或引入 bug。

3.2 使用 @ 精准聚焦 AI

在 Cursor 中,@ 是你给 Gemini 或 Claude 提供上下文的核心工具,相当于在对话中“指”向某个文件或代码片段。

示例:

  • @components/Button.tsx:告诉 Gemini 聚焦于这个组件。
  • @.notes/task_list.md:请 Claude 查看当前任务和优先级。
  • @.notes/project_overview.md:提醒 Gemini 我们的整体目标和架构。

3.3 让 AI 的回答更准确、连贯

  • 具体提问: 避免模糊问题,直接点出文件和函数。

    • ✅ “Gemini,请问如何优化 @components/LoginForm.tsx 中的 handleSubmit 函数?”
  • 使用 MECE: 把复杂任务分解成互不重叠、共同覆盖的小任务。

    • 例如:Claude,帮我拆解登录流程:

      1. 用户输入处理
      2. 调用 API
      3. 响应处理
      4. 状态更新
  • 迭代对话: 不要期待 AI 一次就给出完美答案。反复提示、反馈、修正。
  • 追问原因: 让 AI 解释为什么推荐某种方法。
  • 比较方案: 探讨不同方法的优劣。
  • 假设场景: 提出 “what if” 问题来检验 AI 的应变能力。
  • 回顾上下文: 使用 “remember when” 提示,帮助 AI 建立长远记忆。

4. 高阶技巧:将协作提升到新高度

  • 维护“意识流”: 把所有对话记录保存在 .notes/meeting_notes.md,让 AI 也主动更新这些记录。
  • 利用不同模式:.cursorrules 中定义的 “base” 和 “enhanced” 模式来处理不同复杂度的任务。
  • 大胆重启: 如果对话混乱,及时重启一个新的对话,有时比纠缠原话更高效。

5. 总结

把 AI 当成真正的协作者,为其提供清晰的协作规则、明确的上下文、合理的提示方式,你就能高效驾驭大型代码库。

我过去半年用这个方法开发了 70 多个项目,几乎没有遇到卡顿问题。记住:用 AI 来帮助 AI 更好地帮助你。这正是 Cursor 的魔力所在 —— 它就像是 AI 的“数字身体”。