跳到主要内容

使用 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,记得我们讨论过的总体目标和架构吗?"

3.3. 用准确性和一致性确保 AI 回答

  • 具体化: 提出直接、具体的问题。避免模糊或含糊的语言。
    • 不要: "如何改进这段代码?"
    • 而是: "Gemini,我如何让 @components/LoginForm.tsx 中的 handleSubmit 函数更高效?"
  • 使用 MECE: MECE(互斥穷尽)是一个强大的问题解决技术。将复杂任务分解为更小的、不重叠的子任务。
    • 示例: "Claude,让我们用 MECE 方法分解用户认证流程的实现:
      1. 用户输入: 处理用户名和密码输入。
      2. API 调用: 向认证 API 发送凭证。
      3. 响应处理: 处理 API 响应(成功或错误)。
      4. 状态更新: 根据认证结果更新应用状态。
        你对这个分解有什么想法?有什么建议吗?"
  • 迭代和改进: 不要期望第一次就得到完美的结果。与 AI 进行迭代对话。对其建议提供反馈,提出澄清问题,根据其响应改进你的提示。
    • 示例: "Gemini,你优化 handleSubmit 函数的建议很好,但没有解决竞态条件的问题。我们如何修改它来处理这种情况?"
  • 问"为什么": 鼓励 AI 解释其推理。这帮助你理解其思维过程并识别潜在的误解。
    • 示例: "Claude,为什么你推荐使用这种特定的状态管理方法,而不是 @.notes/project_overview.md 中概述的方法?"