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

智能体语言 Shire 1.2 发布:自定义多文件编辑、Sketch 视图、流式 diff、智能上下文感知...

在 2024 年年底,终于将我之前想跟随的自定义多文件编辑功能发布了。在最新的版本里,你可以体验一系列的 AI IDE 智能体特性:

  • 自定义 ChatBox 行为 + Patch Sketch。一次让 AI 修改多个代码文件,并且将与更友好的视图来展示它们。

  • 流式 Diff。现在你可以在 Shire 上体验到实时的代码差异比较功能(基于 Continue 的 UI 修改)。

  • 智能上下文感知。当你在 ChatBox 中选择代码文件时,我们会结合静态分析和代码语义分析,为你提供更多的上下文信息。

  • Shire Sketch 视图。我们为 Shire 提供了一个画布功能,可以展示 Mermaid 流程图、PlantUML 图表等,并可以直接执行代码。

详细见官方文档:https://shire.phodal.com/ 。

最终结果的演示视频见:https://www.bilibili.com/video/BV1AZC6YBEqZ/

多文件编辑:ChatBox

在 Shire 中右侧的 ChatBox 是一个可自定义的元素,你可以编写对应的 Shire 指令来控制 ChatBox 的行为。如在 1.2.4 版本中,我们支持了多文件编辑功能:

  • 智能文件导航:通过 /goto 命令实现快速跨文件跳转

  • 信息结构化:通过 /structure 命令来简化相关的代码:

  • 文件路径补全:支持智能的文件路径补全,提高输入效率

  • 相关类引用:自动识别和提供相关类的引用建议

如下是 ChatBox 的一个示例:

---
name: "Shire 多文件编辑示例"
description: "Shire 多文件编辑示例"
interaction: RightPanel
actionLocation: ChatBox
---
根据用户的要求和现有的代码编写 Java 代码。要求:
1. 使用 diff patch 的方式。
2. 如果是新文件也使用 patch 的格式。
3. 每个文件的修改也请用 diff 的形式给出。
用户的需求如下:
$chatPrompt

在这个示例中,我们定义了一个 ChatBox 智能体,用于多文件编辑。在这个智能体中,会结合用户的需求,生成对应的代码文件。而其中的 $chatPrompt 则是用户的输入。此时,用户在输入时,可以结合 Shire 提供强大的上下文、智能体语言能力。

智能上下文感知

基于 Shire 内置的静态代码分析能力,现在你可以在通过 /file 选中文件的时候,推荐相关的类引用。如下图所示:

85c6bb17dde7fe5b407191b648749238.png
  • 当用户选中了 Controller 之后,会推荐相关的 Service 类、DTO 类引用;

  • 当用户选中了 Service 之后,会推荐相关的 Entity 类、Repository 类引用。

只需要扩展 Shire 的 RelatedClassProvider 接口就可以快速为主流语言提供这个能力,并且我们也将在未来结合 Shire 的相似代码推荐功能,为用户提供更多的上下文感知。

简化代码结构的: /structure

通常来说,当你通过 /file 来选中代码时,可能会有一些不必要的代码,如注释、空行等。此时,你可以通过 /structure 命令来简化代码结构。如下 是一个简化后的代码:

file name: BlogController.java
file package: package com.phodal.shire.demo.controller;
class BlogController {
  BlogService blogService;
  + public BlogController(BlogService blogService)
  + @GetMapping("/{id}")     public BlogPost getBlog(@PathVariable Long id)
  + @PostMapping("/")     public BlogPost cftBlog(@RequestBody CreateBlogRequest request)
}
file path: src/main/java/com/phodal/shire/demo/controller/BlogController.java

在上下文有限的模型中,你就可以更好地控制上下文长度,以提高用户体验。

跳转 /goto 指令

而当你在 ChatBox 中输入 /goto 指令时,Shire 会自动为你跳转到对应的位置。如下是一个示例:

/goto:com.phodal.shire.demo.controller.BlogController

其中,Shire 会自动为你跳转到 BlogController 类的位置。

Shire Sketch 视图

Shire Sketch 是 Shire 提供的 IDE 画布功能,旨在通过其丰富的文本代码(源码、Patch、UML、架构图等)二次处理、渲染组件,进一步简化交互成本, 以提升开发者在 IDE 中的体验。无论是单个文件的显示、渲染操作,还是多文件协作、修复,Shire Sketch 都能提供强大的支持。

  • 实时流式代码高亮:实时显示代码高亮的流式视图。

  • 内置差异(Patch 语言):显示代码差异的内置视图。

  • 实时流式差异(StreamDiff):实时显示代码差异的流式视图,基于 Continue 的 UI 修改。

  • Mermaid 流程图:支持 Mermaid 流程图的渲染,与双向绑定的代码编辑器。(要求启用 Mermaid 插件)

  • PlantUML 图表:支持 PlantUML 图表的渲染,与双向绑定的代码编辑器。(要求安装 PlantUML integration 插件)

d1e3a9386a8683ab2e5e4ecc48701500.png

Mermaid Sketch

Mermaid Sketch 提供了流程图的实时预览和编辑功能,支持双向绑定,让图表设计变得简单直观。

c154625229a1671adbd86c67d6dd8077.png

PlantUml Sketch

PlantUML Sketch 为 UML 图表提供了强大的支持,配合双向绑定的代码编辑器,轻松创建和修改各类 UML 图表。

5d2f0ce8ee8b64df04c6ee3dd9b919d4.png

流式 Diff

流式 Diff 是 1.2 版本的一大亮点,我们基于 Continue 的UI ,提供了实时的代码差异比较功能:

  • 实时差异展示:随着代码修改即时显示变化

  • 智能补丁应用:支持剪贴板补丁的快速应用

f82ecd07fd373dd6c181b5dc91ef1a71.png

如下是一个流式 Diff 的示例:

---
name: "Streaming Diff Refactoring"
actionLocation: ContextMenu
interaction: StreamDiff
---
请你这段代码建议适当的重构。提高代码的可读性、质量,使代码更加有组织和易懂。你的回答应包含重构描述和一个代码片段,展示重构后的结果。

只需要将 interaction 设置为 StreamDiff,即可在 ChatBox 中实时显示代码差异。

总结

Shire 1.2 版本的发布,不仅带来了自定义多文件编辑功能,还提供了 Sketch 视图、流式 diff 和智能上下文感知等强大特性。这些新功能让开发者能够更加高效地进行代码编写和协作。随着版本的不断迭代,Shire 正在成为 AI IDE 领域的一个重要玩家。

未来,我们还将继续努力,为 Shire 添加更多实用和智能的特性,帮助开发者提升工作效率,优化代码质量。

01ff8b50fa974ca7a4e8d104bb825afc.png

欢迎广大开发者下载体验,并提出宝贵意见。


http://www.kler.cn/a/469123.html

相关文章:

  • 【数据可视化】数据可视化看板需求梳理模板(含示例)
  • 20241230 AI智能体-用例学习(LlamaIndex/Ollama)
  • 网络层协议之IP数据包层分片随笔
  • Rocketmq 探索MQClientFactoryScheduledThread线程工作
  • 30分钟学会css
  • 【Rust自学】10.3. trait Pt.1:trait的定义、约束与实现
  • AI生成PPT,效率与创意的双重升级
  • 【开源免费】基于SpringBoot+Vue.JS精品在线试题库系统(JAVA毕业设计)
  • 开发小技巧分享 01:JSON解析工具
  • 入手51单片机的学习路径
  • Linux中的tcpdump抓包命令详解:抓取TCP和UDP数据包并按小时输出文件
  • 【MyBatis-Plus 进阶功能】开发中常用场景剖析
  • C++之STL
  • DeepSeek v3为何爆火?如何用其集成Milvus搭建RAG?
  • 数据库工程师进阶秘籍:云计算基础知识题目精选与答案(附PDF)
  • QT-------------对话框和多窗口程序设计
  • 《嵌入式系统:科技与艺术的交响曲》
  • Spark是什么?Flink和Spark区别
  • 【AI数学基础】线性代数:矩阵和线性变换
  • JVM之Java内存模型
  • c# 服务中启动exe窗体程序
  • 家用万兆网络实践:紧凑型家用服务器静音化改造(二)
  • Coroutine 基础四 —— CoroutineScope 与 CoroutineContext
  • Java `computeIfAbsent` 方法
  • Flink源码解析之:Flink on k8s 客户端提交任务源码分析
  • 7. C语言 运算符详解