mac mini ComfyUI 实战

02 · 文生图工作流与配图批量实战

约 13 分钟驭光者首发于微信公众号「羲和Lab」

系列:mac mini ComfyUI 实战(02/07)· 教程型 · 阅读时长约 16 分钟 读者定位:已按 01 篇装好环境(或已有可用 ComfyUI)的读者;想给公众号文章、视频分镜批量出图的创作者。需命令行基础。 实测环境:Mac mini M5 Pro / 64GB 统一内存 / macOS 27.0 · ComfyUI v0.36.0(01 篇锁定表配方)

导读:01 篇把环境装对了,本篇拿到系列第一个产出物——图。兑现前两篇的四个承诺:三件套接线细节(00 篇)、Z-Image 工作流怎么接、结构化中文提示词怎么写、批量出图怎么管 seed(01 篇)。先给结论:60 秒单张、LLM 宣传片首帧批量流程总提交 29 张零失败。文末有两件配套文件(UI 工作流 + 命令行脚本)可取。

实测声明:文中全部数字来自 Mac mini M5 Pro / 64GB 真机实测,锚点 2026-09-24~26;「总表/实验日志」指本系列实测数据底稿。本文由 AI 辅助创作,经人工审核编辑后发布(完整声明见文末)。

开篇:从验收手段到生产手段

01 篇结尾的五条自检全过,环境就位。但那时的出图,只是「确认环境没问题」的一张测试图——你大概没细看它长什么样,跑通就行。

同一张节点图,换个用法就不一样了:弄懂每一根线为什么这么接,它就从验收入口变成批量生成的入口。这一篇把文生图讲透,兑现前两篇的四个承诺——

  1. 三件套接线细节拆解(00 篇承诺)→ 第一章
  2. Z-Image 工作流怎么接(01 篇)→ 第一章
  3. 结构化中文提示词怎么写(01 篇)→ 第二章
  4. 批量出图怎么管 seed(01 篇)→ 第五章

先给结论:1080×1920 竖图、4 步采样,单张约 60 秒(16 张连跑平均,口径详见第三章);LLM 宣传片首帧批量流程总提交 29 张,程序级零失败(程序级=零崩溃零废单,不含挑图淘汰,口径见第三章)。文生图是三个模态里最先跑通批量生成的一环——图像「分钟级可用」,音乐「秒级可用」,视频「半小时级堪用」。

如果你不想先学接线,可以跳到文末「配套文件」节,领一份拖入即用的 UI 工作流,先出第一张图,再回头读第一章。

一、Z-Image 工作流拆解:三件套怎么接线

00 篇说过:ComfyUI 是工作流引擎,以文生图为例,加载扩散模型(UNET)、文本编码器(CLIP)、解码器(VAE)三件套,按数据流接好线,就是一个完整的生成流程。现在拆接线细节。

三个加载节点,各自是什么、产出什么:

  • UNETLoader:加载扩散模型 z_image_turbo_bf16(12GB 级)。它负责去噪——从一团随机噪声里逐步去噪生成画面。weight_dtype 保持 default。
  • CLIPLoader:加载文本编码器 qwen_3_4b,type 选 qwen_image。它把提示词变成模型能理解的条件向量。Z-Image 用 Qwen 家族编码器,这也是中文提示词直接可用的模型侧背景(一句带过,不展开)。
  • VAELoader:加载解码器 ae.safetensors。模型实际工作在压缩的潜空间(latent)里,VAE 负责最后把潜空间数据解码回像素图。

接线图(实测投产配方,逐字来自实验日志):

UNETLoader(z_image_turbo_bf16, default) ─┐
CLIPLoader(qwen_3_4b, type=qwen_image) ──┼→ CLIPTextEncode ×2(正/负)→ KSampler(4步, cfg1.0, euler, simple) → VAEDecode → SaveImage
VAELoader(ae.safetensors) ───────────────┘      ↑ EmptySD3LatentImage(1080×1920)

数据流一句话讲清:提示词经编码器变成条件,与 EmptySD3LatentImage 生成的初始空白 latent 一起进 KSampler;采样器带着扩散模型跑若干步去噪,输出仍是 latent;最后 VAEDecode 解码成像素图,SaveImage 落盘。三件套各管一段:编码管输入、采样管生成、解码管输出。

KSampler 的参数逐个说:

  • steps=4:只要 4 步。Z-Image Turbo 是蒸馏模型,把多步扩散蒸馏成了少步,4 步质量实测达标。
  • cfg=1.0:本篇最重要的一个参数,下面单独讲。
  • sampler=euler / scheduler=simple:蒸馏模型的常规搭配,实测可用。

cfg=1.0 意味着负面词无效。 实测结论原话:「cfg=1.0 下蒸馏模型忽略负面词,不构成问题」——注意这是 Z-Image Turbo 在 cfg=1.0 下的实测口径,其他蒸馏模型未测,不外推。所谓「不构成问题」:负面词写了没用,但也不碍事,不必花时间打磨。我们投产时负面词是这样一串(text, letters, words, captions, watermark, logo, signature, person, human, hands, face, brand markings, clutter, blurry),实际被模型忽略——留着无害,删了省心,仅此而已。

它和 H3 视频模型的「无负面词入口」是两种实现:H3 是 conditioning 打包、界面根本没有负面词接线;Z-Image 是有接线但 cfg=1.0 下不起作用。本系列实测的这两个模型,在各自实现里都表现为不需要负面词参与;不外推到其他蒸馏模型。

一个真实的失败案例与修复(羲和宣言宣传片项目,非本系列 LLM 宣传片——两个项目都有 F 系首帧,此处是前者):F1 镜头首轮 3/3 全部出成「生物龙」——提示词里有个英文词根 "dragon"(用于描述龙形意象),模型被词根诱导,画出了带鳞片的生物。cfg=1.0 下负面词救不了。解法:全文删掉 "dragon" 词根,并用正向锚「纯光织物」占住位置——改后 3/3 合格。两层结论分清:「负面词在 cfg=1.0 下无效」是 Z-Image Turbo 的模型特性(实测);「删词根+正向占位」是这一个案例里唯一有效的解法(案例级,不升格为通用规律)。实操启发:不想画什么,就全文不出现那个词,并用正向描述占住位置。

分辨率设定。 Z-Image 没有 H3 那条「宽高必须是 32 的倍数」的硬限制(01 篇坑 5),非整倍数不会崩。但它有自己的对齐规则:latent 8 像素对齐,静默取整(00 篇首封实测结论)——你填 900,它悄悄按 8 的倍数取整,不报错、不提示,尺寸悄悄变。要精确尺寸,宽高直接设 8 的倍数。本系列封面的实操档位:横版 904×384、竖版 904×1200,生成后居中裁到目标尺寸。

环境前提(栈版本、启动命令)01 篇锁定表已给全,此处不重复;唯一提醒:启动记得带 PYTORCH_ENABLE_MPS_FALLBACK=1。

二、结构化中文提示词:怎么写

01 篇预告的第二个问题。先给模板,再给真实范例。

四段式模板(实测有效):

Image scene: 一句话场景 + 构图
Visual elements:
- 背景:颜色基调 + 肌理
- 主体:位置 + 形态细节 + 材质
- 细节:装饰元素 + 光效边界
- 光效:唯一光源 + 留白规则
Atmosphere: 三个关键词
Style: 统一风格锚

四段各自的功能:Image scene 定「画什么」;Visual elements 定「每个元素长什么样、在哪」;Atmosphere 定情绪基调;Style 定风格与质量词。结构化分段优于长句堆砌——分段就是指令分组,模型逐段对照执行(实测口径)。

中文直接可用,不需要先译英文。下面是本系列 31 秒宣传片首帧 F4 的投产提示词(实测定稿版,照抄;成图见图下——盒、日、轨道三重锚在图中完整可见):

Image scene: 轨道上段的悬日,竖幅构图——一方小巧的银灰金属盒静置于深色桌面,一枚暖金小太阳沿一道纤细的金色环形轨道升至轨道上段,光辉渐盛但尚未抵达顶端,轨道向上延伸进深邃的黑暗,还有更远的路要走。

Visual elements:
- 背景:midnight blue 子夜蓝渐变暗室,顶部最深最净,向下渐沉入深蓝黑,底层铺隐约的暗色桌面与极细的科技网格肌理,远景悬浮稀疏的微光尘埃
- 主体:画面中下部居中,一只小巧的银灰色金属方盒,圆润的圆角,盒身极简干净无任何按钮与标识,顶面泛着细腻的哑光质感,盒身置于画面约七成高度处,盒身镀着薄薄金边;一枚饱满圆润的暖金小太阳,比盒子还小,表面流转柔和的 warm gold 光晕,像一枚被温柔驯服的袖珍日,悬于盒子上方画面上部约三分之一高处,已升到轨道上段,光辉渐盛而从容
- 细节:一道纤细的金色环形轨道,以优雅弧线绕过太阳与盒顶,轨道上有两三粒微小光点列位运行,轨道上段之上的弧线向上延伸,渐渐隐入画面顶部的深邃黑暗;太阳的暖光在盒顶与盒身镀出金边,桌面投出柔和长影,暗室被照亮约七成
- 光效:袖珍太阳为唯一主光源,光辉渐盛但不过曝;画面最顶部保持一段深邃干净的黑暗留白(轨道延伸的未尽感),右下角完全干净留空

Atmosphere: 攀升、进程、未完待续的势能——太阳每天升一程,尚未圆满

Style: 现代科技感概念场景,东方美学融合,竖构图,clean composition, 8K ultra detailed, cinematic lighting

注意三重锚的写法。本系列首帧的三个主体锚点是盒、日、轨道,它们全部落进 Visual elements:金属盒一句、小太阳一句、环形轨道一句,主体锚前置、每锚一句。模型对这组写法的复现情况,第三章给数据。

三条实操纪律(本系列封面场景多轮实操沉淀,适用封面等精确配色场景):

  1. 色名代替 hex 色值。写 midnight blue、warm gold,不写 #0D1524——实测模型对色名的遵循更好。(另一项目的通用模板允许 hex,分场景并存;封面等精确配色场景,用色名。)
  2. 画面不写字。生成侧的文字不可控,文字全部后期叠加。提示词里不放任何「画面里要有字」的指令。
  3. 不引用品牌名。Mac mini、ComfyUI 等产品名不进提示词,用「银灰金属盒」这类中性描述替代。

三、实测水位:60 秒、零失败与能力边界

先立数字口径表,三组数字互不混写:

口径数字含义
全程总提交29 张(29/29)LLM 宣传片首帧批量流程总提交数,含三轮改版重生成与被淘汰候选(60 秒×29≈29 分钟,与 ≈30 分钟工时账自洽——不存在「29 之外的改版」)
测速当日批次16/1660 秒均值的分母批次
9-25 当批18 候选→4 定稿首帧候选当批口径

单张性能:约 60 秒/张——口径写全:1080×1920、4 步、16 张连跑平均。测速当日批次 16/16,程序级零失败。

全程口径:LLM 宣传片首帧批量流程总提交 29/29 张,程序级零失败(F 系三轮 + 化日/入盒改版)。「程序级零失败」=零崩溃、零废单,不含挑图淘汰——淘汰是第四章流程的正常部分,不是失败。

稳定的部分。 总表结论:「三重锚(盒/日/轨道)复现稳定」。质量凭证是抽查 6 张按选图标准全过(三重锚/零文字/45% 安全区);29 张程序级产出仅作辅助凭证——程序级零失败不等于画面稳定。综合看:主体级指令遵循可靠。

不稳的部分,两个实测弱点:

  • 细节比例偶失准:火柴曾比盒长 50%——主体都在,比例偶尔失控。
  • 提示词去掉轨道后,当批候选(去轨改版当批共 6 张)中约三分之一仍惯性画出环形元素——模型记住了「这里通常有个环」。

这就是 00 篇说过的能力边界在图侧的证据:主体较稳、细节偶发失准,能力不能线性外推——「高难主体通过」推不出「简单细节也稳」。00 篇铺垫在先,03 篇会给视频侧的完整展开。

一句话收束:可复现的是画面主体结构,不可保证的是细节比例。所以——

四、多候选挑图:必需流程,不是可选项

多候选挑图是必需流程。 这是总表的原话结论,不是锦上添花的建议。

为什么必须:上一章两个弱点——比例失准、惯性画环——都是概率性的。单张提交,你不知道这一张是不是失准的那张;常规每镜 3-4 张候选(两个项目共同的纪律),把「失准概率」转化为「可挑选范围」:4 张里总有一张能用,挑就是了。

怎么跑:一条命令 python3 comfy_api.py t2i --count 4,出 4 张候选(命令与 seed 细节见第五章)。

怎么挑:双通道验收。

第一通道,AI 视觉模型转写(辅助):候选拼图成组,交给视觉模型逐项转写画面事实——比例如何、位置如何、亮度如何。它只陈述事实,不做取舍。

第二通道,人工对照清单终审(决策):拿着清单逐项勾。分镜场景:三重锚齐全/画面零文字/45% 安全区干净(45% 安全区=构图预留的留白占比要求,00 篇首帧选图标准,系列内部标准);公众号封面场景:意象对/配色对/无文字/无人形/留白到位。清单是人工可执行的,不依赖 AI——AI 转写给眼睛减负,勾与不勾由人定。转写用任意多模态视觉模型即可,不挑工具。

两个项目案例,同一条流程。

案例一,本系列 LLM 宣传片(31 秒版,9-25 当批):首帧候选 18 张(F1/F2/F4/F5 各 4 张 + F3 两张),挑出 4 张定稿归位,质检全过。

案例二,羲和宣言宣传片:26 镜成片,两轮补帧+金句扩产。磁盘实数:28 个镜次候选目录、候选图 129 张、镜次提示词 28 份(提示词目录另有 1 个 manifest.json 索引文件,该目录共 29 个文件;28 份提示词与 28 个候选目录一一对应,已逐目录核验)——常规纪律是每镜 3-4 候选,该项目含补帧与扩产重生成,累计 129 张,平均约 4.6 张/镜次(129/28≈4.6,可直接验算;偏差摆出来,不回避)。

两个独立项目,跑的是同一条「常规每镜 3-4 候选→人工验收」流程。「必需流程」不止一例。

纪律一句话:先出候选,再挑图;单张直接用,等于把质量交给运气。

五、批量实战:seed 管理与两个真实场景

01 篇预告的最后一个问题:批量出图怎么管 seed。

先看命令全貌。t2i 命令五要素:

python3 comfy_api.py t2i --prompt-file 提示词.txt --seed 20261001 --count 4 --out 目录
  • 脚本:comfy_api.py(获取方式见文末「配套文件」节),纯 Python 标准库,零依赖;默认连接 http://127.0.0.1:8188(ComfyUI 默认端口)
  • --prompt-file:提示词文本文件(UTF-8 编码),四段式直接写入
  • --seed:起始种子
  • --count:候选张数
  • --out:输出目录(默认 首帧候选/)

产物命名:以 seed 为前缀拼接 ComfyUI 原始文件名落盘(脚本内部按 {seed前缀}_{原始文件名} 拼接),文件名里带 seed,查 seed 就知道哪张是哪张。

候选间的 seed 是递增的:--seed 20261001 --count 4 实际用 20261001/20261002/20261003/20261004 四个种子各出一张(脚本实证:seed = 起始值 + 序号)。

seed 三条实操纪律:

  1. 固定 seed=可复现。 同一提示词+同一 seed,重跑结果一致。00 篇封面就是 seed 20260929 一个种子出的横竖双版——要复现那两张图,seed 一填就行。
  2. 多候选=seed 递增。 起始 seed + 0/1/2/3,产物按 seed 落名。改版重生成时换 seed 段,新候选与旧候选不混。
  3. 同 seed 重跑有一个坑:产物文件名序号递增并存。 同 seed 第二次生成,新文件不会覆盖旧文件,而是序号往后排(如 _00002_/_00003_ 并存——01 篇封面实测亲历)。解法三步:提交时记下返回的 pid → curl http://127.0.0.1:8188/history/{pid} → 从返回 JSON 的 outputs 字段里取准确文件名。断点续跑同理:按 seed 比对本地已有产物,缺哪张补哪张,勿全量重跑。

队列特性一句:ComfyUI 队列串行,小任务排在大视频后面要等——先提交图任务,再提交视频任务。

场景一:LLM 宣传片首帧批量流程。 全程总提交 29 张,约 30 分钟(含三轮改版重生成;60 秒/张 × 29 ≈ 29 分钟,数字对得上)。其中 9-25 当批为 18 候选挑出 4 张定稿。

场景二:公众号封面配图。 00 篇首封:seed 20260929 同 seed 出横竖双版;01 篇首封:8 候选三验(三验=三步验收:聚焦、血脉、避水印——系列内部流程术语,指画面聚焦检查、系列配色血脉检查、右下角水印位避让检查),seed 20261001/20261002。封面档位走 904 生成再裁的口径(第一章已述)。

跨模态定位收个尾:图像「分钟级可用」——01 篇预告说「先把最成熟的模态跑通批量生成」,本篇兑现。

结语

环境装对(01 篇),出图跑通批量生成(本篇)——系列的产出物环节就位。

下一篇从图到视频:03 篇《本地视频生成与内存墙》——把静图变成动起来的镜头,那里有 61GB/64GB 的内存墙实测,以及视频生成的降档策略。

配套文件

文末交付两件(工作流 JSON 与命令行脚本),获取方式详见「阅读原文」:

  • 01-文生图-ZImage-Turbo.json:本文第一章的完整工作流,9 节点,参数已预填实测值,节点带中文标题与红线警告(含「负面提示词(cfg1.0 下忽略,仅留位)」标注)。ComfyUI 界面拖入即用;适用环境 ComfyUI v0.36.0(01 篇锁定表配方);模型三件自备:z_image_turbo_bf16 / qwen_3_4b / ae.safetensors(01 篇模型库挂载)。
  • comfy_api.py:本文第五章的命令行工具(含 t2i 等命令,正文按需节选)。纯 Python 标准库,零依赖;适用:可访问 ComfyUI HTTP API 的环境(同机或局域网)。

参考资料

  • 本系列实测数据底座:测评数据总表与实验日志 03(作者实验留存;关键数字已在正文逐条引用)
  • ComfyUI 源码仓库:https://github.com/comfyanonymous/ComfyUI(v0.36.0 tag)
  • 00 篇《mac mini 本地 AIGC 实测:图、视频、音乐的真实水位》(已发布)
  • 01 篇《ComfyUI 源码版安装与 9 坑实录》(已发布)
  • 配套文件与外部资源链接,详见「阅读原文」

免责声明

本文内容仅供学习交流,所述方法需结合实际场景灵活运用。模型与软件栈版本演进很快,本文实测于 2026-09-24~26(Z-Image Turbo / ComfyUI v0.36.0 / Mac mini M5 Pro / 64GB),读者以此日期为参照核对版本;生成图片发布时按平台要求标注「AI 生成内容」。

本文由 AI 辅助创作,经人工审核编辑后发布。

本文首发于微信公众号「羲和Lab」,公众号内可留言交流

阅读公众号原文