使用 Cursor、Gemini 和 Claude 掌握大型代码库:实用指南
1. 项目设置:为 AI 协作奠定基础
将你的项目想象成一个组织良好的工作室,你和你的 AI 协作者(Gemini 和 Claude)将在这里创造出令人惊叹的作品。第一步是正确设置这个工作环境。
1.1. 使用 .cursorrules
定义交互规则
就像任何工作室都需要规则一样,你的 AI 协作者也需要指导方针。在项目根目录创建一个 .cursorrules
文件。这个文件就像一部宪法,定义了 AI 应该如何与你的代码交互。
原因: 这确保了每个人(你和 AI)在优先级、编码标准和任务处理方法上达成一致。
.cursorrules
示例:
{
"rules": {
"context_initialization": {
"description": "每次交互的起点",
"steps": [
"始终阅读 `.notes/project_overview.md` 和 `.notes/task_list.md"
]
},
"operational_protocol": {
"description": "如何处理任务",
"before_action": [
"创建 MECE 任务分解"
],
"code_changes": [
"在编辑前阅读相关代码段",
"保持现有功能",
"维护类型安全"
]
},
"safety_requirements": [
"永远不破坏类型安全",
"始终保持适当的错误处理",
"始终为新代码添加文档"
],
"priorities": [
{
"source": ".notes/",
"weight": 1.0
}
],
"modes": {
"base": {
"description": "用于常规任务"
},
"enhanced": {
"description": "用于复杂问题"
}
},
"project_directives": {
"name": "my_project",
"ai_first": true
}
}
}
1.2. 使用 .cursorignore
控制文件可见性
使用 .cursorignore
告诉你的 AI 助手需要忽略哪些内容,类似于使用 .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
和共享上下文
想象你正在与一个团队合作。为了有效协作,你需要确保每个人对项目都有共同的理解,就像 scrum/kanban/项目计划一样。这就是使用 markdown 文档作为共享笔记本的原因。
2.1. 填写 project_overview.md
这个文档就像你项目的"电梯演讲"。它应该简明扼要地概述你的项目是什么、目标是什么、高层架构是什么,以及(可选但强烈推荐)一些用户旅程示例。
示例:
# 项目概述
## 目标
构建一个允许用户创建和管理待办事项列表的 Web 应用。
## 架构
- **前端:** 使用 TypeScript 的 React 应用。
- **后端:** 使用 Node.js 和云数据库的无服务器 API。
- **状态管理:** 使用基于 React hooks 的自定义状态管理解决方案。
## 主要功能
- 用户认证
- 创建、编辑和删除待办事项列表
- 标记任务完成
- 实时同步
2.2. 创建 task_list.md
这个文件是你项目的"待办事项列表"。它应该跟踪所有任务、它们的状态、优先级和相关说明。
示例:
# 任务列表
## 高优先级
- [ ] 实现用户认证流程。(**状态:** 进行中,**分配给:** Gemini,**说明:** 正在处理登录组件。)
- [ ] 设计数据库架构。(**状态:** 待办,**分配给:** Claude,**说明:** 需要考虑可扩展性。)
## 中优先级
- [ ] 创建待办事项列表创建的基本 UI。(**状态:** 待办,**分配给:** Gemini,**说明:** 等待认证完成。)
## 低优先级
- [ ] 添加任务分类支持。(**状态:** 待办,**分配给:** 无,**说明:** 可以稍后实现。)
## 已完成
- [x] 设置项目结构。
- [x] 创建页眉和页脚的基本 React 组件。
2.3. 生成 directory_structure.md
这个文件提供了项目布局的地图。你可以手动创建它或使用脚本自动生成。
示例(手动):
# 目录结构
- **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
}
# 生成 markdown 文件内容
$markdownContent = @"
# 当前目录结构
## 核心组件
$(Get-FormattedDirectory -path $projectRoot)
"@
# 输出到文件
$markdownContent | Out-File -FilePath $outputFile -Encoding UTF8
Write-Host "目录结构已更新到 $($outputFile)"
3. 提示词掌握和对话聚焦
现在你已经通过上面创建的文档建立了一个数字"工作室",让你、Claude 和 Gemini 都在同一页面上,是时候开始在 Normal 模式下使用 Composer 和 Gemini 了。这就是提示词艺术发挥作用的地方。
3.1. 为什么上下文至关重要?
- 聚焦: 就像聚光灯一样,上下文帮助 AI 聚焦于代码库的相关部分,忽略无关的细节。
- 准确性: 对项目目标、状态和架构的共同理解确保响应准确且符合你的意图。
- 一致性: 你可以帮助 AI 维护项目的架构完整性,防止它做出可能破坏现有功能或引入不一致的更改。
3.2. 使用 @
聚焦 AI
@
符号是你在 Cursor 中为 Gemini 和 Claude 提供上下文的主要工具。它就像在对话中指向特定文档或代码段。
示例:
@components/Button.tsx
: "嘿 Gemini,让我们关注这个特定组件。"@.notes/task_list.md
: "Claude,查看一下当前的任务列表和优先级。"@.notes/project_overview.md
: "Gemini,记得我们讨论过的总体目标和架构吗?"