最近想实现一个文档管理的功能,考虑到当前AI编程很流行就想实验一下。本次选用的AI工具是腾讯的CodyBuddy。目前此App已经完成了核心功能的开发,代码在托管在Gitcode中,点击访问my_doc:个人文档集中管理 - AtomGit | GitCode可以下载源码和编译好的apk。

需求设计

为了让AI深入理解我的需求,于是简单写了[需求文档](my_doc/doc/设计文档.md · u011853712/my_doc - AtomGit | GitCode)。大致介绍了App的主要功能,一共几个页面,每个页面完成哪些功能,总字数300左右。然后就将需求抛给AI生成了代码。

为了方便后续的描述,贴一下应用的核心页面的截图。

  • 详细页

    详细页主要以树形结构展示当前主题下的所有文件夹和文件。下半部分是当前选中对象的预览区域,预览区域上边带工具栏,可以对当前选中对象进行打开、分享、移动和删除操作。
    在这里插入图片描述

  • 目标选择页
    用来选择移动或者分享的目标
    在这里插入图片描述

AI编码

为了防止AI不完全理解我的意图,我并没有让AI直接生成代码,而是先给出了设计方案。AI展示了自己的实力,很快给出了完整的设计方案,包括DB字段的设计,核心接口等都给的很完善。于是就让其开始生成代码。

编译环境

但是由于本地环境(Java版本、Android Studio的版本、Kotlin版本等)因素代码无法编译通过,来回将错误提示发给AI,费了不少精力才完成编译,完成编译后代码就能顺利运行起来了,确实也实现了核心功能。

这里提醒大家,可以先手动创建一个工程。然后让AI去生成代码。

需求没考虑全面

代码运行起来后发现最初的想法有点简单,需要加一些新的功能:

  • 支持接收外部分享(比如从图库分享到应用)

  • 支持分享文件到外部应用(比如分享文档到微信)

  • 支持移动文件和文件夹到其它主题

当我把这些新功能提交给AI后,AI确实实现了这些功能,但是发现了如下问题:

  • 所有页面的数据管理功能实现在了同一个类中。

  • UI组件没有预览

  • 代码运行起来有错误

手动排错

看着AI生成的繁琐代码没忍住自己开始手动修改代码,经过简单的review,就开始修改。稍微深入以后才发现自己并没有完全了解AI的设计,AI使用的复杂API自己还没有熟悉,项目进程一下子慢了下来。经过自己的不懈努力,终于将核心的数据管理拆解城了单独的ViewModel去管理,顺便加深了自己对ViewModelFactory的认识。

对于习惯了AI的我来说,手动写代码和调试速度实在是慢,决定还是重回AI的道路。

Back to AI

这次不在执拗于和AI比设计,而是将其看成一个亲密的伙伴和助手,将自己的想法和意见完全的输入给AI,在AI工作时自己去熟悉其设计,从而提出更多的改进意见和需求完善。这个模式坚持到了最后。自己也基本理解了50%左右的代码细节。

总结

经过项目实践,发现使用AI的方式决定了我们的效率。作为开发者最好能掌控需求和核心的方案设计,并且及早得同步给AI。目前发现只要主要输入条件足够详细,AI是很少会犯低级错误的,完整的需求设计和正确的方案是快速交付的关键。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐