Files
NebulaShell/docs/guide/architecture.md
Falck ba58b3939a docs: 创建文档目录 + 更新LICENSE + 规范项目文档
- 创建 docs/ 文档目录,包含快速开始、架构说明、插件列表、插件开发、API参考、贡献指南
- 更新 LICENSE 完整 Apache 2.0 模板,添加作者 yongwanxing
- README 许可证引用更新为 Copyright 2026 Falck, yongwanxing
2026-05-03 09:44:43 +08:00

2.6 KiB
Raw Permalink Blame History

架构说明

设计原则

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      内网穿透
        └── ...

插件加载流程

  1. oss/plugin/manager.py 通过 PluginLoader 加载 plugin-loader 插件
  2. plugin-loader 扫描 store/ 目录下所有插件的 manifest.json
  3. load_priority 排序,优先加载标记为 "first" 的插件(如 plugin-bridge
  4. 加载所有插件,解析 dependencies 字段并注入依赖
  5. 按依赖顺序调用每个插件的 init()start()

插件间通信

插件通过 plugin-bridge 提供的机制通信:

  • 事件总线:发布/订阅模式,解耦通信
  • 服务注册表RPC 式服务调用
  • use() 函数:直接获取已加载的插件实例
from store.NebulaShell.plugin_bridge.main import use

storage = use("plugin-storage")
http_api = use("http-api")