7. 适配器(wasmtime 沙箱)
入口:后台
?tool=plugins(适配器管理)。
是什么
用 WebAssembly 组件模型接入外部数据源(如豆瓣元数据),在沙箱里运行,不触碰站点数据:
| 边界 | 规则 |
|---|---|
| 能做 | fetch(url) 拉 HTTP、读写宿主缓存、打日志 |
| 不能做 | SQL、文件系统、环境变量、改写 HTTP 响应 |
| 限额 | epoch 10s / 挂钟 25s;缓存 LRU 512 |
| 熔断 | 连续失败 ≥3 次自动熔断,后台可重试/卸载 |
用法
- 后台「适配器 → 安装」上传
.wasm(或从内置示例启用——仓库自带 douban 示例与 SDK); - 「试运行」验证输出;
- 启用后对应元数据抓取走适配器(如发布页的豆瓣信息填充)。
开发自己的适配器
SDK 在 apps/api/adapters/sdk.rs(no_std 绑定,sdk::entry! 宏导出):Rust 写逻辑 → cargo build --target wasm32-wasip2 → 后台安装。参考实现看 apps/api/adapters/douban/。
与内容包的关系
内容包是「配置数据」的货架,适配器是「代码能力」的插件——两者独立安装,互不依赖。