我用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 对话就可以了。这就意味着,站着办公更加轻松了,是时候改善腰间盘突出了!!!
展望#
终生学习
不要带有偏见,不管是对人还是对事物
拥抱变化,在变化中快速做出选择
人力成本骤降,天平倾向于发掘业务的更深层次的价值
推荐文章: