Blog

Blog

PHODAL

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 语言,使得你可以直接执行重构代码:

/refactor:rename crtBlog to CreateBlog

它使得你可以直接执行重构代码,而不需要手动修改代码。

详细见:https://ide.unitmesh.cc/devins/quick-start.html

API 测试执行

在先前的版本中,我们提供了 API 测试生成的能力,但是你需要手动执行测试。在新版本中,我们提供了 API 测试执行的能力,以自动执行测试。我们引入了 Intellij IDEA 提供的测试执行能力,以支持 API 测试的自动执行。

即,我们会生成直接可运行的测试 DSL,方便你直接对代码进行测试。

自动测试修复与执行

在新版本中,我们引入了自动测试修复与执行的能力,以支持你的测试修复与执行。即,我们会根据测试结果,自动修复测试代码,并执行测试。诸如于,AI 生成的 代码可能会有一些问题,我们会根据情况进行自动修复。

并在没有错误之后,自动执行测试。

批量测试生成

在我们的测试生成能力足够强大后,我们引入了批量测试生成的能力,以支持你的批量测试生成。只需要在文件或者目录上点击生成测试,我们会自动为你生成 对应的测试代码。

批量 Prompt

当你需要对多个文件进行操作时,我们引入了批量 Prompt 的能力,以支持你的批量 Prompt。诸如于,你可能需要批量迁移 Vue2 到 Vue3 代码,只需要 配置好对应的规则,我们便可以为你自动迁移。

---
interaction: ReplaceCurrentFile
batchFileRegex: "**/*.vue"
codeOnly: true
---

xxx

详细见:https://ide.unitmesh.cc/custom/batch

其它

最新版本可以从 GitHub 下载最新:https://github.com/unit-mesh/auto-dev/releases 。

如果你有任何的建议或者想法,欢迎在 GitHub 上提出 Issue,或者加入我们:https://github.com/unit-mesh/auto-dev


或许您还需要下面的文章:

关于我

Github: @phodal     微博:@phodal     知乎:@phodal    

微信公众号(Phodal)

围观我的Github Idea墙, 也许,你会遇到心仪的项目

QQ技术交流群: 321689806
comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Engineer, Consultant, Writer, Designer

ThoughtWorks 技术专家

工程师 / 咨询师 / 作家 / 设计学徒

开源深度爱好者

出版有《前端架构:从入门到微前端》、《自己动手设计物联网》、《全栈应用开发:精益实践》

联系我: h@phodal.com

微信公众号: 最新技术分享

标签