koishi-plugin-p-draw 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +3287 -0
- package/package.json +29 -0
- package/readme.md +104 -0
package/package.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "koishi-plugin-p-draw",
|
|
3
|
+
"description": "p点-绘图,连接本地 ComfyUI 生图。支持自然语言优化、尺寸选择、画师组、固定角色、生成队列,需要配合 p-qiandao 使用",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"files": [
|
|
7
|
+
"index.js",
|
|
8
|
+
"readme.md"
|
|
9
|
+
],
|
|
10
|
+
"contributors": [
|
|
11
|
+
"YayiMiko <2556123498@qq.com>"
|
|
12
|
+
],
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"keywords": [
|
|
15
|
+
"chatbot",
|
|
16
|
+
"koishi",
|
|
17
|
+
"plugin"
|
|
18
|
+
],
|
|
19
|
+
"peerDependencies": {
|
|
20
|
+
"koishi": "^4.17.10"
|
|
21
|
+
},
|
|
22
|
+
"koishi": {
|
|
23
|
+
"service": {
|
|
24
|
+
"required": [
|
|
25
|
+
"database"
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
package/readme.md
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# koishi-plugin-p-draw
|
|
2
|
+
|
|
3
|
+
p点-绘图插件,连接本地 ComfyUI 生图,参考 AstrBot 的 [anima 绘图大师](https://github.com/YayiMiko/anima-master) 移植。需要配合 [p-qiandao](https://github.com/gfjdh/koishi-plugin-p-qiandao) 食用。
|
|
4
|
+
|
|
5
|
+
## 功能
|
|
6
|
+
|
|
7
|
+
- `p-draw <描述>`(别名:画图 / 生图 / 绘图 / 画画)文生图。
|
|
8
|
+
- `p-draw 多人 <描述>` 多人生图(2-4 人画面):LLM 结构化规划人物分组、互动关系与统一场景,未指定尺寸时按人数/肢体接触自动选横图,生成后可选视觉校验。
|
|
9
|
+
- `p-draw 连续 <角色>:<阶段1> → <阶段2> → ...` 连续图/过程图(同一角色的变化过程):全阶段共用同一 seed,角色外观尽量一致,默认横图,支持 `|` 分隔与 `--seed` 覆盖。**仅保留 `连续` 一个别名**(不是恶堕专属,任何变化过程都可用)。
|
|
10
|
+
- 批量张数:描述后加 `x3` / `×3` / `3张` / `三张` / `--数量 3` 可一次生成多张(上限 `batchMax`,默认 4),按张数 × 单价扣 P 点。
|
|
11
|
+
- 自然语言自动优化为 Danbooru tags(可选,需配置 LLM 接口)。
|
|
12
|
+
- 联网搜索:描述中带 `联网`/`搜索`/`查一下` 等词时自动补充角色设定(需 Tavily Key)。
|
|
13
|
+
- 原样 tags 模式(`无优化` 前缀)。
|
|
14
|
+
- 尺寸选择:`竖图` `横图` `方图` `长竖图` `宽屏`,或 `1024x1536:描述` / `--尺寸 1216x832`。
|
|
15
|
+
- 画师组管理(创建 / 追加 / 切换 / 查看 / 删除)。
|
|
16
|
+
- 固定角色(`添加角色 名称=tags`)。
|
|
17
|
+
- **以图生图**:`p-draw i2i <描述>` 并在同一条消息附一张原图(文件 / 截图 / 链接均可),保留原图构图与主体,按描述调整风格与细节。使用 ComfyUI 内置 `LoadImage → VAEEncode → KSampler(denoise<1)` 标准节点,**无需修改 ComfyUI**;去噪强度由 `img2imgDenoise` 控制(默认 0.55,越小越接近原图)。不支持自定义工作流(`customWorkflowEnabled`)时使用 i2i 会提示关闭。
|
|
18
|
+
- **用户自选模型**:`p-draw 模型` 查看当前与可用模型(自动读取 ComfyUI 的 UNET 列表),`p-draw 模型 <名称>` 切换(支持模糊匹配,如 `anima-aesthetic`),`p-draw 模型 默认` 恢复默认。偏好按用户保存(`p_draw_config.user_models`),单人 / 多人 / 连续图都生效;未自选时用 `unetName` 默认模型。自定义工作流(`customWorkflowEnabled`)不参与模型切换。
|
|
19
|
+
- 画师组与固定角色**保存在数据库 `p_draw_config` 表中**,管理指令不触发插件重载(不会打断正在生成的图,也不会把配置恢复成默认)。数据库中的值在重启后覆盖配置里的同名项。
|
|
20
|
+
- 自定义 ComfyUI 工作流 JSON。
|
|
21
|
+
- 生成队列(逐张顺序执行,防止争抢 GPU)。
|
|
22
|
+
- `p-draw 状态` 查看 ComfyUI 连接状态与模型可用性。
|
|
23
|
+
- `p-draw help`(或 `帮助`)查看全部指令帮助,包含生成 / 多人 / 批量张数 / 尺寸 / 画师组 / 状态等。
|
|
24
|
+
- 发图时会引用你触发指令的原消息。
|
|
25
|
+
|
|
26
|
+
## 安装
|
|
27
|
+
|
|
28
|
+
把 `koishi-plugin-p-draw/` 目录放到 Koishi 的 `plugins/` 下,在 `koishi.yml` 中启用:
|
|
29
|
+
|
|
30
|
+
```yaml
|
|
31
|
+
plugins:
|
|
32
|
+
p-draw:
|
|
33
|
+
comfyuiBaseUrl: http://127.0.0.1:8188
|
|
34
|
+
unetName: anima_baseV10.safetensors
|
|
35
|
+
clipName: qwen_3_06b_base.safetensors
|
|
36
|
+
vaeName: qwen_image_vae.safetensors
|
|
37
|
+
price: 500
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
或者在 Koishi 控制台「插件市场」中本地安装并填写配置。
|
|
41
|
+
|
|
42
|
+
## 使用
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
画图 一个女孩,白色裙子,立绘,简单背景
|
|
46
|
+
画图 一个女孩 x3
|
|
47
|
+
画图 三张:少女站在河岸
|
|
48
|
+
画图 无优化 masterpiece, best quality, 1girl, solo, white dress, simple background
|
|
49
|
+
画图 竖图:狐莉站在梨花树下
|
|
50
|
+
画图 1024x1536:少女站在河岸
|
|
51
|
+
画图 创建画师组 千代风格=@artist_a, @artist_b,
|
|
52
|
+
画图 切换画师组 千代风格
|
|
53
|
+
画图 添加角色 狐莉=1girl, solo, fox girl
|
|
54
|
+
画图 i2i 换成晚礼服,背景换成舞台灯光(同一条消息附原图)
|
|
55
|
+
画图 多人 左边若叶睦抱着吉他,右边千早爱音牵着她的手
|
|
56
|
+
画图 多人 若叶睦与千早爱音十指相扣 x2
|
|
57
|
+
画图 连续 圣女:白色长发红瞳、圣洁白裙、端庄微笑 → 发梢染黑、眼神迷离、白裙开裂 → 黑发红瞳、妖艳邪笑、黑色破损礼服
|
|
58
|
+
画图 连续 狐莉:站姿|坐姿|躺姿 --seed 42
|
|
59
|
+
画图 状态
|
|
60
|
+
画图 help
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## 配置说明
|
|
64
|
+
|
|
65
|
+
| 项 | 说明 |
|
|
66
|
+
|----|------|
|
|
67
|
+
| `comfyuiBaseUrl` | ComfyUI API 地址(默认 `http://127.0.0.1:8188`) |
|
|
68
|
+
| `unetName` / `clipName` / `vaeName` | 模型文件名,需与 ComfyUI 下拉框中的文件名一致 |
|
|
69
|
+
| `customWorkflowEnabled` / `customWorkflowPath` | 使用自定义工作流 JSON(相对插件目录) |
|
|
70
|
+
| `width` / `height` / `allowedSizes` | 默认尺寸与可用尺寸列表 |
|
|
71
|
+
| `steps` / `cfg` / `samplerName` / `scheduler` | 采样参数 |
|
|
72
|
+
| `qualityPrefix` / `negativePrompt` | 质量词前缀与负面提示词 |
|
|
73
|
+
| `promptOptimizeEnabled` / `llmBaseUrl` / `llmApiKey` / `llmModel` | 自然语言优化(OpenAI 兼容接口) |
|
|
74
|
+
| `promptOptimizeTemplate` | 自然语言优化模板(支持 `{theme}` `{search_block}` `{character_rule}` `{img2img_rule}` 占位符) |
|
|
75
|
+
| `webSearchEnabled` / `tavilyApiKey` / `webSearchMaxResults` / `webSearchDepth` / `webSearchQueryTemplate` | 联网搜索(指令带 `联网`/`搜索` 触发,需 Tavily Key) |
|
|
76
|
+
| `fixedCharacters` / `artistPresets` / `activeArtistPreset` / `styleTags` | 角色、画师组与画风 |
|
|
77
|
+
| `queueEnabled` / `queueMaxRequests` | 生成队列 |
|
|
78
|
+
| `img2imgDenoise` | 以图生图(`p-draw i2i`)去噪强度,默认 0.55(建议 0.4-0.7,越小越接近原图) |
|
|
79
|
+
| `couponPrice` / `couponAskTimeout` | 提示词优化券单价(P 点/张,默认 3000,可被 `data/p-shop.json` 覆盖)与交互确认等待时间(秒,默认 60) |
|
|
80
|
+
| `batchMax` | 单次指令最多生成的张数(`x3` / `3张` / `--数量 3` 等写法),默认 4 |
|
|
81
|
+
| `price` / `multiPrice` / `adminUsers` | 单张 / 多人单张消耗的 P 点与免单管理员 |
|
|
82
|
+
| `multiVerifyEnabled` / `multiVerifyPassScore` / `multiCandidateCount` / `multiSendDegradedCandidate` | 多人视觉校验:合格分数、候选采样数、失败时是否降级发送 |
|
|
83
|
+
| `verifyLlmBaseUrl` / `verifyLlmApiKey` / `verifyLlmModel` | 多人视觉校验用视觉模型(OpenAI 兼容,需支持图片输入;留空则跳过校验) |
|
|
84
|
+
| `adminOnly` | 仅管理员可用(`adminUsers` 中的用户) |
|
|
85
|
+
| `allowedUserIds` / `blockedUserIds` | 用户白名单 / 黑名单(QQ 号,黑名单优先) |
|
|
86
|
+
| `allowedGroupIds` / `blockedGroupIds` | QQ 群白名单 / 黑名单(群号,黑名单优先) |
|
|
87
|
+
| `outputLogs` | 是否输出详细日志 |
|
|
88
|
+
|
|
89
|
+
## 注意
|
|
90
|
+
|
|
91
|
+
- `p-draw` 指令消耗 `price` P 点,`p-draw 多人` 消耗 `multiPrice` P 点,需要先通过 `p-qiandao` 签到。
|
|
92
|
+
- 批量张数按「张数 × 单价」**一次性扣足总价**,余额不足则整单不生成;单张失败只退该张。
|
|
93
|
+
- 生成失败会自动退回 P 点。
|
|
94
|
+
- 固定种子 `--seed 数字`(支持 `--seed:` `--seed=` `--seed=` 形式)在**单张 / 批量 / 连续图**里都可用,且会从提示词中自动剥离,不会混进 tags。
|
|
95
|
+
- 多人指令的视觉校验需要单独配置视觉模型(`verifyLlm*`),未配置时会跳过校验直接发送。
|
|
96
|
+
- 连续图用「同一角色 + 全阶段共用 seed」保证一致性。固定角色的身份 tags(角色名 / 种族 / 尖耳朵等)会**始终注入每一阶段**,保证图跟角色相关;阶段描述里明确改变的外观(发色/瞳色/种族变化等)会自动从固定 tags 中剔除,避免"固定银发把黑化阶段拉回去"。
|
|
97
|
+
- **连续图只要配置了 LLM(`llmBaseUrl`/`llmModel`)就会强制逐阶段把中文描述转成 Danbooru tags**,不受 `promptOptimizeEnabled` 开关影响——anima 是 tag 模型,中文不翻译就体现不到画面里;未配置 LLM 时退回原始描述并提示。阶段描述尽量写**能看见的变化**(发色渐变、眼神、服装破损、光环变黑、表情),心理/抽象描述("感到厌恶""沉迷")模型很难画出来。
|
|
98
|
+
- **提示词优化券**:当全局 `promptOptimizeEnabled` 关闭时,普通用户生图会**交互式询问**是否使用券(记录在 `p_system.llmToken`):
|
|
99
|
+
- 有券 → 询问是否使用;确认后消耗券并 LLM 优化,**拒绝则取消本次生图**(不扣 P);
|
|
100
|
+
- 没券/券不足 → 询问是否购买并显示价格(默认 `couponPrice` 3000 P/张,也可自动读取 `data/p-shop.json` 里覆盖的价格);确认后扣 P 购买并消耗、优化生图;**拒绝一次会再次警告**(提示不用券图可能不好看)并再问一次,**再次拒绝则直接生图**(不优化)。**P 点不足买不起券时,会询问是否仍然生图**(回复「否」则取消本次生图)。
|
|
101
|
+
- 券为一次性、**按张数消耗**:`x3` 需 3 张,每张图独立做一次 LLM 优化;券不足时该批不优化也不扣券(提示 `token-short`)。等待回复时间由 `couponAskTimeout`(秒)控制。
|
|
102
|
+
- **管理员在全局关闭时自动免费优化**(不耗券);`无优化` 原样模式不消耗、不询问。平台不支持交互确认时退回自动消耗逻辑。
|
|
103
|
+
- **未使用优化的提示**:单人生图没走 LLM 优化时会明确提示原因——未配置 LLM、未消耗优化券、或 `无优化` 原样模式;多人指令强依赖 LLM 规划,未配置 `llmBaseUrl`/`llmModel` 时会直接提示「多人指令需要 LLM 规划」。
|
|
104
|
+
- 本地模型不一定认识新角色,可用 `添加角色` 手动补充角色 tags。
|