如果说 IDE 是利剑,那么 AI 可能更多扮演的是剑灵的角色 -- 芋仔
上一篇文章讲述了我即便付费也要选择 Cursor 的原因,这一篇就要实战啦。
毕竟 20刀,只是拿来写写公司代码的话,着实有点不划算。
隔壁产品经理,设计师,都开始 2 天上线 "人生app" 了。程序员也不能落下(毕竟付了费了)。
刚好之前一直跟老婆计算自家房子到底是赚了还是亏了,这个话题往往以机会成本不好计算,而无法得到一个精确的数字。
索性做个小程序,来计算房子的收益或亏损吧:起名房来财。
ps: 欢迎大家来体验我的小程序,房来财(原名房亏亏,房价在跌,但是祝大家发财),还在备案中,只能通过小程序码来访问啦。
聊点题外话
ps: 本来不打算介绍机会成本的,但是发现身边不知道这个词的大有人在,就还是先简单说一下机会成本。
假设老王,用 200w 买了一套房子,过了5年,240w 把房子卖掉了,老王逢人就吹,我这房子赚了40w。
但是这40w真的是卖房的盈利吗?如果200w没有买房,按照 2% 的年化,放银行,简单算,5年利息最少也有20w了,这还是在没有计算复利的情况下。
所谓复利,就是每年,把利息和本金都取出来,重新放银行,比如第一年年底,利息是 4w,那么第二年就是 204w 产生利息,一共是 40800,如此往复,5年利息总额只会大于 20w。而现实中,复利往往是可以以按月计,甚至按天计。
那么这里面,利息以及利息带来的复利,就是这 200w 的机会成本。
当然,老王也有可能拿 200w 去炒股,可能亏个底朝天或者年化 10%,这都是机会成本。
ps: 如果老王拿 200w 去买个跑车,5年后 50w卖掉,那么老忘是不是可以对外说,这房子帮我赚了 190w 呢!
10s第一版,AI 绝对能替代我的工作
作为程序员,本身就有很多的小程序开发经验,所以相比于产品经理/设计师,少去了一个确定技术选型的阶段。
直接 uniapp 上,当然,也可以 command+enter 让 cursor 再来介绍下项目结构和优劣。
接下来就开始正式合作了,就像新员工一样,一开始的时光总是美好的。
很快(10s左右),就按照我的想法,生成了小程序的首页和计算结果页。
可以进行简单的计算,收益 = 卖出价格 - 买入价格 - 剩余未还贷款。
同时,样式上,Cursor 自动选择了 uni-ui,也还能看的过去,如果我来写的话,应该也就刚刚好建好文件,写几个 form。
不得不说,在初始化这一点上,AI 完全能替代我的工作。
这也不对,那也解决不了,AI 你还太嫩
有了第一版之后,必然是要引入更复杂的场景,比如全款时,增加机会成本,也就是 200w 放银行的收益。
而贷款时,首付有机会成本,每个月的月供,也有机会成本。
AI 在用月供去计算机会成本时,认为只有本金,是需要计算机会成本的。
但是实际上,月供中不论是本金部分还是收益部分,都是支出,都是有机会成本的。
不过好在很快 AI 能够调整过来。
但是,修好了这个,在计算最终收益的时候又出现了计算错误,本来剩余未还贷款,应该是总贷款额 - 月供中的本金部分,这下好了,直接总贷款额 - 月供。
应该是受到机会成本计算方式的干涉。
经过一番沟通后,也还算能调整过来。
但是又出现了新的问题,单位不对了,月供,每个月的单位都是元,而卖房价格,买入价格,都是百万元,单位换算上出现了非常多的问题。
到这里其实我已经不耐烦了,这点时间,计算的逻辑我应该都写好了。
让人吐血的其实还在后面,当我们终于调整好了计算逻辑,我人眼看过去,计算应该没有问题的时候,直接去视图上查看计算结果,看着每一项的结果都是0,我几近崩溃。
PUA 不动 AI,只能 PUA 自己:就算是我的姿势有问题吧
到这一步,其实我是比较失望的。
如果事事都要我说清楚的话,尤其是逻辑部分的代码,如果我自己把逻辑梳理的清清楚楚,那么写代码,debug,也就是分分钟的事情。
还是硬着头皮自己去看看 AI 的代码哪里出了问题(毕竟付费了)。
经过 debug 后,对于计算结果为 0 的问题,应该还是上下文理解的问题。
我当时用的是 chat 模式(当时还没有 agent 模式),虽然我在一开始 command+enter 把上下文已经给 AI 去理解。
但是后来单独修改计算逻辑的时候,虽然还是在一个 chat 中,但是做了比较多的调整都是仅针对计算逻辑的,导致计算模块的输入输出变量名和页面中的变量名对不上。
这是一番调整后,AI 失效的根本原因。
这里我只能 PUA 自己:
AI 的前后一致性问题还有待加强!需要自己多关注上下文的注入。
经此发现,改变不了 AI,那就改变我自己把。如此一来,逻辑部分和 UI 部分的结合,可算是完成。
整体功能上相比于 10s 的第一版,补充了我第一版中最缺失的关于贷款利息、机会成本的计算,可以说是能够满足我最初的预期了
Cursor 的其他问题
下面是我在 Cursor 使用中,发现 AI 这个"剑灵"(claude-3.5-sonnet)的一些其他问题:
AI 也很固执(像极了那个刚入职的小伙子)
上图是 AI 的代码,可以看到它通过 slot 来覆盖 form 的 label 标签,由于样式上的问题,label 看起来就很不搭。
我试图让 AI 自行调整样式,但是它多次调整,都还是存在 label 超出换行的问题,同时样式也比较丑。
经过我自己查阅文档,替换了 slot 的写法,转为借助 form 组件的 label 属性,如下:
至此,form 组件上的一些 label 参数才生效。样式也比较顺眼
但是很快,我又让它修改一个功能时,AI 在它上一次修改的基础上而不是我改动之后的基础上对代码进行了调整。
同样的问题不止发生一次:
说他固执,不过分吧?
AI 私自篡改代码
在 form 生成之后,由于 组件都有一个 clear 的 x 符号,我个人不喜欢,就手动修改去除了clear(现在想想自己真该打,让 AI 干就行了,你为啥手贱)。
只是令我没想到的是,在后续下达其他命令时,AI 又偷偷把我的代码给改回去了!
AI 其实挺烦的
不知道我开启了什么开关,AI 在每次调整好之后,都会问我,您觉得这样修改合适吗?
对此,刚开始我觉得AI还挺有礼貌,但是后来想想,这话我真的很难回。
如果接受,我就点 apply 了,如果不接受,我就自己改了,那你这么问,是想让我说接受?
关键是我回不回,你都会固执的在下一次修改直接用你这一版的代码啊!!!
而且我是来写代码的,不是跟您聊天啊!
最后
以上便是我和 Cursor 的初体验。
整体来讲,开发速度远超程序员。
但是在逻辑的理解和样式的debug上,稍微复杂一点的逻辑和bug,都会带来比较多无效的沟通。
像极了仙侠小说中刚刚生出灵智的剑灵,没有精确的指令就只能做些批量相对简单的工作。
复杂的逻辑交互,必须主人梳理清楚,才有可能完整无误的实现。
而对于相对难找的 bug,大概率是解决不了的(可能会给你很多方案,但是大概率无效)。
当然,在使用过程中也发现有 cursorrules 这个东西的存在,后期也会尝试加入自己的 rules,比如不要再问我接不接受啦,烦死了。
最后,欢迎大家来体验我的小程序,房来财(原名房亏亏,房价在跌,但是祝大家发财),还在备案中,只能通过小程序码来访问啦。
AI程序员时代(饭碗随时会丢),我也组建了一个前端抱团取暖群,欢迎加我微信来撩:mxb151,加群备注简单的自我介绍和加群哦。