让 Neo-MoFox 可以在聊天中使用 NovelAI 画图、改图和处理图片。
插件既可以直连 NovelAI 官方 API,也可以连接参数兼容的 NovelAI Gateway。用户可以通过聊天命令主动生图,AI 也可以在对话中自动调用绘图、局部重绘和图片处理能力。
- 根据文字描述生成图片。
- 引用已有图片进行整图重绘。
- 使用人物或画风参考图生成新图片。
- 使用 Vibe 素材控制画风和内容倾向。
- 在同一张图片中安排多个角色及其位置。
- 对图片指定区域进行局部重绘。
- 清理杂物、移除背景、提取线稿、转换草图、线稿上色和改变表情。
- 通过 WebUI 调整常用配置并测试生图。
配置文件位于:
config/plugins/image_generator_plugin-neo/config.toml
生成图片默认只在聊天上下文保留带媒体 ID 的占位符。需要模型看到图片时,在
[plugin] 中开启 inject_generated_image = true;output_image_context 默认为
"vlm",由框架识别图片并附加描述,识别失败时保留占位符。设为 "base64" 则将
原图交给多模态模型。关闭开关时不执行图片识别,也不内联原图。
至少需要配置一个 NovelAI Token:
[api]
api_keys = ["pst-xxxxxxxx"][api]
channel = "official"
base_url = "https://image.novelai.net/ai/generate-image"除生图外的原生端点(2× 放大、导演工具、Vibe 编码、订阅查询)由 base_url
推导域名与路径前缀,因此使用镜像地址时只需填写其生图端点。
[api]
channel = "gateway"
base_url = "http://127.0.0.1:8000"Gateway 需要支持本插件使用的 OpenAI 图片扩展接口,包括文生图、图生图、局部重绘、Vibe 和 Director 工具。
[generation]
model = "nai-diffusion-5-curated"
available_models = [
"nai-diffusion-5-curated",
"nai-diffusion-5-full",
"nai-diffusion-4-5-full",
]
resolution = "1024x1024"
steps = 28
scale = 5.0
sampler = "k_euler_ancestral"
noise_schedule = "karras"
prompt_guidance_rescale = 0.0available_models 是 Bot 和 WebUI 可在单次调用中选择的严格白名单,非空时必须包含默认 model。留空则只允许默认模型。插件依据官方原生与 OpenAI 兼容对接规范提供集中式模型能力矩阵:
| 模型代际 | 包含模型 | 噪声调度 (noise_schedule) | Variety+ | Vibe | 角色参考 | 普通角色 | 步数上限 | 官方原生版本 |
|---|---|---|---|---|---|---|---|---|
| V5 | nai-diffusion-5-fullnai-diffusion-5-curated |
不可选择,wire 固定 karras |
不支持(彻底省略) | 不支持 | 不支持 | 最多 32 人(自由坐标) | 28 步 | params_version: 4 |
| V4.5 | nai-diffusion-4-5-fullnai-diffusion-4-5-curated |
支持(按 sampler 矩阵校验) | 支持 | 支持 | 支持 | 最多 6 人(5×5 网格) | 50 步 | params_version: 4 |
| V4 | nai-diffusion-4-fullnai-diffusion-4-curated-preview |
支持(按 sampler 矩阵校验) | 支持 | 支持 | 不支持 | 最多 6 人(5×5 网格) | 50 步 | params_version: 4 |
| V3 | nai-diffusion-3nai-diffusion-furry-3 |
支持(按 sampler 矩阵校验) | 支持 | 支持 | 不支持 | 不支持 | 50 步 | params_version: 4 |
Full 更适合精细控制,Curated 更偏稳定和审美一致。局部重绘会自动映射到同代 Inpainting 模型,不能把 *-inpainting 直接写入白名单。
注意:当用户配置了全局 noise_schedule 并在不同模型间切换时,插件会保留本地偏好,
在序列化最终请求时依据当前模型能力处理:使用 V5 时固定发送 karras,切换回
V4.5/V4/V3 时按 sampler 矩阵校验并恢复可用偏好。V4/V4.5/V5 的旧 ddim
配置会改写为 k_euler_ancestral;V4/V4.5 会依据改写前的 sampler 省略调度,
V5 仍固定发送 karras。V3 保留 ddim 并省略调度。
使用模型名与官方不同的第三方中转时,无需手动映射:只要模型名包含版本关键词,插件会自动推断能力档案——4.5 / 4-5 / 45 判为 V4.5,5 / v5 判为 V5;名称含 curated 判为 Curated,否则按 Full。例如 some-proxy/novelai-v5 会按 V5 Full 处理,proxy-4.5-curated 会按 V4.5 Curated 处理,请求体仍发送原始模型名。
仅当模型名完全不含版本关键词、或自动推断不符合预期时,才需要 model_aliases 显式映射:
[generation]
model = "my-v5"
available_models = ["my-v5", "my-v45"]
model_aliases = { my-v5 = "nai-diffusion-5-full", my-v45 = "nai-diffusion-4-5-full" }别名可写入 model 与 available_models,不能与官方模型 ID 重名;能力判断(提示词规则、多角色上限、Vibe 兼容性等)按映射的官方模型执行。
推荐画幅:
| 用途 | 尺寸 |
|---|---|
| 方图、头像 | 1024x1024 |
| 人物竖图 | 832x1216 |
| 风景横图 | 1216x832 |
可选采样器:
| 采样器 ID | 说明 |
|---|---|
k_euler |
Euler |
k_euler_ancestral |
Euler Ancestral(默认,推荐) |
k_dpm_2 |
DPM2 |
k_dpm_2_ancestral |
DPM2 Ancestral |
k_dpmpp_2m |
DPM++ 2M |
k_dpmpp_2m_sde |
DPM++ 2M SDE |
k_dpmpp_2s_ancestral |
DPM++ 2S Ancestral |
k_dpmpp_sde |
DPM++ SDE |
ddim |
DDIM |
可选噪声调度:
| 调度 ID | 说明 |
|---|---|
karras |
Karras(默认,V4.5/V5 推荐) |
exponential |
Exponential |
polyexponential |
Polyexponential |
native |
Native |
噪声调度会同时受模型代际和采样器限制:V3 常规采样器支持 native、karras、
exponential、polyexponential;V4/V4.5 常规采样器不支持 native;k_dpm_2
只支持 exponential 与 polyexponential;k_dpm_2_ancestral 是合法 sampler,
但在 V3/V4/V4.5 下没有可选调度,因此不发送该字段。V5 隐藏该选择项,最终请求
固定发送 karras。
generation.character_prompt:描述机器人自己的外观,适合自拍或画自己。generation.style_reference:固定画风标签,会自动加入提示词。generation.negative_prompt:所有图片共用的负面提示词。
默认保存在:
data/image_generator_plugin-neo/
其中:
temp_images/:AI 自动调用和 WebUI 生成的图片。command_images/:聊天命令生成的图片。vibes/:Vibe 和精密参考素材。
所有命令需要管理员权限。
/画图 [画幅] <提示词> [|| 负面提示词] [--model 模型ID] [--steps N] [--scale X] [--rescale X] [--variety-plus true|false] [--render-text]
也可以使用 /生图 或 /nai_image。
示例:
/画图 竖图 1girl, blue hair, outdoor
/画图 横图 fantasy city --model nai-diffusion-5-full --steps 24 --scale 6
/画图 方图 girl holding a sign "欢迎" --model nai-diffusion-5-curated --render-text
/画图 竖图 1girl, blue hair --seed 0 --count 3
--count 允许 1~4。插件始终逐张串行请求,Gateway 每次请求的 n 固定为 1;
显式指定 seed 时,后续图片依次使用 seed + 1。
先引用一张图片,再发送:
/改图 <提示词> [强度] [--model 模型ID] [--steps N] [--variety-plus true|false] [--render-text]
也可以使用 /修图 或 /nai_edit。
强度越高,结果与原图差异越大;不填写时使用配置中的默认强度。
先引用一张图片,再执行普通 Enhance 或 V5 Max Enhance:
/nai_edit enhance <完整提示词> [--model 模型ID] [--upscale 1x|1.5x|2x|Max] [--strength 0.5] [--noise 0] [--seed 0]
普通 Enhance 使用图生图管线,默认 Strength 为 0.5、Noise 为 0,并按源图面积
开放 1x、1.5x、2x。Max 仅 V5 可用,会发送 upscaled_enhance: true;
V4.5 只支持普通 Enhance。固定 2× Upscale 是独立的纯放大能力,不接受提示词、
Strength 或 Noise,且源图面积不能超过 1,048,576。
先引用一张图片,再发送:
/参考图 <提示词> [--model V4.5模型ID] [--type 角色|风格|两者] [--fidelity X] [--strength X]
也可以使用 /nai_ref。
精密参考与图生图不同:它不会直接重绘原图,而是把参考图中的人物特征或画风用于生成一张新图片。
精密参考仅支持 V4.5,也可用于 V4.5 局部重绘。参考图会保持比例放入最接近原图
比例的 1024x1536、1536x1024 或 1472x1472 黑底画布。白名单含 V4.5 时
命令会自动选择其中一个,也可以通过 --model 明确指定。
/风格 列表
/风格 添加 <文件名>
/风格 状态
/风格 清空
也可以使用 /nai_vibe。
Vibe 素材放入:
data/image_generator_plugin-neo/vibes/
支持常见图片,以及 .naiv4vibe、.naiv4vibebundle 等 NovelAI Vibe 文件。手动加载的 Vibe 按用户或聊天流分别保存,不会与其他用户共用。
NovelAI 图片 API 不提供账号余额查询,因此“账号”命令只会返回不支持说明。
插件启用 Action 后,AI 可以根据对话主动调用绘图能力。
支持的自动能力包括:
- 普通文生图。
- 多人物和人物位置控制。
- 可选 Vibe。
- 可选精密参考图。
- 局部重绘。
- 普通 Enhance 与 V5 Max Enhance。
- 固定 2× 放大。
- 去杂物。
- 背景移除。
- 线稿与草图转换。
- 线稿上色。
- 表情调整。
可以在配置中分别关闭不希望 AI 自动使用的能力。
Vibe 有两种使用方式:
always:每次生图都使用,适合固定画风。selectable:由 AI 根据名称和描述选择,适合按场景切换画风。
优先使用已经编码好的 .naiv4vibe 文件,可以避免重复调用编码接口。图片素材会在插件加载时编码。
精密参考图可以预先放入 director_reference.selectable。每项可以设置:
- 名称和用途描述。
character:主要参考人物。style:主要参考画风。character&style:同时参考人物与画风。- 参考强度和忠实度。
该能力仅面向 NovelAI V4.5 模型。V5 暂不支持 Director Reference。
插件可以在发送图片前剥离 NovelAI 写入的参数信息,本地保存的原图不会被改动。
相关配置:
generation.strip_metadata_commandgeneration.strip_metadata_action
开启后会清除 PNG 文本信息,并重写 Alpha 通道中可能携带的数据:
- 完全透明和完全不透明的像素保持不变。
- 半透明像素的透明度会量化为 16 级。
- 一般可以保留透明背景和半透明边缘,但极细微的透明度可能发生变化。
开启:
[webui]
enabled = true
route_path = "/plugins/image-generator"然后访问主程序对应地址即可。
WebUI 可以:
- 测试文生图。
- 串行生成 1~4 张图片,并支持显式 seed。
- 上传图片执行普通 Enhance 或 V5 Max Enhance。
- 调整模型、画幅、采样参数和提示词。
- 编辑 Vibe、精密参考和提示词预设。
- 保存后立即让聊天侧使用新配置。
WebUI 不要求额外密码,也不会把 NovelAI Token 返回给浏览器。
确认插件已启用,并且发送者具有管理员权限。
取决于本次选择的模型。V4.5 使用英文标签式提示词;V5 可用英文 Tag 建立主体,再以简体中文、繁体中文、日文或英文自然语言描述复杂动作、关系和画面文字。
HTTP 400 属于客户端参数错误,网关或官方会在请求校验不通过时直接拒绝。常见原因与排查方法:
-
noise_schedule校验失败:V5 最终只允许karras;旧模型按 sampler 能力矩阵校验。k_dpm_2_ancestral不发送该字段,V4/V4.5 的旧ddim会改写 sampler 后省略该字段。 -
steps步数越界:V5 模型步数必须在 128 之间;其他模型在 150 之间。如果传入大于 28 的步数给 V5,会被严格拒绝。 -
分辨率或面积越界:宽和高每边必须在 64~2048 之间,且必须按 64 对齐。V5 模型总像素不可超过
1,048,576(即$1024 \times 1024$ 面积)。 -
模型能力不匹配的开关:向 V5 模型发送了 Variety+(
variety_boost/skip_cfg_above_sigma)、Vibe 或角色参考图。使用 V5 时插件会自动过滤这些不支持的参数。 - 角色数量超限:V4/V4.5 最多 6 人,V5 最多 32 人,V3 不支持多角色。
-
未识别的模型名:第三方模型名未包含版本关键词(如 4.5/5)且未配置
model_aliases。
插件会把图片任务放入串行队列,并按配置的冷却时间依次处理。频繁重试仍可能受到 NovelAI 上游限流。
命令中只填写素材文件名,不要填写完整路径。插件只会读取 vibes/ 目录内的文件。
NovelAI 的背景移除属于 Director 工具,通常会消耗 Anlas,具体费用以上游实际返回为准。
确认 Gateway 版本支持对应的 OpenAI 图片扩展端点。普通文生图、图生图、局部重绘、Vibe 和 Director 工具使用不同接口。
- 标准画幅和常规步数对符合条件的 Opus 用户通常免费。
- 大图、高步数、人物参考、Vibe 编码、背景移除和图片放大可能消耗 Anlas。
- Gateway 的费用守卫和 NovelAI 最终扣费可能存在差异,批量或高费用操作前应自行确认。
修改配置后可以通过 WebUI 保存,或重载插件使配置重新生效。
若遇到问题,优先检查:
- Token 是否有效。
api.channel与api.base_url是否匹配。- Gateway 是否支持对应图片端点。
- Vibe 文件是否位于正确目录。
- 日志中 NovelAI 或 Gateway 返回的具体错误。