第八十二章
WSaiOS Plugin Specification
插件规范
82.1 为什么需要插件规范
WSaiOS Core 负责:
- Kernel
- Runtime
- Workflow
- Scheduler
但是:
行业能力:
例如:
SEO
OCR
RAG
Crawler
ERP
WordPress
全部:
不应该:
放进:
Core。
否则:
Core:
越来越大。
因此:
采用:
Plugin。
工程定义
Plugin:
基于WSaiOS标准接口开发、可以动态加载、卸载和升级的软件扩展模块。
Plugin:
不是:
Kernel。
不是:
Service。
不是:
Capability。
Plugin:
是:
扩展包。
82.2 Plugin位置
整体:
Application
↓
Capability
↓
Plugin
↓
Service
↓
Kernel
Plugin:
实现:
Capability。
不是:
替代:
Capability。
例如:
SEO Capability
↓
SEO Plugin
↓
SEO Service
82.3 Plugin目录
统一:
plugin/
├── plugin.json
├── plugin.py
├── services/
├── workflows/
├── resources/
└── tests/
82.4 Plugin Descriptor
plugin.json:
例如:
{
"name":"SEO Plugin",
"version":"1.0",
"author":"WSaiOS",
"capability":"SEO"
}
以后:
Loader:
读取:
Descriptor。
82.5 Plugin接口
统一:
class Plugin:
def install(self):
pass
def uninstall(self):
pass
def enable(self):
pass
def disable(self):
pass
生命周期:
明确。
82.6 Plugin Loader
Kernel:
启动:
Plugin Folder
↓
Scan
↓
Read Descriptor
↓
Register
↓
Enable
Plugin:
无需:
修改:
Kernel。
82.7 Plugin Registry
统一:
保存:
Plugin A
Plugin B
Plugin C
支持:
registry.find("SEO")
82.8 Plugin通信
Plugin:
不能:
直接:
互相引用。
统一:
Event Bus
或者:
Capability API。
降低:
耦合。
82.9 Plugin依赖
Plugin:
允许:
声明:
{
"depends":[
"Knowledge",
"Workflow"
]
}
Loader:
检查:
依赖。
82.10 Plugin版本
例如:
SEO Plugin
1.0
↓
1.1
↓
2.0
支持:
升级。
回滚。
82.11 Plugin沙箱
建议:
Plugin:
默认:
不能:
直接:
访问:
Kernel。
只能:
调用:
公开API。
这样:
安全。
82.12 Plugin测试
建立:
Demo Plugin。
实现:
Hello WSaiOS
验证:
- 安装
- 加载
- 启用
- 调用
- 禁用
- 卸载
全部:
成功。
82.13 工程目录
plugins/
seo/
ocr/
crawler/
wordpress/
rag/
每个:
Plugin:
遵守:
统一规范。
82.14 Plugin生命周期
Installed
↓
Loaded
↓
Enabled
↓
Running
↓
Disabled
↓
Uninstalled
状态:
统一。
82.15 本章总结
完成:
WSaiOS Plugin Specification
建立:
- Plugin Descriptor
- Plugin Loader
- Plugin Registry
- Plugin 生命周期
- Plugin API
- Plugin 依赖管理
- Plugin 沙箱
- Plugin 测试