Blog

Blog

PHODAL

智能体语言 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 添加更多实用和智能的特性,帮助开发者提升工作效率,优化代码质量。

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

Shire 官方文档 | 演示视频


或许您还需要下面的文章:

关于我

Github: @phodal     微博:@phodal     知乎:@phodal    

微信公众号(Phodal)

围观我的Github Idea墙, 也许,你会遇到心仪的项目

QQ技术交流群: 321689806
comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Engineer, Consultant, Writer, Designer

ThoughtWorks 技术专家

工程师 / 咨询师 / 作家 / 设计学徒

开源深度爱好者

出版有《前端架构:从入门到微前端》、《自己动手设计物联网》、《全栈应用开发:精益实践》

联系我: h@phodal.com

微信公众号: 最新技术分享

标签