核心 Core

Tab代码自动补全 / Autocomplete with Tab

操作快捷键
接受建议Tab
拒绝Esc
逐词接受Ctrl+Arrow-Right

🔍工作原理

  • 上下文窗口中的代码被加密发送到后端
  • 后端解密后读取上下文
  • Cursor Tab模型 预测代码建议,并返回给客户端在编辑器中显示

内联编辑选中内容 / Inline Edit a selection

操作快捷键
打开内联浮窗Ctrl+K
切换输入焦点Ctrl+Shift+K
提交Enter
取消Ctrl+Shift+BackSpace
快速提问Alt+Enter
发送到聊天Ctrl+L

内联模式

模式描述
Edit Selection / 选区编辑针对选中代码修改
Edit Full File / 全文件编辑整个文件范围的更改
Quick Question / 快速问答针对选中代码提问
Send to Chat / 发送到聊天发送到聊天,支持更高级的Agent功能

默认上下文

内联模式也支持使用 @符号 ,添加默认上下文。

上下文类型可以是:

  • 相关文件 / @Files
  • 最近查看的代码 / @Code
  • 相关信息 / @Docs&Web
  • 相关代码定义 / @Definitions

终端内联编辑

  • 终端 中按快捷键 Ctrl+K
  • 描述希望执行的操作,可以生成相应的命令

与Agent聊天 / Chat with Agent

Cursor上限和下限跨度最大的功能

  • 上到串通工作流
  • 下到联网查问题
  • 高到MCP上下文
  • 低到CMD控制台

Agent后台处理 / Handoff word to Background Agent

  • 用户和Cursor异步并行工作
  • 可以通过编辑器或外部集成(如Slack)访问
  • 目前还没有用到,有需要参考文档

编写规则 / Write a rule

  • 创建 mdc文件
  • 定义一些规则,相当于通用持久记忆

MCP服务器 / Set up an MCP server

  • 集成外部工具的模型上下文协议
  • 连接数据库、API和文档源

Tab

  • 自动补全多行和代码块
  • 在文件内和跨文件跳转到下一个自动补全建议

Agent

  • Agent相当于一个虚拟助理,能够根据目标、规则和环境做出决策和行动
  • 对于Cursor Agent,环境就是能够读取到的代码和文件内容

Background Agent

  • 一边工作一边异步运行任务
  • 可以通过编辑器或外部集成(如Slack)访问

Inline Edit

  • 精简版Agent
  • 针对选中代码块进行编辑

Chat

传统对话式智能体

Rules

  • 定义AI行为的自定义指令。
  • 设置编码标准、框架偏好

Memory

  • 需要持久存储的上下文和对话
  • 是另一种形式的rules

记忆如何创建

Sidecar观察

  • 有一个独立的模型,观察对话并自动提取记忆
  • 在后台被动进行
  • 后台生成的记忆需要用户批准才能保存,确保对内容的信任和控制

工具调用

  • 当用户明确要求Agent记住某些内容
  • 或当它注意到应该为未来的会话保留重要信息时
  • Agent可以直接使用工具调用创建记忆
管理记忆

Cursor Setting > Rules 中管理记忆

Indexing

  • 当打开一个项目时,Cursor开始学习该项目的代码,即“索引”
  • 打开项目时,索引自动开始
  • 对代码库进行语义分析,支持代码搜索、引用查找和上下文感知建议

MCP

  • 集成外部工具的模型上下文协议
  • 连接数据库、API和文档源

模型

  • 用于代码生成不同的AI模型
  • 每个模型具有不同的速度和能力特性

核心:🤖智能体

模式 Modes

Agent

  • 自主探索、多文件编辑
  • 权限:所有工具

Ask

  • 只读探索、无自动更改
  • 权限:搜索工具

Manual

  • 直接文件编辑、具有明确控制
  • 权限:编辑工具
  • 只编辑明确选择的文件
  • 在确切知道要编辑什么时效果最佳,选择正确的文件并给出清晰的指令

Custom

  • 用户定义的功能
  • 对特定的工具组合和指令创建自定义模式

工具 Tools

在Custom模式下,智能体的这些工具可以被自由的启用/禁用

应用更改 Apply Changes

应用、接受或拒绝聊天中的代码建议

原理简述

Apply是一个专门的Cursor模型

  • 专门接收Agent生成的代码,并集成到文件中
  • Apply不生成代码,只负责集成
  • 可以处理多个文件和大型代码库的更改

审查差异 Review Diffs

审查和管理由AI代理生成的代码更改

  • 逐文件审查
  • 选择性接受
  • 审查更改(review changes)查看更改的完整差异

聊天标签页 Chat Tabs

  • 可以同时运行多个对话
  • 每个标签页都维护自己的上下文、历史记录和模型选择

检查点 Checkpoints

自动快照跟踪Agent更改,可以进行restore恢复

终端集成 Terminal Integration

  • 可以使用Agent执行终端命令、监控输出并处理多步骤流程
  • 为可信工作流配置自动运行

聊天历史 Chat History

回顾之前讨论、跟踪编码会话、参考早期聊天上下文

导出聊天 Export Chats

  • 导出为 markdown格式
  • 与团队成员分享解决方案、或从编码会话中创建知识库

规则 Rules

  • 可以使用rules,为Agent的行为定义自定义指令
  • 有助于维护编码标准、强制执行模式、个性化Agent

智能体:💬聊天

标签页 Tabs

  • 沙盒隔离: 每个标签页的对话历史、上下文、模型选择独立

  • 冲突: 多个标签页编辑相同的文件时,系统会提示解决冲突(和git merge相似)

  • 引用其他聊天记录: 使用 Past Chats 来包含其他标签页或者之前绘画的上下文

💡建议

  • 每个标签页使用一个任务,提供清晰的初始描述
  • 关闭已完成的标签页以保持工作区整洁

检查点 Checkpoints

  • 用途: 在Agent更改后保存和恢复之前的状态
  • 提示: 检查点不是版本控制,还是需要使用git来保存永久历史记录

🔍工作原理

  • 本地存储
  • 仅跟踪Agent更改
  • 自动清理(在当前会话和最近的历史记录中保存)

导出 Export

导出内容(Markdown格式)

  • 所有消息和响应
  • 语法高亮代码块
  • 文件引用和上下文
  • 按时间顺序的对话流程

💡注意

导出时请检查敏感数据:API密钥、内部URL、专有代码、个人信息等

复制 Duplicate

  • 从对话中的任意点创建分支,选择 Duplicate Chat
  • 到该时间点的上下文会被保留,原始对话保持不变
  • 两个聊天都维护各自独立的历史记录

历史记录 History

  • 历史聊天记录可以打开、删除、重命名
  • 记录会存储在本机器 SQLite数据库
  • 后台代理: 不在常规的历史记录中,而是存储在远程数据库中
  • 引用过往聊天记录: @Past Chats

摘要功能 Summarization

  • 聊天中长对话的上下文管理
  • Cursor会自动摘要和管理上下文,保持聊天的高效

🔍工作原理

  • 当对话变得越来越长时,Cursor会对比较旧的消息进行摘要(压缩)
  • 对文件和文件夹,Cursor使用另一种处理方式:智能压缩
  • Cursor会根据文件大小和可用上下文空间确定呈现它们的最佳方式

文件压缩的几种情况:

  • 压缩会向模型显示关键的结构元素,如函数签名、类、方法。
  • 模型有需要时展开特定文件
  • 最大化了对可用上下文窗口的有效利用

文件太大而无法完整包含,压缩也不行,模型只能获取到文件名

项目太大无法包含在上下文窗口

智能体:🧾规划

Agent如何通过规划和管理复杂任务

  • 提前规划
  • 结构化的待办事项列表、消息队列

🗒️Agent待办事项

  • 将较长的任务分解为可管理的步骤
  • 建立依赖关系?
  • 结构化计划会随工作进展而更新

🔍工作原理

  • 自动为复杂任务创建待办事项列表
  • 每个项目都可以依赖于其他任务
  • 列表随工作进展实时更新
  • 已完成的任务会自动标记为完成

可见性

💡注意

最好清楚地描述最终目标,让Agent了解完整范围,才能创建更准确的任务分解

使用队列

  • 当Agent正在工作时,输入下一个指令
  • Enter将其添加到队列中
  • 消息按顺序显示在活动任务下方
  • 点击箭头可以重新排列队列消息
  • Agent会在完成后按顺序处理它们
  • 覆盖队列:强制推送消息,会绕过队列立即执行

智能体:🔧工具

搜索 Search (搜索代码库/网络以查找相关信息 )

工具名描述
读取文件/Read files最多250行,最大模式下为750行
列出目录/List directory只读取目录结构,不读取文件内容
代码库/Codebase在已索引代码库中执行语义搜索
Grep在文件中搜索确切的关键词或模式
搜索文件/Search files使用模糊匹配按名称查找文件
网络/Web生成搜索查询并执行网络搜索
获取规则/Fetch rules根据类型和描述检索特定的规则

编辑 Edit(对文件和代码库进行特定编辑)

工具名描述
编辑和重新应用/Edit & Reapply文件编辑并自动应用
删除文件/Delete file删除文件

运行 Run(与终端进行交互)

  • Cursor可以运行终端命令并监控输出
  • Cursor使用默认的终端配置文件
    • 修改中端配置文件:Terminal:Select Default Profile

MCP

可以使用配置的MCP服务器与外部服务进行交互,例如数据库或第三方API

高级选项

工具名描述
自动应用编辑/Auto-apply Edits自动应用编辑无需手动确认
自动运行/Auto-run自动执行终端命令并接受编辑,适用于运行测试套件和验证更改
安全防护/Guardrails一大堆允许配置,来确保哪些工具可以自动执行
自动修复错误/Auto-fix Errors当Agent遇到代码检查错误和警告时自动解决

核心:🚩规则

规则介绍

  • 通过可重用的作用域指令控制Agent模型的行为
  • 可以视为项目的持久上下文、偏好设置或工作流程
  • **规则适用范围:**为Agent和内联编辑提供系统级指令(tab不适用)

规则类型

  • 存储在 .cursor/rules
  • 受版本控制作用于代码库
  • 可以使用路径模式进行规则限定/手动调用/基于相关性包含
  • 嵌套规则:
    • 子目录可以包含自己的 .cursor/rules 目录,范围限定在该文件夹内
    • 嵌套规则会根据项目层级自动附加

💡可以使用Rules处理的场景

  • 编码关于代码库的领域特定知识
  • 自动化项目特定的工作流程或模版
  • 标准化样式或架构决策
  • 全局应用于Cursor环境
  • 设置中定义并始终生效
  • 比较适合设置首选的沟通风格或编码约定

🔍作用原理

  • 提供持久的、可重用的上下文
  • 应用时,规则内容会包含在模型上下文的开始部分

创建规则

规则结构

MDC 编写,支持元数据和内容格式

属性 Property

属性 描述
description 规则描述
globs 作用域
alwaysApply 应用范围

规则作用类型 Rule Type

属性 描述
Always 始终包含在模型上下文中
Auto Attached 引用匹配glob模式的文件时包含
Agent Requested 由AI决定是否包含,因此必须提供描述
Manual 仅在使用@ruleName显式提及时包含

创建规则

创建方式1

Cursor Settings > Rules 可以看到并管理所有规则

创建方式2

New Cursor Rule 命令

创建方式3

/Generate Cursor Rules 命令,根据当前和智能体的对话,生成规则

案例

这里Cursor文档里提供了几个规则标准,还挺有意思的。
还有更多示例可以从提供商、框架、社区贡献的在线众包集合和储存库中找到。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
---
alwaysApply: true
globs:
description: 自动化开发工作流程和文档生成
---
此规则自动化应用分析:
当被要求分析应用时:
1. 使用 npm run dev 运行开发服务器
2. 从控制台获取日志
3. 建议性能改进
此规则帮助生成文档:
通过以下方式帮助起草文档:
- 提取代码注释
- 分析README.md
- 生成markdown文档

💡建议

  • 规则应该是专注的、可操作的、有明确范围的
  • 保持规则在500行以内
  • 将大型规则拆分为多个可组合的规则
  • 提供具体的实例或引用文件
  • 避免模糊指导,编写规则时要像清晰的内部文档一样
  • 在聊天中重复提示时重用规则

上下文 Context

上下文不足会导致幻觉或效率低下,而过多的上下文会稀释信号。找到合适的平衡点以获得最佳效果

❔什么是上下文

答:上下文是指提供给模型的信息

模型随后使用这些信息来预测后续信息

有两种类型的上下文:

状态上下文 State Context

  • 对当下状态的描述
  • 描述性
  • “这是一张新的设计图纸,对现有的颜色主题做了一些调整”

意图上下文 Intent Context

  • 用户希望达到的目标
  • 规定性
  • “我需要你按照这张图纸,修改界面的颜色样式”

缺少上下文时,Agent可能做出的反映:

反向对应:幻觉 Hallucination

模型在缺乏足够上下文情况下,生成看似合理但事实上虚构的内容

User:秦始皇最近缺钱吗?
AI:是的,他目前正在筹备修建新的长城项目,遇到资金短缺的情况非常正常…

正向对应:上下文感知

Agent尝试通过搜索代码库、读取文件和调用工具自行收集上下文。

Cursor的核心构建理念即:上下文感知,旨在最大程度减少用户的干预

🕊️上下文使用建议

清晰表达

清晰表达状态 (当下情况)意图 (希望达成)

精确定位

使用 @符号 进行精准上下文定位

总结经验

重复使用的知识可以总结为规则,成为长期记忆

对外交流

通过 MCP 来连接外部系统

上下文:代码库索引

  • 通过为每个文件计算嵌入向量来索引代码库
  • 如果已索引代码库 6周 不活跃后会被删除
  • 检查索引状态: Cursor Setting > Indexing & Docs

配置项

  • 忽略文件( .gitignore.cursorignore
    • 提示: 忽略大型内容文件可以提高答案准确性
  • 查看已索引文件: View included files

多根工作区

  • 所有代码库都会自动建立索引
  • AI可用每个代码库的上下文
  • .cursor/rules 在所有文件夹中都有效

PR搜索

通过让历史变更可搜索和通过AI访问,帮助立即代码库的演进过程

🔍工作原理

  • 自动索引所有已合并的PR,来自仓库记录
  • 摘要会出现在语义搜索结果中
  • 通过智能过滤来优先显示最近的变更
  • Agent可以使用@获取PR、提交、问题或分支到上下文中
    • @[PR 编号]
    • @[commit hash]
    • @[branch name]
  • 支持平台有限,目前主要是 githubbitbucket

上下文:忽略文件

配置文件

  • .cursorignore
  • .cursirindexingignore
  • 仅从索引中排除文件,文件可以被AI访问,但不会出现在代码库搜索中

配置方式

全局忽略文件

Settings > Global Cursor Ignore List

配置.cursorignore

在根目录中使用 .gitignore 语法创建 .cursorignore 文件

默认忽略文件
  • .gitignore 中的文件
  • 一些默认忽略列表(文档里有)
  • .cursorignore 中可以使用 !前缀 覆盖
否定模式限制
  • ! 为前缀
  • 如果父目录通过 * 被排除,则无法重新包含文件 (好微妙…)
  • 建议: 显式排除嵌套目录

阻止范围

  • index
  • tabagentinline edit
  • @
💡注意

Agent发起的工具调用(终端/MCP)无法阻止

为什么要忽略

  • 性能: 排除无关部分可以实现更快的索引,和更准确的文件发现
  • 安全性:
    • 限制对API密钥、凭据、机密信息的访问
    • 虽然可以限制访问,但由于LLM的不可预测性,无法保证完全保护???

上下文:MCP

MCP(Model Context Protocol)

  • MCP使Cursor能够连接到外部工具和数据源
  • 无需重复解释项目结构,直接与工具集成

🔍工作原理

  • MCP服务器通过协议公开功能,将Cursor连接到外部工具或数据源
  • 支持三种传输方式:
    • stdio
      • Cursor管理/单用户/shell命令/手动
    • SSE
      • 部署为服务器/多用户/SSE端点URL/OAuth
    • Streamable HTTP
      • 部署为服务器/多用户/HTTP端点URL/OAuth

上下文:@符号

@描述
@Files引用特定文件
@Folders引用整个文件夹
@Code引用特定代码片段或符号
@Docs访问文档和指南
@Git访问git历史记录和更改
@PastChats 使用汇总的编辑器回话
@Rules使用cursor规则
@Terminals终端
@ActiveTabs 激活的智能体
@LinterErrors 引用lint错误
@Web外部网络资源和文档
@Link粘贴URL时,Cursor会将其自动标记为@Link,支持PDF
@RecentChanges 创建指向特定代码或文档的联机
#Files将文件添加到上下文中而不引用
/Commands将打开和活动的文件添加到上下文中