38dcd2135280cc179ca97607ff57bdfddc9a1037
1. service_manager.rs check_plugin_updates: 返回 Vec<(id, cur, new)>,
调用处通过 Custom { kind: "plugin_updates" } 广播结果,闭环 HTTP
调用方获取检查结果的链路 (CLAUDE.md:163 第3项, 王浩然风险3 建议)
2. plugin-sdk/src/lib.rs broadcast 文档: 替换误导性的 WifiProvisioned
示例为 StateChanged (当前真正闭环的消息),并新增 Phase 2 占位消息
说明,列出 WifiProvisioned/DeviceEvent/CursorVisibility 三个当前无
生产者的变体,提醒开发者不要为其编写业务逻辑 (CLAUDE.md:163 第1项)
3. src/plugins/device/mod.rs handle_message: DeviceResponse::Error
转换时补 eprintln 留痕,避免设备层故障完全静默 (CLAUDE.md:163 第4项,
王浩然风险3 建议: 至少在一处记录 Error 响应)
未处理项:
- 单实例保护 (锁文件/socket 互斥): 需目标机实测锁行为,留给设备端工程师
- unclutter 僵尸 reap: 核查发现 shutdown() 已做 kill+wait+pkill 兜底,
仅 SIGKILL 极端场景残留,不值得加 SIGCHLD handler (过度工程)
- CursorVisibility 变体: 删除会破坏示例插件和测试,倾向 Phase 2 统一清理
注: Windows 开发环境缺 dbus/pkg-config, 无法本地 cargo check;
改动经 rust-analyzer 类型检查零诊断, 待目标机验证.
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)
│ ├── device/ # 设备能力 (Display/SleepInhibit/Backlight/Cursor)
│ └── screen/ # 屏幕管理 (thin wrapper,转发到 device)
├── plugin-sdk/ # 动态插件开发 SDK
├── plugins/
│ └── example-plugin/ # 示例动态插件 (cdylib)
├── configs/ # 配置文件 (状态机 JSON)
├── clients/ # 外部控制客户端应用
└── souls/ # 团队成员档案
技术栈
- 语言: Rust (edition 2021)
- 视频: OpenCV 0.66
- HTTP: warp + tokio
- BLE: D-Bus + BlueZ (GATT)
- WiFi: nmcli
- 插件加载: libloading
- 远程仓库: ureq + flate2 + tar
动态插件系统
ShowenV2 支持两种插件模式:
- 静态插件 — 编译时链接,6 个内置插件 (video, http, ble, wifi, device, screen)
- 动态插件 — 运行时加载
.so文件,通过extern "C"FFI + JSON 序列化通信
动态插件特性:
- 多版本管理 (
plugin_store/目录结构) - 远程仓库下载安装 (HTTP + tar.gz)
- 错误自动回退 (AutoRollback / DisableAndLog)
- REST API 管理 (
/api/plugins/*)
快速开始
# 验证配置
cargo run -- --validate --config configs/dog_state_machine.json
# 运行
cargo run -- --config configs/dog_state_machine.json
# 测试
cargo test --workspace
硬件与平台定位
- 平台定位: ShowenV2 是通用数字生命窗口平台,不局限于“全息宠物播放器”
- 分辨率支持: 支持 8K 以内所有分辨率显示
- 显示类型: 支持 AR、VR、XR、普通屏幕、全息显示、投影、LED 矩阵,以及任何可运行的显示设备
- 当前调试环境: Debian 11 KDE 桌面 (
ARM64/aarch64) - 跨平台策略: 当前以 Linux/ARM64 为主,架构已为扩展到其他平台预留空间
Description
Languages
Rust
74.4%
Dart
22.5%
HTML
2.6%
Shell
0.4%
Java
0.1%