dsh-comfyui-rp 0.0.0-stage → 0.2.2
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/LICENSE +21 -0
- package/PROMPT_FORMAT_REFERENCE.md +79 -0
- package/README.md +71 -2
- package/THIRD_PARTY_NOTICES.md +50 -0
- package/cordis.patch.yml +5 -0
- package/docs/CHANGELOG.md +22 -0
- package/docs/images/frame.jpg +0 -0
- package/docs/images/fullscreen.png +0 -0
- package/docs/images/overview-workbench.png +0 -0
- package/docs/images/workflow-gallery.jpg +0 -0
- package/lib/api.js +1348 -0
- package/lib/client.js +9008 -0
- package/lib/comfy.js +1183 -0
- package/lib/config.js +177 -0
- package/lib/index.js +194 -0
- package/lib/jobs.js +1358 -0
- package/lib/lora.js +824 -0
- package/lib/meta.js +22 -0
- package/lib/rule.js +756 -0
- package/lib/session.js +562 -0
- package/lib/sse.js +79 -0
- package/lib/store.js +1198 -0
- package/lib/util.js +225 -0
- package/package.json +74 -4
- package/screenshots.json +8 -0
- package/tools/install.mjs +164 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 ComfyRP Bridge contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# 提示词输出格式要求 2.1(独立版)
|
|
2
|
+
|
|
3
|
+
> 本文件只规定交付形态。角色、槽位、tag 词序、NL 写法、校验等创作内容不在本文件范围内。
|
|
4
|
+
> 本文件之外没有任何格式条款。下列条款之外的要求一律不成立。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 一、申明
|
|
9
|
+
|
|
10
|
+
**一条交付消息 = 若干组「标题行 + `anchor:` 行 + `size:` 行 + 一个 ```text 块」,除此之外什么都没有。**
|
|
11
|
+
|
|
12
|
+
- 这是唯一合法形态。没有变体,不设例外。
|
|
13
|
+
- 判据是**有没有标题行**:有标题行的消息按交付解析;没有标题行的消息整条被忽略,且不算错误。
|
|
14
|
+
- 因此:提问、闲聊、机制讨论、排查讨论 → **不带**标题行、**不带** `text` 块。
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 二、格式描述
|
|
19
|
+
|
|
20
|
+
1. **组数**:每次交付 2–3 组(硬上限 3 组 = 3 张图)。组与组之间空一行。组的顺序 = 序号顺序。
|
|
21
|
+
2. **组内顺序固定**:`标题行` → `anchor:` 行 → `size:` 行 →(可选 `tok:` / `seed:` 行)→ 开围栏 ```text。**元数据行之间不空行**;最后一个元数据行的**下一行必须正好是**围栏。
|
|
22
|
+
3. **标题行** = 圈码 `①`–`⑳` + 4–12 个汉字幕名。幕名内**不许有空格**,可用 `·` 分段。
|
|
23
|
+
4. **`anchor:` 行**:
|
|
24
|
+
- **形态**:行首 `anchor:`(半角冒号,不留空格)+ 紧接着一段连续正文,**8–60 个字**(含标点计数)。
|
|
25
|
+
- **原样复制**:标点、引号、破折号、感叹号、省略号一律照抄;**不许改字、不许补字、不许调序**。**禁止**用 `……`、`…`、`(略)` 表示删节——**摘句必须是正文里连续存在的一段**,中间不能断。
|
|
26
|
+
- **不许用标题、幕名或概括句代替正文。**
|
|
27
|
+
- **同一轮内不重复**:各组摘不同段落,位置互不重叠;重复摘同一句视为格式错误。
|
|
28
|
+
- **必须是这一场的最后一句**:锚点不是任选句,而是本组所覆盖那一场的**收笔句**——即画面停住的那个动作说完之后、正文转入下一段之前的最后一句。选哪句由“这一场到哪结束”决定,不由“哪句好看”决定。
|
|
29
|
+
- **一场的边界怎么判**:动作/体位/场景发生替换的那一句,是上一场的最后一句。三组各自对应三场,锚点随组号在正文里单调向后推进。
|
|
30
|
+
- **优先从本轮要配图的正文里摘**;本轮正文确实无可摘句时,才退回上一轮正文,并且该句仍须原样。
|
|
31
|
+
- **该行只存在于提示词块内**:正文本身不改、不加标记、不加批注。摘句是“引用”,不是“编辑”。
|
|
32
|
+
5. **`size:` 行** = `size: 宽x高`。连接符是**半角小写 x**(不是 `×`,不是全角,中间不加空格)。默认 `size: 1216x832`;要竖幅就写 `size: 832x1216`。分辨率只在 `size:` 行出现一次,别处不再解释。
|
|
33
|
+
6. **块内两段,顺序不变**:
|
|
34
|
+
- 第一段 **tag 行**:**压成一行**,`", "` 分隔,全小写,**词内一律用空格**(`white socks`,不是 `white_socks`),行末**不加** `.`;
|
|
35
|
+
- **空一行**;
|
|
36
|
+
- 第二段 **NL**:3–6 句,**纯英文 ASCII**,每句以 `.` 收尾。
|
|
37
|
+
7. **块外无字**:闭围栏之后**只能**跟「空行 + 下一个标题行」或「消息结束」。不许有元数据行,不许有说明句。
|
|
38
|
+
8. **交付消息里禁止**:加粗、markdown 标题、表格、开场白、结束语、解释、emoji、非 `text` 语言的代码块(`json` / `yaml` / 空围栏都不行)。
|
|
39
|
+
9. **不放进交付**:负词(不走交付)、比例与分辨率的文字说明(`size:` 行已代表它)、机制解释、排查过程、任何寒暄。
|
|
40
|
+
10. **负面字段默认留空**:**没有明确要求时不写负面。** 行内形态下不出现任何 `负面:` 行;XML 形态下不出现 `<负面>` 节点,或出现但内容为空。**禁止**用「留空」的负面行占位、禁止自造默认负词表。只有明确点名要负面时,才补该字段,且只写被点名的那几条。
|
|
41
|
+
11. **XML 等价形态(可选,不并写)**:若交付走 XML 标签包装,`anchor` 字段写作 `<anchor>…</anchor>`,与 `<标题>` / `<正面>` 并列,内容规则与行内形态完全相同(8–60 字、原样、不重复)。**同一组不得同时给行内行与 XML 标签。**
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 三、摘句判据(怎么挑这一句)
|
|
46
|
+
|
|
47
|
+
- **位置优先于内容**:先定这一场在哪结束,再取那句。**不是从场景里挑最好的一句,是取场景的收尾句。**
|
|
48
|
+
- **允许是纯动作句、纯场景句**:收笔句常常很短很平(`他慢慢沉下腰。`/`她开始动了。`),这正是它的作用——它划界,不负责好看。
|
|
49
|
+
- **心理句可以当锚**:只要它确实落在场末、且 8 字以上。但同一段里若有并行的动作收笔句与心理收笔句,取**位置最后**的那句。
|
|
50
|
+
- **长度落在 12–40 字最舒服**:8 字容易撞车(正文反复出现),60 字占版面且不再好搜。
|
|
51
|
+
- **搜得到为准**:摘句的唯一用途是拿来在正文里搜,所以宁取带专有细节的一句(人名、物件、颜色),不取全是虚词的一句。
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 四、示例
|
|
56
|
+
|
|
57
|
+
**这就是一次合法交付(两组):**
|
|
58
|
+
|
|
59
|
+
````text
|
|
60
|
+
①窗边读书·午后
|
|
61
|
+
anchor: 她把书翻到夹着书签的那一页,窗外的光落在纸面上。
|
|
62
|
+
size: 1216x832
|
|
63
|
+
```text
|
|
64
|
+
1girl, solo, short hair, black hair, brown eyes, white shirt, collared shirt, long sleeves, pleated skirt, navy skirt, white socks, loafers, sitting, reading book, holding book, indoors, window, sunlight, cowboy shot, from side, depth of field, blurry background
|
|
65
|
+
|
|
66
|
+
(此处填 3–6 句纯英文 NL,每句以 . 收尾)
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
②起身·合书望过来
|
|
70
|
+
anchor: 她合上书,抬起头来,正好对上门口的人。
|
|
71
|
+
size: 832x1216
|
|
72
|
+
```text
|
|
73
|
+
1girl, solo, short hair, black hair, brown eyes, white shirt, collared shirt, long sleeves, pleated skirt, navy skirt, white socks, loafers, standing, holding book, closed book, looking at viewer, indoors, window, sunlight, cowboy shot, straight-on, depth of field, blurry foreground
|
|
74
|
+
|
|
75
|
+
(此处填 3–6 句纯英文 NL,每句以 . 收尾)
|
|
76
|
+
```
|
|
77
|
+
````
|
|
78
|
+
|
|
79
|
+
**对照着看**:标题行与 `anchor:` 行紧挨着,不空行;`anchor:` 行与 `size:` 行也紧挨着;`size:` 行的下一行正好是围栏;两组之间空一行;闭围栏之后什么都没有。
|
package/README.md
CHANGED
|
@@ -1,3 +1,72 @@
|
|
|
1
|
-
#
|
|
1
|
+
# ComfyRP Bridge
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**装在 DSH 里的本地文生图自动化桥。**
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
DSH 会话 → ComfyRP Bridge → 提示词会话 → 本地 ComfyUI → 图片回 DSH
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
自动把会话正文送去写成提示词,再调本机 ComfyUI 出图,最后把图片送回右侧栏、悬浮球和图库。聊天、出图、看图在同一个界面里完成。
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
## 安装
|
|
14
|
+
|
|
15
|
+
需要本地 ComfyUI,DSH 0.2.x。
|
|
16
|
+
|
|
17
|
+
```powershell
|
|
18
|
+
dsh plugin --profile web add dsh-comfyui-rp
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
装完重启 DSH。插件市场里也能装;还没发 npm 时用仓库地址:
|
|
22
|
+
|
|
23
|
+
```powershell
|
|
24
|
+
dsh plugin --profile web add git+https://github.com/bmhty123/dsh-comfyui-rp.git
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
改代码用本地目录装法:`node tools/install.mjs --apply`(卸载加 `--uninstall`)。
|
|
28
|
+
|
|
29
|
+
装好打开右侧栏,在「开始」里点 **ComfyRP**。
|
|
30
|
+
|
|
31
|
+
## 第一次使用
|
|
32
|
+
|
|
33
|
+
1. **设置 → ComfyUI**:填地址(默认 `http://127.0.0.1:8188`),点「测试连接」。
|
|
34
|
+
2. **工作流**:导入 ComfyUI 的 API JSON →「解析预览」→ 确认正面 / 负面 / 分辨率 / 输出节点 → 保存 → 启用。
|
|
35
|
+
3. **设置 → 正文来源 / 提示词来源**:默认跟随当前会话,也可以指定别的会话。
|
|
36
|
+
4. **概览**:打开「自动投递正文」,需要自动出图再打开「自动出图」。
|
|
37
|
+
5. 先手动试一次:填正文或附加消息,点「投递最新正文」。
|
|
38
|
+
|
|
39
|
+

|
|
40
|
+
|
|
41
|
+
## 能做什么
|
|
42
|
+
|
|
43
|
+
- **自动出图**:捕获正文 → 解析提示词 → 出图 → 归档,全自动;投递和出图可分开开关。
|
|
44
|
+
- **投递**:正文来源和提示词来源分开,可指到另一个会话甚至另一台 DSH;附加消息放正文最上面或最下面,投递成功后自动留空。
|
|
45
|
+
- **看图**:右侧栏面板、全屏、悬浮球、悬浮图片框。翻页、下载、收藏、刷新、删除、圆角;自己拖过 / 缩过之后,切图不再改回初始大小。
|
|
46
|
+
- **跟图**:滚动正文自动切图,连续图按段落比例拆位置,可切光标跟图、手动偏移、清空定位。
|
|
47
|
+
- **工作台**:三种提示词格式(内置 / 全部匹配 / 自定义标签)、多套正负面、标题、原文锚点、分辨率、连续图、LoRA、随机种子、干跑。
|
|
48
|
+
- **图库**:当前会话 / 全部 / 收藏夹 / 回收站,收藏是复制副本,删错了能还原。
|
|
49
|
+
- **工作流与 LoRA**:导入 ComfyUI API JSON,自动识别正面 / 负面 / 分辨率 / 输出节点,支持占位符和节点映射;LoRA 支持堆 / 单 / Power / Stacker / Tag,可改名、调强度、存回工作流。
|
|
50
|
+
|
|
51
|
+

|
|
52
|
+
|
|
53
|
+
## 常用操作
|
|
54
|
+
|
|
55
|
+
- **让下一轮自动出图**:概览打开「自动投递正文」+「自动出图」,保持右侧栏或悬浮球开着。
|
|
56
|
+
- **临时手动出一张**:悬浮球 → 铅笔菜单 →「请求生成」,读来源会话的最新正文。
|
|
57
|
+
- **只重做一张**:图片框 → 重新生成 →「仅此图」;整套重来选「全部」。
|
|
58
|
+
- **找图**:图库 → 当前会话 / 全部 / 收藏夹 / 回收站。
|
|
59
|
+
- **会话没更新**:概览右上「检测」,或设置里会话旁的「刷新」。
|
|
60
|
+
- **清理跟图定位**:图片框 → 更多 →「清空定位」,只清当前会话,之后按比例重新分配。
|
|
61
|
+
|
|
62
|
+
## 说明
|
|
63
|
+
|
|
64
|
+
- 图片按**当前聊天**归档;换正文来源不改变图片归属。
|
|
65
|
+
- 数据存在 DSH 数据目录下,设置里能看到和修改。
|
|
66
|
+
- 悬浮球和图片框限制在 DSH 窗口内;右侧栏默认收起,从会话标题栏展开。
|
|
67
|
+
- 远程会话要求两台 DSH 都装本插件。
|
|
68
|
+
- 提示词质量取决于你选的提示词会话,推荐搭配 [anima-tagger](https://github.com/Vincent54122/anima-tagger)(本插件不包含、不修改它)。
|
|
69
|
+
|
|
70
|
+
## 许可
|
|
71
|
+
|
|
72
|
+
**MIT License**,见 [LICENSE](LICENSE)。ComfyUI 节点识别思路参考了 [dsh-tavern-image](https://github.com/weixinlll/dsh-tavern-image),完整声明见 [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)。
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# 第三方声明
|
|
2
|
+
|
|
3
|
+
本插件的 ComfyUI 工作流节点识别部分在实现思路上参考了 **dsh-tavern-image**,主要包括:
|
|
4
|
+
|
|
5
|
+
- 从采样器的 `positive` / `negative` 连线反向查找真正写提示词的文本节点;
|
|
6
|
+
- 识别上游 `Text (Multiline)` / `String` 一类非 `CLIPTextEncode` 文本节点;
|
|
7
|
+
- 遇到 `ConditioningZeroOut` 时停止向上回溯,避免把清空后的负面误认成负面词;
|
|
8
|
+
- 从工作流 API JSON 中识别尺寸、单 LoRA 等可调参数。
|
|
9
|
+
|
|
10
|
+
本插件未复制该项目的界面、素材或世界书内容;节点识别相关实现按其 MIT 许可证保留以下声明。
|
|
11
|
+
|
|
12
|
+
- 项目:dsh-tavern-image
|
|
13
|
+
- 仓库:https://github.com/weixinlll/dsh-tavern-image
|
|
14
|
+
- 许可证:MIT
|
|
15
|
+
|
|
16
|
+
```text
|
|
17
|
+
MIT License
|
|
18
|
+
|
|
19
|
+
Copyright (c) 2026 dsh-tavern-image contributors
|
|
20
|
+
|
|
21
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
22
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
23
|
+
in the Software without restriction, including without limitation the rights
|
|
24
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
25
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
26
|
+
furnished to do so, subject to the following conditions:
|
|
27
|
+
|
|
28
|
+
The above copyright notice and this permission notice shall be included in all
|
|
29
|
+
copies or substantial portions of the Software.
|
|
30
|
+
|
|
31
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
32
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
33
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
34
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
35
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
36
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
37
|
+
SOFTWARE.
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## 推荐搭配(非捆绑)
|
|
41
|
+
|
|
42
|
+
本插件不包含、不修改、不调用 **anima-tagger**,仅在文档中推荐把它作为提示词来源会话:
|
|
43
|
+
|
|
44
|
+
- 项目:anima-tagger
|
|
45
|
+
- 作者:Vincent54122
|
|
46
|
+
- 仓库:https://github.com/Vincent54122/anima-tagger
|
|
47
|
+
- 许可证:MIT
|
|
48
|
+
|
|
49
|
+
如果你把 anima-tagger 与本插件一起分发,请同时保留它自己的 LICENSE 与 THIRD_PARTY_NOTICES。
|
|
50
|
+
|
package/cordis.patch.yml
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# 更新记录
|
|
2
|
+
|
|
3
|
+
## 0.2.2
|
|
4
|
+
|
|
5
|
+
- **LoRA 强度可以填负数**:工作台「连续图」的档位、LoRA 页每条的强度都允许 `-5 ~ 5`(反相 LoRA 用)。
|
|
6
|
+
- 这两个输入框在输入过程中不再被强制夹取:打「-」「-.5」这种中间态会先留在文本框里,**失焦或按回车**才夹到范围内并写回。
|
|
7
|
+
- 工作台的分辨率宽高也是同样规则(这条从 0.2.1 起就是)。
|
|
8
|
+
- 连续图说明里补了一句「强度可以填负数(反相),范围 -5 ~ 5」。
|
|
9
|
+
|
|
10
|
+
## 0.2.1 — 首个公开发布
|
|
11
|
+
|
|
12
|
+
第一个放到 npm / 插件市场里的版本,功能面就是 README 里描述的这一整套:
|
|
13
|
+
|
|
14
|
+
- **自动出图**:捕获会话正文 → 投递到提示词会话 → 按规则切分 → 调本地 ComfyUI 出图 → 归档回 DSH。「自动投递正文」「自动出图」可分别开关,悬浮球 **A** 是总开关。
|
|
15
|
+
- **投递与来源**:正文来源与提示词来源分开设置,默认跟随当前会话,也可指向本进程或另一台 DSH 的会话;概览里的正文框默认留空,手写内容只在点「投递最新正文」时优先使用;附加消息可放正文最上面或最下面,投递成功后自动留空。
|
|
16
|
+
- **看图**:右侧栏面板、全屏看图、悬浮球、悬浮图片框。翻页、页码、下载、收藏、刷新、删除、圆角切换;删除当前图优先停到下一张;全屏与悬浮框的切图状态同步,切标签再回来位置不变。
|
|
17
|
+
- **跟图**:滚动正文自动切图、连续图按段落比例拆位置、光标跟图、手动偏移、清空定位。
|
|
18
|
+
- **工作台**:内置格式 / 全部匹配 / 自定义标签三种提示词方式;多套正负面、标题、原文锚点、分辨率;连续图、LoRA、随机种子、输出节点裁剪。
|
|
19
|
+
- **图库**:当前会话 / 全部 / 收藏夹 / 回收站,每页 9 张三列,收藏是复制副本。
|
|
20
|
+
- **工作流与 LoRA**:导入 ComfyUI API JSON、占位符与节点映射、解析预览、干跑;LoRA 堆 / 单 LoRA / Power / Stacker / Tag,可改名、调强度、保存到工作流。
|
|
21
|
+
- **界面**:日间 / 夜间、窄栏布局、轻提示、出图完成提示。
|
|
22
|
+
- **安装**:`dsh plugin --profile web add dsh-comfyui-rp`;本地目录开发用 `node tools/install.mjs --apply`。需要本地 ComfyUI,适用于 DSH 0.2.x。
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|