共计 4222 个字符,预计需要花费 11 分钟才能阅读完成。
深入了解 Cursor
简要概述:Cursor 是一款全面集成 AI 的代码编辑器,基于 VScode 开发。
您可以访问官网以获取详细的功能介绍:https://www.cursor.com/cn/features
在 Cursor 设置中,可以找到一些常用的配置选项:

如果是企业内部使用,建议先启用隐私模式:

除了前代的编码辅助 copilot 提供的 TAB 补全和问答功能,Cursor 还新增了 agent 模式,使其能够自主实现特定目标。

通常选择的模型为 claude-3.5 或 claude-3.7(claude 3.7 实测:在实际编程任务中提升到底有多大?,此模型刚发布,效果评价褒贬不一),
在 Agent 模式下,Cursor 可自动执行命令行脚本、自主修复 lint 错误,并能运行构建过程以修复相应的错误,甚至可以进行单元测试并自行修复问题。
可以开启 yolo 模式,这样在执行命令行时无需再次确认。为了安全起见,系统还提供了一些禁止执行命令的配置选项。

增加了代码库的索引功能,允许基于整个代码库完成特定任务。在 Ask 模式中,可以主动 @Codebase,而在 Agent 模式下则会自动搜索整个仓库。

可以在设置中查看项目是否已被索引:

在聊天中,@ 符号使用频繁,可以 @ 文件、@ 文档、@ git 等等,同时也能直接将左侧目录树的文件拖入对话框。

提前索引的文档展示:

可以查看执行历史,甚至能够并行执行多个操作:

Pro 版本售价为每月 $20,可通过 wildcard 虚拟信用卡 进行充值。每月提供 500 次快速请求,使用完毕后慢速请求的体验影响不大:

Cursor 让我们摆脱了繁琐的编码细节,转变为一个全方位的对话服务,告别了传统的 ChatGPT 对话复制粘贴的模式。我们只需耐心等待其完成代码编写,随后审阅代码或功能,期间还可以进行其他工作。
我们只需告知它我们的需求,具体实现的方式则由它自行规划。
Cursor 实际应用案例
渠道分离的 eslint 需求
背景介绍
公司的代码在微信小程序、美团、优选 app、微信美团小程序四个渠道中复用,代码中需支持分渠道编译以实现一些差异化逻辑,以下是示例代码:
// @if p == 'wx' || p == 'wxmt'
import {getDpApp} from '@yxmp/root/xxxxxx';
// @endif
function isReportToUnicorn() {const app = getDpApp();
abForUnicorn = app?.$abTest?.isGrey('grocery_c_front_xxxxxx', 'a') || false;
return abForUnicorn;
}
如果直接调用 getDpApp,将会导致线上问题,因为编译后 getDpApp 仅在 wx(微信小程序)和 wxmt(美团小程序)中存在,而美团和优选 app 中并未引入该函数。
然而,普通的 eslint 检查无法及时发现此类问题,因为 // @if p == 'wx' || p == 'wxmt' 对 eslint 来说仅是普通注释。
因此,我们需要对编译后的四个渠道逐一进行 eslint 检查,以便及时发现潜在问题。
快速开发流程
eslint 校验的项目是我首次编写,Cursor 出现之前,我需要逐步熟悉各项功能,才能输出调试并验证自己的思路。
但自从 Cursor 发布后,情况发生了变化。我们只需将任务拆解,告诉 AI 我们的需求,让其直接执行,往往功能就已完成,而我们都未曾察觉。
这个过程可以总结为两个步骤:
1、生成四个渠道编译后的文件并传递出去。

接下来需要进行几次修复,例如我们渠道中还有 tt,可以让它去掉:

对于命令行中的错误,可以直接将错误信息复制给它:



由于 Cursor 缺乏项目背景知识,生成的编译内容未能符合预期。但如果得知项目中已有编译方法(同事提前告知),只需告诉 AI 即可:

由于之前 Cursor 尝试了自己的方法,生成了一些冗余代码,我们还可以让它删除这些代码:

刚才我们直接生成了四个渠道的内容,但未返回对应的文件,然后让它调整返回的内容结构:



2、根据四个渠道生成的内容再分别进行 lint 检查。

随后,Cursor 就生成了我们所需的代码,整个流程其实已经顺利完成。而更令人感到惊喜的是,Cursor 对 eslint 的使用比我更为熟悉。
项目优化与技术文档生成
在原项目中,我们使用 lintFiles 方法进行代码检查,传入的是文件路径。然而,由于我们生成的是文件内容,lintFiles 无法再使用。于是,系统智能地将其替换为 lintText 来进行代码的检查。
接下来的步骤是优化输出内容,以便清楚地区分各个输出渠道:


接着,简单回顾代码的修改,并进行进一步优化:

由于原有的 lintFiles 和新增的 lintText 都需要格式化输出,因此我们将格式化的方法提取为一个公共方法,以便于调用。
无论代码是否完全理解,这次需求的功能已经顺利实现,过程相当迅速。
不过,由于技术方案尚未编写,具体的流程还需与同事沟通确认。于是,我直接请求 Cursor 帮我们生成一份此次改动的文档:


当然,最好将前两句话一起说出,否则它仅会在对话框输出,直接生成文件会更加方便。其图像是通过 mermaid 生成的,只需安装相应插件,即可在 Cursor 中预览流程图。



生成的文档内容丰富且可用,图文结合:

持续完善
与同事确认细节后,我们继续与 Cursor 进行讨论。
由于直接将所有文件内容传递给 eslint 可能导致内存问题,因此我们在修改后传入了一个编译函数。

修改完成后,我们需要召集相关人员参与正式的技术方案评审并进行代码审查,毕竟代码已经编写完毕。
让 Cursor 生成一份新的技术文档,并直接告知它涉及的几个 commit:



流程图非常详细,并且区分了修改的重点:

除了技术方案之外,Cursor 还给出了我们一个优化建议:

好吧,那就请它进行优化:

技术方案还需要包含测试计划,可以根据自己的想法请 Cursor 帮忙示例:


代码审查后再调整
在之前的批处理代码中写死了一个值为 10,cr 评论建议改为 horn(配置平台)动态下发,因此我向 Cursor 描述了这一点:

优化 TypeScript 代码:


eslint 分渠道治理
在测试过程中发现了许多可能导致线上问题的 eslint 错误,此时需要一份文档,邀请相关人员共同排查并修复。是否要一个个复制生成的结果?不需要,这同样可以交给 Cursor:



生成的表格在预览后可直接复制到文档中:

至此,未编写一行代码的需求已经完成。
编码不仅限于代码
Cursor 的功能已经不仅仅局限于代码辅助,我们可以看到它已经完成了技术方案的编写,还有更多的用途。 限制它作用的,不再是能力,而是我们的想象力。
RAG
RAG(Retrieval-Augmented Generation)是一种将信息检索与生成式 AI 结合的技术,首先从外部知识库中检索相关信息,然后利用大型模型生成更准确且上下文丰富的回答,广泛应用于问答系统和知识管理。
得益于 Cursor 的索引仓库能力,我们只需将所有文档放入一个文件夹中,待索引完成后,就可以向它询问与文档相关的问题。
代码理解能力
对于不熟悉的项目,如果想快速了解某个特定点,比如某个按钮的埋点 bid 是什么,直接询问即可:

需要注意的是,Cursor 默认不索引 .gitignore 中的文件。
处理 Excel 文件
在一个包含四个工作表的 Excel 文件中,有一些灰色的行,我想将它们全部删除:

可以直接让 Cursor 读取并处理这些行:

更多功能
… …
与 Cursor 对话的经验
Cursor 的不断探索
Cursor 能够持续扩展的关键在于 Cursor rules(每次请求前会将其传递到对话中),例如 awesome 项目所提供的一些示例:https://github.com/PatrickJS/awesome-cursorrules
目前,Cursor 具备了智能核心,但其功能的实现依赖于我们提供的手段,Cursor rules 的扩展参考详见:搏一搏,500:一小时魔改 Cursor 变身 Devin。
通过这些改造,它可以执行如提前列出计划、总结自身的错误经验、利用工具等多种功能。
例如,我们可以编写一个用于访问公司内部 JavaScript 错误监控的函数,并在 Cursor rules 中说明访问方法。接着,直接询问它关于昨天某个页面的 JS 错误情况,它就能给出相应的反馈。
此外,Cursor 还支持 MCP(Model Context Protocol),这是由 Anthropic(Claude 的开发公司)推出的开放标准协议。MCP 提供一个统一接口,使 AI 应用能够安全地访问本地数据和服务,实现 AI 能力与本地资源的无缝衔接。
目前已有许多软件支持这一协议,这意味着通过 MCP,Cursor 能够与多种软件进行交互。我们也可以查阅 awesome 项目:https://github.com/punkpeye/awesome-mcp-servers/tree/main。其中一个前端相关的实例是:Figma + Cursor:用 MCP Server 实现设计到代码的无缝转换。
结合 Cursor rules 和各类 MCP,如果公司内部的监控平台、埋点、数据查询等系统都支持,所有内部系统的互联互通将不可想象。
最后,分享一个大胆的观点:
编程范式正在经历一场重大变革:从过程导向转向面向对象,再到函数式编程,现在我们进入了面向 AI 编程的新纪元。传统编程语言(如 C++、Python、JavaScript、Java)可能会逐渐演变为类似于汇编语言的角色——我们知道它们的存在,但不再需要深入研究。未来,主流的编程方式将是自然语言的使用。
推荐阅读:
windliang:AI 杂想 windliang:一行代码没写用 ai 开发了一个链接转二维码的网站,公众号引用链接更方便


虽然 Cursor 的功能很强大,但我担心在实际开发中,自动执行命令可能带来的安全隐患,是否有更详细的安全保障措施?