AI编程在BOSS项目的实践经验分享
前言
在人工智能技术革新浪潮的推动下,智能编程助手正以前所未有的速度重塑开发领域。这些基于AI的代码辅助工具通过智能提示生成、实时错误检测和自动化重构等功能,显著提升了软件工程的全流程效率。无论是初入行业的开发者还是资深程序员,都能借助这些工具快速突破技术瓶颈——新手可借此规避基础语法错误并学习最佳实践,而资深工程师则能通过智能优化建议将重复性编码工作转化为创造性技术探索,有效缩短从构思到实现的开发周期。
一、AI编程的主流方式和选型
IDE开发工具可分为插件式和AI原生两类:插件式工具(如GitHub Copilot、阿里通义灵码)通过集成到现有IDE提供智能补全和代码生成,兼顾开发习惯与效率提升;AI原生IDE(如字节Trae、Cursor、Windsurf)深度整合大模型能力,支持全流程智能化开发。
Cursor的核心优势在于开箱即用的AI能力:原生集成AI功能,无需安装插件即可直接使用。它能准确理解代码上下文,提升代码维护与生成效率;支持实时生成/重构代码,加速功能开发;提供智能错误诊断,快速定位问题并给出修复建议。其搭载的Claude 3.7模型具备优秀代码生成、问题解决和架构设计能力,能精准解析完整代码库,特别适用于工程项目。通过Codebase Indexing索引全量代码文件,清晰解析复杂调用关系;既能结合全局上下文解释特定代码段,也能快速定位目标代码解决问题,在工程场景中表现尤为突出。
在确定AI编程工具选型后,工程化落地需要建立与AI协作的标准化环境。基于Cursor的代码库索引能力,我们设计了具有自解释特征的初始化工程模板。通过标准化工程结构与预置架构规范,使AI能精准对齐项目技术语境;借助模板工程的隔离特性,在保证主代码库稳定性的同时,为智能编码工具构建可理解、可验证的沙箱环境。
二、项目工程中的初始化配置
构建模板项目工程
1、模板工程作为独立开发环境
采用模板项目工程作为AI编程的开发项目,做到了隔离的作用。该模板项目通过建立标准化示例工程,提供可验证的代码安全范式——包含功能实现参考样例、技术架构说明文档。开发者可基于此模板工程,借助AI编码工具进行隔离式开发,既确保新功能符合安全规范,又能通过标准化结构降低理解成本。
2、基础数据表结构说明
SQL脚本内置常用基础数据表结构,主要包含高频使用的关联查询表。脚本中明确标注各表之间的关联关系及核心字段说明,便于AI快速理解数据结构。
3、公共组件使用指引
针对项目外部公共依赖库,提供模块化使用指南。按功能模块划分说明:工具类集合清单、Redis操作方法、用户信息获取方法等通用功能的调用方式和规范。
如何编写高效的项目规则
清晰明确: 规则要清晰、明确、易于理解,避免使用模糊或模棱两可的描述。
具体可执行: 规则要具体、可执行,能够指导 AI 生成符合要求的代码。
定期更新: 随着项目的发展和需求的变化,定期更新你的 Cursor Rules。
在Project Rules里设置项目级别的专属规则
项目规则的四大关键,提升生成代码的质量
1、项目背景规范
项目概述:阐明系统核心业务目标与轻量级微服务架构定位
技术架构:采用SpringBoot+MyBatisPlus + Vue2 + Elementplus技术体系,集成Lombok、Hutool、Lodash、Moment工具链
开发环境:JDK1.8运行环境,Maven构建工具,Node18 + Pnpm9构建环境
2、项目架构规范
工程结构:分层架构细化(controller/service/mapper/entity/MVVM)
模块划分:按业务维度分包(如user/order/payment),含API模块与核心模块分离
公共组件:BaseController、PageUtils、ResultWrapper、DynamicForm、UploadFiles等可复用工具
3、编码实施规范
代码风格:使用Lombok简化代码,异常处理try...catch,使用Stream API
命名规则:类名大驼峰(UserService),字段小驼峰(userName),常量全大写(MAX_COUNT)
注释标准:所有函数必须有功能性注释说明及作用
4、数据库设计规范
基础字段:必含id(雪花算法)、create_by、create_time、update_time、is_deleted(逻辑删除)
字段命名:表字段与Java属性严格遵循下划线/驼峰自动映射(user_name→userName)
索引优化:单表索引不超过5个,联合索引遵循最左前缀原则
后端(JAVA)项目规则
前端(VUE)项目规则
三、从需求分析到代码生成
需求背景
指产权属于房产公司的物业,合同/协议约定其物业服务费给予优惠收取。
需求描述
1、查询列表:支持按区域、项目、有效期范围、空置收费比例、备案状态等核心字段,并提供查看与终止操作,备案编号按FCKZ+年月日+4位随机数生成,状态涵盖未生效/已生效/已失效。
2、新增备案:
基本信息:申请项目、优惠类型(房屋/车位)、优惠范围、合同信息(名称、签订日期)、备注及附件(10文件/10MB内)、优惠信息。
3、终止功能:需填写终止原因(合约调整/其他)、生效日期(仅当日或未来)、备注及附件,终止后备案状态变更为已失效。
全流程需确保数据联动性、字段校验及状态流转逻辑严谨。
结构化需求拆解与渐进式人机协作
清晰的需求描述是项目成功的基石,需通过结构化表达(如Markdown)整合“人设+任务+上下文+案例+方案”等核心要素,为AI提供完整背景与逻辑框架,使其能精准协助完善功能描述、技术细节及动态优化,最终构建人机协作的高效闭环,确保需求分析与落地执行的一致性。
开发复杂功能时,一次性生成太多代码生成易出现偏差,需采用分步引导策略:首先将大功能拆解为模块化任务链(如架构设计→核心逻辑→异常处理),分阶段向AI递进描述需求;接着通过“生成基础框架→填充关键代码→补充健壮性要素”的渐进式协作,结合代码解释与问题修正的循环验证,在降低认知负荷的同时,确保代码质量与开发方向的可控性。
建议将复杂需求分解为可执行的任务清单,采用分步推进、边修改边验证的迭代模式。此外,可引导AI运用思维链技术进行系统性任务规划,确保执行路径的科学性。
后端接口开发
以下后端接口开发的需求描述:
使用Cursor的Agent模式,以需求文档作为上下文,和Cursor对话,让其完成后端开发,最后完成了包括API接口、功能实现和数据库设计:
接着让其继续生成Markown格式的接口文档:
按要求生成了标准的接口文档:
AI完成接口的功能测试
添加控制器到上下文,输入指令,让AI生成功能性测试的代码。
创建了集成测试类,使用MockMvc测试各个接口的功能。
前端页面开发
以下前端开发的需求描述:
把相关的文件拖进去,可以令大模型更加精准的回答:
生成之后,运行项目报错了;直接把报错截图粘贴到输入框即可添加到上下文,随后会根据报错信息解决问题, 说明这个错误是由于Vue模板中的条件渲染指令使用不正确导致的。
增加一个弹窗组件
在生成的业务模块中,让Cursor新增一个弹窗组件,包含以下内容:项目名称输入框,备注文本域,确认和取消按钮,加载状态管理,且同时调用接口服务,Cursor会扫描整个项目代码,自动创建api文件和弹窗组件,同步实现了表单验证和错误处理,实现一个完整的业务模块。
完成项目路由文件优化
项目中的路由文件比较庞大,且采用的是单文件方式,我们可以要求Cursor按照路由文件按照业务模块拆分成多个独立单元,这样可以提高代码的可维护性和可读性。
实现的一个效果:1个文件26个路由拆分成6个文件,其中包括1个主路由以及5个业务路由文件。且路由文件由Cursor自动创建以及填入路由信息。
最后实现的效果
通过使用 AI 工具自动生成代码,我们成功实现了多个关键需求。AI根据给定的提示词,快速生成了4个基础页面,5个接口实现,以及6个基础组件依赖,大大节省了开发时间和工作量。同时,针对特定业务需求,还新增了2个业务组件,进一步丰富了系统功能。整个开发过程更加高效、精准,为后续的功能扩展和维护打下了坚实的基础。
功能验证
1、列表查询功能确认字段映射准确对应,查询条件与需求文档定义一致,分页逻辑运行正常。
2、动态查询条件可实现数据精准筛选,结果集匹配符合预期。
3、详情查看功能各字段显示内容与数据源保持正确关联。
4、新增功能字段配置完整无误,数据存储流程执行正常。
5、终止操作提交时触发参数校验异常,原因为接口定义的日期格式与前端传输的时间格式不一致。
初步版本已实现需求文档基本功能,针对接口报错问题,根据报错日志快速定位并修复了接口参数日期格式问题。
实践小结
本次需求开发实践中,首先对产品文档进行结构化拆解,明确功能边界与状态流转规则,梳理形成包含12个核心字段的数据库模型。完成后端Spring Boot业务逻辑(基础增删改查与数据库交互)和前端界面以及数据交互逻辑(含数据校验与双向绑定)。
开发周期中需求分析阶段耗时占比最高,采用"功能模块闭环验证"策略:每个功能点完成接口自测、前后端联调、业务规则核验检查,针对出现的异常(如日期格式冲突)进行定向优化。实践证明,结合AI代码生成工具时,开发者更需聚焦于需求结构化表达与核心业务逻辑的精准把控,通过"小步快跑、持续验证"的迭代模式实现工程质量的稳步提升。
四、项目经历分享
1、快速上手项目有妙招
使用Agent模式给你整理出项目的架构图,输出Mermaid语法的文本;粘贴到看图文本工具: https://mermaid.live/ ,快速了解项目。
要使用agent模式,通过查看项目的结构整理出来架构图:
复制Mermaid代码到在线看图工具可以看到以下效果图;另外,也可以添加项目架构图让AI智能分析,可快速理解其设计思路与组件关系。
2、AI在调试接口返回结构时多次出错
首次错误是请求类已封装返回data结构体,但代码仍调用result.data.records
第一次就可以定位到问题,但是没有正确的解决问题;第二次被告知正确路径应为result.records,却错误地在外围添加多余的空值判断,未修正核心路径引用问题。这表明 AI 陷入了“死胡同”,无法跳出思维链。
此时,可以通过优化project rules增加接口返回数据的示例说明来令AI知道接口数据的返回格式。
或者通过提问时候的提示词来解决
3、借助MCP MySQL Server生成接口指定信息的入参示例
添加一个MCP Servers,替换正确的数据库配置信息
{
"mcpServers": {
"mysql": {
"command": "npx",
"args": ["-y", "@f4ww4z/mcp-mysql-server"],
"env": {
"MYSQL_HOST": "your_host",
"MYSQL_USER": "your_user",
"MYSQL_PASSWORD": "your_password",
"MYSQL_DATABASE": "your_database"
}
}
}
}
新建一个终端启动MCP Servers,随即开启并刷新一下,就看到小绿色点,说明MCP Servers已经启动成功了。
npx -y @f4ww4z/mcp-mysql-server
给新增接口创建一些示例数据,要指定的项目数据:
可以看到会先调用MCP tool查询到指定的两个项目信息,然后拿到项目ID作为入参生成了完整的接口入参示例。
4、生成前端单元测试
使用 AI 生成前端单元测试是一大优势,它可以直接结合你已有的函数或组件逻辑,自动生成 Jest、Vitest、Testing Library 等测试代码,大大节省你手写测试的时间。
原函数
export function sum(a: number, b: number): number {
return a + b;
}
AI 自动生成
// utils.test.ts
import { sum } from './utils';
describe('sum', () => {
it('should return correct sum of two numbers', () => {
expect(sum(1, 2)).toBe(3);
expect(sum(-1, -1)).toBe(-2);
expect(sum(0, 0)).toBe(0);
});
});
5、设计图生成前端代码
AI 可以通过分析设计图并生成响应式布局代码,减少开发者的工作量。下面是一个通过 AI 实现设计图生成代码的示例流程和生成的代码示例。
- 设计图:上传或插入设计图(例如,Figma、Sketch 或 PNG 图片)。
- AI 识别:AI 会分析设计图的结构,识别出表单、按钮、文本框等元素。
- 输出代码:AI 根据设计图内容生成 HTML、CSS 或框架代码(如 Vue、React)。
- 优化与反馈:开发者可以根据项目需求调整生成的代码,进一步优化样式或功能。
6、上下文优化策略
适当添加相关文件至对话上下文可显著提升AI任务完成质量,但需注意控制文件数量,仅提供核心文件即可。过量文件输入反而可能干扰AI的重点识别能力。
五、结语
在应用Cursor等智能工具时,建议采用"指挥官-执行者"协作范式而非放任自治。开发者需构建完整的系统认知框架,明确功能模块划分标准与交互协议,将AI定位为精准的代码实施单元。软件工程本质是架构设计与代码实现的复合体,应引导AI承担后者而非前者。建议建立结构化需求文档作为"数字契约",确保AI的每次迭代都遵循既定设计规范。对话交互宜聚焦文档索引与规范调用,避免在开放式会话中定义核心需求。
本文作者:
蔡冠怡:碧桂园服务后端开发高级工程师
邓涛:碧桂园服务前端开发专家
指导人:
余俭:碧桂园服务技术总监
简洪胜:碧桂园服务技术专家
相关文章:

AI编程在BOSS项目的实践经验分享
前言 在人工智能技术革新浪潮的推动下,智能编程助手正以前所未有的速度重塑开发领域。这些基于AI的代码辅助工具通过智能提示生成、实时错误检测和自动化重构等功能,显著提升了软件工程的全流程效率。无论是初入行业的开发者还是资深程序员,…...
力扣-131.分割回文串
题目描述 给你一个字符串 s,请你将 s 分割成一些 子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 class Solution {List<List<String>> res new ArrayList<>();List<String> path new ArrayList<>();void…...

数学:”度量空间”了解一下?
度量空间是现代数学中一种基本且重要的抽象空间。以下是对它的详细介绍: 定义 相关概念 常见的度量空间举例 度量空间的类型 度量空间的作用 度量空间是拓扑空间的一种特殊情况,它为拓扑空间的研究提供了具体的模型和实例。同时,度量空间在…...

jenkins脚本查看及备份
位置与备份 要完整备份 Jenkins 的所有脚本和相关配置,包括 Jenkinsfile、构建脚本(如 .sh / .bat)、Job 配置、插件、凭据等,你可以从两个层面入手: ✅ 一、完整备份 Jenkins 主目录(最全面) …...

用电脑通过网口控制keysight示波器
KEYSIGHT示波器HD304MSO性能 亮点: 体验 200 MHz 至 1 GHz 的带宽和 4 个模拟通道。与 12 位 ADC 相比,使用 14 位模数转换器 (ADC) 将垂直分辨率提高四倍。使用 10.1 英寸电容式触摸屏轻松查看和分析您的信号。捕获 50 μVRMS 本底噪声的较小信号。使用独有区域触摸在几秒…...
嵌入式面试提纲
一、TCP/IP 协议 1.1 TCP/IP 五层模型概述 链路层(Link Layer) 包括网卡驱动、以太网、Wi‑Fi、PPP 等。负责把数据帧(Frame)在相邻节点间传输。 网络层(Internet Layer) 最典型的是 IP 协议 (IPv4/IPv6)。负责 路由选路、分片与重组。 其他:ICMP(Ping、目的不可达等)…...
算法工程师认知水平要求总结
要成为一名合格的算法工程师或算法科学家,需要达到的认知水平不仅包括扎实的技术功底,更涵盖系统性思维、问题抽象能力和工程实践智慧。以下是关键维度的认知能力要求: 一、理论基础认知深度 数学根基 概率统计:深刻理解贝叶斯推断…...

《如何使用MinGW-w64编译OpenCV和opencv_contrib》
《如何使用MinGW-w64编译OpenCV和opencv_contrib》 在Windows环境下使用MinGW编译OpenCV和opencv_contrib是一个常见需求,尤其是对于那些希望使用GCC工具链而非Visual Studio的开发者。下面我将详细介绍这个过程。 准备工作 首先需要安装和准备以下工具和库: MinGW(建议使…...
数据库、数据仓库、数据中台、数据湖相关概念
文章目录 序言1数据库,数据仓库,数据中台,数据湖-概念对比释义1.1概念产生的时间顺序1.2在使用功能方面对比1.3在使用工具方面对比 2数据仓库2.1数据仓库的发展阶段2.2 数据仓库的设计2.3数据仓库常用工具,方法2.3.1分析型数据库和…...

模拟搭建私网访问外网、外网访问服务器服务的实践操作
目录 实验环境 实践要求 一、准备工作 1、准备四台虚拟机,分别标号 2、 防火墙额外添加两块网卡,自定义网络连接模式 3、 关闭虚拟机的图形管理工具 4、关闭防火墙 5、分别配置四台虚拟机的IP地址,此处举一个例子(使用的临…...
【RAG召回】BM25算法示例
rank-bm25 功能示例 本篇将通过多个示例,快速展示 rank-bm25 库的核心功能。不使用jieba。 准备工作 首先,确保您已经安装了 rank-bm25。 pip install rank-bm25接下来,我们定义一个通用的中文语料库和分词函数。这里我们使用简单的单字切…...

vue中Echarts的使用
文章目录 Echarts概述什么是EchartsEcharts的好处 Vue中Echarts的使用Echarts的安装Echarts的引入 Echarts概述 什么是Echarts Apache ECharts:一个基于 JavaScript 的开源可视化图表库。 其官网如下:https://echarts.apache.org/zh/index.html Echar…...

【C++项目】负载均衡在线OJ系统-1
文章目录 前言项目结果演示技术栈:结构与总体思路compiler编译功能-common/util.hpp 拼接编译临时文件-common/log.hpp 开放式日志-common/util.hpp 获取时间戳方法-秒级-common/util.hpp 文件是否存在-compile_server/compiler.hpp 编译功能编写(重要&a…...
Linux环境-通过命令查看zookeeper注册的服务
假设前置条件如下: 1.root权限用户名:zookeeper 2.zookeeper所在服务器地址:168.7.3.254(非真实ip) 3.zookeeper的bin文件路径:/opt/zookeeper/bin 4.确保zookeeper注册中心已启动 查看注册中心服务如下&a…...

Spring Boot微服务架构(十一):独立部署是否抛弃了架构优势?
Spring Boot 的独立部署(即打包为可执行 JAR/WAR 文件)本身并不会直接丧失架构优势,但其是否体现架构价值取决于具体应用场景和设计选择。以下是关键分析: 一、独立部署与架构优势的关系 内嵌容器的优势保留 Spring Boot 独立部署…...

(四)Linux性能优化-CPU-软中断
软中断 中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力 由于中断处理程序会打断其他进程的运行,所以,为了减少对正常进程运行调度的影响,中断处理程序就需要尽可能快地运行 Linux 将中断处理过程分成了两个阶段&a…...
SCADA|RESTful学习,Apipost通过GET获取KingSCADA实时数据
哈喽,你好啊,我是雷工! 以前记录过一篇《安装APIPost工具,了解RESTful》的笔记。 最近涉及到SCADA程序和MES对接,这种信息化的对接,常常要用到RESTful。 好像还有什么Webservices,我是听的一头雾水。 根本听不懂啊,于是加班补补课,先了解下RESTful。 01 RESTful传…...
【CSS-7】深入解析CSS伪类:从基础到高级应用
CSS伪类是前端开发中不可或缺的强大工具,它们允许我们根据文档树之外的信息或简单选择器无法表达的状态来样式化元素。本文将全面探讨CSS伪类的各种类型、使用场景和最佳实践。 1. 伪类基础概念 1.1 什么是伪类? 伪类(Pseudo-class&#x…...

QT的工程文件.pro文件
文章目录 QT的工程文件.pro文件QT5中的基本模块Qt CoreQt GUIQt WidgetsQt QMLQt QuickQt NetworkQt SQLQt MultimediaQt ConcurrentQt WebEngineQt TestLib TARGET 可选择的模版CONFIG的配置项 QT的工程文件.pro文件 每一个QT项目都至少有一个.pro文件,用来配置项目…...
用 DeepSeek 高效完成数据分析与挖掘
一、DeepSeek 是什么? DeepSeek 是由深度求索推出的智能助手(当前版本 DeepSeek-R1),具备强大的自然语言理解、代码生成与数据分析能力。它支持 128K超长上下文,可处理复杂数据文档,并直接生成可运行的 Python 数据分析代码,是数据工作者的“AI副驾驶”。 二、DeepSeek…...

安科瑞防逆流方案落地内蒙古中高绿能光伏项目,筑牢北疆绿电安全防线
一、项目概况 内蒙古阿拉善中高绿能能源分布式光伏项目,位于内蒙古乌斯太镇,装机容量为7MW,采用自发自用、余电不上网模式。 用户配电站为35kV用户站,采用两路电源单母线分段系统。本项目共设置12台35/0.4kV变压器,在…...
stress 服务器压力测试的工具学习
一、stress 工具介绍 tress 是一种工具,可以对符合 POSIX 标准的操作系统施加可配置数量的 CPU、内存、I/O 或磁盘压力,并报告其检测到的任何错误。 stress 不是一个基准测试。它是由系统管理员用来评估其系统扩展性的工具,由内核程序员用来…...

在本地电脑中部署阿里 Qwen3 大模型及连接到 Elasticsearch
在今天的文章中,我将参考文章 “使用 Elastic 和 LM Studio 的 Herding Llama 3.1” 来部署 Qwen3 大模型。据测评,这是一个非常不错的大模型。我们今天尝试使用 LM Studio 来对它进行部署,并详细描述如何结合 Elasticsearch 来对它进行使用。…...

八股---7.JVM
1. JVM组成 1.1 JVM由哪些部分组成?运行流程? 难易程度:☆☆☆ 出现频率:☆☆☆☆ Java Virtual Machine:Java 虚拟机,Java程序的运行环境(java二进制字节码的运行环境)好处:一次编写,到处运行;自动内存管理,垃圾回收机制程序运行之前,需要先通过编译器将…...

C++性能优化指南
思维导图(转载) https://www.processon.com/view/5e5b3fc5e4b03627650b1f42 第 1 章 优化概述 1.1 优化是软件开发的一部分 优化更像是一门实验科学。 1.2 优化是高效的 1.3 优化是没有问题的 **90/10 规则:**程序中只有 10% 的代码…...

数据集-目标检测系列- 猴子 数据集 monkey >> DataBall
贵在坚持! * 相关项目 1)数据集可视化项目:gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/overview 2)数据集训练、推理相关项目:GitHub - XIAN-HHappy/ultralytics-yolo-webui: ultralytics-yo…...
【RAG召回】bge实现向量相似度索引
sentence-transformers 是一个非常强大的 Python 框架,它可以将句子或段落转换成高质量、高信息密度的数字向量(称为“嵌入”或 Embeddings)。它厉害的地方在于,语义上相似的句子,其向量在空间中的距离也更近。 这使得…...

算法-数论
C-小红的数组查询(二)_牛客周赛 Round 95 思路:不难看出a数组是有循环的 d3,p4时,a数组:1、0、3、2、1、0、3、2....... 最小循环节为4,即最多4种不同的数 d4,p6时,a数组:1、5、3、…...
原型对象(Prototype)详解
原型对象(Prototype)详解 一、核心概念 本质:每个 JavaScript 对象(除 null 外)都有的内置属性作用:实现对象间的属性/方法继承(原型继承)存储位置:[[Prototype]] 内部属性(通过 __proto__ 或 Object.getPrototypeOf() 访问)二、关键特性图示 对象实例 (obj)│├─…...
MongoDB账号密码笔记
先连接数据库,新增用户密码 admin用户密码 use admin db.createUser({ user: "admin", pwd: "yourStrongPassword", roles: [ { role: "root", db: "admin" } ] })用户数据库用户密码 use myappdb db.createUser({ user: &…...