- 创建 docs/ 文档目录,包含快速开始、架构说明、插件列表、插件开发、API参考、贡献指南 - 更新 LICENSE 完整 Apache 2.0 模板,添加作者 yongwanxing - README 许可证引用更新为 Copyright 2026 Falck, yongwanxing
2.6 KiB
2.6 KiB
架构说明
设计原则
NebulaShell 遵循「最小化核心」设计哲学:
- 核心框架(
oss/)只负责加载plugin-loader这一个插件 - 所有功能皆由插件实现,包括 HTTP 服务、WebSocket、WebUI 等
- 插件加载器负责发现、加载、管理所有其他插件
架构分层
用户/客户端
│
▼
┌─────────────────────────────┐
│ HTTP API / WebSocket │ ← 由 http-api / ws-api 插件提供
└─────────────────────────────┘
│
▼
┌─────────────────────────────┐
│ Plugin Loader │ ← 由 oss/plugin/manager.py 加载
│ • 插件发现与加载 │
│ • 依赖解析与注入 │
│ • 生命周期管理 │
└─────────────────────────────┘
│
├── 核心插件
│ ├── plugin-bridge 插件间通信
│ ├── lifecycle 生命周期
│ ├── plugin-storage 持久化存储
│ └── i18n 国际化
│
├── 网络服务
│ ├── http-api RESTful API
│ ├── ws-api WebSocket
│ └── http-tcp TCP 适配
│
├── 管理工具
│ ├── webui 管理控制台
│ ├── dashboard 系统仪表盘
│ ├── log-terminal 日志终端
│ └── pkg-manager 包管理
│
└── 扩展
├── firewall 防火墙
├── ftp-server 文件服务
├── frp-proxy 内网穿透
└── ...
插件加载流程
oss/plugin/manager.py通过PluginLoader加载plugin-loader插件plugin-loader扫描store/目录下所有插件的manifest.json- 按
load_priority排序,优先加载标记为"first"的插件(如plugin-bridge) - 加载所有插件,解析
dependencies字段并注入依赖 - 按依赖顺序调用每个插件的
init()→start()
插件间通信
插件通过 plugin-bridge 提供的机制通信:
- 事件总线:发布/订阅模式,解耦通信
- 服务注册表:RPC 式服务调用
use()函数:直接获取已加载的插件实例
from store.NebulaShell.plugin_bridge.main import use
storage = use("plugin-storage")
http_api = use("http-api")