Cursor太牛逼了,2小时完成一个Web框架开发 - AI全书 -- 知识铺 -- 知识铺
本文面向技术人员阅读,非技术人员不一定能看懂全文。
昨天晚上花了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》
第二步,写提示词
说实话,三个小时完成框架开发,其中花费我最多脑力的就近一个小时编写了需求的提示词,直接贴出来了,有需要的可以参考:
<div id="code-lang-markdown"><p><code data-highlighted="yes"><table><tbody><tr><td><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
</pre></td><td><pre>你是一名具有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、完成框架开发时,请写一份框架使用说明文档放在根目录
</pre></td></tr></tbody></table></p></div>
第三步,丢给cursor开始工作
打开compose界面,把上面提示词丢给它,然后它就开始工作了:
Cursor会把任务拆解,然后按拆解后的任务开始一个个做,每做完一个,会让你确定是否认可。你可以拒绝让他重新生成代码,也可以提出建议让他修改。
注意事项
-
交互过程中的建议与任务进度管理
在我们合作的过程中,有时我会基于某些功能或需求提供看法和建议。这些建议可能会暂时打断正在进行的任务。为了确保我们能持续有效地推进工作,请记得在收到建议后,适时地回顾之前的聊天记录,以帮助你重新连接到原来的开发进度上。
-
开发任务与进度的文档化
请确保将所有的开发任务和相应的进度更新写入
task.md
文件中。这样做不仅有助于跟踪项目的进展,也能为团队成员之间的沟通提供便利。aaaaaa
3、因为我网络有过中断,cursor也关了重开过,所以为了让他继续开发,我需要让他了解之前所有的东西,我一般会使用@CodeBase 然后提示他查看上下文和任务进度(task.md),让他继续;
4、过程中,我也会想到和提出自己的一些建议;
时不时提醒它
这个我不太确定是否需要,因为我没办法验证有效性,但是从我的理解上来说,怕Cusor记忆丢失(AI对话久了老是会忘记背景和前面说的话),需要时不时作些提醒,总能加强他的理解,以防出现幻觉。我用的提醒方式有以下几种:
-
把必要的信息写入文档,包括需求、任务进度等,文档放在项目根目录,必要时@相关的文档;
-
需要全局它回顾代码时,用@CodeBase命令,它会去阅读项目所有的代码,以了解整体代码情况;
-
时不时的让他回顾下对话上下文,明白目前进度情况,对话背景等等,以知道后续要做的工作;
第四步,review所有代码
完成所有开发时,让他转换下身份,对整体代码Review并做些评价,有问题的时候再让他作优化
第五步:运行和测试
让它运行代码,和跑单元测试,这时候如果有报错,可以把错误发给它,让他修复相关错误。
第六步 编写文档
最后,让他编写相关的文档,这是提示词:
这文档编写出来的质量,真是清晰明了,包括架构图、流程图,使用案例等等,各方面都很完整
经过使用41个requests,一个注册账号可以免费使用50次,已经快用完。考虑重新注册账号或者购买pro版本以增加使用次数。pro版本据说可以通过某些渠道以更便宜的价格购买,我计划稍后寻找相关信息。
代码质量和后续维护方面,我非常满意。原本自己开发可能需要一周时间完成基本功能、修改和测试,并且难以保证性能、稳定性和质量达到要求。相比之下,现有代码的注释清晰,后续修改和维护会容易很多,比其他人写的一坨代码不知道好多少。
开发利器的看法
在当今快速发展的科技环境中,有一个强大的辅助工具对于开发者来说无疑是如虎添翼。它可以帮助我们克服在多种编程语言和开发环境中遇到的难题,无论是Chrome插件、Windows桌面应用、iOS开发,还是小程序与原生App的创建,这个工具都能提供极大的帮助。此外,面对日常开发中的重复性任务,我们也可以借助这一工具来简化流程,提高效率。
有了这样一个多功能的开发助手,不仅能够提升个人的工作效能,还能激发更多的创新可能性。无论是对于初学者还是经验丰富的专业人士,这样的工具都是一个非常吸引人的资源。可以说,它确实是一个‘香’的选择,为软件开发领域带来了新的活力和便利。
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/ai/post/20241218/Cursor%E5%A4%AA%E7%89%9B%E9%80%BC%E4%BA%862%E5%B0%8F%E6%97%B6%E5%AE%8C%E6%88%90%E4%B8%80%E4%B8%AAWeb%E6%A1%86%E6%9E%B6%E5%BC%80%E5%8F%91-AI%E5%85%A8%E4%B9%A6--%E7%9F%A5%E8%AF%86%E9%93%BA--%E7%9F%A5%E8%AF%86%E9%93%BA/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com