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

75 lines
2.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 架构说明
## 设计原则
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()` 函数**:直接获取已加载的插件实例
```python
from store.NebulaShell.plugin_bridge.main import use
storage = use("plugin-storage")
http_api = use("http-api")
```