Skip to content

选择渲染后端

render.provider 选择 HTML 执行引擎;Pillow 与 Skia 是独立的RasterScene Capability,不参与 Provider 选择。业务代码如果只使用通用render_* API,可以在不改变 Preparation 和调用形态的情况下更换 Provider。

选择矩阵

需求 推荐选择 主要约束
浏览器布局、JavaScript、网页导航或元素截图 Playwright 需要浏览器进程或兼容的远程服务
轻量静态 HTML,宿主环境提供 HTMLKit HTMLKit 支持的 CSS、选项与事件循环受 native 引擎约束
无浏览器静态渲染、node、SVG 或 animation Takumi 依赖 native wheel,安装与平台支持需单独确认
物理像素矩形绘制 Pillow 或 Skia 不是 HTML 后端,只执行 RasterScene
只生成或检查 HTML 不配置 Provider Preparation 与 render_template_html 仍可使用

首次接入优先选择 Playwright:它覆盖最完整的浏览器语义,也最容易判断网页与CSS 的实际行为。Playwright 的部署形态按“Docker 中的远程 WS 服务 > Bot 宿主机本地浏览器”排序:远程服务隔离浏览器二进制、系统图形库和进程生命周期,是生产部署首选;宿主机模式作为第二选项,适合本地开发或无法增加服务的环境。只有确认内容不依赖浏览器布局或 JavaScript 时,再根据部署体积、平台与专属能力选择 HTMLKit 或 Takumi。

部署依赖矩阵

Extra 只声明 Python distribution,不能替代浏览器二进制、系统动态库或不匹配平台时的源码工具链。项目当前锁定版本的部署边界如下:

引擎 Extra 安装的内容 宿主环境仍需提供
Playwright Python client 首选 Docker 中版本匹配的远程 WS 服务,把浏览器与系统依赖隔离在服务端;第二选项是在 Bot 宿主机安装匹配浏览器,Linux 还需浏览器系统依赖
HTMLKit nonebot-plugin-htmlkit native wheel 支持的平台 wheel 已包含 litehtml、Cairo 与 Fontconfig 实现,不需要单独安装对应 .so;仍需可用字体。无匹配 wheel 时源码构建需要 Xmake 与 native toolchain
Takumi takumi-py Rust native wheel 支持的平台 wheel 只依赖对应 manylinux/glibc 或操作系统基线;仍需业务使用的字体。无匹配 wheel 时需要 Rust/maturin 源码工具链
Pillow Pillow wheel 官方 wheel 已包含当前 RasterScene 所需的图像库;源码构建才需要相应开发库
Skia skia-python native wheel Linux 需要 manylinux 2.28 兼容的 glibc,以及 libEGL.so.1、libGL.so.1、libexpat.so.1 等运行库;仍需业务使用的字体

安装完成不代表运行时已经可导入。容器和 CI 应在构建阶段完成系统包安装,并对启用的 native backend 执行 import smoke;各引擎的精确命令见对应配置页。

通用能力与专属能力

能消费 PreparedHtml 并准确满足请求的 Provider 才会提供通用位图渲染。页面、node、measure、animation 等引擎语义通过 typed Capability 暴露,不会成为通用 request 的可选参数。第一方能力从 app.extensions.playwright、.takumi、.pillow 或 .skia 直接取得;第三方能力使用 get(KEY) / require(KEY)。缺失的必需能力会抛出稳定的 CapabilityUnavailable。

下一步