Shire 智能体市场:IDE 一键安装多智能体,协同打造集体智慧 Copilot
太长不看版:在新版本(0.8)的 Shire 中,你可以通过 Shire 智能体市场,一键下载和安装多个智能体,并直接在你的当前项目中使用。与此同时,你还可以 将你的 Shire 代码段或者智能体上传到 Shire 智能体市场。
详细见视频:
WHY:AI 智能体应用于真实世界软件开发的挑战?
在软件开发中,确定性是非常关键的,特别是在像实例化需求、格式化测试用例等环节,开发人员需要完全可控、精确的结果。然而,生成式 AI 的特点是不确定性带来的”创新“。受限于此,当前 AI 辅助研发的主要场景还是在补全代码、生成注释等有一定确定性的场景。
在其他更复杂或更精确的开发环节中,AI 智能体的自动化能力尚未成熟,通常仍需要大量的人工干预。这表明,若要真正提高软件开发的效率, 开发人员需要引入更多类型的智能体,以适应不同的场景需求,从而覆盖各种开发任务。
软件工程不是纸上谈兵
在应用 AI 辅助研发时,通过会分为两类场景考虑:新功能开发与现有功能维护。新功能开发通常是从 0 开始,而现有功能维护则需要考虑到现有代码库、 现有代码风格等。在我们构建各种智能体原型时,通常会从新功能开发开始 PoC。
哪怕是全新功能,现实中的 AI 辅助研发,远比简单的“AI 自动生成 API”的设想要复杂。常见的误解是:生成一个 API 只需要 AI 生成一个 prompt 即可完成。在实际的软件开发过程中, 完成一个 API 开发到上线通常需要经过 10 个步骤,或者由 10 个不同的智能体来协同完成。(详细等我们下篇文章 详细介绍)。
每个步骤背后可能涉及不同的团队、工具与资源,诸如于:API 设计规范、数据库结构、mock 服务、单元测试、API 测试等。实现一个 API 的自动化开发, 需要考虑到这些步骤的协同与整合。
团队固有开发范式
再回到软件开发的现实场景,每个团队受限于团队能力变迁以及历史的遗留问题,都有自己的开发范式。再受限于组织的历史规范与线上问题影响,在一个团队中, 可能会有多种开发范式并存:
旧的系统中,API 永远只返回 200 状态码,成功与失败通过返回值区分。
不旧不新的系统中,API 可能不能用
delete
方法,只能用post
方法。新的系统中,API 通过返回状态码来区分成功与失败。
除此,不同的团队可能有不同的开发范式:有的团队更倾向于敏捷开发,快速迭代;有的团队则更加注重严格的需求分析和架构设计。你可能在 A、 B 团队之间需要一个 API 文档、 API 契约作为 mock 服务来作为中间层,而在 C 团队中,你可能 API 的提供者和消费者都是你自己,所以你并不需要详细的 API 文档、mock 服务等。
在这种情况下,未贴合企业实际需求的碎片化工具大量存在各个团队中,并且难以协同。碎片化的工具不仅会存在大量重复劳动,还会使得 AI 平台或者工具束之高阁, 无法发挥最大的价值。那么,我们应该如何去打通这些壁垒呢?
WHAT:集体智慧 Copilot = Team + AI + IDE
集体智慧 Copilot 的核心是通过 AI 与开发团队深度结合,实现一种团队与 AI 智能体共同合作的编程体验。IDE 不再只是一个被动的代码编写环境,而是一个智能体之间协同工作的平台。
集体智慧 IDE 是将开发团队的协作模式与 AI 紧密结合,使开发者与 AI 形成一种双向学习、协同合作的关系。这种关系不仅仅是单向的自动化工具使用,而是把 AI 当作一个动态的、不断学习和成长的团队成员。AI 的职责不再只是自动化代码生成或测试,而是通过协作的方式,促进团队整体能力的提升。
团队如何分享智慧?
通过观察大量团队的开发过程,我们发现:团队整体能力往往受到精英开发者与普通开发者之间能力差距的制约。
团队的集体智慧往往体现在资深开发者的经验积累和知识共享机制中。通过经验丰富的成员与普通开发者之间的交流,知识得以在团队中传递。然而, 这种机制存在局限性:知识传递的效率可能不高,特别是在复杂或大规模项目中,个别开发者的知识可能被封闭在小组中,难以在整个团队中流动。在现有的开发模式之下,我们往往会通过:
技术分享会议,来分享优秀的团队成员的经验。
代码评审、代码规范等方式,来提高团队整体代码质量。
代码库、文档库等方式,来提高团队整体知识共享。
代码生成工具、代码模板等方式,来提高团队整体开发效率。
而如果 AI 将上述的行为自动化之后,我们可能会失去这些优势。又或者是,我们可以考虑将 AI 作为一个团队成员,来协同工作,将大量的团队经验赋予 AI?
辅助团队核心:隐性知识的显性化
当我们开始构建 Team AI 这一类的工具时,我们做的大部分工作知识管理,诸如于将隐性知识转化为显性知识。
显性知识是团队中明确文档化或口头传授的知识,如代码规范、最佳实践等,通常我们会通过代码库、文档库等方式来传递。在 AI 辅助研发的当前阶段, 大量的组织热衷于通过构建知识库 + 问答机器人的方式来传递显性知识。
隐性知识是团队中没有明确文档化或口头传授的经验、技巧和决策逻辑。这种知识通常隐藏在资深开发者的脑海中,或者潜伏在代码的历史和修订记录中。在结合 AI 辅助编程的过程中,我们发现:AI 的提示词往往是隐性知识的显性化。即通过 AI 的提示词,我们将隐性知识转化为显性知识,诸如于各类约定俗成的 模式、最佳实践等。这种显性化的过程,不仅可以帮助团队成员更好地理解代码,还可以帮助团队成员更好地学习、成长。
集体智慧 Copilot
因此,当团队以上述的方式来分享智慧,并将其结合到 IDE 里时,它就变成了一个集体智慧 IDE。你可以在这个 IDE 里:
通过远程智能体来获取团队的显性知识,如代码规范、最佳实践等。
通过本地智能体来获取代码库中的隐性知识,如代码历史、代码风格等。
基于团队的流程、规范,来编写生成代码、生成测试用例等智能体。
通过智能体市场,来下载、安装、使用团队的智能体。
通过将团队的知识与代码库、团队上下文等紧密结合,我们可以实现更高效的软件开发。
HOW:如何实现集体智慧 Copilot?
在 IDE 中实现集体智慧 Copilot,我们可以通过 Prompt 即代码的方式来实现,将团队的知识、经验、规范等转化为 prompt,再通过 AI 智能体来执行。Shire 便可以作为一个实现集体智慧 Copilot 的工具。
Shire 是一个简便 AI 编码智能体语言,它能够让大型语言模型(LLM)与控制集成开发环境(IDE)之间自由对话,以实现自动化编程。安装方式:在 IDE 中安装 Shire 插件,即可开始使用 Shire。
方式 1:Prompt 即代码
举个例子,假设我们有一个智能体,用于 Swagger API 文档生成。那么,我们可以通过 Shire 代码来定义这个智能体的功能:
---
name: "Swagger Doc to Yaml"
variables:"code": /any/ { cat($input) }
onStreamingEnd: { parseCode | saveFile($input, $output) }
---
为如下的代码,生成 Swagger Doc。不修改任务代码,只添加对应的注解。
文件路径:$input
代码:$code
只返回最后的代码,方便我使用。
我们只需要定义好这个智能体的功能,将其存储到代码库中,便可以提供给团队成员使用。
方式 2:Shire 智能体市场
Shire 智能体市场本质是利用 Shire 抽象 IDE 的底层能力,将与 IDE 交互、软件开发的操作,提取为一个个原子能力,诸如于:函数、变量、代码模型等。随后,再让用户通过 Shire 代码来组织这些原子能力,以实现对应的功能。最后,用户可以将这些 Shire 代码上传到 Shire 智能体市场,以供他人下载、安装、使用。
用户只需要在 Shire 智能体市场中,选择对应的智能体,点击安装,便可以直接在 IDE 中使用。诸如于,用户可以选择”API 设计、生成与文档“这个智能体包, 便可以直接在 IDE 中使用这这些智能体。
其它 Shire 新功能
在新版本(0.8)的 Shire 中,你还将体会到:
model
参数,用于在 Shire 代码中指定模型的名称,以支持多模型的调用。详细见:https://shire.phodal.com/shire/shire-env.html 。beforeStreaming
生命周期钩子,用于启动应用或者 mock 服务。Git 函数:
commit
、push
用于支持 Git 操作。
新的函数:
mock
函数,用于与 WireMock 集成,以支持 Mock 服务的启动。execute
函数,现在可以直接运行 Gradle 任务、Python 脚本、Shell 脚本等。batch
函数,用于批量执行多个 Shire 代码,可以用于批量添加注释等。
新语言支持:JavaScript、Go 的语言语法树(PsiVariable)解析支持。
总结
AI + IDE 是当前前沿的热门趋势,人们对于 GitHub Copilot、Cursor、Tabnine 等工具来提高开发效率,已经达成了共识。但是,这些工具的局限性在于:无法满足不同团队、不同项目的需求。我们在过去的一年多时间里,一直在探索合适的方式来让 AI 与团队协同工作,以实现更高效的软件开发。
在我们构建 AutoDev 时,是个人都想修改 AutoDev 的 prompt。即便,我们不断开放出 AutoDev 的能力,过于灵活也会使得 AutoDev 变得不堪重负。因此,我们希望通过 Shire 智能体市场,让用户可以自由地选择、安装、使用智能体,以实现集体智慧 IDE 的目标。
相关文章:

Shire 智能体市场:IDE 一键安装多智能体,协同打造集体智慧 Copilot
太长不看版:在新版本(0.8)的 Shire 中,你可以通过 Shire 智能体市场,一键下载和安装多个智能体,并直接在你的当前项目中使用。与此同时,你还可以 将你的 Shire 代码段或者智能体上传到 Shire 智…...

机器学习笔记(一)初识机器学习
1.定义 机器学习是一门多学科交叉专业,涵盖概率论知识,统计学知识,近似理论知识和复杂算法知识,使用计算机作为工具并致力于真实实时的模拟人类学习方式,并将现有内容进行知识结构划分来有效提高学习效率。 机器学习有…...
linux如何查看当前的目录所在位置
在Linux系统中,查看当前目录所在位置的常用命令是 pwd,它代表 "print working directory"(打印工作目录)。当你在终端中输入 pwd 并按下回车键时,它会显示当前所在的完整路径。 打开终端,然后输…...

【JavaEE】线程创建和终止,Thread类方法,变量捕获(7000字长文)
阿华代码,不是逆风,就是我疯,你们的点赞收藏是我前进最大的动力!!7000字长文,希望本文内容能够帮助到你! 目录 一:创建线程五种方式 方式一:继承Thread类,…...

[Python数据可视化] Plotly:交互式数据可视化的强大工具
引言: 在数据分析和可视化的世界中,Plotly 是一颗耀眼的明星。它是一个开源的交互式图表库,支持多种编程语言,包括 Python、R 和 JavaScript。Plotly 的强大之处在于它能够创建出既美观又具有高度交互性的图表,使得数据…...

Excel--DATEDIF函数的用法及参数含义
DATEDIF函数的用法为: DATEDIF(start_date,end_date,unit),start_date表示的是起始时间,end_date表示的是结束时间。unit表示的是返回的时间代码,是天、月、年等。如下: Datedif函数的参数含义unit参数返回值的意义"y"两个时间段之间的整年数…...

执行网络攻击模拟的 7 个步骤
在进攻和防守策略方面,我们可以从足球队和美式足球队身上学到很多东西。球员们会分析对方球队的策略,找出弱点,相应地调整进攻策略,最重要的是,练习、练习、再练习。作为最低要求,网络安全部门也应该这样做…...

技术成神之路:设计模式(十四)享元模式
介绍 享元模式(Flyweight Pattern)是一种结构性设计模式,旨在通过共享对象来有效地支持大量细粒度的对象。 1.定义 享元模式通过将对象状态分为内部状态(可以共享)和外部状态(不可共享)…...
使用systemctl实现开机自启动jar包
目录 1. 创建服务文件2. 配置服务文件3. 重新加载 systemd 配置4. 启动服务5. 查看服务状态 1. 创建服务文件 创建服务文件: 在 /etc/systemd/system/ 目录下创建一个新的服务文件 myapp.service。 sudo vim /etc/systemd/system/myapp.service2. 配置服务文件 按i…...

2024.9.20营养小题【2】(动态分配二维数组)
这道题里边涉及到了动态分配二维数组的知识点,不刷这道题我也不知道这个知识点,算是一个比较进阶一点的知识点了。 参考:C语言程序设计_动态分配二维数组_哔哩哔哩_bilibili【C/C 数据结构 】二维数组结构解析 - 知乎 (zhihu.com)...

前端web端项目运行的时候没有ip访问地址
我们发现 没有netWork 的地址 导致 团队内其他同学无法打开我们的地址 进行访问 在page.json 中的运行 指令中 添加 --host 记得加上空格 这样我们就可以看到这个地址了 团队其他同学 就可以访问我们这个地址了...

微服务架构陷阱与挑战
微服务架构6大陷阱 现在微服务的基础设施还是越来越完善了,现在基础设施缺乏的问题逐渐被解决了。 拆分粒度太细,服务关系复杂 拆分降低了服务的内部复杂度,但是提升了系统的外部复杂度,服务越多,服务和服务之间的连接…...

react的事件绑定
文章目录 基本示例使用箭头函数事件对象阻止默认行为绑定事件处理函数的上下文 在 React 中,事件绑定主要通过 JSX 属性来实现。事件处理函数被传递给相应的事件属性,例如 onClick、onChange 等。这些属性会被绑定到 HTML 元素上,并在事件发生…...
ASP.NET Core 入门教学二十九 DDD设计
在软件开发中,领域驱动设计(Domain-Driven Design,简称DDD)是一种重要的软件设计方法论,它强调通过深入理解业务领域来构建高质量的软件系统。DDD的核心思想是将复杂的业务逻辑集中在领域模型中,并通过分层…...
Rocprofiler测试
Rocprofiler测试 一.参考链接二.测试过程1.登录服务器2.使用smi获取列表3.使用rocminfo获取Agent信息4.准备测试用例5.The hardware counters are called the basic counters6.The derived metrics are defined on top of the basic counters using mathematical expression7.P…...

基于python flask的高血压疾病预测分析与可视化系统的设计与实现,使用随机森林、决策树、逻辑回归、xgboost等机器学习库预测
研究背景 随着现代社会的快速发展,生活方式的改变和人口老龄化的加剧,心血管疾病,尤其是高血压,已成为全球范围内的重大公共健康问题。高血压是一种常见的慢性疾病,其主要特征是动脉血压持续升高。长期不控制的高血压…...
Lombok 与 EasyExcel 兼容性问题解析及建议
在 Java 开发中,Lombok 被广泛用于减少样板代码,如 Getter、Setter、构造函数等。然而,在与像 EasyExcel 这样依赖反射机制的库一起使用时,可能会遇到一些意想不到的问题。本文将深入探讨 Lombok 与 EasyExcel 之间的兼容性问题&a…...

Kubeadm快速安装 Kubernetes集群
1. Kubernetes简介 Kubernetes(k8s)是谷歌开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它具有以下特点: 开源容器化自动部署扩展高可用 2. Kubernetes架构 Kubernetes遵循主从式架构设计,主要分…...
OpenJudge | 八皇后问题
总时间限制: 10000ms 内存限制: 65536kB 描述 在国际象棋棋盘上放置八个皇后,要求每两个皇后之间不能直接吃掉对方。 输入 无输入。 输出 按给定顺序和格式输出所有八皇后问题的解(见Sample Output)。 样例输入 (null)样例输出 No. 1 …...
C#往压缩包Zip文件的文件追加数据
C#往压缩包Zip文件的文件追加数据 往一个已经压缩好的压缩包里追加数据,一般就有两种方式,一种是前面已经学习过的,就是追加一个新的文件, 另外一种就是往已经存在的文件追加数据。 往已经存在的文件追加数据,需要先找到文件索引。 在压缩包里声明的名称,与外面的文件路…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...