现在AI编程算是比较热的一个方面了,也是一个大势,我并不反对AI编程,也觉得应该是有用的,但我反对把工具的使用数据作为一个评判程序员优劣的一个标准,进而制造焦虑和压力,迫使员工不得不使用其所认为能够提效的智能化代码工具。
先前我本人对AI编程工具的使用,更多在于其在某些局部的应用,比如某些方法函数,自己写麻烦,那么换成AI帮我写,毕竟大的设计什么的,还是自己来把握,对我来说,只是需要这么一个助手来帮我完成一些明确的工作而已,反正公司有要求,而且也这么火热,尝试了解一下也不是不可以。
关于安装和配置,按公司的要求做的,还算顺利,一些小插曲也都解决掉了
尝试一:让claude了解项目情况
找了一个项目(SpringBoot)运行了二十分钟,依旧没有结束,中途因为误触,直接关掉了,也就没有下文了
尝试二:让其实现一个功能(相对完整的)
基本也是无功而反,代码倒是看了半天,但因我要实现的功能是一个旧功能的重构改造,旧功能保留兼容,新功能新建,且原先有一个例子,但因为涉及到前后端多个页面,其所生成的第一个文件,就因与我期望不符合,直接被我拒了,后面就一直运行但没有什么实质性的进展,直接关掉了
尝试三:只让claude帮忙生成一个页面(一个html页面)
这次也花费了不少时间,最后也生成了一个html页面,不能说没有用,其内部各项功能也还算完备,但因其不了解该功能的具体表结构等信息,生成的页面内容不符合我期望,这是其一,其二是生成的页面全用JS实现,但我原来让其参考的页面是用thymeleaf,结合服务端给的数据实现的,因此这个页面生成对我来说也没什么用
尝试四:再缩小其任务内容,且更为明确(其实这里有两个任务)
让其分析项目中的yml文件,排除application.yml,看是否有哪些配置项是有差异的,这次最后能分析出来,但时间花费确实比较久,十分钟的样子
后让其分析某指定配置项是否还在使用,如果不再使用,则处理掉,这次能听懂,也处理了,但是直接删掉了配置,而且还多删了一行,导致另一个配置项出错,手动给恢复了,花费时间在7分钟
尝试五:/init 命令
可以正常生成CLAUDA.MD文件,里面基本上是一些对项目信息的关键描述,花费时间15分钟左右,这个基本上与项目内文件数量有比较大关系,一些关键信息,包括调用链路所在层次等还是分析的比较清楚,但目前还不知道其对后续项目的用处有多大
尝试六:
给出任务,用来生成相应的mybatis文件,一般这种插件生成更有效率,此处也就是用来测试一下
xxx_table的表结构如下:
```
CREATE TABLE `xxx table` (
xxx 这里明细就不写了
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表'
```
帮我生成对应的mapper文件(包含java和xml),需要以下方法
1、新增操作
2、修改操作(只改角色名)
3、删除操作
4、查询单个角色详细信息
5、分页查询角色信息
相关代码风格,请参考xxx以及yyy对应的文件,生成的文件名字以xxx作为前缀,生成包括xxx在内的所有文件
内容稍有差异,一些敏感信息替换掉了
这一次能成功生成,能参考相应的文件来生成,风格也比较符合要求,但细看还是会有一些问题,要么手动处理,要么继续让其调整。
后面经过几次生成和调整,基本上生成了一个相对满意的结果
今天先到这里,总结几点:
1、如果比速度,认真编码的话,目前来看还是比AI生成要快速一筹,而且少了一些检查步骤,光这么看效率并不比人写得要快多少,但好处是你可以扔在那里,先忙别的事,在自己闲下来的时间里,AI自己干活,这也算是在无形中给开发者提效了
2、该工具在实际使用时,其token量,以及对本地电脑资源的占用都比较高,需要具务足够好的,比较好的办法是准备两台机器,一台专门用来跑脚本,一台用来处理日常工作
3、生成的内容在不复杂的业务里,可以满足需要,但稍有复杂的情况,生成效果并不令人满意,毕竟AI也确实不知道各业务之间的弯弯绕绕,要想让其他处理复杂任务,可能需要经过多次交互,目前还没有找到比较好的办法,因为每一次交互的结果需要check一下,所以一个简单功能,整体周期会比较长,但好处是在这个过程中可以同时处理别的事
这有点像把一个人原来单线程专心干一个事,改成了现在,多线程在不同事情间切换,目前来说,并不是特别好适应,毕竟在切换过程中,需要重新梳理原有的思路,并不能保证一定是高效的
4、在实际使用过程中,AI会调用很多本地工具,这些工具配置,最好是准备好,比如 mysql 命令行工具,一些bash命令,python最好也准备着,有些功能AI实现不了会使用Python写代码来实现,总之,会用到各种工具,最好本地都有,不然某些任务可能会执行失败,虽然他会尝试用更多方法
5、关于Check,这是最麻烦的事,相对来讲,也是比较费事的,但也是无法回避的,如果不经Check,AI并不会帮你承担后果
当然,好的一点是,AI可以协助写Junit,一些常用的方式有例子的情况下,还是可以写出一个相对满意的Junit的
总得来说,随着AI的发展,越来越像是一个帮手,在工作中确实可以起到一定的作用,但每个人的习惯不一,工作情况不一,项目情况不一,能帮到多少并不能用数据来恒量,网络上所谓的几天完成几年的工作,我并不是很认同,毕竟核心要怎么做,还是得自己心里想得明白,说得清楚,这才是根本