简介:面向ComfyUI初学者与AIGC实践者的Z-Image基础文生图工作流,解决从提示词编写到图像生成全流程搭建问题,适合刚接触节点式操作、想快速跑通文生图方案的读者,也适合作为教学演示或个人创作的起步模板。压缩包内为1个json工作流文件,包体仅约4KB,将文件导入ComfyUI即可查看完整节点拓扑与参数配置,直观理解模型加载节点、正向/负向提示词输入、采样器参数设置以及图像保存输出等关键环节。目前已有283人学习。借助该json可直接运行一条可用的Z-Image基础文生图流程,省去手动串联节点的繁琐步骤;在此基础上调整提示词、采样步数、分辨率与种子值即可生成不同效果,便于做对比实验、积累参数经验,为后续进阶图生图、局部重绘与ControlNet等应用打下扎实基础。
1. ComfyUI/Z-Image 基础文生图:一张显卡就能跑的本地出图方案
先把标题拆开说。ComfyUI 是目前最主流的节点式图像生成工作流工具,Z-Image 则是新一代中文友好的文生图模型。这两个东西拼在一起,就是 ComfyUI/Z-Image 基础文生图——你不需要云端账号、不需要命令行精通,只要有一块 8GB 以上显存的显卡,就能在自己的电脑上完成从提示词到成品图的完整管线。这套方案解决的核心痛点是:在线工具出图不可控、参数看不到、想批量复现也没门路。它适合想真正做图生图、固定角色、批量验证的从业者,也适合刚接触 ComfyUI 的新手把黑匣子拆开看一眼。本文不打算写成一个操作说明书,而是按我实际跑通这条路线的顺序,把节点、参数和踩过的坑一次讲透。
2. ComfyUI 环境搭建与 Z-Image 模型接入:整合包、便携版和模型目录怎么选
2.1 安装方式怎么选:秋叶整合包、便携版与 Desktop 的取舍
第一次接触 ComfyUI,最常见的困惑不是“怎么用”,而是“装哪个”。目前社区里主流的落地路径有三条:秋叶一键整合包、ComfyUI 便携版(Standalone)、以及 ComfyUI Desktop 桌面版。我不替你决定,只说差异。
秋叶整合包是目前国内新手用得最多的方案,它的价值在于把 Python 运行时、依赖、常用节点、模型目录结构全部提前排好。装完你打开启动器,点一下按钮就能进 WebUI。对一个只想先跑通文生图的人来说,这是时间成本最低的路。便携版则是一个压缩包解压即用,不含额外插件,适合想自己掌控每个依赖版本的人。Desktop 版体验最接近现代软件,但早期版本在自定义 Python 环境和虚拟内存设置上略显受限。
我一般会建议:第一次跑,直接选整合包;你已经有一套自己的 ComfyUI 环境,再考虑便携版。别在安装方式上花太多时间——这个阶段最该确认的是显卡驱动和 Python 能对上。你手动启动时,核心命令其实只有一行:
.\python_embeded\python.exe -s ComfyUI\main.py --auto-launch这是 Windows 下整合包的手动启动姿势。python_embeded是整合包自带的独立 Python 环境,-s参数限定不加载用户级 site-packages,避免你机器上其他 Python 包污染 ComfyUI。--auto-launch会在服务起好后自动打开浏览器页面。如果你不用整合包,裸环境下装完依赖直接用python main.py也能起,但依赖版本冲突的概率会大不少。
2.2 Z-Image 模型放哪:checkpoints 目录和拆分加载的区别
跑文生图的第一步,是让 ComfyUI 找到模型。Z-Image 这种新一代模型在分发时有两种常见形态:一种是合成单一文件的 checkpoint,另一种是拆成diffusion_model(或 unet)、text_encoder、vae三个独立文件。两者的放法不一样。
合版 checkpoint 放在ComfyUI/models/checkpoints/下,WebUI 里直接通过CheckpointLoaderSimple节点一次载入。拆分版则分开放:扩散模型主体放models/diffusion_models/,文本编码器放models/text_encoders/,VAE 放models/vae/。这样放的原因是拆分版便于单独替换组件——比如你换一个更强的 text encoder,不需要重新下十几 GB 的整包。
放完之后,我习惯先用一个命令确认文件完整性,避免后面加载到一半报错:
ls -lh models/checkpoints/ models/diffusion_models/ models/text_encoders/ models/vae/重点看三个值:文件后缀、大小、修改时间。safetensors后缀是标准安全格式;大小和模型发布页标注一致基本没问题;修改时间是用来识别下载中断的残留文件的——如果文件时间停留在几小时前且大小明显偏小,大概率是残件。如果你之前跑过 Qwen-Image 系模型,Z-Image 的接入路径几乎一样,只是文件名不同而已。
2.3 依赖补齐与国内源:ComfyUI Manager 和 pip 换源
模型放对位置之后,最影响体验的是插件和依赖。热词里反复出现“comfyui切换国内源”“comfyui manager”,说明大家在下载节点时被网络问题卡过太多次。先说结论:ComfyUI Manager 是必装的,它承担两个工作——检测缺失节点、一键安装和更新。你在工作流里看到红色节点报错,用它右下角的Install Missing Custom Nodes能省大量时间。
但 Manager 拉取 GitHub 仓库时经常超时。常见做法是在 Manager 设置里找到Custom Git Repository配置,把仓库地址里的github.com换成镜像地址;如果拉的是依赖包,则要处理 pip 源。Windows 下最省事的做法是直接改全局配置:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple设完pip config list看一眼当前生效的配置,确认不是设到了用户目录之外的其他环境。这里有个细节:整合包自带的 Python 是独立环境,你要用它的 pip 去设置,否则你换了源也没用到那个解释器。另一种常见做法是设置HF_ENDPOINT环境变量指向镜像站,模型文件走 Hugging Face 下载时能明显提速。
3. 搭建基础文生图工作流:从加载 Z-Image 到保存成图的节点与参数
3.1 最小文生图工作流:要哪些节点,为什么是这些
当你打开 ComfyUI 的空白面板时,看到的是一块画布。基础文生图工作流,就是在这块画布上串起一条从模型到图片的数据链。最小可用版本只需 7 个节点,我用表格把每个节点和数据流向列出来:
| 节点名 | 作用 | 输入 | 输出 |
|---|---|---|---|
| CheckpointLoaderSimple | 加载集成了全部组件的模型 | ckpt_name | MODEL / CLIP / VAE |
| CLIPTextEncode | 把正面提示词编码为条件向量 | clip, text | conditioning |
| CLIPTextEncode | 把负面提示词编码为条件向量 | clip, text | conditioning |
| EmptyLatentImage | 生成一张空潜空间图像作为起点 | width / height / batch_size | latent |
| KSampler | 核心采样节点,控制去噪过程 | model / positive / negative / latent / 参数 | latent |
| VAEDecode | 把潜空间张量解码为像素图像 | samples, vae | image |
| SaveImage | 保存图片到输出目录 | images | 无 |
为什么是这 7 个,不多不少?因为文生图的本质是“从一个随机潜变量出发,用文本条件引导逐步去噪”。CheckpointLoaderSimple 提供生成能力,CLIPTextEncode 提供引导方向,EmptyLatentImage 提供起点,KSampler 干重活,VAEDecode 和 SaveImage 负责把人能看的图还给你。缺任何一个,链路就断。
3.2 逐节点参数:从模型加载到 KSampler 的关键设置
节点串起来只是第一步,参数才是真正决定出图质量的部分。先说加载节点:如果你的 Z-Image 是合版 checkpoint,用CheckpointLoaderSimple一次性拿到 MODEL / CLIP / VAE 三个输出;如果是拆分版,就要用UNETLoader加载扩散模型、CLIPLoader加载文本编码器、VAELoader加载 VAE,再手动把三个输出接回 KSampler 对应端口。判断用哪种加载方式的标准很简单:你下载时是单文件就用前者,多文件就用后者。
接着是 KSampler,这是整个工作流里参数最密的节点。我逐个给你说:
seed:随机数种子,固定它才能复现同一次出图,后面我专门讲。steps:去噪步数。Z-Image 这类模型建议 20 到 40 步,低于 20 会明显欠拟合,高于 40 收益趋近于零。cfg:文本条件强度。这和 SD 大不相同,新手最容易在这翻车,后面单独展开。sampler_name:采样器算法,常用euler或uni_pc。uni_pc在 20 步附近表现稳定,euler更接近训练分布。scheduler:噪声调度,常用normal或karras。karras在高 cfg 下容易过锐化,用默认normal更保险。denoise:去噪比例,文生图填 1,图生图时降低才能保留原图结构。
3.3 第一次出图的操作顺序
节点参数都设好了,第一次点击“运行”前后,我建议按这个顺序做一遍检查,而不是直接猛点:
第一,检查输出端。SAVE 节点确认存在,否则跑完图都找不到产物。第二,检查提示词端。正面提示词和负面提示词都要接上 CLIPTextEncode,很多新手只接了正面,导致负面条件为空,出图容易出现构图崩坏。第三,检查 latent 尺寸。1024x1024 和 768x768 占用的显存差距很大,先从小尺寸跑通,再放大。
运行之后,你会看到一个排队队列。比较稳的验证方法是看控制台输出:当出现Requested to load ...时说明进入了模型加载阶段,出现Percent complete进度条说明开始采样,最后提示Saved ... to ...说明图已经落盘。直接去ComfyUI/output/目录看你的第一张图吧。
4. Z-Image 文生图调参:提示词、步数、CFG 和种子怎么配出稳定效果
4.1 提示词:Z-Image 不是 SD,它吃自然语言问句
很多人把 SD 时代那套 tag 打法的习惯带过来,结果出图效果很差。Z-Image 这类新一代模型在训练时用的是自然语言描述,它对“一只猫在窗台上,背景是傍晚的城市,照片质感”这种句子理解得远比一串逗号分隔的 tag 好。这不是玄学,而是训练数据分布决定的。
我给你的提示词写作血泪经验是:把提示词当成一段简短画面说明,用完整句子描述主体、环境、光线、镜头风格四个维度。对比一下:
# SD 式 tag(不推荐) cat, on windowsill, city background, sunset, photorealistic, 8k # Z-Image 式描述(推荐) 一只橘猫蹲在窗台上,看向远方。窗外是傍晚的城市天际线, 夕阳把云层染成橙红色,画面带有真实的照片质感。中文写提示词完全没有问题,这类模型对中文语义理解比较稳。关键词仍然要保留,但不再是堆叠式,而是嵌进句子里。如果你拿不准某次生成效果为什么差,先回头看看提示词是不是写成了 tag 风格。
4.2 步数与 CFG:稳定出图的核心区间
步数(steps)和 CFG 是 KSampler 里影响最大的两个参数。Z-Image 的推荐区间是 20 到 40 步,我常用 30 步起步。低步数出图像赶工出来的半成品,高步数则边际收益递减,白白拉长等待时间。我更想强调的是 CFG 这个参数。
SD 类模型 CFG 通常取 7 到 12,但 Z-Image 这类模型的 CFG 往往低得多,很多情况下一组稳定的出图 CFG 只需要 1 到 3。CFG 过高时图会“烧”——饱和度暴涨、边缘出现锐利的伪影、内容偏离提示词。所以我在调参时会先把 CFG 固定在 2,只调步数,等构图稳定了再微调。下面是常见区间对照表:
| 参数 | 推荐区间 | 过头表现 |
|---|---|---|
| steps | 20-40 | 过低欠拟合、过高耗时 |
| cfg | 1-3 | 过高过曝、伪影、色彩失真 |
| sampler | euler / uni_pc | karras 高 cfg 下过锐 |
这组参数组合对不同显卡的兼容性也比较好。显存小的机器可以在 20 步 + CFG 2 下运行,先拿低配验证构图,确认后再放大尺寸提升质量。
4.3 分辨率和种子:显存边界与复现逻辑
分辨率影响的是显存占用量和构图比例。Z-Image 训练分辨率通常以 1024 为基准,所以在 1024x1024 下表现最自然。但显存只有 6GB 的机器跑 1024 会很吃力,常见的做法是退到 768x768 验证构图,再升到 1024 出成品。宽高比尽量贴近 1:1,过度拉长不利于主体表现。
种子(seed)是复现的关键。固定 seed 后,你改提示词或者微调参数,能看到同一个构图基底下内容如何变化,这对做系列图非常有用。我的习惯是每次跑通一组合格的参数,就把 seed、steps、cfg、分辨率记录在工作流文件名里。否则哪天跑出一个好构图,第二天却无论如何也调不回来,那种后悔药是没有的。
5. ComfyUI 文生图避坑:显存、下载、黑图和工作流导入的排查清单
5.1 显存不足:CUDA out of memory
现象:运行时报CUDA out of memory,控制台红色报错,队列卡死。原因通常是分辨率设得过高,或同时跑着浏览器多个标签和其他吃显存的应用。Z-Image 在 1024x1024 下,一张图峰值显存经常逼近 8GB。
解决分三步。第一步,把 EmptyLatentImage 的分辨率降到 768x768;第二步,用启动参数给 ComfyUI 显式预留显存:
.\python_embeded\python.exe -s ComfyUI\main.py --reserve-vram 0.2--reserve-vram表示预留 20% 显存给其他程序,防止 ComfyUI 把显存占满导致整个桌面卡死。第三步,Windows 上把虚拟内存(页面文件)从默认改为自定义,给系统盘留出至少 32GB。注意虚拟内存只是兜底,能避免崩溃,但不能替代显存的带宽,速度会明显下降。
5.2 模型下载失败或加载报错
现象:模型显示下载一半失败,或加载时提示Error(s) in loading state_dict。原因是网络下载中断产生残件,或下载工具把文件写进了错误目录。
解决方法是先删掉残件,再手动下载。模型文件最好不要用浏览器直接下载大文件,容易中断。常见做法是设置HF_ENDPOINT指向镜像站后再重新下载:
set HF_ENDPOINT=https://hf-mirror.com下载完成后对比文件大小。加载报错时还要检查是不是把safetensors文件放错目录,尤其是拆分版模型,三个组件放错位置会导致节点找不到对应输出。
5.3 出图全黑或画面不符合预期
现象:生成图全黑、或满是噪点、或内容与提示词没有关联。这个坑很多人第一次都会踩。
全黑通常是 VAE 没接上——检查 CheckpointLoaderSimple 的 VAE 输出是否接入了 VAEDecode;拆分版则检查 VAELoader 是否已加载。画面与提示词无关,多半是 CFG 设置问题,试着把 CFG 降到 1 到 2 之间。还有一种是精度问题,少数显卡在 FP16 下采样不稳定,可以尝试换 FP32 跑一次看结果是否变化。这个排查顺序我建议固定下来:先看 VAE 链路,再看 CFG,最后考虑精度。
5.4 工作流导入 JSON 后缺节点
现象:从网上下载的 workflow JSON 导入后,画布上出现红色节点,点击运行直接报错。原因是工作流里用到了你没装的自定义节点。
常规做法是打开 ComfyUI Manager,点击Install Missing Custom Nodes自动安装。装完一定要重启 ComfyUI,很多节点只有在重启后才会注册到节点列表里。如果重启后还是红色,说明安装失败,去 Manager 的Custom Nodes列表里看该节点是否显示已安装。另外,如果你把工作流以 API 格式通过编程方式提交,超大 JSON 有时会触发请求实体过大错误,这时优先检查 JSON 里是否带了过大的 base64 图片数据。
6. 把基础工作流做成模板:批量出图、固定角色和参数记录的技巧
6.1 模板化:把调好的工作流保存成可复用 JSON
当你调出一组满意参数后,第一件事是把它存成模板。ComfyUI 右上角的Export按钮会导出一个 JSON 文件,这个文件包含了全部节点和参数。我的做法是在ComfyUI/user/default/workflows/下按用途建目录,把模板按“模型名-分辨率-用途”命名,比如zimage-1024-portrait.json。
模板是一种种子,它会记住你这次调出的所有参数组合。但要注意它记住的是绝对路径的模型名,如果你换机器,模型放的位置变了就要重新指定。导入模板时可以把同一个模板复制一份,只改提示词和 seed,这样不同角色的图能在同一个参数基准下横向比较。
6.2 批量验证:用 API 提交多组参数
ComfyUI 除了在画布上操作,还提供了 HTTP API。你可以把工作流转成 API 格式 JSON,然后用脚本批量改 seed 和提示词。这个方法对验证参数区间很高效,比如你想比较 CFG 1、2、3 三种取值的差异,不需要手动在画布上改三次:
import json import urllib.request workflow = json.load(open("zimage-1024-api.json", encoding="utf-8")) def run_prompt(workflow, server="http://127.0.0.1:8188"): data = json.dumps({"prompt": workflow}).encode("utf-8") req = urllib.request.Request( server + "/prompt", data=data, headers={"Content-Type": "application/json"}, ) with urllib.request.urlopen(req) as resp: print(resp.read().decode()) workflow["4"]["inputs"]["seed"] = 10001 run_prompt(workflow)4是 KSampler 节点的 ID,inputs.seed是它接收的种子字段。submit 一次请求后,ComfyUI 会按流程走完整个工作流并输出图片。你拿返回值里的prompt_id去/history接口查生成结果。
最后说一个我的个人习惯:每次跑通一个新参数组合,我会把提示词全文放进工作流的 description 字段里,而不是只放在节点里。因为模板会在机器之间复制,只有把参数和提示词一起保存,下一次复现时才不用靠记忆。做文生图,最怕的就是跑出一张满意的图,却找不到当初那组参数。养成记录的习惯之后,我还常用固定 seed 配合微调提示词来稳定角色特征,这也是很多人说的角色卡思路的雏形——保持构图基底不变,只改主角的描述词,多试几次就能得到一套风格统一的系列图。希望这个流程对你有所帮助。
本文还有配套的精品资源,点击获取