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

什么是 context?

在 Cursor 里生成代码建议时,“context”指的是提供给模型的信息(以“输入 token”的形式),模型再用这些信息去预测后续内容(以“输出 token”的形式)。 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 的能力以连接外部系统。
  • 上下文不足会导致幻觉或低效,过多无关上下文会稀释信号;把握合适的平衡以获得最佳效果。