正文
Cursor 的底层原理
现在我们来深入了解一下支撑这些功能的技术架构。从整体上看,Cursor 由客户端应用(基于 VS Code 的编辑器)和一组后端 AI 服务构成。接下来我们将看看客户端和服务器是如何协作来完成语言模型提示、代码索引和修改应用的。
客户端 VS 原版 VS Code 有什么不同?
Cursor 的桌面应用是在 VS Code 的基础上开发的 “分支版本”,这意味着它复用了 VS Code 的核心编辑器、用户界面以及插件生态系统。这样,Cursor 可以直接拥有 VS Code 提供的大部分 IDE 功能(比如文本编辑、语法高亮、语言服务支持、调试等),然后在此基础上叠加自己的 AI 功能。
Cursor 的客户端包含一些自定义的 UI 元素,比如聊天侧边栏、Composer 面板,以及用于触发 AI 操作的快捷键(如 Tab、Cmd+K)。由于是完整分支而不是普通插件,Cursor 能将 AI 深度整合进开发流程中 —— 例如补全功能直接嵌入编辑器的建议系统,聊天助手也可以直接修改文件。
自定义沙盒环境的构建
Cursor 使用语言服务器(和 VS Code 一样,支持 Python、TypeScript、Go 等语言)来获取实时代码信息,提供 “跳转定义”、“查找引用”、错误提示等功能。Cursor 对这些能力进行了更有创新的利用。特别是它实现了一个叫做 “影子工作区(shadow workspace)” 的概念:这是一个隐藏的后台工作区,AI 可以在其中安全地测试修改,并从语言服务器获取反馈。
比如,当 AI 生成了一段代码,Cursor 会在一个隐藏的编辑器窗口中应用这些更改(不影响你当前的文件),然后让语言服务器检查有没有错误或类型问题。这些诊断结果会反馈给 AI,帮助它优化建议后再展示给你 —— 非常酷!
简而言之,客户端为 AI 提供了一个带有编译器和 linter 的沙盒开发环境,提高代码修改的准确性。(当前是通过一个不可见的 Electron 窗口来镜像你的项目,未来可能使用内核级文件系统代理来进一步加快隔离速度)
除了影子工作区,客户端还负责处理一些细节功能,比如
@
符号上下文插入(你在提示中引用
@File
或
@Code
时,客户端知道要取出对应的文件或代码片段),以及 AI 修改的 UI 操作(比如点击 “播放” 按钮立即应用建议)。当你在聊天或 Composer 中使用 “立即应用” 功能时,客户端会接收来自 AI 的差异或新代码,并将其应用到项目中,可能还会显示预览或进行安全合并。
LLM 协调(大模型调用协调)
虽然有些轻量处理(比如代码拆分)在本地完成,核心 AI 运算则由 Cursor 的云端后端完成。当你触发一个 AI 功能时,客户端会整理好上下文(你的输入、选中代码等),然后发送请求给 Cursor 后端。
后端负责构建最终的大语言模型(LLM)提示语,调用模型接口并将结果返回给编辑器。即便你配置了自己的 OpenAI API 密钥,请求仍会先经过 Cursor 的后端,这样系统才能添加系统指令、代码上下文以及专属格式,确保模型理解你的需求。
多模型协调:大模型 + 自研模型
Cursor 使用多种 AI 模型:既有像 GPT-4 或 Claude 3.5 这样的顶级大型模型,也有专为特定用途训练的定制模型。
【第3486期】AI 编程神器 Cursor 十大使用技巧:让代码更听你的话