Cursor太牛逼了,2小时完成一个Web框架开发
本文面向技术人员阅读,非技术人员不一定能看懂全文。
昨天晚上花了2小时,用cursor完成了一个轻量级web框架开发,着实让我惊叹到了,效率惊人, 代码质量非常高,注释清晰、结构合理、文档完善,直接可以达到拿去开源的水平了。
背景
先说下背景,本人是一个据有多年开发经验的老鸟,虽然谈不上大佬,但是的软件开发上也是拥有一定的经验,前后端、python、java、golang都会一点,也做过几年的架构,所以用cursor开发框架,我能描述我所需要的东西。
同时,有个项目需要,在一个业务管理平台,需要管理和采集边缘侧的设备信息,需要部署边缘侧软件,与管理中心通信,并且采集边缘侧设备数据,具体的需求不展开了,我归纳总结下,就是需要一个边缘侧软件服务,能与中心侧进行http通信,同时和设备进行TCP通信,同时这个边缘侧也有简单的web页面进行管理,也希望比较轻量级的服务。不希望采用springboot这种比较重的框架来做,做过一些调研,要么采用vertx框架(java系)、要么采用golang实现这两方式,考虑到vertx功能比较多,学习成本比较高,而golang开发的后续维护人员不一会golang语言。
所以有想自己造个轮子的想法,基于netty撸一个比较轻量级的web框架,翻了开源界的,有是有几个现成的,但是看着star只有两位数的,不太敢用(稳定性、bug等各方面考虑)。
所有有计划自己撸一个。
netty还是比较熟悉,曾用它做过淘宝的图片服务器,性能上那真是杠杠的。虽然技术方案和实现,自己心里都很有底的,但是感觉肯定也会有bug出现。
正好前段时间cursor刚出来时,体验了下开发一个chrome插件,感觉很省力,最近又看了下网上不少不懂技术的人也开发出来产品,了解了一番,感觉用这个工具来帮完成这个开发应该能行地通。
要求
近半年也陆续学习了些AI知识,花了半天了解下别人使用cursor的心得,依据我的理解,说下使用cursor入门要求:
对于业务功能性的产品开发,也就是直接终端用的产品,比如APP、小程序、网站、桌面应用等等之类的,最好有产品经理的思维,一句话,你能描述清楚你想要的是什么产品功能,其实这个门槛很低的,把产品功能列出来,业务和逻辑上能走通就行了。
对于技术性产品,OK,这个网上案例应该比较少,今天我的这个案例就是技术性产品,需要你本身是一个技术人员,最好有抽象和架构能力的技术同学,产品用户往往是开发人员,需要你能抽像描述清楚各技术维度的要求和功能。
行动
基础入门
了解cursor的基本用法、使用注意点,技巧,基本上花半小时就差不多了 ,cursor真的是针对小白一样用户使用操作,如果你使用过chatgpt等AI聊天工具的人(我相信大部分网民多少都有用过了吧,不过真落后了),会写基本的prompt 那最好了。
cursor的基本用法,可以访问这儿《Cursor教学》花10分钟看下就行了。
怎么写prompt,可以参考这个文章《一文学会Prompt(提示词)编写技巧》
第一步,设定系统规则
详见文档:《Cursor编写一个技术产品的System Rules》
第二步,写提示词
说实话,三个小时完成框架开发,其中花费我最多脑力的就近一个小时编写了需求的提示词,直接贴出来了,有需要的可以参考:
你是一名具有20年经验极其优秀的架构师,精通所有编程语言,对基础软件框架建设有特别的心得,特别在安全性、稳定性以及高性能上有着丰富的经验。
我们目前新建了一个web框架项目,叫tiny,你现在正在这个项目的根目录,请帮助我完成这个框架的开发。
## 框架的功能说明
1、基于Netty框架,实现轻量级的Web框架,启动占用资源少,系统响应速度快,运行稳定;
2、支持HTTP请求和响应,支持按http请求uri路由,使用框架的开发用户可以在路由配置类里面容易地增加路由,然后根据路由可以开发具体的业务功能;
3、支持在application.yaml文件里面配置全局的变量,比如在实现具体功能时的业务变量,系统启动后,初始化为全局appcontext,在任何功能实现可以使用变量;
4、支持引入SQLite作为本地数据持续化存储,并有方便访问SQLite接口配置;
5、支持TCP长连接,该框架后续将会与物联网设备建立长连接,由设备发起TCP连接请求,建立连接后,该框架上的业务功能实现,可以通过TCP连接请求设备,拿到业务需要的数据或者下发指令;
6、支持对外请求响应的拦截处理,方便后续功能开发上扩展增加处理类(例如鉴权判断);
7、支持前端静态资源文件集成和访问(包含图片、css、js、html等前端工程编译后的内容,放在框架的static目录);
8、支持本地关键数据缓存功能(list、map等);
9、支持http服务端口配置,支持tcp端口配置;
10、运行时支持外部http请求心跳检测;
11、支持日志打印
## 技术选型
1、采用maven管理工程;
2、使用java语言,基于netty框架开发,尽量少引入其他依赖,必要引入时需要用户(我)来确定;
3、保持java通用的目录结构(包括不权限于pom.xml位置、src文件夹、resource文件夹、static文件夹);
## 非技术性要求
1、之所以没有使用业界上的现有web框架,主要是太重了,希望基于netty实现一个启动占用资源少,系统响应速度快,运行稳定的轻而小的web框架,后续用于运行在物联网边缘侧设备上;
2、请做好代码注释,方便框架维护者后续可以修改,同时方便开发者用户知道怎么使用框架;
3、因netty框架使用,在不同业务场景下,配置的netty参数不同,以发挥最佳性能,请提供三套相关参数配置建议(低并发请求量场景、普通并发请求场景、高并发请求场景)
4、框架的java包以com.benzhitech作为开头
## 其他要求
1、实现以下功能 demo:
- 有前端页面
- 有http接口请求
- 收到http请求后的处理
- http处理中访问数据库
- 收到tcp请求后,建立tcp连接,并能使用tcp连接通信
2、 请把你的设计思路、原则、实现过程完整地写入到readme.md文件中
3、完成框架开发时,请写一份框架使用说明文档放在根目录
第三步,丢给cursor开始工作
打开compose界面,把上面提示词丢给它,然后它就开始工作了:
Cursor会把任务拆解,然后按拆解后的任务开始一个个做,每做完一个,会让你确定是否认可。你可以拒绝让他重新生成代码,也可以提出建议让他修改。
这过程中,有些需要注意点:
1、因为有些功能或需求在交互过程你可能会提出看法建议,从而打断他的任务,所以回到继续往前开发进度上,你要时不时提醒他回顾聊天上下文;
2、提示他开发的任务和进度写入task.md文件;
3、因为我网络有过中断,cursor也关了重开过,所以为了让他继续开发,我需要让他了解之前所有的东西,我一般会使用@CodeBase 然后提示他查看上下文和任务进度(task.md),让他继续;
4、过程中,我也会想到和提出自己的一些建议;
时不时提醒它
这个我不太确定是否需要,因为我没办法验证有效性,但是从我的理解上来说,怕Cusor记忆丢失(AI对话久了老是会忘记背景和前面说的话),需要时不时作些提醒,总能加强他的理解,以防出现幻觉。我用的提醒方式有以下几种:
把必要的信息写入文档,包括需求、任务进度等,文档放在项目根目录,必要时@相关的文档;
需要全局它回顾代码时,用@CodeBase命令,它会去阅读项目所有的代码,以了解整体代码情况;
时不时的让他回顾下对话上下文,明白目前进度情况,对话背景等等,以知道后续要做的工作;
第四步,review所有代码
完成所有开发时,让他转换下身份,对整体代码Review并做些评价,有问题的时候再让他作优化
第五步:运行和测试
让它运行代码,和跑单元测试,这时候如果有报错,可以把错误发给它,让他修复相关错误。
第六步 编写文档
最后,让他编写相关的文档,这是提示词:
这文档编写出来的质量,真是清晰明了,包括架构图、流程图,使用案例等等,各方面都很完整
一共回来交互,使用了41个requests,一个注册账号可以免费使用50次,也差不多快花完了,要不重新注册账号,或者我也在考虑花20美元购买pro版本(据说有渠道可以便宜买到,晚点去找找看是否是这样)
质量
反正我是挺满意的,本来自己开发估计一周能写个差不多,修改测试等,各方面估计还要搞一个星期,还不一定能保证性能、稳定性、质量达到要求。
看这代码和注释写的,后续再修改和维护,容易多了,比人写的屎一坨代码不知道好多少。
你们觉得怎么样? 反正我觉得是开发一大利器 ,有些自己不会的语言和开发,感觉都可以让它做了,什么chrome插件 windows桌面应用 ios开发, 小程序 原生app ,啥都能开发,很多重复性的工作,也可以随时让它开发个工具来做,你说香不香?