周末花了差不多 8 个小时来深度体验一下当下火爆的 AI 编程方式,讲实话,非常震撼。先把成果给大家看一下:
Github: github.com/TOBE-TOGETH...
已实现功能包括:
- 用户注册
- 登录鉴权
- 后台
- 编辑用户信息
- 创建编辑商店
- 创建编辑产品
- 前台
- 商店列表
- 商品列表
- 商品详情
- 购物车
- 结算页面
工具
- Cursor(Pro) + claude-3.7-sonnet
- MCP
- server-sequential-thinking
- Browser-tools-mcp
编程过程
全程使用 Cursor Agent 来进行编程,不手写一行代码。首先准备了一个 readme 文件写一个简短的项目介绍,包括网站内容,功能模块,使用的语言以及框架。可以参考项目 readme。
之后 Cursor 会快速准备本地开发环境,下载项目所需的框架依赖,并初始化了一个较简单的前后端框架,但是前端页面基本上都是静态的。之后就需要编程者逐个页面,逐个功能的进行细化提问,cursor 有能力统筹前后端开发的能力,因此可以直接将需求,验证效果即可。
一个有趣的发现是,Cursor 由于参考了很多项目的代码,功能细节考虑的很到位,如果是个人开发者(没有产品设计和 UI 设计),可以把更多的自由度留给 Cursor,提要求时可以就给一句话的需求,往往会有很多意料之外的惊喜(这恰恰和敏捷开发的思想非常契合!!)。当然,如果精力充沛,需求描述的越精细,实现效果也会和期待越一致。
在开发的初期,使用"一句话需求"的方式会非常愉快,几乎可以在几个小时内孵化出项目的整体大概。对于 UI 设计风格等问题也可以上网上找个设计,截图给 Cursor 并要求参考这个截图来设计网站的整体风格设计,出来的效果很惊艳。
用 AI 编程的感受更像是捏橡皮泥,先捏个大概框架,然后分模块逐步丰富细节。整个项目的可用性和细节度完全取决于开发者对于项目的认识有多深刻,以及经验有多丰富。就像老师傅带着小徒弟一起盖房子,小徒弟都是一样的聪明伶俐,最后盖得房子好不好看,牢不牢固就全看老师傅功力了。
问题
然而,在狂野的开发模式下,随着实现了的功能越来越多,一些问题也会慢慢浮现出来:
调试能力欠佳
一般静态的问题,例如哪里的 label 显示不对,没有进行多语言支持,这类简单的问题可以通过截图给 Cursor,由它自己去定位代码并修复,但是如果发现某个接口返回报错 403,或 500。这种情况下 Cursor 也会反复的去比对前后端请求内容和日志,甚至会写额外的日志和调试接口来调试,但效率较低。正常情况有经验的开发人员可以很快比较出请求结构体中的字段是否匹配,但 Cursor 需要多轮测试。这种情况需要开发者介入,直接描述根本问题,指导 Cursor 修复会更快一些。
代码缺少设计
由于我前期开发方式比较野蛮,前期一直由 Cursor 自由发挥实现,代码迭代很快,每个需求可能要改到10多个文件,基本上不会去 review 其实现的方式。代码量积累下来后会发现 Cursor 在实现时很少会考虑复用性和可维护性(不确定是否和我事先没有定义Cursor Rules 有关)。例如, Product 卡片的组件,在不同的页面会生成不用样式的卡片组件,而且想同的 bug 要每个页面都改一次。另一个例子,目前后端 Golang 的接口都是在 main.go 一个文件中实现的,目前已经达到 1300 多行,并没有按照功能模块进行拆分。
按下葫芦起了瓢
不可否认 Cursor 的上下文功能已经很强大,当一个新页面创建出来时候,相关联的页面中通往该新页面的链接会一同修改正确。再比如,要求 Product detail 页面多加一些字段可维护,后端的接口以及数据库 Model 都会一同修改过来。但是,在一些复杂场景下,"按下葫芦起了瓢" 的现象时有发生,刚开发好了的功能或页面,在后续的新功能开发中可能会被破坏,体验很差。
认真思考了一下,这个问题本质上与工具无关,人工开发也是会面临同样的问题。由于 AI 开发的效率太高了,在极短时间进行了太多的改动,以至开发者体感上认为问题出现的很频繁。如果对 Cursor 的变动都进行了充分的人工审查,这个问题或许也是可以避免的,但人工的成本自然也就高了起来。所以,这或许又回到了效率和质量之间如何平衡的问题。
对于以上问题我想到的一些对策。
- 在项目中设置 Cursor Rules,注明代码规范,文档要求以及测试要求。效果将会在后续进行验证。
- 测试驱动开发在这种快速迭代的场景下应该会很奏效,有了回归测试用例的保证,可以把已开发好的功能沉淀下来,在开发新功能时会更加的从容。
- 在已有测试用例的情况下可以阶段性地要求 Cursor 按照设计模式重构代码,抽象可复用组件。
感受和思考
短短 8 个小时的体验还不够充分,相信随着后续的深入,应该会有更多的发现。但就本次项目的实现度而言,我有理由相信,有了 AI 的加持,个人开发能力将被极度放大,效率远超人工一个团队。未来开发方式势必会发生变革。个人的几个观点如下:
- 未来,有着丰富项目经验,领域知识丰富的高级开发和高级产品人员会更加受市场青睐;初级人员从业难度会跟大。
- 人工手敲代码的开发方式一定会被取代,像编程语法,框架使用这类基础知识会变得很低收益。开发人员应注重学习设计模式,编程规范,各种系统及功能最佳实践,使用 AI 工具的最佳实践等可移植性的知识。
- 小团队甚至个人开发者的开发方式会很流行。传统意义上的产品经理,开发人员,测试人员等职能界限会越来越模糊,开发模式会被重塑。
最后推荐几个工具网站给大家,欢迎大家也都自己动手实践一下: MCP: github.com/modelcontex... Free Picture: www.pexels.com/ Product Prototype: minimals.cc/ UI Design: ui8.net/