图像生成插件的难点在于模型来源多、参数格式不同、任务执行时间较长。插件需要给聊天命令一个简洁入口,同时让执行器层能够适配不同图像服务。
项目概览
结构上,main.py 负责接入 AstrBot 命令系统,imgflow/commands 解析命令参数,imgflow/runtime 加载流程并管理任务状态,imgflow/executors 封装不同图像服务执行器。配置、流程定义和任务资产分开存放,便于排查单次生成任务。
用途是把群聊中的图像生成、编辑、重跑和重发组织成可控任务。适合固定提示词模板、多模型切换、异步出图、多人受控使用图像模型等场景。
流程定义
插件把图像任务拆成流程、步骤和执行器。流程描述输入、比例、模型别名、后处理和输出方式;执行器只负责把统一任务转换成具体服务请求。命令入口只解析用户意图,再把任务交给流程运行器。
任务目录保存元数据、输入提示、生成结果和回调记录。前台执行可以立即返回图片,后台执行会记录任务 ID,并在完成后回发结果。取消、重发、查询状态等命令都基于同一份任务元数据。
执行器适配
执行器注册表负责维护模型别名、比例参数和能力标签。不同服务对尺寸、比例、返回格式的定义不一致,适配层把这些差异收在执行器内部,流程层只处理统一结构。
实现原理是以 YAML 流程定义作为任务蓝图,运行期按步骤解析输入、选择执行器、保存任务元数据,再由回调记录完成前台返回或后台回发。权限服务控制谁可以启动、重发、收藏或清理任务,避免生成能力无边界扩散。