AI 辅助编码的开发者体验演进:Less Chat 到 More Auto,再到 Easy Verify
本来不想写一篇吐槽国内开发工具的文章,但是考虑到最近 Replit 的裁员动作,以及其他 AI 辅助研发工具的发展。我还是想从开发者体验的角度来谈谈 AI 辅助研发工具的开发者体验。尽管大部分开发者都没有工具上的决策权或购买权,但我仍然想写一篇关于这个话题的文章。
我们对于此的新理解:
不比云厂商的大规模团队团队,我们主要依赖于业余时间与一些工作的空闲编写 AutoDev 这样一个开源 AI 驱动编程工具。所以,我们在设计时往往更偏向于 让自己用得开心为主。这也是我们一直强调:将规范、实践、软件知识工程融合到 AI 编程工具,它才是真正提升自己效率的办法。
AI 编程工具的三个成熟度阶段
当我们定义 AI 编程工具时,我所定义的是围绕开发者日常活动的所有工具,它会包含:代码补全、代码理解、代码重构、代码测试、代码提交等等。也就是说, AI 编程工具是一个全方位的工具,它会涵盖开发者日常的所有活动。
从个人的实践与使用角度来说,我会将 AI 编程工具的成熟度分为三个阶段:
聊天为主。即由于工具缺乏上下文的理解,诸多的活动需要通过 Chat 的方式来进行。
完全自动生成。即工具已经具备了一定的上下文理解能力,可以自动化完成大部分的活动。
自动校验与执行,即工具能自动帮你完成大部分的活动,并提供轻量级的校验机制。
取决于不同人的理解和场景的不同,所要构建的能力与工具也是不同的。
阶段演进 1:从聊天到自动生成
如果你用过市面上主流的编码工具,我相信你一定厌倦了 点击
-> 生成测试
-> 复制
-> 粘贴
-> 运行测试
这样的流程,然后你发现因为测试框架 不正确,所以你生成的测试完全不可用。诸如于,国内最流行的工具之一便需要你如此的操作
这样的操作,不仅仅是低效,而且还会让你产生一个感受:有这时间,我都写完了。所以,我们在设计 AutoDev 时,我们希望能够将这样的操作自动化, 只需要点击一下生成测试,AI 与 IDE 便自动帮你生成测试代码。在特殊的场景下,结合我们自定义的一些测试规范与测试模板,以大大提高测试生成的质量。
聊天只应该是辅助诊断的方式,而不应该是主要的交互方式。诸如于让开发人员判断 AI 的 输入和输出是否正确,而非让开发人员去手动操作。
阶段演进 2:从自动生成到自动校验与执行
我们设计 AutoDev 的想法是来源于 AutoCRUD + LLM 场景的探索,即在固定分层结构的代码库、编程规范中,代码是完全可以由 AI 自动生成的。但是, 在去年经过大量的实践后发现,我们需要大量的校验成本,以确保代码是能运行的。
同样的,对于其它编码场景来说,我们也需要自动校验 AI 生成的是否合理。结合不同的场景,就需要结合不同的工具和方式:
对于代码生成,我们需要结合 Lint 工具,来确保代码的规范性。
对于测试生成,我们需要结合测试框架、覆盖率与测试坏味道工具,来确保测试的质量。
对于提交信息生成,我们需要结合提交信息规范,来检验提交信息的质量。
对于重构来说,我们还需要自动执行重构建议,以避免重构后的依赖出现问题。
基于上述的想法,我们进一步优化了 AutoDev 的诸多项能力,以提供更好的开发者体验。
AutoDev 1.8.6 的新自动化能力
在新版本的 AutoDev 中,我们融合了我们对于 AI 辅助编码的新理解。
自动执行 AI 重构代码:从一无所知到勉强可用
当你使用 AI 重构时,会发现因为 AI 做了重命名等操作,没有修改 ref 导致代码无法运行。因此,你无法直接应用 AI 的重构建议。基于此, 我们优化了 DevIns AI Agent 语言,使得你可以直接执行重构代码:
它使得你可以直接执行重构代码,而不需要手动修改代码。
详细见:https://ide.unitmesh.cc/devins/quick-start.html
API 测试执行
在先前的版本中,我们提供了 API 测试生成的能力,但是你需要手动执行测试。在新版本中,我们提供了 API 测试执行的能力,以自动执行测试。我们引入了 Intellij IDEA 提供的测试执行能力,以支持 API 测试的自动执行。
即,我们会生成直接可运行的测试 DSL,方便你直接对代码进行测试。
自动测试修复与执行
在新版本中,我们引入了自动测试修复与执行的能力,以支持你的测试修复与执行。即,我们会根据测试结果,自动修复测试代码,并执行测试。诸如于,AI 生成的 代码可能会有一些问题,我们会根据情况进行自动修复。
并在没有错误之后,自动执行测试。
批量测试生成
在我们的测试生成能力足够强大后,我们引入了批量测试生成的能力,以支持你的批量测试生成:
只需要在文件或者目录上点击生成测试,AutoDev 会自动为你生成 对应的测试代码。
批量 Prompt
当你需要对多个文件进行操作时,我们引入了批量 Prompt 的能力,以支持你的批量 Prompt:
诸如于,你可能需要批量迁移 Vue2 到 Vue3 代码,只需要 配置好对应的规则,我们便可以为你自动迁移。
详细见:https://ide.unitmesh.cc/custom/batch
其它
最新版本可以从 GitHub 下载最新:https://github.com/unit-mesh/auto-dev/releases 。
如果你有任何的建议或者想法,欢迎在 GitHub 上提出 Issue,或者加入我们:https://github.com/unit-mesh/auto-dev 。
微信扫码关注该文公众号作者