# ShowenV2 — 数字生命窗口平台 基于 Rust 的跨平台插件微内核架构,支持全息/VR/AR/屏幕显示,承载虚拟宠物、数字人、AI 歌姬、3D 模型等数字生命内容。 ## 架构概览 ``` ShowenV2/ ├── src/ │ ├── core/ # 插件微内核 │ │ ├── message.rs # 类型安全消息协议 (Serialize/Deserialize) │ │ ├── plugin.rs # Plugin trait 定义 │ │ ├── service_manager.rs # 生命周期管理 + 消息路由 + 错误策略 │ │ ├── config.rs # 配置解析/验证 │ │ ├── dispatch.rs # 文本命令解析 │ │ ├── plugin_abi.rs # C FFI 类型 (动态插件边界) │ │ ├── dynamic_plugin.rs # DynamicPlugin (libloading) │ │ ├── plugin_loader.rs # plugin_store/ 扫描/加载 │ │ ├── version_manager.rs # 版本切换/回退/GC │ │ └── plugin_repo.rs # 远程仓库 HTTP 客户端 │ └── plugins/ # 功能插件 │ ├── video/ # 视频播放引擎 (OpenCV) │ ├── http/ # Web UI + REST API (warp) │ ├── ble/ # BLE 配网 (D-Bus BlueZ) │ ├── wifi/ # WiFi 管理 (nmcli) │ └── screen/ # 屏幕管理 (防息屏/光标) ├── plugin-sdk/ # 动态插件开发 SDK ├── plugins/ │ └── example-plugin/ # 示例动态插件 (cdylib) ├── configs/ # 配置文件 (状态机 JSON) ├── clients/ # 外部控制客户端应用 └── souls/ # 团队成员档案 ``` ## 技术栈 - **语言**: Rust (edition 2018) - **视频**: OpenCV 0.66 - **HTTP**: warp + tokio - **BLE**: D-Bus + BlueZ (GATT) - **WiFi**: nmcli - **插件加载**: libloading - **远程仓库**: ureq + flate2 + tar ## 动态插件系统 ShowenV2 支持两种插件模式: 1. **静态插件** — 编译时链接,5 个内置插件 (video, http, ble, wifi, screen) 2. **动态插件** — 运行时加载 `.so` 文件,通过 `extern "C"` FFI + JSON 序列化通信 动态插件特性: - 多版本管理 (`plugin_store/` 目录结构) - 远程仓库下载安装 (HTTP + tar.gz) - 错误自动回退 (AutoRollback / DisableAndLog) - REST API 管理 (`/api/plugins/*`) ## 快速开始 ```bash # 验证配置 cargo run -- --validate --config configs/dog_state_machine.json # 运行 cargo run -- --config configs/dog_state_machine.json # 测试 cargo test --workspace ``` ## 目标硬件 ARM aarch64 嵌入式 Linux, 屏幕 1280×800