技术速递|GitHub Copilot upgrade assistant for Java 技术预览发布!

作者:Nick Zhu - Senior Program Manager
排版:Alan Wang

随着人工智能和大型语言模型(LLMs)的不断发展,Agent(“智能代理”)和智能代理化工作流程正在迅速成为AI领域的下一个前沿。这些自主系统带来了巨大的好处,它们可以创建计划、执行单个任务、使用外部工具、与用户互动,甚至自行修复错误。

凭借这些功能,代理化工作流程可以解决一些企业客户在开发周期中经常遇到的复杂、关键任务,甚至是一些极其繁琐的任务。对于使用 Java 的企业客户来说,升级 JDK、框架、依赖项等一直是一个挑战。这些挑战覆盖的范围相当地广,开发者可能会需要经常面对重复且繁琐的场景,例如 API 签名发生变化等等。我们见过一些企业在将代码库从 Java 8 升级到 Java 17 时,花费了几天甚至几周的时间,这是一项巨大的资源和人力投入。

今天,我们很高兴宣布 GitHub Copilot upgrade assistant Java 的技术预览版。这是一个基于 AI 的解决方案,它使用智能代理化工作流程和多代理框架帮助您更新Java应用程序。通过安装 Visual Studio Code 插件,您可以从本地 Java 项目开始,GitHub Copilot 将自动处理大部分升级过程。以下是该产品的一些关键功能。

创建一个智能的计划

GitHub Copilot upgrade assistant for Java 会分析您当前的项目,并提示用户输入 JDK 和 Maven 路径、分支名称等参数。点击“Start(开始)”后,工具将进一步评估该项目的依赖项,例如 Spring Boot 和 JUnit 等框架。您还可以选择生成一个 GitHub Issue,记录升级过程中的任务。

您可以在执行计划前,审核即将执行的任务。以下是一个演示。

创建一个智能的计划

可视化每一步操作

当升级开始后,工具的信息面板(Dashboard)将成为主要信息中心,您可以在此查看每个任务的实时详情,包括运行 OpenRewrite 工具的命令、查看选择的配方、审查修改的文件和错误详情、每个步骤日志等。您还可以深入探索每个任务及其子任务的详细信息。

在升级过程中,您可以随时选择暂停、停止、继续,甚至重新启动新的升级计划。该工具在整个升级过程中为用户提供了高度的控制权和透明度。以下是一个演示。

可视化每一步操作

自动修复错误与人机协作

如果在升级过程中出现错误,无论是由 OpenRewrite 代码转换引入的错误,还是其他原因,GitHub Copilot upgrade assistant for Java 将通过动态构建/修复/重试 AI 循环自动处理这些问题。AI 将自动尝试自动解决这些,并通过重新构建项目进行验证。如果问题仍然存在,系统将继续尝试不同的方法,只有在达到指定的尝试次数后才会需要“人类”的协助。工具将提供明确的信号,提示何时需要人工干预,并在工具中提供了人机协作体验的交互。以下是一个演示。

自动修复错误与人机协作

从开发者学习

当用户在升级过程中手动修复错误时,GitHub Copilot upgrade assistant for Java 会学习这些修复并将这些模式应用于未来的问题。这些修复会被标记为“使用开发者的指导修复”。企业开发人员会发现随着工具对其代码库问题的适应,升级变得更加简单。以下是一个演示。

从开发者学习

分支,Commit 与 PR 流程整合

在操作过程中,GitHub Copilot upgrade assistant for Java 将针对新的分支执行本地代码提交。这些提交与特定任务相关联,例如由 OpenRewrite 转换引起的所有代码更改,或者在错误修复循环期间的更改。

无论是 OpenRewrite 工具引起的更改,还是 AI 在动态构建/修复/重试循环中的更改,或是人工干预引起的更改,都会被适当标记,方便您专注于特定的更改。

升级过程总览

升级结束时的总结页面将提供所有重要细节的概览,包括文件更改、更新的依赖项、新的分支中的 Commit。错误摘要部分还显示错误是如何解决的,无论是通过 AI、开发人员还是通过开发者指导。此外,您还可以直接合并 Commit 并创建 Pull Request!以下是一个演示。

升级过程总览

申请技术预览的等候名单

准备好节省 Java 升级的时间了吗?您可以在此申请技术预览的等候名单。早期访问将仅限于选定的用户,但我们鼓励您注册!

AI 时代充满了令人兴奋的可能性,我们相信这只是个开始。我们将为复杂的工作流程带来更多支持,帮助客户应对这些任务。人工智能与人类的合作将帮助我们实现创造性解决方案并提高效率,为我们的工作节省数千小时的时间。

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

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

相关文章

Python常用脚本集锦

收集了一些常用Python脚本,作为平时练手使用,也可以作为自己的笔记,用到哪个功能可以自己查询一下即可。 文件和目录管理 复制文件 import shutil# 复制源文件到目标文件 shutil.copy(source.txt, destination.txt)移动文件 import shuti…

redis源码系列--(二)--multi/exec/eval命令执行流程

本文主要记录multi/exec、eval、redis执行lua脚本的源码流程 redis在exec之前,所有queued的命令是没有执行的,!!!在执行时会通过检测client是否被打上CLIENT_DIRTY_CAS标记来判断[watch后,exec时]时间段内是否有key被…

什么是安全威胁情报?

SANS的定义 针对安全威胁、威胁者、利用、恶意软件、漏洞和危害指标、所收集的用于评估的应用数据集。 iSight的定义 iSight:网络威胁情报是关于已收集、分析、分发的,针对攻击者和其动机的目的手段,用于帮助所有安全级别的,和…

JMeter快速造数之数据导入导出

导入数据 输入表格格式如下 创建CSV Data Set Config 在Body Data中调用 { "username": "${email}", "password": "123456", "client_id": "00bb9dbfc67439a5d42e0e19f448c7de310df4c7fcde6feb5bd95c6fac5a5afc"…

渗透测试-快速获取目标中存在的漏洞(小白版)

《Java代码审计》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484219&idx1&sn73564e316a4c9794019f15dd6b3ba9f6&chksmc0e47a67f793f371e9f6a4fbc06e7929cb1480b7320fae34c32563307df3a28aca49d1a4addd&scene21#wechat_redirect 《Web安全》h…

[免费]基于Python的Django+Vue3在线考试系统【论文+源码+SQL脚本】

大家好,我是java1234_小锋老师,看到一个不错的基于Python的DjangoVue3在线考试系统,分享下哈。 项目视频演示 【免费】基于Python的DjangoVue3在线考试系统 Python毕业设计_哔哩哔哩_bilibili 项目介绍 本论文提出并实现了一种基于Python…

Unity3D学习FPS游戏(9)武器音效添加、创建敌人模型和血条

前言:虽然已经实现了基本玩家操作,但是游戏运行起来并没有音效。既然是FPS游戏有了玩家和武器,肯定还得有敌人。本篇演示如何给武器添加音效和创建敌人。 武器音效添加和创建敌人 武器音效添加Audio Source代码控制 创建敌人目标敌人模型敌人…

C 语言编程中的常见错误及解决方案

在 C 语言开发中,编译和链接错误是常见的问题,尤其是在处理多个源文件时。本文将总结一些常见的错误,并提供相应的解决方案,以帮助开发者更高效地排查和修复这些问题。 1. 结构体作用域问题 问题描述 在函数参数列表中定义结构体…

Kubernetes运行大数据组件-运行spark

在Kubernetes上运行Spark作业,你需要创建一个Spark的部署和相应的Kubernetes资源。以下是一个简化的例子,展示了如何使用Kubernetes部署Spark Driver和Executor。 首先,确保你有一个运行中的Kubernetes集群,并且kubectl 命令行工…

雷池社区版新版本功能防绕过人机验证解析

前两天,2024.10.31,雷池社区版更新7.1版本,其中有一个功能,新增请求防重放 更新记录:hhttps://docs.waf-ce.chaitin.cn/zh/%E7%89%88%E6%9C%AC%E6%9B%B4%E6%96%B0%E8%AE%B0%E5%BD%95 仔细研究了这个需求,…

PyCharm中pylint安装与使用

目录 1. 安装插件2. pycharm中使用该功能3. 命令行使用 1. 安装插件 然后重启 2. pycharm中使用该功能 3. 命令行使用 前提是先 pip install pylint pylint demo01.py下面红框内容的意思是,得到10分/ 满分10分,上次运行获得8.33分,经调整…

conda下安装volitility3

在github下载zip压缩包并解压。 创建虚拟环境 (base) C:\WINDOWS\system32>conda create -n volatility3 python3.8 激活虚拟环境 (base) C:\WINDOWS\system32>conda activate volatility3 安装工具所需要的依赖 (volatility3) C:\WINDOWS\system32>cd /d D:\CT…

IDEA加载通义灵码插件及使用指南

安装通义灵码插件 登录通义灵码IDE插件 下载登录参考教程 https://help.aliyun.com/zh/lingma/user-guide/download-the-installation-guide 本地工程和企业知识库准备 请下载本地工程和知识库压缩包,并在本地解压缩,其中包含demoProject和知识库文件…

Java入门(7)--网络编程

Java网络编程:构建网络应用的基石 🌐 🎯 掌握Java网络编程,打造强大的网络应用! 在上一篇文章中,我们探讨了Java的I/O操作和反射机制。今天,让我们深入学习Java网络编程,了解如何构建…

只因把 https 改成 http,带宽减少了 70%!

起因 是一个高并发的采集服务上线后,100m的上行很快就被打满了。因为这是一条专线,并且只有这一个服务在使用,所以可以确定就是它导致的。 但是!这个请求只是一个 GET 请求,同时并没有很大的请求体,这是为…

黑马官网最新2024前端就业课V8.5笔记---CSS篇(2)

盒子模型 画盒子 目标:使用合适的选择器画盒子 属性 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"view…

认识单双链表

认识单双链表 前置知识&#xff1a;无&#xff0c;会的可以直接跳过。 基本概念 内存空间是所有程序的公共资源&#xff0c;在一个复杂的系统运行环境下&#xff0c;空闲的内存空间可能散落在内存各处。我们知道&#xff0c;存储数组的内存空间必须是连续的&#xff0c;而当…

导师双选系统开发新解:Spring Boot技术

摘 要 如今的信息时代&#xff0c;对信息的共享性&#xff0c;信息的流通性有着较高要求&#xff0c;因此传统管理方式就不适合。为了让导师选择信息的管理模式进行升级&#xff0c;也为了更好的维护导师选择信息&#xff0c;卓越导师双选系统的开发运用就显得很有必要。并且通…

木马病毒相关知识

1、 木马的定义 相当于一个远控程序&#xff08;一个控制端[hack]、一个被控端[受害端]&#xff09; 在计算机系统中&#xff0c;“特洛伊木马”指系统中被植入的、人为设计的程序&#xff0c;目的包括通过网终远程控制其他用户的计算机系统&#xff0c;窃取信息资料&#xff0…

Oracle简介、环境搭建和基础DML语句

第一章 ORACLE 简介 1.1 什么是 ORACLE ORACLE数据库系统是美国ORACLE 公司&#xff08;甲骨文&#xff09;提供的以分布式数据库为核心的一组软件产品&#xff0c;是目前最流行的客户/服务器体系结构的数据库之一。 英文官网&#xff1a;Database | Oracle 中文官网&#xff…