EN
插件开发

插件开发

从独立项目开始开发节点、后台服务和扩展面板

Yotta 插件以 .ynp 文件交付。一个插件可以贡献工作流节点,并携带后台服务和扩展面板。作者在独立项目中开发,固定 SDK 版本,编译并打包后通过本地导入或市场安装使用。

从哪里开始

  1. 创建第一个插件:获取 SDK、生成项目、编写节点、运行和验证。
  2. 开发后台服务和面板:状态、组件、交互、重复事件与生命周期。
  3. 打包、安装和发布:平台变体、作者密钥、版本更新及市场发布。

当前支持范围

目标 可用路径
自定义工作流节点 Go Process SDK;节点合同声明配置、类型、输入输出、执行分支和宿主目标
调用外部服务或应用 通过节点声明的 Configured Target 和宿主调用协议,使用用户配置的目标
持续采集或设备连接 包内 companion 后台程序,由 Yotta 管理启动、健康检查和停止
插件扩展面板 声明式组件树,companion 提供 snapshot 与 event 接口
中英文显示 包描述中的插件自有翻译键,用于节点、面板和错误
Windows amd64 / arm64 项目模板可分别编译、打包;平台支持随包声明
Wasm 运行时与低层示例存在,无 WASI;当前 Go 高层打包器固定 Process,脚手架不声称覆盖 Wasm
TypeScript 目前提供协议类型,不是完整的 TypeScript 插件运行时或作者工具链

插件不能直接访问 Yotta 的 Vue、DOM、内部数据库或 Go internal API。扩展界面使用正式面板合同。需要现有合同没有表达的能力时,先明确扩展点,再由产品实现支持;不要在插件中依赖宿主实现细节。

SDK 组成

SDK 当前随 Go module github.com/yottaapp/yotta 提供。插件项目只导入这些公开包:

包路径后缀 职责
sdk/plugin/go Guest 协议、Value Envelope、结果、状态和宿主调用
sdk/plugin/authoring 节点合同、内建数据类型、配置和执行定义
sdk/plugin/packaging 生成清单、内容摘要、签名和完整 .ynp
sdk/plugin/panel 面板定义、Snapshot、Event、Result 与协议校验

SDK 自己使用宿主实现不意味着插件可以导入 Yotta 的 internal/。独立项目也不应通过 replace 指向相邻 Yotta 源码;使用固定版本或显式导出的本地 module proxy。

三种身份不要混淆

  • SDK 版本:决定开发时依赖的 API 和合同。
  • Package ID / package version:决定安装和更新的插件包身份。
  • Node Type ID / node version / semantic digest:决定工作流引用的节点语义。

升级包不自动升级节点合同。重命名显示名称也不应改变包、节点或面板组件的稳定 ID。平台自动生成系统兼容筛选;作者在市场填写业务分类、标签和维度。

源码入口位于 Yotta 仓的 sdk/plugin/authoring/README.md、sdk/plugin/panel/README.md、sdk/plugin/templates/ 和 scripts/create-plugin.py。协议生成入口 cmd/plugin-sdk 用于维护 SDK 合同,并不是创建插件的命令。