年初,我们注意到国内几大 AI 辅助编程工具厂商,主要引流方式是:通过提供礼品和购物卡等推广手段,以引起开发者的关注和使用。这种市场营销变化逐渐影响了我们开源 AutoDev 插件。而我们也看到了大量的公司、个人都开始构建自己的智能体,以支持自己的开发流程。这些智能体往往是基于某个特定的场景, 如需求生成、代码生成、代码审查等等。但是,这些智能体往往是孤立的,无法与其他商用 AI 助手进行协同工作。
既然旧的 AI 辅助编程模式已经同质化,在这样的新的阶段,需要新的工具,我们创建了 Shire 智能体编程语言 & 框架。在经过不断的迭代和实践之后,我们 终于发布了 Shire 1.0 版本。
为什么是可编排的 AI 编程助手?Shire 想解决的问题是:如何让大量存在于不同平台、团队的 AI 智能体更好地协同工作?并将其用于软件开发流程中,以提升软件开发效率。
借助 AI 东风,建立数字化研发流程在 DevOps 时代,我们一直强调通过需求 ID 将需求、代码、构建和发布关联起来。然而,这一目标在过去始终难以完全实现。而如今,需求工程 + 生成式 AI 的结合为我们带来了新的希望:
AI 生成需求说明书时,结合知识库与项目上下文,实例化/详细化需求描述。在 AI 根因分析中,结合项目代码、提交记录,寻找到原始需求,形成有效的问题报告。在进行 AI Code Review 时,更有效地找到代码是否符合需求,是否存在问题。……在旧的时代,我们没有建立数字化的软件研发,而在新的时代,AI 能帮助我们解决重复、低效的工作,进而帮我们改进数字化研发流程。
整合工具链,提升端到端原型可用性在过去一年多的时间里,许多研发团队开发了大量 AI 智能体来支持软件开发流程。然而,这些智能体往往是孤立的,难以与其他工具如需求管理和测试平台等系统有效集成。因此,许多 AI 工具一经推出便迅速陷入冷落,无法发挥其应有的价值。也因此,限制了这些团队进一步创新的热情,并对内部推进 AI 工具的动力产生了负面影响。
在开发者领域,IDE 是他们最常用的工具,如果直接在 IDE 中能直接调用这些智能体,并且能够与其他工具集成,那么将会大大提升 AI 智能体的可用性。
集成工具生态,降低校验成本生成式 AI 生成的代码、内容往往是不可控的,因此我们需要对其进行校验。而在过去,我们往往需要通过人工的方式来校验,这种方式不仅效率低下,而且容易出错。诸如于,如果我们让 AI 一次生成了大量的代码,可能包含了语法错误、逻辑错误等等。为了避免它带来的负面影响,我们需要借助工具来校验和检查,一旦发现问题, 可以将错误信息结合交由 AI 或者人类来修复。
Shire 是什么?Shire 是一个 AI 智能体的领域特定语言(DSL),它抽象了 IDE、智能体、流程等的 API,使得你可以到处运行 Shire(需要再实现)。Shire 也是一个 AI IDE 插件,你可以在 IDE 中安装 Shire 插件,以便于在 IDE 中运行 Shire 代码。IDEA 版本只是当前 Shire 的一个实现,我们计划未来在 Shire Compiler 中提供跨 IDE 平台与 CLI 的支持。
如下是 Shire 的特点:
自定义团队智能助手。Shire 将 prompt(提示词)变成代码,使得你可以在代码库中共享你的智能编码能力,并且可以直接执行。你还可以将 Shire 代码存储在全局(~/.shire),以便于在你的所有项目中使用。丰富的开发工具生态。我们分析了开发者的编码旅程,提炼出常用工具和 IDE 插件的核心能力:从内置的 Git 到外部的 mock 服务工具 Wiremock等。通过将这些功能灵活封装为变量和函数,支持高效的应用开发。AI 上下游与 DevOps 编排。通过整合上游的 AI 智能体、本地文件和知识库,扩展 IDE 所需的上下文信息,以提升模型生成质量。设计并构建与 DevOps 规范和工具链深度融合的系统,优化软件开发流程与全链路效能。快速原型,激活创新。在 IDE 中一键运行 AI 提示词,将智能与项目上下文相结合,快速构建功能原型,快速创建编码智能体。与此同时,灵活调整开发流程和迭代运作模式,探寻最优 AI 辅助开发方案。废话不多说,让我们来看看 Shire 示例。
Shire IDE 交互示例:让我们来看一个 ”简单“ 的示例,来了解 Shire 的能力:
---name: "重构代码"actionLocation: ContextMenuonStreamingEnd: { parseCode | diff($filePath, $output) }---请你这段代码建议适当的重构。提高代码的可读性、质量,使代码更加有组织和易懂。你的回答应包含重构描述和一个代码片段,展示重构后的结果。以下是静态代码分析的问题:$sonarIssue待重构的代码:$selection在这个示例中,我们在定义了一个在 IDE 右键中使用的智能体,用于重构代码。在这个智能体中,会结合 Sonarlint 分析的问题(要求安装并配置好 Sonarlint),来生成重构的提示词。在生成结束后,会调用 parseCode 函数来解析出代码,再调用 diff 来向用户展示重构后的代码。
Shire 智能体示例让我们来看一个编排示例,来了解 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 的架构图:
解释如下:
IDE 接口抽象。Shire 通过抽象 IDE 接口,支持与交互 API、工具函数接口、扩展 UI 等通信,简化与开发工具的集成。插件与工具生态。Shire 提供对多种语言(如 Java、Python)的支持,集成 Database、Git、PlantUML、Wiremock 等插件,实现一体化开发体验。工具与框架函数。Shire 利用工具和框架的函数与变量,灵活调用开发工具,加快任务执行。Shire Runtime。Shire 解释器:解析 Shire 语言指令、大模型管理:管理大模型的集成与调用、任务编排:优化任务执行顺序、环境变量管理:统一开发环境配置。IDE 底座。借助 IDE 的底层支持来实现其功能扩展,包括交互 API、工具与函数接口、扩展 UI、以及 AST。通过这些组件的协同工作,Shire 架构实现了开发工具、代码库和人工智能模型之间的无缝集成,为开发者提供了一个强大、灵活和智能的开发环境。
总结Shire 的安装方式非常简单,只需要在 IDEA 插件市场中搜索 Shire,点击安装即可。安装完成后,你可以在 IDEA 中使用 Shire。
GitHub:https://github.com/phodal/shire
人生苦短,我有 Shire。