挖掘Cursor潜力的5个经验

在过去两周里,我的Cursor之旅可以说是变革性的。从为期三天的快速冲刺开始,很快揭示了一个残酷的事实:速度没有结构会导致不安全且混乱的代码。

挖掘Cursor潜力的5个经验

在过去两周里,我的Cursor之旅可以说是变革性的。从为期三天的快速冲刺开始——为Instagram排程功能开发了一个端到端的MVP,并集成了OAuth和Facebook Graph API——很快揭示了一个残酷的事实:速度没有结构会导致不安全且混乱的代码。

这段经历促使我走上了一条深入学习、迭代的道路,并最终创建了一个强大且可扩展的系统。

以下是我在这一过程中学到的五个关键经验教训,每个教训都充满了实用的见解,帮助你充分挖掘Cursor的潜力。

1、精确规划

为什么重要:

在开始编码之前,花时间勾勒出你的系统设计并定义明确的规则。通过这样做,你可以确保Cursor——你的AI代理——完全理解你的风格、架构和目标。这种一致性对于生成不仅功能性强而且安全、可扩展且易于维护的代码至关重要。

我是如何做的:

  • 头脑风暴: 我首先使用o3-mini和Grok进行了高层次的系统设计头脑风暴。这给Cursor提供了项目主要目标的清晰理解。
  • 系统设计文档: 我创建了一个名为system-design.md的文件,详细记录了项目的各个方面——从功能需求到技术决策。这个文档作为参考,确保Cursor始终了解项目的风格和目标。
  • Cursor规则: 我制定了一套明确的编码规则,定义了从命名约定到文件结构的一切。例如:
  • 前端规则:
  • 每个接口名称以“I”开头(如IComponentProps)。
  • 维持一致的组件文件夹结构:
Component/
├── Component.tsx
├── Component.style.ts
├── Component.types.ts
├── Component.utils.ts
├── Component.constants.ts
├── Component.hooks.ts
└── index.ts
  • 后端规则:
  • 始终先定义接口(尽可能重用现有的接口)。
  • 对所有函数和方法使用单一对象参数并带有命名属性。

通过将这些规则文档化并与system-design.md一起包含,我为Cursor提供了它需要的所有上下文,以生成符合我愿景的代码。

2、定义稳健的仓库结构

为什么重要:

一个组织良好的仓库是可扩展项目的支柱。它有助于保持一致性,简化维护,并使团队能够有效协作。

这是我构建的仓库结构示例:

ournexus/  
├── packages/                    # 所有工作区包都放在这里  
│   ├── nest-common/            # 全局NestJS共享工具  
│   │   ├── src/  
│   │   │   ├── auth/           # Azure AD B2C认证,支持多提供商  
│   │   │   ├── email/          # Azure通信服务用于电子邮件  
│   │   │   ├── cosmos/         # Cosmos DB客户端和工具  
│   │   │   ├── service-bus/    # Azure服务总线客户端用于计划帖子和Webhook  
│   │   │   ├── storage/        # Azure存储帐户带CDN的媒体  
│   │   │   ├── logger/         # 应用洞察日志设置  
│   │   │   ├── config/         # 共享配置(环境变量、Azure凭据)  
│   │   │   ├── filters/        # 自定义过滤器  
│   │   │   ├── interceptors/   # 自定义拦截器  
│   │   │   ├── middlewares/    # 自定义中间件  
│   │   │   └── index.ts        # 导出所有工具  
│   │   ├── package.json        # 包名: "@ournexus/nest-common"  
│   │   └── tsconfig.json  
│   ├── social/                 # Ournexus社交媒体自动化领域  
│   │   ├── common/             # 领域特定的共享服务、类型、存储库  
│   │   │   ├── src/  
│   │   │   │   ├── services/    # 共享逻辑  
│   │   │   │   ├── repositories/ # Cosmos DB存储库  
│   │   │   │   ├── types/       # Ournexus领域的接口和类型  
│   │   │   │   └── index.ts     # 导出服务、存储库、类型  
│   │   │   ├── package.json     # 包名: "@ournexus/social-common"  
│   │   │   └── tsconfig.json  
│   │   ├── api/                # Ournexus API服务(NestJS)  
│   │   │   ├── src/  
│   │   │   │   ├── modules/     # NestJS模块  
│   │   │   │   │   ├── projects/ # 主要面向项目的模块  
│   │   │   │   │   │   ├── projects.module.ts  
│   │   │   │   │   │   ├── projects.controller.ts  
│   │   │   │   │   │   ├── projects.service.ts  
│   │   │   │   │   │   ├── media/ # 媒体管理子模块  
│   │   │   │   │   │   ├── posts/ # 帖子管理子模块  
│   │   │   │   │   │   ├── social/ # 社交账户管理子模块  
│   │   │   │   ├── main.ts      # 入口点  
│   │   │   ├── package.json     # 依赖于"@ournexus/social-common", "@ournexus/nest-common"  
│   │   │   └── tsconfig.json  
│   │   ├── worker/             # Ournexus工作服务(NestJS)  
│   │   │   ├── src/  
│   │   │   │   ├── jobs/        # 后台任务处理程序  
│   │   │   │   └── main.ts      # 入口点  
│   │   │   ├── package.json  
│   │   │   └── tsconfig.json  
│   │   ├── frontend/           # Ournexus前端(React)  
│   │   │   ├── src/            # 前端源代码  
│   │   │   ├── public/         # 静态资产  
│   │   │   ├── package.json  
│   │   │   └── tsconfig.json  
├── azure.yaml                  # Azure部署配置位于根目录  
├── infra/                     # 基础设施即代码文件夹  
│   ├── main.bicep             # 主Bicep模板用于部署  
│   └── modules/               # 可重用的Bicep模块  
├── helm/                      # Kubernetes部署的Helm图表  
│   ├── ingress/               # 入口配置  
│   ├── api/                   # API服务Helm图表  
│   └── worker/                # 工作服务Helm图表  
├── .gitignore                 # Git忽略文件  
├── package.json               # 根package.json带有工作区  
└── tsconfig.json              # 根TypeScript配置  
└── README.md                  # 项目文档(包括system-design.md)

这个详细的结构不仅组织了代码和配置以便于清晰和可维护性,还为我的团队和Cursor提供了一个恒定的参考点。

3、利用Cursor规则保持一致

为什么重要:

向Cursor提供精确的指示是释放其全部潜力的关键。通过通过详细的规则和全面的系统设计文档提供上下文,你可以确保每个AI生成的代码都与你的架构愿景和编码标准保持一致。

我是如何做到的:

  • 我创建了一个名为system-design.md的文件,概述了整个系统的架构、关键特性和技术堆栈决策。
  • 我为前后端制定了明确的编码规则,Cursor在生成代码时会参考这些规则。
  • 通过将这些规则集成到我的工作流程中,我看到了意外代码输出的显著减少,让我可以专注于解决实际问题而不是清理AI生成的代码。

4、迭代、学习并进化你的基础设施

为什么重要:

从快速MVP到生产就绪系统的道路是由迭代和持续学习铺就的。我的项目的演变证明了结构化规划如何带来显著的技术增长。

我的基础设施演变:

  1. 应用服务:
    最初部署在托管的应用服务上以实现快速MVP。虽然速度快,但在安全性和支持性方面有限。
  2. 容器应用:
    转向容器应用以获得更好的控制和隔离,为更强大的环境奠定了基础。
  3. AKS(Azure Kubernetes服务):
    最后,迁移到AKS,学习了Kubernetes入口控制器和Helm图表。这一步解锁了真正的云原生能力和可扩展性,允许采用微服务驱动的架构。

关键学习:

每一次迭代不仅改进了产品,也加速了我的现代云技术和可扩展架构的理解。

5、持续学习推动进步

为什么重要:

拥抱持续学习确保每次迭代的项目都比上一次更好。随着时间的推移,你不仅构建了一个更优越的产品,而且还获得了宝贵的技能。

我所获得的:

  • 掌握了异步工作流和消息驱动服务。
  • 深入了解了 Kubernetes 网络和 Helm 部署。
  • 一个安全、可扩展且易于维护的云原生基础设施。

6、结束语

与 Cursor 的旅程教会了我成功在于细致的规划、结构化的迭代和持续学习。通过制定明确的规则并记录全面的系统设计,我已经将一个匆忙且不安全的 MVP 转变为一个生产就绪的系统——同时加速了自己的学习曲线。

关键收获:

当与有目的的规划和明确的指导方针结合时,AI 是一种强大的加速器。你提供的上下文越多,它就越能与你的愿景对齐,从而帮助你构建可扩展、安全且易于维护的系统。

你是否已经将 AI 集成到你的开发工作流程中?在这个过程中你学到了什么?请在下面的评论区分享你的想法!


原文链接:5 Lessons on Using Cursor: Planning, Rules, and Scalable System Design

汇智网翻译整理,转载请标明出处