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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

在过去的一年里,我们看到了一些 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 的示例:

go 复制代码
---
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 侧的智能体编排系统,与云端智能体进行协同,以支持整个研发流程的 自动化。

相关推荐
m0_603888713 分钟前
什么是上采样什么是下采样
人工智能·深度学习·计算机视觉
TSINGSEE4 分钟前
人员抽烟AI检测算法在智慧安防领域的创新应用,助力监控智能化
人工智能·算法·视频编解码·安防视频监控·视频监控管理平台
一枚游戏干饭人5 分钟前
【运营攻略】怎样进行游戏产品的定位
人工智能·游戏·语音识别
Python极客之家22 分钟前
基于机器学习的乳腺癌肿瘤智能分析预测系统
人工智能·python·机器学习·毕业设计·xgboost·可视化分析
嵌入式杂谈30 分钟前
深入理解AI大模型:参数、Token、上下文窗口、上下文长度和温度
人工智能
范范082544 分钟前
自然语言处理入门:从基础概念到实战项目
人工智能·自然语言处理
_feivirus_1 小时前
神经网络_使用TensorFlow预测气温
人工智能·神经网络·算法·tensorflow·预测气温
deflag1 小时前
第T1周:Tensorflow实现mnist手写数字识别
人工智能·python·机器学习·分类·tensorflow
aimmon1 小时前
深度学习之微积分预备知识点
人工智能·深度学习·线性代数·微积分
不是很强 但是很秃1 小时前
秃姐学AI系列之:实战Kaggle比赛:狗的品种识别(ImageNet Dogs)
图像处理·人工智能·pytorch·深度学习·神经网络·计算机视觉·分类