Update docs: architecture + plugin guide for v0.2.1 enhancements
This commit is contained in:
@@ -5076,3 +5076,62 @@ logger.error("错误信息", exc_info=True)
|
|||||||
- 开发者群组:实时交流和协作
|
- 开发者群组:实时交流和协作
|
||||||
|
|
||||||
通过遵循本指南,您可以开发出高质量的SenSu插件,为用户提供有价值的功能,同时为插件生态系统做出贡献。祝您开发顺利!
|
通过遵循本指南,您可以开发出高质量的SenSu插件,为用户提供有价值的功能,同时为插件生态系统做出贡献。祝您开发顺利!
|
||||||
|
---
|
||||||
|
|
||||||
|
## 九、v0.2.1 新增 API(已实现)
|
||||||
|
|
||||||
|
### 9.1 PluginStatus 状态枚举
|
||||||
|
|
||||||
|
```python
|
||||||
|
from fmfuncs.plugin_status import PluginStatus
|
||||||
|
|
||||||
|
# 插件生命周期状态
|
||||||
|
PluginStatus.UNLOADED # "unloaded"
|
||||||
|
PluginStatus.LOADING # "loading"
|
||||||
|
PluginStatus.LOADED # "loaded"
|
||||||
|
PluginStatus.RUNNING # "running"
|
||||||
|
PluginStatus.ERROR # "error"
|
||||||
|
PluginStatus.STOPPING # "stopping"
|
||||||
|
PluginStatus.STOPPED # "stopped"
|
||||||
|
```
|
||||||
|
|
||||||
|
用法:`plugin_service.plugin_status["my_plugin"] = PluginStatus.RUNNING`
|
||||||
|
|
||||||
|
### 9.2 PluginError 异常层级
|
||||||
|
|
||||||
|
```python
|
||||||
|
from fmfuncs.plugin_error import (
|
||||||
|
PluginError, # 基础异常
|
||||||
|
PluginLoadError, # 加载失败
|
||||||
|
PluginConfigError, # 配置错误
|
||||||
|
PluginPermissionError, # 权限不足
|
||||||
|
PluginCommandError, # 命令执行错误
|
||||||
|
)
|
||||||
|
|
||||||
|
# 抛出
|
||||||
|
raise PluginConfigError("缺少必需配置项: name", plugin_name="my_plugin")
|
||||||
|
```
|
||||||
|
|
||||||
|
### 9.3 PluginBridge.subscribe_plugin()
|
||||||
|
|
||||||
|
```python
|
||||||
|
# 便捷订阅方法(同时注册到 CoreBridge 和插件订阅表)
|
||||||
|
self.bridge.subscribe_plugin("test.event", self._handler, "my_plugin")
|
||||||
|
```
|
||||||
|
|
||||||
|
### 9.4 PluginNetworkBridge 跨插件数据
|
||||||
|
|
||||||
|
```python
|
||||||
|
# 设置数据接收通道
|
||||||
|
await self.network_bridge.setup_data_transfer("status_update", self._on_data)
|
||||||
|
|
||||||
|
# 向其他插件发送数据
|
||||||
|
await self.network_bridge.send_data("target_plugin", "status_update", {"key": "val"})
|
||||||
|
```
|
||||||
|
|
||||||
|
### 9.5 配置验证
|
||||||
|
|
||||||
|
框架在插件加载时自动检查:
|
||||||
|
- `config.yaml` 必须存在且可解析
|
||||||
|
- 必需字段:`name`, `version`
|
||||||
|
- 版本号格式建议遵循 semver
|
||||||
|
|||||||
@@ -396,3 +396,32 @@ SenSu框架是一个设计精良、功能完整的Python后端框架,具有以
|
|||||||
- 学习和研究现代Python框架设计的优秀案例
|
- 学习和研究现代Python框架设计的优秀案例
|
||||||
|
|
||||||
对于想要基于此框架进行开发的开发者,建议从`example_plugin`入手,逐步理解框架的各个组件,然后根据业务需求开发定制插件。
|
对于想要基于此框架进行开发的开发者,建议从`example_plugin`入手,逐步理解框架的各个组件,然后根据业务需求开发定制插件。
|
||||||
|
---
|
||||||
|
|
||||||
|
## 九、v0.2.1 新增:插件系统增强
|
||||||
|
|
||||||
|
### 9.1 PluginStatus 枚举 (`fmfuncs/plugin_status.py`)
|
||||||
|
统一的插件生命周期状态:
|
||||||
|
- `UNLOADED` → `LOADING` → `LOADED` → `INITIALIZING` → `RUNNING`
|
||||||
|
- 异常路径: `ERROR`, `STOPPING`, `STOPPED`, `UNLOADING`
|
||||||
|
|
||||||
|
### 9.2 PluginError 异常层级 (`fmfuncs/plugin_error.py`)
|
||||||
|
```
|
||||||
|
PluginError (基础)
|
||||||
|
├── PluginLoadError (加载失败)
|
||||||
|
├── PluginConfigError (配置错误)
|
||||||
|
├── PluginPermissionError (权限不足)
|
||||||
|
├── PluginCommandError (命令执行错误)
|
||||||
|
└── PluginNetworkError (网络操作错误)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 9.3 PluginBridge 新方法
|
||||||
|
- `subscribe_plugin(topic, handler, plugin_name)` — 便捷订阅,同时注册到 CoreBridge 和插件订阅表
|
||||||
|
|
||||||
|
### 9.4 PluginNetworkBridge 新方法
|
||||||
|
- `setup_data_transfer(event_type, handler)` — 跨插件数据传输通道
|
||||||
|
- `send_data(target_plugin, event_type, data)` — 向其他插件发送数据
|
||||||
|
|
||||||
|
### 9.5 PluginService 增强
|
||||||
|
- 配置验证:加载时检查 `name`、`version` 必需字段
|
||||||
|
- 状态追踪:`plugin_status` 字典跟踪每个插件的 `PluginStatus`
|
||||||
|
|||||||
Reference in New Issue
Block a user