年初,我们注意到国内几大 AI 辅助编程工具,通过提供礼品和购物卡等推广手段,迅速引起了众多开发者的关注和使用。这种市场变化逐渐影响了我们开源 AutoDev 插件。而,我们也看到了大量的公司、个人都开始构建自己的智能体,以支持自己的开发流程。这些智能体往往是基于某个特定的场景, 如需求生成、代码生成、代码审查等等。但是,这些智能体往往是孤立的,无法与其他商用 AI 助手进行协同工作。
旧的 AI 辅助编程模式已经同质化,在这样的新的阶段,需要新的工具,我们创建了 Shire 智能体编程语言 & 框架。在经过不断的迭代和实践之后,我们 终于发布了 Shire 1.0 版本。
Shire 想解决的问题是:如何让大量存在于不同平台、团队的 AI 智能体更好地协同工作?并将其用于软件开发流程中,以提升软件开发效率。
在 DevOps 时代,我们一直强调通过需求 ID 将需求、代码、构建和发布关联起来。然而,这一目标在过去始终难以完全实现。而如今,需求工程 + 生成式 AI 的结合为我们带来了新的希望:
在旧的时代,我们没有建立数字化的软件研发,而在新的时代,AI 能帮助我们解决重复、低效的工作,进而帮我们改进数字化研发流程。
在过去一年多的时间里,许多研发团队开发了大量 AI 智能体来支持软件开发流程。然而,这些智能体往往是孤立的,难以与其他工具如需求管理和测试平台等系统有效集成。 因此,许多 AI 工具一经推出便迅速陷入冷落,无法发挥其应有的价值。也因此,限制了这些团队进一步创新的热情,并对内部推进 AI 工具的动力产生了负面影响。
在开发者领域,IDE 是他们最常用的工具,如果直接在 IDE 中能直接调用这些智能体,并且能够与其他工具集成,那么将会大大提升 AI 智能体的可用性。
生成式 AI 生成的代码、内容往往是不可控的,因此我们需要对其进行校验。而在过去,我们往往需要通过人工的方式来校验,这种方式不仅效率低下,而且容易出错。 诸如于,如果我们让 AI 一次生成了大量的代码,可能包含了语法错误、逻辑错误等等。为了避免它带来的负面影响,我们需要借助工具来校验和检查,一旦发现问题, 可以将错误信息结合交由 AI 或者人类来修复。
Shire 是一个 AI 智能体的领域特定语言(DSL),它抽象了 IDE、智能体、流程等的 API,使得你可以到处运行 Shire(需要再实现)。Shire 也是一个 AI IDE 插件,你可以在 IDE 中安装 Shire 插件,以便于在 IDE 中运行 Shire 代码。IDEA 版本只是当前 Shire 的一个实现,我们计划未来在 Shire Compiler 中提供跨 IDE 平台与 CLI 的支持。
如下是 Shire 的特点:
废话不多说,让我们来看看 Shire 示例。
让我们来看一个 ”简单“ 的示例,来了解 Shire 的能力:
---
name: "重构代码"
actionLocation: ContextMenu
onStreamingEnd: { parseCode | diff($filePath, $output) }
---
请你这段代码建议适当的重构。提高代码的可读性、质量,使代码更加有组织和易懂。你的回答应包含重构描述和一个代码片段,展示重构后的结果。
以下是静态代码分析的问题:$sonarIssue
待重构的代码:
$selection
在这个示例中,我们在定义了一个在 IDE 右键中使用的智能体,用于重构代码。在这个智能体中,会结合 Sonarlint 分析的问题(要求安装并配置好
Sonarlint),来生成重构的提示词。在生成结束后,会调用 parseCode
函数来解析出代码,再调用 diff
来向用户展示重构后的代码。
让我们来看一个编排示例,来了解 Shire 的能力:
---
name: "设计 RESTful API"
variables:
"story": /any/ { thread(".shire/shell/dify-epic-story.curl.sh") | jsonpath("$.answer", true) }
onStreamingEnd: { parseCode | saveFile("docs/api.yml") | openFile }
model: "codegeex-4"
---
你是一个资深的开发人员,根据用户故事设计 RESTful API。
用户故事:
$story
请使用 Swagger 格式根据用户故事设计 RESTful API,返回设计的 API。
在这个示例中,我们通过 Shire 语言来定义了一个智能体,用于设计 RESTful API。在这个智能体中,
thread
函数来调用远程智能体,获取用户故事。parseCode
函数来解析用户故事,生成、保存 Swagger API 文档,再借用 IDEA 插件能打开文件,并执行。除了,thread
函数除了调用远程接口,我们还支持了本地智能体的调用,诸如于:thread("generate-story.shire")
。
如下是 Shire 的架构图:
解释如下:
通过这些组件的协同工作,Shire 架构实现了开发工具、代码库和人工智能模型之间的无缝集成,为开发者提供了一个强大、灵活和智能的开发环境。
Shire 的安装方式非常简单,只需要在 IDEA 插件市场中搜索 Shire,点击安装即可。安装完成后,你可以在 IDEA 中使用 Shire。
人生苦短,我有 Shire。
围观我的Github Idea墙, 也许,你会遇到心仪的项目