Cursor最佳实践记录

前言

AI编程是最近最火的话题,自己也有所尝试使用cursor工具用于辅助日常开发,并且在其开发模式和协作流程进行了多次的迭代。文章主要是想记录一下,这些实践心得,欢迎大家一起交流。

首先需要明确,AI编程类工具目前并不能取代程序员具备独立编码的能力,也不是配置几个简单的MCP就可以完善其编程能力。我们应该从实际项目出发,分享一些AI编程思路和流程优化经验,真正能把AI用好,而不仅仅是简单碎片的代码生成器。

Cusor的边界

尝试过将整个粗略的产品需求文档输入,直接生成的项目代码距离成品还是有一定的差距。如果需要生成代码满足需求要求的代码,我们应该如何去做呢。很简单,我们需要将需求转化对应详细提示词告诉AI,如何生成符合要求详细的提示词? 目前最佳实践的流程步骤拆分:

  • ai帮助我们进行需求拆分 —— 初步的需求提示词框架
  • 开发者帮助检查完善拆分的需求详情 —— 丰富完善提示词内容
  • 根据提示词完成开发开发者进行回归验证。

总而言之,我们需要确保AI每次每次只干一件事情,而且这件事情是确定和详细。只需要朝这个方向进行优化,我们就能利用好AI工具进行项目开发。

如何AI帮助我们进行需求拆分

我们需要将需求文档理解转化成对应提示词,因为我们需求文档并不是连续,缺乏上文语境,这也是导致AI不能生成预期符号要求的代码。所以我们流程需要考虑两个方面:

  1. 针对现状的流程的分析。
  2. 基于现状新增开发点分析。

完成上面这两步分析步骤之后,我们应该可以得到一份基于当前文档并且可以兼容当下系统逻辑的功能分析文档。(不需要其实现方案,实现代码,只是确定有哪些功能即可。)实体类、VO对象的定义、接口定义、数据库表定义等。

针对需求文档的分析

虽然说cursor可以很好的分析总结需求文档的内容,但是产品文档无法体现出整个产品的上下文信息,因此cursor也无法知道项目的全貌,所以单纯的把需求文档直接给cursor无法直接生成符合预期的代码。

我们可以使用cursor帮助我们梳理出需求文档的功能点和开发要点,帮助我们快速理解项目,并结合自己的理解,可以进行双向验证,确保我们对需求产品的理解不会出现偏差。

我们需要对cursor的思考结果进行记录。参考提示词

需要统一内部在线文档 或者使用mcp工具,确保cursor可以正常访问文档信息。

https://xxxxx.xx.xxx/pages/page.action?pageId=xxxxxxxx 
提取一下上面链接的文档中的内容。帮我提炼【XXXXX】部分相关功能,有哪些需要开发的功能点.
注意,xxxxxx。
分析你需要拆分出多少个功能点以及接口

在我让你写代码之前不要生成代码,先逐步分析需求,再说明你打算怎么做
将你的思考以md的形式保存在.docs/方案设计.md下

然后与AI进行交互沟通,明确哪些要点是正确,哪些是不需要的。举例

我们不需要对数据进行排序,帮忙重新整理一下功能点。

分析流程步骤: 需求prd文档 => cursor分析后将结果保存至.md文档 => 开发人员验证 => 确保其分析结论和开发者理解保持一致

我们的目的是,不要试图让Cursor来教我们如何做这个项目,需要其协助帮助我们完成每个环节。如果我们可以快速准确修改文档的某个部分,就应该主动修改,比如调整一些字段名称,我们就可以直接修改md文档即可。 同时如果手动修改内容较多,应该重新开启一个对话框,重新读取需求文档和对应分析文档,避免覆盖之前修改内容。

当前流程分析,以及其新增流程的影响范围

我们可以在cursor的协作下完成现有业务流程的梳理,可以从需求的目标改动点,梳理其所属的功能和实现方案。

vscode常用插件推荐 流程图 Mermaid Preview插件, 与Markdown Preview Enhanced插件。

安装完上面插件,我们就可以配合cursor生成技术方案的流程图,辅助确定本地修改的影响范围。

帮助cursor完善需求理解,然后生成代码。(业务要点)

从实际出发,我们肯定也是希望AI能够自行深入了解我们系统,了解业务,各种相关规则和知识点。即便其思维可与人类媲美,但是我们也很想象一位经验丰富的开发者仅依靠产品文档就可以很好完成项目开发。项目的开发必然是沟通,修改、妥协最终输出满意方案之后再进行开发。同样,cursor进行开发前,我们也需要依照一份技术文档来指导其进行开发,不同前面的需求分析,这一个部分,我们需要对每一个功能有详细的描述和实现方案的确定。 这一个阶段主要是为了其补充上下文信息然后反复验证最终输出可行的实现方案。包括不限于:

  1. 命名方式,生成位置。
  2. 使用的工具类和服务或接口。
  3. 实现逻辑的细节调整。
  4. 业务细节的同步。 …

经过上面流程之后,我们就可以得到一份我们和cursor都能理解的并达成一致的md文档。这个就是我们对功能分析的提示词文档。 后续cursor就会基于这份提示词进行工作,帮助我们生成代码。 输入功能分析提示词文档 => cusor根据提示词分析文档分析各个功能模块 => 选择实现文档对应功能模块的描述方案 => cursor给出技术设计方案 => 开发者调整设计开发方案 => 重新调整方案后再审核保证方案正确 => 生成代码 => 人工调整或者cursor修改 => 在选择其他模块实现

为了确保ai每次只做一件事情,我们需要就对一个功能点进行分析,并且需要完成代码落地生成,最好不要留到最后一起生成。

协助进行功能验证

我们还可以利用cursor帮助我们确保开发后项目的质量保证。

  1. 评估改动影响。
  2. 功能验证。

改动范围梳理

git diff origin/master > cr.diff 我们可以得到对应所有文件的改动点,并且在文档的最后对我们diff文件进行改动点的分析。

基本代码审查

根据项目团队内部的代码规范,扫描分析对应的改动点,帮助我们进行代码review和修改。

功能辅助验证

完成代码生成和初步审核之后,我们可以进入功能验证阶段。可利用cursor根据代码变动,生成对应的测试用例。

基于当前代码变更,列出需要自测的功能点和边界情况,包括正常流程、异常输入、状态校验等。输出为表格形式,包含用例编号,场景描述和预期结果。

这个过程不仅是自测,更是对整体逻辑的二次确认,通过cursor辅助,协助提升自测的完整度,确保交互质量

写在最后

本文主要说明了在日常开发中cursor工具的最佳实践,介绍如何使用cursor辅助我们进行开发。通过分阶段协作,从需求分析、现状梳理到技术方案设计、代码生成、最后测试验证全流程参与。

最后还想说的是,拥抱AI时代,我们开发者核心竞争力正从掌握知识提出问题、沟通协作转变。所以说AI工具不会取代开发人员,而是通过人机协作、提升需求理解、技术设计与代码质量。换句话来说就是我们工作形式的转变,从原来机械式编码转向流程化编码,输出的不是代码,而是我们的方案和提出我们的想法,从而完成产品和项目的落地。我们需要更注重专业知识的积累,以确保能够构建清晰上下文,引导AI完成分析、拆解、生成与验证。

下次预告:cursor和copilot配合mcp突破AI工具边界,强化相关功能。