
简介这是一份面向ComfyUI用户的SDXL与Refiner精炼文生图工作流配置核心内容为单个json节点文件。它将基础文生图生成与Refiner精炼阶段整合在同一流程中让使用者一次导入即可调用从SDXL出图到精炼细节的完整链路省去手动搭建节点、排查连线的过程适合需要快速产出高质量概念图或插画草稿的创作者。压缩包内共1个文件文件类型为json体积约4KB轻量紧凑便于保存和复用。文件中涉及SDXL基础模型加载、采样参数选择、Refiner精炼模型衔接以及图像输出等关键环节可以直观看到各模块如何协同工作也能据此按需修改风格与精度。虽然整体体量很小但作为可运行的ComfyUI工作流示例它兼具实用与学习价值既可当作日常生成模板也可作为研究节点编排与微调流程的参考样本。目前已有138人学习浏览适合具备一定ComfyUI基础、想要在SDXL流程中引入Refiner精炼来提升出图细节表现的用户。1. SDXL Refiner 到底在精炼什么先别急着堆节点ComfyUI 里搭 SDXL 文生图最容易被名字骗住的就是 Refiner。很多人以为挂上“精炼”就万事大吉结果出图比没挂还糊。Refiner 不是一个滤镜也不是超分放大它是 SDXL 训练时就设计好的第二个去噪专家Base 模型完成前 80% 的采样定下构图和主体Refiner 接管最后一批去噪步数专门处理皮肤、毛发、金属这类高频细节。这个组合最适合不愿意换大模型、又想把手头 1024 出图质量往上拉半档的从业者。后面的内容会从采样原理讲到最小工作流再给一组不翻车的参数和五个我实际踩过的坑。2. 理解两阶段采样Base 管构图Refiner 管质感2.1 从 KSampler 的 denoise 说起为什么两个采样器能接在一起先明确一个容易被忽视的事实ComfyUI 里的 KSampler 是一个“潜空间处理器”输入一个 latent输出一个 latent。SDXL 对 1024x1024 的图内部表示是一个 4 通道的 latent 张量长宽是图像的 1/8也就是 128x128x4 左右。你在画布上连的 EmptyLatentImage 只是建一个空的噪声容器真正的采样过程是让模型一步步把纯噪声“去”成有意义的结构。denoise 参数控制的不是“清晰度”而是“这次采样处理整个噪声过程的百分比”。denoise1.0 表示从纯噪声跑到干净图像denoise0.8 表示先跑完整过程的 80%把剩下的 20% 留给下一个环节。这正是 Refiner 工作流的基石两个 KSampler 共享同一个 latentBase 跑完 80%Refiner 接着跑 20%两者合起来才是一次完整的去噪。你在界面上把第二个 KSampler 的 denoise 写 1.0等于在已经跑到 80% 的图上再从头加噪声、再跑一遍输出自然又脏又花。Base 和 Refiner 在训练上就是“专家接力”的关系Base 1.0 对画面整体构图、光影结构、语义关系负责Refiner 在同样的数据上学得更细同等分辨率下对局部材质的还原更好。所以拆成两段采样不是图省事是官方设计时就预留好的用法。换一个角度说两阶段本质上是一种“后段换专家”的调度策略而不是多跑一次。提示如果你只在工作流里见得到“Refiner”三个字却不知道切换发生在第几步说明你在抄一个没有吃透的模板后面调参会很被动。2.2 Refiner 的选型理由怎样的图像值得挂精炼Refiner 不是所有题材的免费午餐。它擅长的是有真实质感的画面写实人像的皮肤毛孔、汗毛、眼球反光金属拉丝织物纤维植物叶片脉络。这些高频细节在 Base 模型提速采样时会丢Refiner 能补回来一部分。它适合的典型场景是“半写实女性肖像”“产品质感图”“城市街景夜景”。反过来如果你的产出是扁平插画、像素风、低多边形或者刻意做“干净矢量感”的图Refiner 反而会把边缘弄脏、把色块弄出杂色风格漂移到你不想要的程度。这种题材挂 Refiner收获是负的还要多付一次模型推理的时间和显存。判断标准很简单图里有没有大量真实材质细节没有就别挂。显存预算也要心里有数。标准做法下Base 和 Refiner 两个 checkpoint 都会在显存里驻留或频繁换进换出8GB 显存跑 1024 图往往要开 --lowvram速度损失明显。如果目标是批量出图低成本方案是先用只 Base 的工作流批量粗筛粗筛过了再单独对选中的图跑 Refiner 段精修而不是每张图都走两阶段。这也是“SDXL Refiner 精炼”在生产线上的正确姿势。3. 在 ComfyUI 里搭一条最小精炼工作流模型准备、节点连线和参数3.1 环境与模型准备秋叶整合包、checkpoint 目录与切国内源拉模型本地部署 ComfyUI 现在最省事的入口还是秋叶一键整合包它把 Python 环境、依赖、启动器、模型目录管理都封装好了ComfyUI Manager 也内置。如果你要跟上生态更新建议把节点组件更新到最新再去工作流分享站找模板旧版 SDXL Refiner 节点虽然还能用但在新版本里兼容性不如“两个 KSampler 串联”的通用做法。模型方面你需要两个文件Base 模型 sd_xl_base_1.0.safetensors 和 Refiner 模型 sd_xl_refiner_1.0.safetensors。照官方命名下载不要下奇怪来源的“融合版”。摆放目录放到 ComfyUI/models/checkpoints 下或者单独建一个 models/refiners 文件夹两种位置都能被节点识别但 checkpoints 里的兼容性最好。用整合包的模型管理功能导入是最不容易出错的。国内网络环境拉取这两个文件经常断流常见做法是先切到国内镜像源再下载秋叶启动器设置里把 HuggingFace 地址换成镜像或者手动设置环境变量 HF_ENDPOINThttps://hf-mirror.com 后重开终端。注意环境变量改了之后要重启 ComfyUI 进程才生效不是刷新页面。下载完成后我习惯用下面这个命令快速校验文件是否完整# 校验两个官方模型文件防止下载中断导致加载后出图全黑 sha256sum sd_xl_base_1.0.safetensors sha256sum sd_xl_refiner_1.0.safetensors把输出值和官方仓库给的哈希对一遍能避免后面 80% 的“看起来能加载、出图全黑”的问题。两个模型加起来大约 13GB建议放在固态盘上第一次加载会明显更快。3.2 建图提示词、采样器、潜空间的链路安排打开 ComfyUI 默认工作流删掉多余的采样器保留最基础的一条链路CheckpointLoaderSimple(base) → CLIPTextEncode(正/负提示词) → EmptyLatentImage → KSampler再复制一份 CLIPTextEncode 和 KSampler把第二个 KSampler 的 model 接到另一个 CheckpointLoaderSimple(refiner) 上。最终连线如下EmptyLatentImage → KSampler(Base) → KSampler(Refiner) → VAEDecode → SaveImage ↑ ↑ ↑ ↑ CLIPTextEncode CLIPTextEncode (base 正/负) (refiner 正/负)两个提示词节点内容保持一致避免正负提示词在不同模型语义下打架。VAE 从两个 checkpoint 里任取一个SDXL Base 和 Refiner 共用同一个 VAE 结构取谁都行。关键的参数先给一组不会翻车的起点值# 关键参数一个最小精炼工作流的配置快照 params { base_checkpoint: sd_xl_base_1.0.safetensors, # Base 模型文件 refiner_checkpoint: sd_xl_refiner_1.0.safetensors, # Refiner 模型文件 width: 1024, height: 1024, steps: 25, # 总采样步数 base_denoise: 0.8, # Base 段跑前 80% 采样 refiner_denoise: 0.2, # Refiner 段接管剩余 20% cfg: 7.0, sampler_name: dpmpp_2m, # 两段采样器保持统一 scheduler: karras, seed: 42, }这组值的逻辑是总采样步数固定在 25 步Base 段跑前 20 步Refiner 段跑后 5 步两段 denoise 之和严格等于 1。采样器统一用 dpmpp_2m karras降低两段模型间的采样风格断裂。seed 先固定方便后面做开关对照实验。这里我不展开每个参数为什么这么定下一章专讲调参。3.3 把 Refiner 接上第二个采样器的 denoise 才是精炼的关键第二个 KSampler 的输入 latent_image 必须直接来自第一个 KSampler 的输出 latent不能接回 EmptyLatentImage。这一步是新手最容易搞错的一旦接空图Refiner 等于从零开始重新生成画面会和 Base 段无关结果当然不是精炼而是合成事故。Refiner 段 denoise 的推荐区间是 0.15~0.35。低于 0.15精炼效果肉眼不可辨高于 0.35Refiner 开始大改构图和配色风格漂移就会出现。我刚才给的 0.2 是最均衡的起点适合大部分写实题材。如果你用的是 KSampler Advanced 而不是普通 KSampler可以用开始/结束步数控制总步数 25、base 端 start_at_step0、end_at_step20、refiner 端 start_at_step20、end_at_step25效果等价且更容易阅读。还要注意第二个 KSampler 的 noise_seed 设置。在普通 KSampler 里denoise 段会按需重新引入噪声为了保证两段采样的连续性业界常见的做法是让两个采样器用同一个 seed并且在 refiner 段不要额外勾选“add_noise”。如果你看到出图出现横向条纹或周期性的色块噪声先查这里多半是噪声没有延续好。4. 调参切换时机、denoise 与 cfg 的配合4.1 三个必调参数切换时机、两段 denoise 总和、Refiner 段 cfg第一个参数是切换时机。Refiner 介入太早它会在构图还没稳定时强行改写结构常见后果是人物身体比例怪、背景元素重复介入太晚精炼只剩“意思一下”细节基本没救。对 25 步的常规配置我认为切在第 20 步即后 20%是安全区想更细就切在后 25%也就是 25 步里的后 6~7 步不要少于 4 步。第二个参数是两段 denoise 的总和。很多人分开调Base 段 0.9、Refiner 段 0.3加起来 1.2等于把采样总步数偷偷加长出图会表现出“重复涂抹”的油腻感。我习惯在笔记本上先写清楚steps25base20 步refiner5 步再换算成 denoise 填进节点。这样两段加和永远是 1。第三个参数是 Refiner 段的 cfg。Base 段用 7.0 时Refiner 段如果也用 7.0会让局部纹理过度锐化皮肤出现塑料感。常见做法是把 Refiner 段 cfg 降到 4.0~5.5。CFG 管的是“模型对提示词的遵从程度”Refiner 的任务是补细节而不是重新解释语义所以它的 cfg 应当更宽松。4.2 场景速查表人像、风景、像素插画各给一组参数题材stepsBase denoiseRefiner denoiseBase cfgRefiner cfgsampler/scheduler半写实人像近景300.780.227.04.5dpmpp_2m / karras城市场景/建筑250.80.27.55.0dpmpp_2m / karras自然风光植物纹理250.820.186.55.0dpmpp_sde / karras扁平插画不推荐挂—————产品渲染图金属/玻璃350.750.257.55.5dpmpp_2m / exponential这组表不是从哪个神秘配方抄来的是我按“先定总步数、再切 20%~25% 给 Refiner、cfg 后段降档”的规则推出来的。人像近景之所以总步数给 30是因为皮肤细节需要更多步去稳定后段 22% 约等于 6 步多刚好给 Refiner 足够的打磨空间。风景题材我用 dpmpp_sde它在这类题材的柔和过渡上更讨喜。产品渲染图是高频细节大户总步数提到 35Refiner 段 25% 拿约 9 步材质质感提升最明显。4.3 显存与速度的折衷什么时候动启动参数8GB 显存跑 1024 双模型工作流直接执行大概率会在第二次采样时 OOM。常见做法是把启动参数调整到 --lowvram 或 --medvram但这两个参数不是随便开的。--medvram 会限制单次显存占用速度损失可接受--lowvram 则会让模型权重频繁在显存和内存之间换入换出速度损失可能到 50%。我的经验是12GB 显存用默认10GB 用 --medvram8GB 且必须跑双模型时用 --lowvram否则干脆分段跑。如果你用的是秋叶整合包虚拟内存设置和启动参数是两个概念。虚拟内存防的是 Windows 系统层面崩不解决显卡显存不足该 OOM 还是会 OOM。真正有用的做法是减少同时驻留的模型数量先单独用 Base 出图选中的图再用 Refiner 精修而不是让两个 checkpoint 一直在内存里排队。当你在任务管理器里看到显存已经堆满而第二个 KSampler 还没开始那就是两个模型同时加载导致的不是机器坏了。5. 避坑五个常见的精炼翻车现场5.1 全图糊成抽象画布局像随机噪声现象Base 段出来是正常构图Refiner 段跑完变成一片糊色彩浑浊像屏幕脏了。 原因最常见的两种情况一是两个 KSampler 的 denoise 之和大于 1Refiner 段重新注入了过多噪声二是第二个 KSampler 的 latent 输入接错了节点接到了 EmptyLatentImage。 解决把两个 denoise 改成 0.8 0.2确认第二个 KSampler 的 latent_image 连线来自第一个 KSampler 的 LATENT 输出口。这两个检查做完花屏问题基本消失。5.2 人物脸部“融化”皮肤反而像蜡现象挂上 Refiner 后人物五官发虚、皮肤亮得发腻比不挂还差。 原因Refiner 介入时机太靠前或者 Refiner 段 cfg 太高。介入太早会让负责局部细节的模型去大改尚未稳定的面部结构五官轮廓被反复涂抹cfg 高则让细节过度锐化形成蜡感。 解决把切换点往后挪Refiner 段只留后 20%并把该段 cfg 降到 4.5 左右。如果还腻再降 0.5 试一次不要动 Base 段。5.3 跑到第二个 KSampler 时直接 OOM 崩溃现象Base 段正常一到 Refiner 段控制台报 CUDA out of memory整个进程退出。 原因两个 checkpoint 同时驻留显存8GB 卡跑 1024 分辨率撑不住。 解决用 --medvram 或 --lowvram 启动更稳的是把流程拆成“Base 出图→选图→Refiner 精修”两段跑。注意虚拟内存调得再大也不解决显存 OOM那是另一层问题。另外关掉浏览器里的其他分页能释放一点显存聊胜于无。5.4 出图风格突变色彩和 Base 段判若两人现象Base 段还是暖色调Refiner 段出来突然偏冷构图没变但颜色换了一套。 原因两段采样器或调度器不一致比如 Base 用 dpmpp_2m karrasRefiner 用 euler normal或者 Refiner 段 cfg 拉得过高导致它按自己的理解重新渲染。 解决统一两段的 sampler_name 和 schedulerRefiner 段 cfg 保持在 4~5.5。另外检查第二个 KSampler 的 positive/negative 是否误接到了别的文本节点。5.5 模型文件加载报错或者列表里根本找不到现象CheckpointLoaderSimple 的下拉列表里没有 sd_xl_refiner_1.0.safetensors手动填路径后报错无法加载。 原因文件放错了目录、文件名带了特殊字符或中文或者文件下载不完整。 解决先把文件放进 models/checkpoints文件名改成纯英文小写重启 ComfyUI 后在节点里重新选择。如果还报错执行 sha256sum 校验文件和官方哈希是否一致不一致就重新下载。这也是为什么我前面特意让你先校验再连线。6. 验证与提效把 Refiner 工作流变成你可控的默认6.1 用同一 seed 做开关对照才算验证成功搭建完成后不要急着看一两张图就下结论。固定 seed跑三组只用 Basedenoise1.0无 Refiner 段、0.80.2 的标准精炼、0.70.3 的加重精炼。三张图同样尺寸同样提示词并排看重点看皮肤、发丝、边缘是否有实质改善同时看构图有没有被 Refiner 带偏。如果 0.80.2 在细节上有可感知提升且构图稳定这个工作流才算真正是“精炼”而不是随机换风格。对比时把图存到同一目录用昵称后缀区分免得事后找不回当时用的参数。6.2 把精炼变成习惯先粗筛后精修的生产节奏日常批量出图我不会每张都跑完整双模型流程。第一轮用纯 Base 工作流固定 prompt 和 seed 批量出 20 张肉眼挑出 3~5 张构图合格、值得精修的第二轮再把这批图的 seed 和正向提示词喂给带 Refiner 的工作流只改这几张的后段参数。这样显存压力小速度也能接受。如果你做的是文生图提示词案例研究也可以用这个节奏来对比不同提示词在 Refiner 前后的差异——先看构图再看细节问题定位会清晰很多。最后说一个我自己养成的习惯每个工作流只要改过参数我会在节点标题里直接写清版本号比如“portrait_v3_refiner_cfg4.5”。模型文件、提示词、采样器都对齐之后我会把这张工作流 re-export 一份 JSON 存档下次出问题直接从存档回滚不用对着画布猜。希望这个思路能帮你在 ComfyUI 的节点海洋里少花一点冤枉时间把 SDXL Refiner 真正调成自己手里顺手的那把刀。本文还有配套的精品资源点击获取