云端与 IDE 智能体整合:解决工具碎片化,实现 AI 全流程自动编码

news2024/9/21 10:41:06

在那篇《2024 年 AI 辅助研发趋势》里,我们谈及了未来的趋势是:从辅助开发人员发展到涵盖软件开发的 整个生命周期。而软件研发本身也是一个复杂的流程,涉及到需求分析、设计、开发、测试、部署等等。在开源的《AI 辅助软件工程:实践与案例解析》中,我们研究了国内公司的辅助研发工具,如 Google、GitHub、GitLab 等,以及对应的 Jira、Cursor、IBM Assistant Builder 等工具。

进而发现,现阶段我们需要解决一个问题:如何去打通工具之间的壁垒,让 AI 辅助研发工具更好地协同,以提高研发效率?

AI 辅助研发策略应该如何演进?

下图是当前 AI 增强的研发工具、平台的主要构建思路:

d71b901bf43c8b3773718fd1d3069a2e.png

当前阶段,我们主要通过在已有的 DevOps 工具平台上,通过 AI 增强,来为端到端工作流、多角色协同场景提供场景化 Agents,提升协同效率。而从未来来看, 当前的 AI 辅助研发工具还存在一些问题。

问题 1:速赢和高杠杆领域已经被摘取

去年 5 月,我们在 QCon 上分享《探索软件开发新工序:LLM 赋能研发效能提升》里,其中我们建议企业应该关注:“速赢和高杠杆领域”,以得到更高的的投入产出比。

14fcb611b42567b07789dab300b59959.png

而在今年这些领域已经被摘取,如在辅助结构化需求、辅助代码生成、辅助代码审查等领域。大量的企业已经有一系列的“自研”工具,虽然可能缺少一些 最佳实践,但是或多或少已经在试点中,有一些还取得不错的效果。对于现有的开发流程而言,我们很难一一增强,我们还要面临工作使用者缺乏相关的 AI 技能,提不出好的问题和需求。

尽管,我们可以更多地关注长尾领域,如辅助部署、辅助运维等领域。这些领域的 AI 辅助研发工具还处于初级阶段,但是性价比不一定更高。

问题 2:AI 平台与工具的碎片化加深

a37a016128d439967915179bb4fe542e.png

相似的,如先前的图所示,企业已经购买了或者自建算力、模型平台、模型编排等平台的底层能力,以及大量的知识库, 再到辅助研发的需求助手、架构助手、测试助手、代码助手等等。就当前而言,企业普遍缺乏优秀的 AI 工程师,因此主流的方式是外购或者基于开源软件构建。

  • 购买方式。对不同的平台、工具进行大量的前期试点或者评估,再选择最适合自己的工具。如基于 GitHub Copilot、通义灵码、CodeGeeX 等等。

  • 自建方式。如基于开源 AI 应用开发平台 Dify、开源的 IDE 插件 AutoDev、Continue、开源的各类辅助研发 ChatBot 等等。

在这种情况下,未贴合企业实际需求的碎片化工具大量存在各个团队中,并且难以协同。碎片化的工具不仅会存在大量重复劳动,还会使得 AI 平台或者工具束之高阁,无法发挥最大的价值。那么,我们应该如何去打通这些壁垒呢?

什么是云端与 IDE 智能体协同?

7f1275116f34d4354e8ca986d4c7b311.png

在过去的一年里,我们看到了一些 IDE 智能体的案例:

  • Bloop。可以使用自然语言提问,搜索代码,并基于现有代码库生成补丁。

  • Tabnine - Jira to code。开发团队可以从 Jira 任务中自动生成功能完备的应用程序。

  • GitHub Copilot Workspace。结合 GitHub 平台的需求功能(issue)、代码托管、构建、部署平台,实现从需求到代码的自动生成与部署。

  • ……

这些智能体的共同点是:通过结合工具链来获取 IDE 的上下文信息,再结合云端的知识库等,来处理对应的的任务需求。

IDE 智能:如何最大化代码的价值?

在 IDE 侧,与智能体相关的能力通常有两类:

  • 本地智能体。直接从本地获取所需上下文,直接与模型进行交互,如常用的 @workspace 功能,用于直接与代码库进行问答。

  • 云端智能体集成/智能体市场。即与云端的智能体进行交互,通过多轮信息通信,提供其所需要的上下文,诸如 AutoDev 自定义的智能体、GitHub Copilot Extension 等。

对于本地智能体来说,其主要的优势是:速度快,可以直接快速获取本地的上下文信息,不需要网络传输。但是,其缺点是:*无法获取云端的知识库 *,无法获取更多的领域知识。所以,对于一些需要大量领域知识的任务,如需求生成代码、代码审查等,我们需要通过云端智能体来获取更多的知识。

因此,对于 IDE 侧来说,我们需要能动态地提供云端所需要的上下文信息,并提供对应的智能体接口,以支持云端智能体的调用。

云端智能体:内部资产与研发知识的集成

如图 1 所示,我们在过去已经构建了一系列的智能体,它们都基于各自领域的特点,提供了所需要的知识与最佳实践。诸如,我们会在需求助手中,添加所属领域的 知识库,需求编写的最佳实践等等。而事实上,对于这一类需求助手只有这一些是不够的,代码的现有实现逻辑,会影响新功能的设计。

进而我们会发现:软件研发的各类智能体是你中有我,我中有你的。只是单独的一个智能体是无法完成整个研发流程的,我们需要将这些智能体进行整合,以支持 整个研发流程。

云端与 IDE 智能体协同的实现

在云端,大量企业已经构建了类似于 Dify 的 AI 应用平台,在这些应用平台上,已经可以支持对智能体的编排,因此实现上起来并不困难。但是,对于 IDE 侧来说,我们还需要构建一个类似的智能体编排系统,以支持 IDE 侧智能体的调用。

IDE 智能体编排系统

在 IDE 侧,我们需要构建一个智能体编排能力,以支持 IDE 侧智能体的调用。它需要支持:

  • 快速获取 IDE 上下文信息。如当前的代码库、当前的代码、当前的需求等等。

  • 轻量级的上下文处理。诸如对于代码库的搜索、静态代码分析等等。

  • 与云端智能体的交互。通过 API 调用,获取云端智能体的结果。

  • 与三方工具的集成。如与 Sonarqube、GitHub、Git 等工具的集成,以支持对应的需求、代码库的获取。

  • 数据的安全性。对于代码库、需求等敏感信息,需要进行加密处理。

让用户能够为他们自己的 IDE 创建定制的 AI 智能体,从而构建个性化的 AI 驱动开发环境。

云端与 IDE 智能体协同实现:Shire 示例

Shire 提供了一种简便 AI 编码智能体语言,能够让大型语言模型(LLM)与控制集成开发环境(IDE)之间自由对话,以实现自动化编程。在 Shire 中,你可以 通过编程语言的方式,来定义与 IDE 的交互信息处理,以及与远程智能体的交互。

PS:安装方式,Intellij  等 IDE  在插件市场搜索 Shire

如下是一个简单的 Shire 结合数据库信息,与远程智能体生成 SQL 的示例:

---
name: "设计数据库"
variables:
  "requirement": /any/ { thread(".shire/shell/dify-epic-story.curl.sh") | jsonpath("$.answer", true) }
afterStreaming: {
  case condition {
    default { execute("gen-sql.shire", $requirement, $output) }
  }
}
---
[相关的数据库设计库提示词]
— User use database: $databaseInfo
- User tables: $tables
Here are the User requirements:
$requirement

在这个示例中,我们通过 thread 函数,调用了一个部署于 Dify 上的远程智能体,获取了相关业务的需求。在 AI 分析完需求后,再通过 execute 函数, 再调用了一个本地的智能体(即 gen-sql.shire),生成了 SQL。在 gen-sql.shire 中,我们定义了基本的 SQL 规范,以让 AI 生成的 SQL 更符合 企业规范。

你可以在我们的 GitHub 上找到更多的示例:Shire 示例 ( https://github.com/shire-lang/shire-spring-java-demo ) 。

小结

去年,我们在设计开源 IDE 插件 AutoDev 时,构建了一个 AutoCRUD 的智能体。这个智能体可以获取 GitHub、GitLab 上的 issue 作为需求,再结合本地的代码库,自动对代码进行修改。

我们相信,未来的 AI 辅助研发工具应该是:云端与 IDE 智能体协同。即通过 IDE 侧的智能体编排系统,与云端智能体进行协同,以支持整个研发流程的 自动化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2127735.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloud Alibaba入门简介

1、诞生 2018.10.31,Spring Cloud Alibaba 正式入驻了 Spring Cloud 官方孵化器,并在 Maven 中央库发布了第一个版本。 2、是什么,去哪下 官网:Spring Cloud Alibaba官网_基于Springboot的微服务教程-阿里云-阿里云Spring Cloud …

蓄电池制造5G智能工厂物联数字孪生平台,推进制造业数字化转型

蓄电池制造5G智能工厂物联数字孪生平台,推进制造业数字化转型。5G智能工厂,作为“5G工业互联网”深度融合的产物,将5G技术广泛应用于工厂生产现场,实现了生产单元的广泛连接、IT与OT的深度融合以及数据要素的充分利用。随着5G技术…

健身房|基于springboot的健身房管理系统设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书(可指定任意题目) 目录 一、摘要 二、相关技术 三、系统设计 四、数据库设计 五、核心代码 六、论文参考 七、源码获取 一、摘要 随着信息技术在管理上越来越深入而广泛的应用,管理…

【ROS2】地平线RDK X3Pi系统由1.x升级到3.0.0

1、硬件说明 1.1 硬件版本 截止2024.9.11,地平线RDK X3的硬件有四个版本:V1.0、V1.1、V1.2和V2.1 1.2 外观区别 1)V1.x版本外观 2)V2.X版本外观 1.3 配置区别 RDK X3 2.0 主要特性包括四核 Cortex A53 处理器、5Tops BPU 算力、最高 4GB 内存、支持 4K@60 帧视频编…

腾讯混元首个多模态模型——hunyuan-vision

腾讯混元系列升级: 腾讯混元发布多模态模型hunyuan-vision,具有4K的上下文,成本为18元/百万tokens。 感谢您的阅读,在智匠AI(MindCraft AI)上体验最新更新的模型。

人工智能+数字孪生技术在智慧型项目中的应用研究(Word原件)

1 基于BIM的智慧社区运维管理信息系统构建 1.1 数据存储 1.2 数据交换 1.3 BIM模型的数据整合及轻量化 1.运维BIM模型 2.BIM模型的数据整合 3.BIM模型的轻量化处理 2 GIS与BIM融合数字孪生技术应用 2.1 BIM模型在实景三维GIS平台上分析 2.2 BIM与GIS数据交互 …

【C++登堂入室】类与对象(上)

目录 一、面向过程和面向对象初步认识 二、类的引入 三、类的定义 四、类的访问限定符及封装 4.1 访问限定符 4.2 封装 五、类的作用域 六、类的实例化 七、类对象模型 7.1如何计算类对象的大小 7.2 类对象的存储方式猜测 7.3 结构体内存对齐规则 八、this指针 …

git:恢复纯版本库

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…

WebGL系列教程五(使用索引绘制彩色立方体)

目录 1 前言2 立方体3 开始绘制3.1 声明顶点和颜色3.2 使用索引绘制3.3 效果3.4 完整代码 4 总结 1 前言 上一讲我们讲了如何绘制彩色的三角形,这一讲我们来说如何绘制立方体。为什么几乎所有的WebGL教程总是从开始绘制三角形开始,因为三角形是最小的面&…

搜狗输入法电脑版颜文字如何关闭(快捷键冲突)

在使用快捷键:CTRLShiftb的时候,发现这个快捷键与搜狗输入法的快捷键存在冲突。 解决办法 在输入法图标上,右键,选择更多设置 找到左侧的高级选项,然后在右侧找到颜文字,选择关闭即可。

响应式精品资源导航html5源码

源码介绍 一款响应式精品网站推荐导航源码,可以自己修改代码替换图标图片和指向网址。背景图支持自动替换,背景图可以在images中修改,本地双击html即可查看效果 效果预览 源码获取 响应式精品资源导航源码html5

计算机组成原理(7):I/O

1 I/O系统基本概念 * ​ 本节实际就是对 I/O 系统 的简易科普,重点内容会在后续展开介绍; 1.1 I/O 系统 所以的这些I/O设备也可称为外部设备 ​ I / O 接口 :负责协调 主机 与 外部设备 之间的数据传输; 【1】I/O设备作用&#xf…

C2A:灾难场景中人体检测数据集(猫脸码客 第185期)

亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。 C2A D…

如何获取本地的SSH Key密钥

1 打开Windows PowerShell 2 打开 PowerShell 后,输入以下代码 ssh证书生成 ssh-keygen -t rsa -C “xxxxxxxxx.com(此处填写你的邮箱)” ssh-keygen -t rsa -C "2624686862qq.com 然后Enter键按三下,下面示意图中,我是已经生产了SSH密…

PDF扫描版文字识别OCR

PDF扫描版文字识别OCR 最近需要有对PDF扫码版进行文字可识别的需求,这里介绍一款工具挺好用的 这是一款开源的OCR工具 github地址 https://github.com/hiroi-sora/Umi-OCR 主要功能及特点 免费:本项目所有代码开源,完全免费。方便&#…

实战OpenCV之像素操作

基础入门 在OpenCV中,像素是最基本的操作单位。图像可以视为一个三维数组,其中第三维表示颜色通道。图像数据在内存中以连续或几乎连续的方式存储,对于多通道图像(比如:BGR图像),每个像素的各通…

828华为云征文 | 云上私人数据管家,jMalCloud个人网盘在华为云Flexus的Docker化部署实践

华为云服务器Flexus X实例介绍 华为云Flexus云服务器X实例,是由国家科技进步奖获得者、华为公司Fellow、华为云首席架构师顾炯炯牵头研发。它基于擎天QingTian架构、瑶光云脑、盘古大模型等根技术创新,是业界首款应用驱动的柔性算力云服务器,…

USB Type-C 接口引脚定义,以及 USB 3.1 和 USB 3.2 的区别

USB Type-C 接口引脚定义 USB 3.1 和 USB 3.2 的区别(摘自网络,未验证)

Matlab对状态机建模的方法

【 线性代数 状态机 】良好的控制系统设计 (根据现有的情况总结出状态转移方程) 状态组件在设计时需要考虑的内容 AI 的逻辑 可以提供一个思路

ICM20948 DMP代码详解(16)

接前一篇文章:ICM20948 DMP代码详解(15) 上一回讲到了inv_icm20948_initialize函数中的inv_icm20948_initialize_lower_driver函数中的inv_icm20948_read_mems_reg函数中的inv_icm20948_set_chip_power_state函数。再次贴出该函数源码&#x…