插件系统概览——AstroBox 高可扩展性的核心
为什么需要插件系统
AstroBox 不是把所有功能硬塞进一个巨无霸应用——它通过插件系统保持核心精简,把扩展能力留给社区。这种架构:
- 用户侧:按需装插件,不用的功能不占空间
- 开发者侧:可以用熟悉的语言写插件,有完善的 Host API
- 生态侧:社区贡献的插件可以独立于主应用发布
插件能做什么
插件可以扩展 AstroBox 的很多方面:
资源源接入
最常见的插件用途——接入 AstroBox 官方源之外的资源社区:
- 米坛社区源(内置,但插件也可以)
- 自定义表盘工具源
- 私有资源源
- 任何你想对接的社区
装了这类插件后,AstroBox 的「全部资源」页源选择器里会多出一个选项,切换后就能浏览对应社区的资源。
数据传输与验证
- 快应用的网络请求代理
- 付费资源的授权验证
- 资源上传到第三方存储
- 设备数据导出到外部服务
工具类插件
- 批量重命名表盘
- 自动清理旧资源
- 设备性能测试工具
- 备份 / 恢复增强
运行时架构
AstroBox 插件运行时从 V1 到 V2 到 V4 经历了几次大升级:
V1 / V2(API Level 1/2)
- 旧版 wasmtime
- JS 接口为主
- 基础 Host API
V3(API Level 3)
- 保持旧版 wasmtime 运行时兼容
- 扩展 Host API
V4(API Level 4)——当前最新
这是一次运行时层面的彻底升级:
- 新版 wasmtime + WASI Preview 3
- 宿主接口全部改成
async func(异步函数) - 新增 HTTP 服务器 和 应用内浏览器 两组能力
- Python 与 JavaScript 成为官方支持语言
Level 4 的变化不是加了几个接口,而是换了一套运行机制——旧版 Level 2/3 插件继续跑在旧 wasmtime 上,互不干扰。
多语言支持
| 语言 | 支持状态 | 版本 |
|---|---|---|
| Rust | ✅ 所有版本 | Level 1~4 都支持 |
| Python | ✅ Level 4 新增 | 官方支持 |
| JavaScript | ✅ Level 4 新增 | 官方支持 |
| C / C++ | 可通过 Rust 绑定 | 间接支持 |
Level 4 把 Python 和 JavaScript 纳入官方支持,意味着更多开发者可以零门槛上手——不必学 Rust 就能写 AstroBox 插件。
插件市场
AstroBox 内置插件市场,社区开发者发布的插件都在这里:
- 浏览、搜索、一键安装
- 安装后自动提示重启
- 重启后插件生效
也可以手动安装 .abp 格式的本地插件文件。
安全模型
插件在 wasmtime 沙箱里运行:
- 不能直接访问操作系统文件系统
- 只能通过 Host API 和 AstroBox 交互
- AstroBox 可以控制插件的权限(比如是否允许网络访问)
这比原生插件(比如 VS Code 插件)更安全——一个恶意插件最多只能搞坏 AstroBox 本身,不会影响整个系统。
想写插件
去插件开发文档站看看,或者看本 Wiki 的 开发者入门 页面。