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文件的文件追加数据 往一个已经压缩好的压缩包里追加数据,一般就有两种方式,一种是前面已经学习过的,就是追加一个新的文件, 另外一种就是往已经存在的文件追加数据。 往已经存在的文件追加数据,需要先找到文件索引。 在压缩包里声明的名称,与外面的文件路…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
