智能体语言 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
选中文件的时候,推荐相关的类引用。如下图所示:
当用户选中了 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
插件)
Mermaid Sketch
Mermaid Sketch 提供了流程图的实时预览和编辑功能,支持双向绑定,让图表设计变得简单直观。
PlantUml Sketch
PlantUML Sketch 为 UML 图表提供了强大的支持,配合双向绑定的代码编辑器,轻松创建和修改各类 UML 图表。
流式 Diff
流式 Diff 是 1.2 版本的一大亮点,我们基于 Continue 的UI ,提供了实时的代码差异比较功能:
实时差异展示:随着代码修改即时显示变化
智能补丁应用:支持剪贴板补丁的快速应用
如下是一个流式 Diff 的示例:
---
name: "Streaming Diff Refactoring"
actionLocation: ContextMenu
interaction: StreamDiff
---
请你这段代码建议适当的重构。提高代码的可读性、质量,使代码更加有组织和易懂。你的回答应包含重构描述和一个代码片段,展示重构后的结果。
只需要将 interaction
设置为 StreamDiff
,即可在 ChatBox 中实时显示代码差异。
总结
Shire 1.2 版本的发布,不仅带来了自定义多文件编辑功能,还提供了 Sketch 视图、流式 diff 和智能上下文感知等强大特性。这些新功能让开发者能够更加高效地进行代码编写和协作。随着版本的不断迭代,Shire 正在成为 AI IDE 领域的一个重要玩家。
未来,我们还将继续努力,为 Shire 添加更多实用和智能的特性,帮助开发者提升工作效率,优化代码质量。
欢迎广大开发者下载体验,并提出宝贵意见。