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