插件开发者入门——用 Rust / Python / JS 写 AstroBox 插件
开发前先搞清楚
在写插件之前,先回答几个问题:
- 你想做什么? 资源源接入、数据传输、工具辅助——不同用途适合不同实现方式
- 选什么语言? Rust(性能好、一级公民)/ Python(快速原型)/ JS(需要 Web UI)
- 目标 API Level? 建议直接用 Level 4——功能最全,支持最新 Host API
- 有没有现成的参考? 去 GitHub 搜
astrobox plugin看社区已有作品
关键资源
| 资源 | 地址 | 说明 |
|---|---|---|
| 官方插件开发文档 | abox.run/docs/plugin-development | 最权威的参考 |
| V4 API 文档 | abox.run/docs/plugin-development/v4 | Level 4 专属 |
| V2 API 文档 | abox.run/docs/plugin-development/v2 | Level 2 插件(较旧) |
| GitHub 官方仓库 | github.com/AstralSightStudios/AstroBox | 主项目源码 |
| 示例插件 | 在仓库中搜索 plugin example | 官方提供的最小示例 |
| QQ 群 | 1102457938 | 中文社区,开发者聚集地 |
快速开始(Rust)
环境准备
- 安装 Rust 工具链(rustup)
- 安装 wasmtime CLI(用于本地测试)
cargo install wasmtime-cli
最小项目结构
my-plugin/
├── Cargo.toml
└── src/
└── main.rs
manifest.json(插件元信息)
{
"id": "com.example.myplugin",
"name": "我的插件",
"version": "0.1.0",
"api_level": 4,
"permissions": ["network", "filesystem"],
"entry": "plugin.wasm"
}
编译和打包
# 编译为 WebAssembly
cargo build --target wasm32-wasi --release
# 打包为 .abp(需要 abox CLI 工具)
abox pack --manifest manifest.json --output my-plugin.abp
本地测试
在 AstroBox 中手动加载刚打出来的 .abp 文件(见 本地插件加载)。
Level 4 Python 入门
Python 写 Level 4 插件需要用到 Pyodide(WASI 版 Python 发行版):
# 准备 Python 环境
pip install pyodide-build
# 编写 plugin.py,声明 Host API 依赖
# 编译为 .wasm
# 打包为 .abp
Python 适合快速原型和数据处理类插件。如果需要写高性能或复杂系统,还是推荐 Rust。
Level 4 JavaScript 入门
JavaScript 插件可以用 wasmtime JS runtime:
# 编写 plugin.js
# 用 wasmtime 编译为 .wasm
# 打包为 .abp
JavaScript 插件特别适合需要 HTTP 服务器 + 应用内浏览器的场景——可以直接写 React / Vue UI。
插件能访问什么
通过 Host API,插件可以:
| 能力 | API 组 |
|---|---|
| 读写设备数据 | Device API |
| 安装 / 管理资源 | Resource API |
| 网络请求 | HTTP Client API |
| 起本地 HTTP 服务器 | HTTP Server API(Level 4) |
| 打开应用内浏览器 | Browser API(Level 4) |
| 读写本地文件 | Filesystem API |
| 触发 UI 事件 | UI API |
| 调用其他插件 | Plugin API |
完整 API 文档在 abox.run 上。
权限声明
manifest.json 里声明的权限决定了 AstroBox 首次加载插件时会弹窗申请什么:
| 权限 | 说明 |
|---|---|
network | 网络请求 |
http-server | 启动 HTTP 服务器(Level 4) |
browser | 打开应用内浏览器(Level 4) |
filesystem | 文件读写 |
device | 穿戴设备访问 |
ui | UI 事件 |
startup | 启动时运行 |
发布插件
上架 AstroBox 插件市场
目前插件市场主要由社区贡献。上架流程大致:
- 在 manifest.json 里填好完整元信息
- 打生成 .abp 文件
- 在 AstroBox 社区 QQ 群或 Discorde 分享,让用户试用和反馈
- 按市场上架要求提交
独立分发
如果不想上市场:
- 把 .abp 上传到 GitHub Releases
- 在社区帖子里分享下载链接
- 用户手动安装(见 本地插件加载)
开源协议
AstroBox 主项目是 AGPL v3,但 AstroBox 插件本身可以用自己的协议——包括闭源。
这对商业插件开发者友好:你可以写一个闭源的付费插件,只分发 .abp 二进制,不用开源源码。