我用AI完成了一个独立的项目!太🐂逼了!
背景
大家好!我是开源网校系统MeEdu的作者。今天跟大家分享一个我和AI的协助经历。今年上半年,突然有一个想法,就是做一个免费的SSL证书签发和部署平台,这个平台主要解决云服务资源的SSL证书续签和部署的问题。有想法之后就开始调研,简单调研之后发现工作量还不小,虽然觉得这是一个不错的想法,但是想要实时的话成本较高,也就作罢。
契机
不过在今年9月的一天,刷推特看到了有人分享cursor的视频,其实在这之前我也刷到过很多cursor的推荐不过都没有过多的关注,但是出于对AI的好奇,我还是点击那个视频进去看了下,视频10分钟不到,但是给我的印象非常深刻!看的过程中不得不惊叹AI竟然已经发展到这个地步。
于是,第二天我就里面下载了cursor体验了一把,几分钟就整出了gin的脚手架。体验之后,心情波动比较大,一方面是惊叹AI的进化实在太快,难免担心这以后让程序员如何混口饭吃;另一方面,AI带来的低成本高效率的工作替代体验对于程序员来说简直就是外挂!以前脑子中各种想法在AI的帮助下完全可以低成本快速的上线MVP推出市场验证!于是,我们的第一款产品上线了。
17SSL
17SSL是一款定位于云服务资源SSL证书管理平台。它提供一键申请免费的SSL证书(由Lets Encrypt提供),一键部署证书到云服务资源(注入:点播、直播、CDN等等)。
地址:www.17ssl.cn
现在注册完整微信绑定免费赠送四个证书额度!
解决的痛点:
现有的免费SSL证书申请无法界面化操作,操作不友好 ⇒ 17SSL提供界面化操作
免费SSL证书只有3个月的有效期,一张证书一年要申请四次对应也需要部署四次 ⇒ 17SSL提供证书的自动化申请、部署
阿里云/腾讯云等云服务厂商限制了免费SSL证书每年的额度。现有的额度只够5个子域名用一年,更多的话就需要购买付费证书 ⇒ 17SSL的成本只有付费证书的百分之一甚至更低
忘记续签SSL证书的事情时有发生,大厂也不列外 ⇒ 17SSL提供全流程的自动化!自动维护Web服务的SSL证书从而确保证书永不过期
AI交互经验
经验一:任务拆分
AI至少现阶段来说并不是万能的!不能直接对AI说帮我写一个XXX软件,然后就期望它给你直接写出来。所以,在使用AI之前,必须先明白AI能做到哪一步。这是非常重要的一个概念。
下个我举个例子说明下:
第一步、首先,我的目标是要在AI的协助下开发一款SSL证书管理平台(下文就叫做17SSL)。
第二步、现在我要的做的是在充分理清楚业务的需求之后,做一个任务的拆分,拆分如下:
模块一:用户注册/登录/密码找回
任务一:确认数据结构,创建数据表
任务二:基于数据表编写注册/登录等服务的API
任务三:设计交互界面
任务四:对接API打通业务流程
模块二:用户下订单/支付
…
模块三:SSL证书申请/验证/下载
…
按照上述对目标拆分任务后,就可以在AI协助下逐个的完成最终的小任务。小范围的任务是目前AI能够hold住的!
经验二:再拆分
还是举个例子说明,比如说,现在我需要AI帮我完成邮箱注册的功能,我会这样跟AI说:
请在文件 auth.go 实现用户注册功能,要求如下:
1.首先,验证前端传递的参数 email,password 要求email必须是邮箱格式,长度不能超过60个字符串,password 的长度不少6位不能超过6位
2.校验参数之后,需要检查邮箱是否已经注册,方法实现请编写到 service/user.go
3.校验注册之后,创建用户 用户表是 model/user.go
4.增加限流的控制,同一个IP限制一天只能注册一个账号,请用 redis 实现
5.注册功能之后给邮箱发送一封欢迎注册的邮件,邮件发送可以参考 mail.go
上面我写了一大堆的需求恨不得AI能够一把完成我所有的要求。但是根据经验总结来说,写的越多AI发挥就越不稳定,也就是时好时坏。良好的实践应该是将这个提示词再做拆分,可以这样:
请在文件 auth.go 实现用户注册功能,要求如下:
1.首先,验证前端传递的参数 email,password 要求email必须是邮箱格式,长度不能超过60个字符串,password 的长度不少6位不能超过6位
2.校验参数之后,需要检查邮箱是否已经注册,方法实现请编写到 service/user.go
3.校验注册之后,创建用户 用户表是 model/user.go
增加限流的控制,同一个IP限制一天只能注册一个账号,请用redis实现
注册功能之后给邮箱发送一封欢迎注册的邮件,邮件发送可以参考 mail.go
做这样一个拆分之后,AI的准确性会大大提高!
经验三:乘胜追击
就目前来说AI的发挥并不是百分百稳定,这一部分取决于你编写的提示词;另一部分感觉完全就是看运气。当然就Cursor+Claude-3.5-sonnet来说稳定性已经非常OK了。但是,我还是想说,当你在和AI交互的时候,感觉心情愉悦心中全是AI真TM牛逼!太牛逼了!然后AI的发挥也超出你的想想,你的心中在惊叹,卧槽!AI竟然比我考虑的还周到,这小代码写的,比我自己手敲更优美!
当你进入到这种状态,不要犹豫,立马乘胜追击,完成登录需求的任务之后,里面进入注册需求的编写,完成注册后,立马进入密码找回的需求编写!
我称之为这个状态是你和AI都进入了心流的状态。在这个状态下,你会发现短短几个小时能够完成没有AI前数天甚至数十天的工作量!
经验四:优先强类型语言
为什么挑编程语言呢?举个例子:有这样一个场景,一个PHP项目,你跟AI正在讨论重构用户列表查询这个方法,此前这个方法是不提供参数过滤的,现在我们需要增加上email邮箱字段的过滤筛选,那么对应的service.paginate 方法就新增传入邮箱的参数,也就意味着要重构这个方法。当你花了30s时间在AI的协助下新增了用户的邮箱筛选功能,打包代码上线。过了几个小时,就有用户反馈,通讯录接口奔溃了,报500错误。排查日志一看,卧槽,paginate 方法在通讯录的服务也有调用!
上述就是弱类型语言在AI编程下的一个隐患。如果将PHP更换为Golang的话,在编译阶段就能够发现此类问题。
经验五:立马购入升降桌
AI纪元下,已经不需要你伏着身子敲代码啦,你只需要以一个轻松的姿势和AI对话就可以了。这就意味着,站着办公更加轻松了,是时候改善腰间盘突出了!!!
展望
终生学习
不要带有偏见,不管是对人还是对事物
拥抱变化,在变化中快速做出选择
人力成本骤降,天平倾向于发掘业务的更深层次的价值
ui用的是什么?flux?shadcn?
可以做个开头,不会编程依旧很难用明白,AI编程的前提就是你至少看得懂代码,知道代码怎样可以跑起来。我觉得AI在医疗,法律,文案,绘图各个领域都很有展望,只往编程看太小了。
有个好像专门截图生成提示词的 cursor 收费的,有一个竟品免费
cursor 现在日常使用 free 的吗?
第一次用cursor 真给我震惊了 ctrl+k ctrl+l 真是方便啊
copycoder+cursor+v0 dev谁用谁知道
虽然看不懂,但是感觉很厉害,先插个眼
ssl证书我用的certbot感觉很棒,写了个crontab可以自动续期。