当前位置: 首页 > news >正文

技术速递|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.lryc.cn/news/477540.html

相关文章:

  • 淘宝有哪些API是用来获取商品列表的?(商品id列表)
  • D59【python 接口自动化学习】- python基础之异常
  • 解决 Spring 异步处理中的 JDK 动态代理问题及相关错误分析
  • 从xss到任意文件读取
  • nuiapp vue3 uni-ui uni.uploadFile 图片上传
  • 【计算机科学】位运算:揭开二进制世界的奥秘
  • 弹性裸金属服务器和传统裸金属服务器有什么区别?
  • shodan(五)连接Mongodb数据库Jenkinsorg、net、查看waf命令
  • ThingsBoard规则链节点:Push to Edge节点详解
  • 基于 EventBridge + DashVector 打造 RAG 全链路动态语义检索能力
  • 【golang/navmesh】使用recast navigation进行寻路
  • 【软考】Redis不同的数据类型和应用场景。
  • java 对人名和电话 脱敏-replaceAll
  • 计算机网络:网络层 —— 网络地址转换 NAT
  • 【Pikachu靶场:XSS系列】xss之过滤,xss之htmlspecialchars,xss之herf输出,xss之js输出通关啦
  • 面向制造和装配的产品设计指南(二):面向装配的设计指南
  • Python中的PDF处理工具:PyPDF2和ReportLab使用指南
  • 【vxe-table】多选筛选项对列表的列进行动态的显示与隐藏
  • 微信小程序uniapp+vue飞机订票航空售票系统
  • 如何取消Outlook中的循环会议
  • Docker-- cgroups资源控制实战
  • 使用Python和Vosk库实现语音识别
  • stm32使用串口的轮询模式,实现数据的收发
  • 105. UE5 GAS RPG 搭建主菜单
  • 基于 JAVASSM(Java + Spring + Spring MVC + MyBatis)框架开发一个医院挂号系统
  • Golang | Leetcode Golang题解之第540题有序数组中的单一元素
  • 影刀RPA实战:嵌入python,如虎添翼
  • es 数据清理delete_by_query
  • 【每日 C/C++ 问题】
  • stm32学习4