news 2026/10/28 1:53:58

aiopsterm 插件开发

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
aiopsterm 插件开发

aiopsterm 插件开发

aiopsterm 插件是宿主可验证、可安装的声明式能力包,不执行插件自带的 JavaScript 入口。

当前支持两类插件:

  • content:向终端工作区贡献可见命令。
  • provider:向宿主贡献受控的数据导入表单,由宿主适配器完成校验和持久化。

包结构

外部插件使用 ZIP 格式,并将扩展名改为.aiopsterm-plugin。清单必须位于压缩包根目录:

my-plugin.aiopsterm-plugin └── aiopsterm.plugin.json

内置插件不需要压缩,放在resources/builtin-plugins/<plugin-name>/aiopsterm.plugin.json。构建配置会将该目录复制到应用资源目录。

不支持的包扩展名和旧版清单会被拒绝。

通用清单字段

字段必填说明
manifestVersion是当前固定为1
id是全局唯一插件 ID,建议使用反向域名或产品前缀
displayName是插件列表中的名称
version是插件版本
kind是content或provider
description是插件简介
engines.aiopsterm是支持*、精确版本或>=x.y.z
iconKey否runbook、cloud、private或local
categories否分类字符串数组
readme否详情页说明
functions否详情页能力摘要
contributes是与插件种类匹配的贡献点

宿主会拒绝清单版本、插件种类、引擎版本或贡献点不合法的插件。插件包内可以包含说明文件,但这些文件不会被当作可执行入口加载。

Content 插件

Content 插件至少贡献一个命令:

{ "manifestVersion": 1, "id": "example.disk-check", "displayName": "Disk Check", "version": "1.0.0", "kind": "content", "description": "提供磁盘检查命令。", "engines": { "aiopsterm": ">=0.1.0" }, "contributes": { "commands": [ { "id": "disk-check.usage", "title": "磁盘使用情况", "description": "显示文件系统容量。", "command": "df -h" } ] } }

用户在插件详情页选择"发送到终端"后,命令进入 aiopsterm 现有终端执行控制器。插件不能绕过终端安全策略,也不能直接访问终端会话对象。

Provider 插件

Provider 插件至少贡献一个assetProviders项。当前唯一适配器是json-assets,字段类型当前只支持textarea:

{ "manifestVersion": 1, "id": "example.cmdb", "displayName": "Example CMDB", "version": "1.0.0", "kind": "provider", "description": "从 JSON 导入资产。", "engines": { "aiopsterm": ">=0.1.0" }, "contributes": { "assetProviders": [ { "id": "cmdb-json", "name": "CMDB JSON", "description": "粘贴资产数组。", "adapter": "json-assets", "fields": [ { "key": "payload", "label": "CMDB JSON", "type": "textarea", "required": true } ] } ] } }

JSON 可以是数组,也可以是包含assets数组的对象。每个资产必须包含externalId、name和host。可选字段包括username、port、group、status、tags和comment。

宿主限制单次输入不超过 2 MiB、资产不超过 1000 条,并在写入前完成结构校验、重复 ID 检查和字段归一化。插件不能直接调用资产数据库。

本地验证

开发内置插件时运行:

npm run typecheck npx vitest run tests/extensions-backend.test.ts tests/extensions-client.test.ts npm run audit:i18n npm run audit:package-config npm run audit:client-mocks

外部插件打包后,可在插件面板拖入.aiopsterm-plugin文件。桌面客户端必须提供真实绝对路径,浏览器伪造的文件名不会被视为可安装包。

新增贡献点

新增贡献点不是单纯扩展 JSON。维护者必须同时更新共享契约、主进程清单解析、后端宿主适配器、IPC 和 preload 边界、渲染器结果校验、UI、打包审计以及边界测试。涉及任意代码执行的新能力需要单独设计隔离和权限模型,不能复用当前声明式插件通道。

GitHub: https://github.com/TangGee/aiopsterm

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/28 1:53:45

汽车电气系统深度科普!

搁二三十年前&#xff0c;车上那点电气系统说白了就是"三大件"&#xff1a;大灯、喇叭、点火线圈。掰着手指头都能数过来&#xff0c;出了问题也好找&#xff0c;顺着线捋就行。现在可完全不是那回事了。中控大屏、电动座椅、自动空调、全景天窗、座椅加热通风、各种…

作者头像 李华
网站建设 2026/10/28 1:53:14

提示缓存(Prompt Caching)是如何工作的?

提示缓存&#xff08;Prompt Caching&#xff09;是一种技术&#xff1a;模型把 prompt 中重复出现的那部分已经算过的工作保存下来&#xff0c;下次直接复用这份保存的结果&#xff0c;而不必从头再算一遍。 本文我们来讲清楚提示缓存是怎么工作的。我们还会看到为什么需要它、…

作者头像 李华
网站建设 2026/10/28 1:53:13

别只盯着mAP!工业无人机巡检YOLO落地的6大工程难题与实战解法

做过工业无人机巡检项目的人,大概率都有过这种落差: 实验室里训好的YOLO,测试集mAP冲到90%+,感觉效果稳了,拉到现场飞第一个架次,心直接凉了一半。逆光下缺陷漏检一半,阴影里杂物全被当成缺陷,几十米外的小缺陷根本看不见;一天飞下来几千张图,误报一堆,人工筛到半夜…

作者头像 李华
网站建设 2026/10/28 1:51:55

充值送token任务非异步设计下如何实现幂等性

L0.参数校验&#xff1a;幂等键必填 LiteflowComponent("validateCmp") class ValidateCmp extends NodeComponent {Override public void process() {RechargeContext ctx this.getContextBean(RechargeContext.class);if (ctx.getUserId() null || ctx.getAmoun…

作者头像 李华
网站建设 2026/10/28 1:51:11

纸箱打样一般有哪几种方式?为什么有的打样免费有的要收刀模费?

纸箱打样一般有哪几种方式&#xff1f;为什么有的打样免费有的要收刀模费&#xff1f;一、纸箱打样的常见方式纸箱打样是批量生产前确认尺寸、结构、印刷效果的关键环节&#xff0c;不同打样方式的精度、成本、周期各不相同&#xff0c;对应不同的确认需求。纸箱打样方式对比二…

作者头像 李华
网站建设 2026/10/28 1:50:27

RFID系统由哪些部分组成?

RFID系统由以下三个部分组成&#xff1a; ● 电子标签&#xff1a;附着在物品上&#xff0c;由芯片和天线组成&#xff0c;存储唯一标识或业务数据 。 ● 读写器&#xff1a;发射射频信号并接收标签返回的信息&#xff0c;分为固定式和手持式 。 ● 后台系统&#xff1a;接收读…

作者头像 李华