nonebot-plugin-novelai
基于NoneBot2的QQ机器人AI绘图插件,对接SD-webui/NovelAI/Naifu三大后端,支持中文Prompt
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于NoneBot2的QQ机器人AI绘图插件,对接SD-webui/NovelAI/Naifu三大后端,支持中文Prompt
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:NoneBot-plugin-novelai 插件头像
2022 年,AI 绘图工具开始爆发式进入大众视野。彼时 NovelAI 和 Stable Diffusion 正是最火的两大绘图引擎,而 QQ 作为国内最大的即时通讯工具,是无数 AI 爱好者日常交流的主战场。一个自然的想法诞生了:能不能在 QQ 群里直接输入文字,让机器人帮我画一张图?
sena-nana 正是抱着这个朴素的想法,开发了 nonebot-plugin-novelai。这是一个基于 NoneBot2 框架的 QQ 机器人插件,它将 Stable Diffusion WebUI、NovelAI 官方 API 和 Naifu 等多个绘图后端接入 QQ 聊天界面,让用户在群聊中通过自然语言指令即可驱动 AI 绘图。一经发布迅速在二次元圈、AI 爱好者圈引发传播,至今已获得 213 Stars,成为 NoneBot 生态中最知名的绘图类插件之一。
nonebot-plugin-novelai 本质上是一个消息响应 + 绘图请求调度器。它运行在 NoneBot2 框架之上,接收用户通过 QQ 发送的指令(如 绘画 樱花树下的少女),解析参数后转发给后端绘图服务(SD-webui、NovelAI 或 Naifu),再将生成的图片通过 QQ 消息返回给用户。
这个插件不负责实际绘图——它是一个中间层,核心价值在于:
插件基于 NoneBot2(现代、跨平台、可扩展的 Python 聊天机器人框架)开发,充分利用 Python 异步特性(asyncio)处理并发请求。每个绘图任务被封装为异步协程,通过 aiohttp 异步 HTTP 客户端向后端服务发起绘图请求。
核心依赖关系:
nonebot2 >= 2.1.1 # 框架核心
└── nonebot-adapter-onebot v11 # QQ 协议适配器(LLOneBot/NapCat)
aiohttp # 异步 HTTP 客户端
aiofiles # 异步文件读写
pydantic # 配置管理(Config 类基于 BaseSettings)
插件通过各自独立的 Draw 类对接不同后端:
SD-webui 后端(最通用):
通过 SD-webui 的 /sdapi/v1/txt2img REST 接口对接,用户只需在配置文件中填入 SD-webui 地址即可,支持本地部署或远程(如 Colab)地址。POST 参数包含 prompt、seed、steps、cfg_scale、width、height、negative_prompt 等标准 SD 参数。
Naifu 后端(轻量自托管):
通过 /generate-stream 流式接口对接,使用 k_euler_ancestral 采样器,适合没有独显但有 CPU 机器的用户。
NovelAI 官方 API 后端:
通过 api.novelai.net/ai/generate-image 接口对接,需配置 Bearer Token,支持 nai-diffusion(含 NSFW)和 safe-diffusion 两种模型切换。
插件通过 Config 类管理所有参数,配置项极为丰富:
novelai_sd: SD-webui 地址列表novelai_paid: 点数管理模式(0 禁用 / 1 点数制 / 2 严格点数制 / 3 不限制)novelai_daylimit: 每日点数限制novelai_cd: 限速 CD 时间(秒)novelai_size: 最大生成分辨率(默认 1024x1024)novelai_h: 是否允许 NSFW 内容novelai_limit / novelai_on: 全局开关支持 NoneBot2 标准 .env / pyproject.toml 配置方式,对已有 NoneBot2 部署经验的用户非常友好。
aidraw.py 中维护了全局绘图队列,通过 cd 字典记录用户调用时间,wait_list deque 队列管理等待中的请求,gennerating 布尔标志控制当前生成状态。每次绘图请求进来,先检查 CD 时间是否满足、点数是否充足,再决定是排队还是直接执行。支持批量生成(-b/--batch 参数控制数量)。
如果你只是想自己搭一个 AI 画图 bot,最省事的方案是:
nb plugin install nonebot-plugin-novelai.env 填入 SD-webui 地址(如果 SD-webui 和 NoneBot2 不在同一台机器,填 IP 地址即可)然后在 QQ 群里发消息:绘画 猫娘,即可收到一张 AI 生成的图片。全程无需接触命令行,对普通用户非常友好。
如果你想运营一个对所有人开放的公共绘图 bot,需要考虑:
插件本身处于「长期失修」状态(作者 README 中明确标注),核心问题包括:
outofdate/ 目录,说明部分功能已被弃用或重构novelai_h,存在内容合规风险| 维度 | 评估 |
|---|---|
| 部署难度 | 中等(3/5) |
| 预估时间 | ~30 分钟(有 NoneBot2 经验) |
| GPU 需求 | 必须(由后端 SD-webui 消耗) |
| 容器化支持 | 无 Dockerfile / docker-compose |
| 一键部署 | 不支持 |
| 前置要求 | Python 3.10+、NoneBot2 环境、SD-webui/NovelAI/Naifu 后端、QQ 账号 |
核心难点不在插件本身,而在后端服务的部署——SD-webui 首次模型下载就需要 5-10GB 磁盘空间,且需要较长时间初始化。
nonebot-plugin-novelai 的成功折射出一个重要趋势:AI 能力通过聊天机器人这一「最后一公里」触达终端用户。
无论是 Stable Diffusion 还是 NovelAI,其官方界面(Web UI)对于普通用户而言仍有一定门槛。而将 AI 能力封装为 QQ 机器人插件,让用户在熟悉的聊天场景中自然调用——这正是将 AI 普惠化的一个典型路径。
该项目在 NoneBot 生态中扮演了「能力插件」的标杆角色,其设计思路(多后端抽象、配置驱动、权限管理、队列限流)被后续多个同类插件借鉴参考。虽然当前项目已停止维护,但其 fork 版本 nonebot-plugin-stable-diffusion-diao 仍在活跃开发中,并扩展支持了 ComfyUI 和 FLUX 等更新一代的绘图后端。
图2:项目贡献者墙
本报告由 PIFS 开源情报系统自动生成,分析时间:2026-07-14