ComfyUI Prompt Control 插件完全教程
1. 插件简介
插件地址: https://github.com/asagi4/comfyui-prompt-control
ComfyUI Prompt Control 是一个超级强大的插件,就像给你的 ComfyUI 装上了一个智能大脑!它能让你通过文字提示词来控制各种复杂的功能,而不需要手动连接一大堆节点(就像不用再手工编织复杂的毛线球一样)。
这个插件能给我们带来什么效果?
- 智能提示词调度:就像给提示词设置了一个时间表,可以在生成图片的不同阶段使用不同的提示词
- LoRA 模型智能加载:像一个聪明的管家,会在合适的时候自动加载和卸载不同的 LoRA 模型
- 区域提示词控制:就像用画笔在画布的不同区域涂上不同颜色一样,可以让提示词只影响图片的特定区域
- 高级文本编码:比原版的文本编码器更聪明,支持更多花式操作
- 提示词宏定义:就像 Word 里的快捷短语,可以定义常用的提示词组合
2. 如何安装
方法一:通过 ComfyUI Manager 安装(推荐)
- 打开 ComfyUI Manager
- 搜索 "prompt control"
- 点击安装
方法二:手动安装
- 进入你的 ComfyUI 安装目录下的
custom_nodes文件夹 - 打开命令行,运行:
git clone https://github.com/asagi4/comfyui-prompt-control.git - 安装依赖包:
pip install lark - 重启 ComfyUI
3. 节点详细解析
3.1 PCTextEncode 节点 - 基础文本编码器
这个节点就像一个升级版的翻译官,能把你的文字提示词翻译成 AI 能理解的语言,而且比原版的翻译官更聪明。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| clip | clip | CLIP模型 | 必填 | 就像给翻译官配备的词典,用来理解文字的含义 | CLIP文本编码器模型 | 连接你的CLIP模型输出 |
| text | text | 字符串 | 必填 | 你想要AI画什么的描述文字 | 多行文本输入,支持高级语法 | 输入"a beautiful cat, detailed fur" |
3.2 PCTextEncodeWithRange 节点 - 带时间范围的文本编码器
这个节点就像一个定时器版的翻译官,可以指定这段文字在什么时候起作用。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| clip | clip | CLIP模型 | 必填 | 就像给翻译官配备的词典,用来理解文字的含义 | CLIP文本编码器模型 | 连接你的CLIP模型输出 |
| text | text | 字符串 | 必填 | 你想要AI画什么的描述文字 | 多行文本输入,支持高级语法 | 输入"a beautiful cat, detailed fur" |
| start | start | 0.0-1.0 | 0.0 | 这段提示词从什么时候开始生效,就像闹钟的开始时间 | 生成过程中的开始百分比 | 0.0表示从一开始就生效 |
| end | end | 0.0-1.0 | 1.0 | 这段提示词到什么时候结束,就像闹钟的结束时间 | 生成过程中的结束百分比 | 1.0表示一直生效到最后 |
3.3 PCLazyTextEncode 节点 - 智能提示词调度器
这个节点就像一个超级智能的时间管理大师,能自动安排不同的提示词在不同时间段发挥作用。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| clip | clip | CLIP模型 | 必填 | 就像给时间管理大师配备的词典 | CLIP文本编码器模型 | 连接你的CLIP模型输出 |
| text | text | 字符串 | 必填 | 包含时间调度语法的提示词 | 支持调度语法的多行文本 | "[cat:dog:0.5]" 表示前半段画猫,后半段画狗 |
3.4 PCLazyTextEncodeAdvanced 节点 - 高级智能提示词调度器
这个节点是上面那个时间管理大师的升级版,有更多精细控制选项。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| clip | clip | CLIP模型 | 必填 | 就像给时间管理大师配备的词典 | CLIP文本编码器模型 | 连接你的CLIP模型输出 |
| text | text | 字符串 | 必填 | 包含时间调度语法的提示词 | 支持调度语法的多行文本 | "[cat:dog:0.5]" 表示前半段画猫,后半段画狗 |
| tags | tags | 字符串 | "" | 就像给提示词贴标签,只处理有这个标签的部分 | 过滤标签,只处理匹配的提示词部分 | 输入"animals"只处理动物相关的提示词 |
| start | start | 0.0-1.0 | 0.0 | 从整个生成过程的什么时候开始工作 | 处理范围的开始百分比 | 0.2表示从20%的时候开始 |
| end | end | 0.0-1.0 | 1.0 | 到整个生成过程的什么时候结束工作 | 处理范围的结束百分比 | 0.8表示到80%的时候结束 |
| num_steps | num_steps | 整数 | 0 | 把生成过程分成多少个小段来精确控制 | 调度步数,0表示自动计算 | 20表示分成20个小段 |
3.5 PCLazyLoraLoader 节点 - 智能LoRA加载器
这个节点就像一个聪明的服装管理员,会在合适的时候给AI模型换上不同的"衣服"(LoRA模型)。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL | 可选 | 要给哪个AI模型换衣服 | 基础扩散模型 | 连接你的主模型 |
| clip | clip | CLIP | 可选 | 要给哪个文字理解器换衣服 | CLIP文本编码器 | 连接你的CLIP模型 |
| text | text | 字符串 | "" | 包含LoRA调度指令的文字 | 包含LoRA语法的文本 | "<lora:style1:1.0:0.5>" 表示在50%时加载style1 |
3.6 PCLazyLoraLoaderAdvanced 节点 - 高级智能LoRA加载器
这个节点是上面那个服装管理员的升级版,有更多精细控制和输出选项。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL | 可选 | 要给哪个AI模型换衣服 | 基础扩散模型 | 连接你的主模型 |
| clip | clip | CLIP | 可选 | 要给哪个文字理解器换衣服 | CLIP文本编码器 | 连接你的CLIP模型 |
| text | text | 字符串 | "" | 包含LoRA调度指令的文字 | 包含LoRA语法的文本 | "<lora:style1:1.0:0.5>" 表示在50%时加载style1 |
| apply_hooks | apply_hooks | 布尔值 | True | 是否自动应用LoRA效果,就像是否自动穿上衣服 | 是否自动将钩子应用到CLIP | True表示自动应用,False需要手动连接 |
| tags | tags | 字符串 | "" | 只处理带有特定标签的LoRA指令 | 过滤标签 | 输入"style"只处理风格类LoRA |
| start | start | 0.0-1.0 | 0.0 | 从什么时候开始处理LoRA调度 | 处理范围开始 | 0.2表示从20%开始 |
| end | end | 0.0-1.0 | 1.0 | 到什么时候结束处理LoRA调度 | 处理范围结束 | 0.8表示到80%结束 |
| num_steps | num_steps | 整数 | 0 | 把调度过程分成多少个精确步骤 | 调度步数 | 20表示分成20步 |
3.7 PCSetPCTextEncodeSettings 节点 - 文本编码器配置器
这个节点就像一个设置面板,用来调整文本编码器的各种默认参数。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| clip | clip | CLIP | 必填 | 要配置哪个文字理解器 | CLIP文本编码器 | 连接你的CLIP模型 |
| mask_width | mask_width | 整数 | 512 | 遮罩图片的宽度,就像画布的宽度 | 遮罩默认宽度像素 | 1024表示1024像素宽 |
| mask_height | mask_height | 整数 | 512 | 遮罩图片的高度,就像画布的高度 | 遮罩默认高度像素 | 1024表示1024像素高 |
| sdxl_width | sdxl_width | 整数 | 1024 | SDXL模型的图片宽度设置 | SDXL条件化宽度 | 1024是SDXL的标准宽度 |
| sdxl_height | sdxl_height | 整数 | 1024 | SDXL模型的图片高度设置 | SDXL条件化高度 | 1024是SDXL的标准高度 |
| sdxl_target_w | sdxl_target_w | 整数 | 1024 | SDXL模型的目标宽度 | SDXL目标宽度参数 | 设置最终输出的目标宽度 |
| sdxl_target_h | sdxl_target_h | 整数 | 1024 | SDXL模型的目标高度 | SDXL目标高度参数 | 设置最终输出的目标高度 |
| sdxl_crop_w | sdxl_crop_w | 整数 | 0 | SDXL模型的裁剪宽度偏移 | SDXL裁剪宽度偏移 | 0表示不偏移 |
| sdxl_crop_h | sdxl_crop_h | 整数 | 0 | SDXL模型的裁剪高度偏移 | SDXL裁剪高度偏移 | 0表示不偏移 |
3.8 PCAddMaskToCLIP 节点 - 遮罩附加器
这个节点就像一个贴纸管理员,把遮罩图片贴到文字理解器上,让它知道哪些区域需要特殊处理。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| clip | clip | CLIP | 必填 | 要给哪个文字理解器贴遮罩 | CLIP文本编码器 | 连接你的CLIP模型 |
| mask | mask | MASK | 可选 | 要贴上去的遮罩图片 | 遮罩张量 | 连接一个遮罩图片 |
3.9 PCAddMaskToCLIPMany 节点 - 多遮罩附加器
这个节点是上面贴纸管理员的升级版,可以一次性贴多张遮罩。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| clip | clip | CLIP | 必填 | 要给哪个文字理解器贴遮罩 | CLIP文本编码器 | 连接你的CLIP模型 |
| mask1 | mask1 | MASK | 可选 | 第一张要贴的遮罩图片 | 第一个遮罩张量 | 连接第一个遮罩 |
| mask2 | mask2 | MASK | 可选 | 第二张要贴的遮罩图片 | 第二个遮罩张量 | 连接第二个遮罩 |
| mask3 | mask3 | MASK | 可选 | 第三张要贴的遮罩图片 | 第三个遮罩张量 | 连接第三个遮罩 |
| mask4 | mask4 | MASK | 可选 | 第四张要贴的遮罩图片 | 第四个遮罩张量 | 连接第四个遮罩 |
3.10 PCSetLogLevel 节点 - 日志级别设置器
这个节点就像一个音量调节器,控制插件输出多少调试信息。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| clip | clip | CLIP | 必填 | 需要一个CLIP模型来传递 | CLIP文本编码器(仅用于传递) | 连接你的CLIP模型 |
| level | level | 选择列表 | INFO | 选择要显示多少调试信息,就像调节音量大小 | 日志级别设置 | INFO显示一般信息,DEBUG显示详细信息 |
3.11 PCExtractScheduledPrompt 节点 - 调度提示词提取器
这个节点就像一个时间切片器,能从复杂的调度提示词中提取出特定时间点的内容。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| text | text | 字符串 | 必填 | 包含时间调度的复杂提示词 | 包含调度语法的文本 | "[cat:dog:0.5]" |
| at | at | 0.0-1.0 | 1.0 | 想要提取哪个时间点的提示词 | 提取时间点百分比 | 0.3表示提取30%时间点的内容 |
| tags | tags | 字符串 | "" | 只提取带有特定标签的部分 | 过滤标签 | 输入"animals"只提取动物相关部分 |
3.12 PCSaveExpandedWorkflow 节点 - 工作流展开保存器
这个节点就像一个工作流解密器,把复杂的调度节点展开成普通节点并保存。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| any | any | 任意类型 | 必填 | 随便连接一个输出,用来触发保存 | 任意类型输入用于触发 | 连接任何节点的输出 |
3.13 PCMacroExpand 节点 - 宏展开器
这个节点就像一个快捷短语展开器,把你定义的简短代码展开成完整的提示词。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| text | text | 字符串 | 必填 | 包含宏定义的文本 | 包含DEF宏语法的文本 | "DEF[cat] detailed cat, fluffy fur" |
3.14 PCLoraHooksFromText 节点 - 文本LoRA钩子生成器
这个节点就像一个LoRA指令解析器,从文本中提取LoRA指令并生成对应的钩子。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| text | text | 字符串 | 必填 | 包含LoRA调度指令的文本 | 包含LoRA语法的调度文本 | "<lora:style1:1.0:0.5>" |
3.15 PCAttentionCoupleBatchNegative 节点 - 注意力耦合批处理负面
这个节点就像一个注意力分配器,确保正面和负面提示词的注意力机制保持同步。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| positive | positive | CONDITIONING | 必填 | 正面的提示词条件 | 正面条件化张量 | 连接正面提示词的输出 |
| negative | negative | CONDITIONING | 必填 | 负面的提示词条件 | 负面条件化张量 | 连接负面提示词的输出 |
4. 使用技巧和建议
4.1 基础使用技巧
- 从简单开始:先用
PCTextEncode替换原来的CLIPTextEncode,体验基础功能 - 逐步升级:熟悉后再使用
PCLazyTextEncode来体验调度功能 - 合理搭配:
PCLazyTextEncode和PCLazyLoraLoader经常一起使用
4.2 调度语法技巧
- 时间调度:
[cat:dog:0.5]表示前半段画猫,后半段画狗 - 权重调度:
(cat:1.2)表示加强猫的权重到1.2倍 - LoRA调度:
<lora:style1:1.0:0.5>表示在50%时加载style1
4.3 性能优化建议
- 启用缓存优化:设置环境变量
PROMPTCONTROL_ENABLE_CACHE_HACK=1 - 合理使用过滤:使用 tags 参数来过滤不需要的部分
- 避免过度复杂:不要在一个提示词中使用过多的调度语法
5. 常见问题解答
Q1: 为什么我的调度语法不生效?
A: 确保你使用的是 PCLazyTextEncode 而不是 PCTextEncode,后者不支持调度功能。
Q2: LoRA 调度需要什么版本的 ComfyUI?
A: 需要 ComfyUI 0.3.7 或更高版本(桌面版需要 0.3.36 或更高)。
Q3: 如何安装 lark 依赖?
A: 在命令行运行 pip install lark,如果是便携版 Windows,需要运行 .\\python_embeded\\python.exe -m pip install lark。
Q4: 节点显示名称和内部名称不一样?
A: 这是正常的,ComfyUI 的搜索功能可以通过内部名称找到节点,比如搜索 PCLazyTextEncode 会找到显示为 "PC: Schedule Prompt" 的节点。
Q5: 如何调试我的调度语法?
A: 使用 PCSetLogLevel 节点设置为 DEBUG 级别,可以看到详细的调试信息。
6. 高级应用示例
6.1 基础提示词调度
[cat:dog:0.5]
这表示前50%的时间画猫,后50%的时间画狗。
6.2 复杂LoRA调度
<lora:style1:1.0:0.3> [realistic photo:anime style:0.7] <lora:style2:0.8:0.7>
这表示:
- 在30%时加载style1 LoRA
- 前70%用写实照片风格,后30%用动漫风格
- 在70%时加载style2 LoRA,强度0.8
6.3 区域提示词控制
IMASK(0) cat in the left side AND IMASK(1) dog in the right side
这需要先用 PCAddMaskToCLIP 添加遮罩,然后用 IMASK 函数引用。
7. 总结
ComfyUI Prompt Control 插件是一个功能强大的工具,它包含了 15 个节点,本教程已经完整解析了所有 15 个节点,没有遗漏。这些节点可以让你:
- 实现复杂的提示词调度
- 智能管理 LoRA 模型
- 进行区域化提示词控制
- 使用高级文本编码功能
- 创建和使用提示词宏
掌握这个插件需要时间和练习,建议从基础节点开始,逐步学习高级功能。记住,这个插件的核心思想是通过文本语法来控制复杂的图像生成过程,让原本需要大量节点连接的工作流变得简单易懂。