Redian新闻
>
AutoDev for VSCode 预览版:精准 AI 编程提示词与编辑器的完美融合

AutoDev for VSCode 预览版:精准 AI 编程提示词与编辑器的完美融合

科技

在过去的一个月里,我在休着陪产假、看娃的同时,也在闲暇时间里设计了 AutoDev for VSCode 的架构。

我们将 AutoDev for Intellij IDEA 平台的非凡开发者体验带到了 VSCode 平台。在 IDEA 版本中通过构建非常精准的提示词,以及与编辑器的完美融合, 以帮助开发者更好地编写代码。

现在,在 VSCode 预览版本(0.1.0)中,你可以体验到这一切。

  • 文档:https://vscode.unitmesh.cc

  • 代码:https://github.com/unit-mesh/auto-dev-vscode

  • 下载安装:在 VSCode 插件商店搜索 AutoDev,即可安装。

AutoDev 设计理念示例:一键精准测试生成

在设计 IDEA 版本时,我们一直致力于避免使用聊天窗口,以提供更好的用户体验。在 VSCode 版本中,我们将这一理念继续发扬光大。

为了构建这样的能力, 我们不断地重构我们的架构,以实现精准测试生成所需要的上下文件:

  • 输出准确的测试文件路径

  • 与编辑器的完美融合

  • 函数的相关代码类(输入和输出)表示

  • 基于依赖工具的测试框架分析

如下是基于上述的设计理念的 Prompt 示例:

  1. Write unit test for following java code.

  2. - You are working on a project that uses Spring Boot,Spring Core,Spring MVC,JDBC,JPA to build business logic.

  3. // BlogPost 的 UML 类图

  4. Here is the source code to be tested:

  5. // imports 和 package 声明

  6. public BlogPost getBlogById(Long id) {

  7. return blogRepository.findById(id).orElse(null);

  8. }

  9. Start getBlogById test code with Markdown code block here:

即:

  • 通过读取依赖文件,如 build.gradle,我们能够准确地知道项目的依赖,以及测试框架的使用。

  • 通过对函数的上下文分析,我们能够准确地知道函数的输入和输出,以及函数的相关代码类。

  • 通过精准的上下文,可以有非常高的信心直接生成测试代码。

通过上述的方式,我们在 VSCode 达到了与 IDEA 版本相同的体验。

AutoDev 本地环境架构

与 Intellij IDEA 平台封闭的 API 相比(我们经常不得不参考一些官方的实现),VSCode 的开放式带来了更多的可能性。借助于我们在 Intellij 平台的经验,我们尝试构建通用的底层架构,以支持精准的编程上下文。如下是 AutoDev for local 的架构图:

AutoDev for Local

PS:从其他时间花费上是差不多的,VSCode 插件大部分时间都在调试环境,IDEA 插件大部分时间在等 ide 启动。

AutoDev for VSCode 架构设计原则

在构建 AutoDev for VSCode 时,我们遵循了以下的设计原则:

  • 统一架构。介于在 Intellij 平台上的丰富经验,我们尝试构建一个通用的抽象架构,方便于开发者在不同平台上的开发,并可以在未来实现部分代码通用。

  • 依赖反转的插件架构。我们使用了 Inversify 代替了 XML 来构建依赖注入,以支持多语言、多框架、多工具的动态切换。

  • 事件驱动的 UI 交互。VSCode 本身是基于 Web 技术的,其指令(command)的构建方式也是基于事件驱动的。侧边栏里的聊天 WebView 与主界面的 WebView 交互,也是基于事件驱动的。

有关于介绍的详细介绍,见:https://vscode.unitmesh.cc/development/design-princinple.html

AutoDev for VSCode 的核心接口

在 AutoDev for VSCode 中,我们定义了一系列的核心接口,以支持不同的语言、不同的工具、不同的框架的切换。如下是一些核心接口:

  • LangConfig,用于支持不同语言的解析与静态代码分析。

  • Provider,提供不同工具与功能的支持,如 Java 上下文、测试生成等等。

如下是一下简化的 Java 语言 Provider 支持示例:

  1. container.bind(ToolchainContextProvider).to(SpringContextProvider);

  2. container.bind(ToolchainContextProvider).to(JavaSdkVersionProvider);

  3. container.bind(RelatedCodeProvider).to(JavaRelatedProvider);

  4. container.bind(TestGenProvider).to(JavaTestGenProvider);

  5. container.bind(BuildToolProvider).to(GradleBuildToolProvider);

  6. container.bind(StructurerProvider).to(JavaStructurerProvider);

当项目中使用 Spring 框架时, SpringContextProvider 就会被调用,以在上下文中提供 Spring 的相关信息。诸如 JavaTestGenProvider 则 会用于一键生成 Java 代码的测试文件,创建分析相关代码、测试文件、生成测试代码、运行测试(TODO)等等。

AutoDev for VSCode 0.1.0 的核心功能

在当前的 VSCode 0.1.0 版本中,我们实现了以下的核心功能:

  • 自定义 AI 指令,即通过自定义 prompt 来实现自定义的 AI 指令。

  • 测试生成,即通过 AI 生成测试代码。

  • 注释生成,即通过 AI 生成注释。

  • 语义化搜索核心逻辑,尚未集成到功能中。

在当前的版本,我们更注重于架构的设计,以支持更灵活的功能扩展:

如果你有任何的建议或者想法,欢迎在 GitHub 上提出 Issue,或者加入我们。

GitHub:https://github.com/unit-mesh/auto-dev-vscode 

参考资源

一个优秀的作品总是可以依赖于其它的开源项目、商业化产品,在构建 AutoDev for Intellij IDEA 时,我们也参考了很多的开源项目、商品化产品。在构建 AutoDev for VSCode 时,也不例外:

  • 在一些交互方式上,我们借鉴了

    • 借鉴了 AutoDev IDEA 版本的实现

    • 参考了 GitHub Copilot Chat 的 UI 实现。

  • 在一些代码实现上,我们复制了(Apache 协议):

    • Bloop 结合图与静态代码的分析能力

    • Continue 的 WebView 与 WebView 交互的实现

  • 在静态代码分析上,我们将我们在 ArchGuard 开源架构治理平台中的静态代码分析引擎应用到了 AutoDev for VSCode 中。

当然了,还有其它的一些开源项目,在这里就不一一列举了,详细见代码仓库 README.md 中的 LICENSE 相关

彩蛋

四月,是一个充满希望的季节。在这个季节里,我们也想分享一下,我们家刚出生的小龙仔:

小宝贝

感谢我媳妇和小宝宝的支持,让我有了更多的时间来完成这个项目。


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
抢沙发闹出的大笑话GPT-4化身黑客搞破坏,成功率87%!OpenAI要求保密提示词,网友复现ing万字长文总结提示词技巧!新加坡首届GPT-4提示工程大赛冠军最新分享谷歌、OpenAI 都搞起了AI “造人”?创始团队:开源AI基因编辑器只是冰山一角ControlNet作者新作爆火:P照片换背景不求人,AI打光完美融入211大学教授、博导SCI期刊发论文,被质疑忘删掉ChatGPT提示词…刚刚!OpenAI放大招!不用注册,直接就可以使用ChatGPT了!(免费学提示词用法)现代农舍风格的奢华住所,生活便利与自然邻近完美融合!竖脊肌平面阻滞技术:精准麻醉下的背部肿物切除术社交新零售的趋势下 激发消费活力的完美样本美股基本面 - 2024_03_07 * 晨报 * 日元兑美元涨1% 薪资数据强于预期促使市场押注日本央行3月加息。美股中概股我们是如何在 IDE 中设计 AutoDev 的 AI 编程开发智能体语言与框架?开源富文本编辑器Quill 2.0重磅发布不会用AI写论文?这6个关键步骤,让你20分钟完成一篇SCI!(免费送提示词模版)15.5k Star,开源在线实时协作文档编辑器步行可达NYU SPS和SVA!中城东LEED认证大楼,宁静与便利相平衡的完美居所走出职业茧房,终于找到「低内耗高回报」的完美答案鲍威尔和耶伦的完美探戈7057 血壮山河之枣宜会战 宜昌溃战 13使用 Rust 编写,Zed 代码编辑器宣布将推出 Linux 平台 alpha 版本AI成功改写人类DNA:全球首个基因编辑器开源;浙江大学首次实现汉字书写脑机接口,“意念写字”成现实丨AIGC日报VS Code劲敌、Atom原作者主导、Rust编写的“最好”编辑器——Zed开始支持Linux心脏:科学与艺术的完美结合歌星之梦上海有张古老名片AI 时代,这个团队正在打造全世界最复杂的高性能编辑器AI可以改写人类基因组吗?首次由AI从头设计的基因编辑器成功编辑人类细胞中DNA大厦的奢华生活,城市魅力与现代优雅的完美融合!AI成功改写人类DNA,全球首个基因编辑器震撼开源!近5倍蛋白质宇宙LLM全生成物价大对比!美国Costco VS 加拿大Costco:谢谢你,有被安慰到~清华微软开源全新提示词压缩工具,长度骤降80%!GitHub怒砍3.1K星【求职战报】全球金融交易平台Deutsche Börse Systems销售运营面试邀约!告别微软,姜大昕带领这支精英团队攀登Scaling Law,万亿参数模型已有预览版CVPR 2024|文本或图像提示精准编辑 3D 场景,美图&信工所&北航&中大联合提出 3D 编辑方法 CustomNeRF【首发】篆码生物完成数千万元种子轮融资,推进原创超小型高效基因编辑器研发
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。