本指南分享了我在使用 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
:
{
"rules": {
"context_initialization": {
"description": "每次交互的起点",
"steps": [
"ALWAYS read `.notes/project_overview.md` and `.notes/task_list.md`"
]
},
"operational_protocol": {
"description": "任务处理方式",
"before_action": [
"Create a MECE task breakdown"
],
"code_changes": [
"Read relevant code sections before editing",
"Preserve existing functionality",
"Maintain type safety"
]
},
"safety_requirements": [
"NEVER break type safety",
"ALWAYS maintain proper error handling",
"ALWAYS document new code"
],
"priorities": [
{
"source": ".notes/",
"weight": 1.0
}
],
"modes": {
"base": {
"description": "适用于常规任务"
},
"enhanced": {
"description": "用于复杂问题"
}
},
"project_directives": {
"name": "my_project",
"ai_first": true
}
}
}
1.2 使用 .cursorignore
控制文件可见性
你可以通过 .cursorignore
文件来告诉 AI 哪些文件不需要处理,类似于 Git 的 .gitignore
。
为什么要这么做: 避免让 AI 处理无关文件,提高效率、减少干扰。
示例 .cursorignore
:
/node_modules
/build
/temp
.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
这个文档就像你的“电梯演讲”,要简洁地概括项目目标、架构,最好还能附上一些用户旅程的示例。
示例:
# Project Overview
## Goal
构建一个 Web 应用,用户可以创建和管理待办事项列表。
## Architecture
- **Frontend:** 使用 TypeScript 的 React 应用
- **Backend:** 基于 Node.js 和云数据库的 Serverless API
- **State Management:** 基于 React hooks 的自定义状态管理方案
## Key Features
- 用户身份认证
- 创建、编辑、删除待办事项
- 标记任务为完成
- 实时同步
2.2 创建 task_list.md
这是你的项目“任务列表”,应记录所有任务的状态、优先级和备注。
示例:
# Task List
## High Priority
- [ ] 实现用户登录流程。(**状态:**进行中,**分配给:**Gemini,**备注:**正在开发登录组件)
- [ ] 设计数据库 schema。(**状态:**待办,**分配给:**Claude,**备注:**需要考虑可扩展性)
## Medium Priority
- [ ] 创建待办事项的基础 UI。(**状态:**待办,**分配给:**Gemini,**备注:**等待登录完成)
## Low Priority
- [ ] 增加任务分类功能。(**状态:**待办,**分配给:**暂无,**备注:**可后续实现)
## Completed
- [x] 搭建项目结构
- [x] 创建头部和底部的基础 React 组件
2.3 生成 directory_structure.md
这个文件用于描述项目的目录结构。你可以手动写,也可以用脚本自动生成。
手动示例:
# Directory Structure
- **components/**: 可复用的 UI 组件(例如 Button、Input、List)
- **hooks/**: 自定义 React hooks(例如 useAuth、useData)
- **lib/**: 工具函数和 API 客户端
- **pages/**: 页面组件(例如 Home、Login、Register)
- **styles/**: 全局样式与主题定义
自动脚本(PowerShell 示例):
# 保存为 update_directory.ps1
$projectRoot = "."
$outputFile = "./.notes/directory_structure.md"
function Get-FormattedDirectory {
param ([string]$path, [int]$indent = 0)
$indentString = " " * $indent
$content = ""
foreach ($item in Get-ChildItem -Path $path -Force) {
if ($item.PSIsContainer) {
$content += "$indentString- **$($item.Name)/**`n"
$content += Get-FormattedDirectory -path $item.FullName -indent ($indent + 1)
} else {
$content += "$indentString- $($item.Name)`n"
}
}
return $content
}
$markdownContent = @"
# Current Directory Structure
## Core Components
$(Get-FormattedDirectory -path \$projectRoot)
"@
$markdownContent | Out-File -FilePath $outputFile -Encoding UTF8
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
函数?”
- ✅ “Gemini,请问如何优化
使用 MECE: 把复杂任务分解成互不重叠、共同覆盖的小任务。
例如:Claude,帮我拆解登录流程:
- 用户输入处理
- 调用 API
- 响应处理
- 状态更新
- 迭代对话: 不要期待 AI 一次就给出完美答案。反复提示、反馈、修正。
- 追问原因: 让 AI 解释为什么推荐某种方法。
- 比较方案: 探讨不同方法的优劣。
- 假设场景: 提出 “what if” 问题来检验 AI 的应变能力。
- 回顾上下文: 使用 “remember when” 提示,帮助 AI 建立长远记忆。
4. 高阶技巧:将协作提升到新高度
- 维护“意识流”: 把所有对话记录保存在
.notes/meeting_notes.md
,让 AI 也主动更新这些记录。 - 利用不同模式: 按
.cursorrules
中定义的 “base” 和 “enhanced” 模式来处理不同复杂度的任务。 - 大胆重启: 如果对话混乱,及时重启一个新的对话,有时比纠缠原话更高效。
5. 总结
把 AI 当成真正的协作者,为其提供清晰的协作规则、明确的上下文、合理的提示方式,你就能高效驾驭大型代码库。
我过去半年用这个方法开发了 70 多个项目,几乎没有遇到卡顿问题。记住:用 AI 来帮助 AI 更好地帮助你。这正是 Cursor 的魔力所在 —— 它就像是 AI 的“数字身体”。