1. @符号不是快捷键,是上下文契约的签名大多数人第一次在 Cursor 里敲下@,以为它只是个智能补全触发器——就像 VS Code 里按 Ctrl+Space 那样。我也是这么想的,直到在重构一个 37 个模块的微前端项目时,连续三次让 AI 把src/utils/date.ts里的formatISO函数名错写成formatIso,而我在提示词里明明写了“严格保持原始函数命名”。当时没意识到问题出在哪,只觉得模型“记性不好”。后来翻了 Cursor 的日志调试模式(cursor --log-level=debug),才看到真实情况:AI 每次生成前,实际收到的上下文只有当前打开的 3 个文件,而date.ts并不在其中。它根本没见过那个函数定义,所谓“记忆”只是幻觉。真正起作用的,是我在 prompt 里手动加的那行@src/utils/date.ts——它不是告诉 AI “去查这个文件”,而是把整个文件内容以纯文本方式注入到本次请求的 token 上下文中。这个认知转折点让我重新理解了@符号的本质:它不是搜索指令,不是跳转快捷键,更不是某种魔法索引;它是开发者与 AI 之间一份显式、可审计、带版本控制的上下文契约。你签上@,就等于对这次交互负起了责任——你要确保所引用的内容精准、最小、必要,且在 token 预算内可承载。这解释了为什么过度依赖@反而会降低代码质量:当工程
Cursor @符号引用全场景指南:文件/文件夹/Web/Git 历史的 4 类引用写法
1. @符号不是快捷键,是上下文契约的签名大多数人第一次在 Cursor 里敲下@,以为它只是个智能补全触发器——就像 VS Code 里按 Ctrl+Space 那样。我也是这么想的,直到在重构一个 37 个模块的微前端项目时,连续三次让 AI 把src/utils/date.ts里的formatISO函数名错写成formatIso,而我在提示词里明明写了“严格保持原始函数命名”。当时没意识到问题出在哪,只觉得模型“记性不好”。后来翻了 Cursor 的日志调试模式(cursor --log-level=debug),才看到真实情况:AI 每次生成前,实际收到的上下文只有当前打开的 3 个文件,而date.ts并不在其中。它根本没见过那个函数定义,所谓“记忆”只是幻觉。真正起作用的,是我在 prompt 里手动加的那行@src/utils/date.ts——它不是告诉 AI “去查这个文件”,而是把整个文件内容以纯文本方式注入到本次请求的 token 上下文中。这个认知转折点让我重新理解了@符号的本质:它不是搜索指令,不是跳转快捷键,更不是某种魔法索引;它是开发者与 AI 之间一份显式、可审计、带版本控制的上下文契约。你签上@,就等于对这次交互负起了责任——你要确保所引用的内容精准、最小、必要,且在 token 预算内可承载。这解释了为什么过度依赖@反而会降低代码质量:当工程