首先,什么是上下文窗口?它和在 Cursor 里高效写代码有什么关系? 先放大一点看,large language model(LLM,大语言模型)是一种通过从海量数据中学习模式来预测并生成文本的人工智能模型。它支撑了像 Cursor 这样的工具:理解你的输入,并基于以往见过的内容给出代码或文本建议。 Token 是这些模型的输入和输出单位。它们是文本的片段,通常是词的一部分,LLM 会逐个处理。模型并不会一次性读完整句;它会基于前面的 token 来预测下一个 token。 想看看一段文本是如何被切分成 token 的,可以用这个 tokenizer Tokenizer

什么是 context?

在 Cursor 中生成代码建议时,“context”指提供给模型的信息(以“input tokens”的形式),模型据此预测后续信息(以“output tokens”的形式)。 context 有两种类型:
  1. Intent context 定义用户希望从模型得到什么。比如,system prompt 通常作为高层级指令,指定用户希望模型如何表现。在 Cursor 中,大多数的“prompting”都属于 intent context。“把那个按钮从蓝色改成绿色”是一个明确的意图示例;它是规定性的。
  2. State context 描述当前世界的状态。向 Cursor 提供错误信息、控制台日志、图像以及代码片段,都是与状态相关的 context 示例。它是描述性的,而非规定性的。
这两种 context 协同工作:一个描述当前状态,另一个描述期望的未来状态,使 Cursor 能提出有用的编码建议。

在 Cursor 中提供上下文

给模型提供的相关上下文越多,它就越有用。如果在 Cursor 中提供的上下文不足,模型会在缺少关键信息的情况下尝试解决问题,通常会导致:
  1. 产生幻觉:模型会尝试做模式匹配(其实并不存在可匹配的模式),从而产生意外结果。像 claude-3.5-sonnet 这样的模型在上下文不足时,这种情况会很常见。
  2. Agent 会自行收集上下文,比如搜索代码库、读取文件、调用工具。思维能力较强的模型(如 claude-3.7-sonnet)借助这种策略能走得很远,而是否提供了合适的初始上下文会决定其后续路径。
好消息是,Cursor 从设计之初就以上下文感知为核心,尽量减少用户的干预。Cursor 会自动引入模型判断与当前任务相关的代码库部分,比如当前文件、其他文件中的语义相似模式,以及会话中的其他信息。 不过,可供利用的上下文很多,所以你可以手动指定你已知与任务相关的上下文,用这种方式把模型引导到正确的方向上。

@-symbol

提供明确上下文最简单的方式就是用 @-symbol。当你清楚要包含哪个文件、文件夹、网站或其他上下文时,它特别好用。越具体越好。下面是如何更精细地传递上下文的指南:
SymbolExampleUse caseDrawback
@code@LRUCachedFunction你知道哪个函数、常量或符号和你要生成的输出相关需要对代码库有较深的了解
@filecache.ts你知道应该读取或编辑哪个文件,但不确定具体在文件的哪个位置可能会根据文件大小为当前任务带来大量无关的上下文
@folderutils/文件夹中的全部或大部分文件都相关可能会为当前任务带来大量无关的上下文
Context Menu

规则

你可以把规则理解为你、或你团队里的其他成员都能长期访问的“长期记忆”。把领域相关的上下文——包括工作流、格式规范和其他约定——记录进去,是编写规则的绝佳起点。 你也可以使用 /Generate Cursor Rules 从现有对话里自动生成规则。如果你有一段包含大量提示的长对话,很可能其中有一些值得之后复用的有用指令或通用规则。 规则

MCP

Model Context Protocol 是一层可扩展能力,让 Cursor 能执行操作并引入外部上下文。 根据你的开发环境,你可能会选择不同类型的服务器,但我们发现特别有用的两类是:
  • 内部文档:如 Notion、Confluence、Google Docs
  • 项目管理:如 Linear、Jira
如果你已经有通过 API 访问上下文并执行操作的现有工具,可以为它构建一个 MCP 服务器。这里有一份关于如何构建 MCP 服务器 的简明指南。 MCP

自主收集上下文

很多用户正在使用的一种强大模式,是让 Agent 编写一些短期使用的小工具,然后运行它们来收集更多上下文。在“人参与”的流程里(你会在执行前先审阅代码),这种方式尤其有效。 比如,在代码里加入调试语句、运行代码,然后让模型检查输出,这能让它获取到静态分析无法推断的动态上下文。 在 Python 中,你可以这样提示 Agent:
  1. 在相关代码处添加 print(“debugging: …”) 语句
  2. 使用终端运行代码或测试
Agent 会读取终端输出并决定接下来怎么做。核心思路是让 Agent 接触到真实的运行时行为,而不只是静态代码。 Self-Gathering Context

关键要点

  • 上下文是高效 AI 编码的基础,包含意图(你想做什么)和状态(现有内容)。同时提供两者有助于 Cursor 做出准确预测。
  • 使用带 @ 符号的“外科式”上下文(@code、@file、@folder)精确引导 Cursor,而不是仅依赖自动上下文收集。
  • 将可复用的知识固化为规则供团队共享,并通过 Model Context Protocol 扩展 Cursor 的能力以连接外部系统。
  • 上下文不足会导致幻觉或低效,而过多无关上下文会稀释信号。把握好平衡以获得最佳结果。