Nodes/comfyui-t2i-tester/🧪 手工提示词单项测试
ComfyUI Node

🧪 手工提示词单项测试

The X/Y/Z plot ComfyUI never shipped

By kukuxz007·Created a day ago·Updated a day ago· 0
🧪 手工提示词单项测试
  • ControlNet图像
  • ControlNet图像2
  • ControlNet图像3
  • ControlNet图像4
  • ControlNet图像5
  • ControlNet图像6
  • ControlNet图像7
  • ControlNet图像8
  • 表格图像
  • 图片列表
  • 测试标签
正向提示词masterpiece, best quality, 1girl
正向提示词2
正向提示词3
正向提示词4
正向提示词5
正向提示词6
正向提示词7
正向提示词8
反向提示词low quality, worst quality, blurry
反向提示词2
反向提示词3
反向提示词4
反向提示词5
反向提示词6
反向提示词7
反向提示词8
测试项目CFG
测试项目数量2
测试值列表7, 8, 9
基准CheckpointNone
基准Checkpoint2None
基准Checkpoint3None
基准Checkpoint4None
基准Checkpoint5None
基准Checkpoint6None
基准Checkpoint7None
基准Checkpoint8None
基准CFG7.0
基准步数20
种子0
采样器
调度器
宽度512
高度512
CLIP跳过层2
LoRA模型None
模型强度1.00
CLIP强度1.00
可选CLIPNone
CLIP类型stable_diffusion
可选VAENone
降噪1.00
可选ControlNetNone
ControlNet强度1.00
ControlNet开始0.000
ControlNet结束1.000
单独保存每张true
启用Hires放大false
Hires倍数1.75
Hires方法nearest-exact
Hires步数20
Hires降噪0.52

What it's for

If you came from A1111, the thing you miss is X/Y/Z Plot. If you didn't, here's the pitch: you want to know whether CFG 5, 7 or 9 suits a new checkpoint, and the honest way to find out is to render the same prompt at all three and look. In ComfyUI that used to mean three samplers, three sets of wires, and a folder of images named by whatever.

ManualPromptSingleFactorTest does it in one node: fix everything, pick one variable, give it a list of values, hit queue. It samples each variant, tiles the results into a labelled contact sheet, and hands you both the sheet and the individual images. "Single factor" is the right constraint - one axis at a time is the only way you can attribute a difference to something.

How it works

The node doesn't orchestrate a subgraph; it is the pipeline. It instantiates ComfyUI's own core nodes internally - checkpoint, LoRA, CLIP and VAE loaders, text encode, ControlNet load and apply, empty latent, KSampler, VAE decode - then walks a job list where each job is one cell of the sheet. Models are cached across jobs by identity, so sweeping CFG on one checkpoint loads it exactly once, and conditioning is only re-encoded when the prompt text actually changes.

The sheet is built with PIL: one row, equal cells, 4px gutters, its own PNG. It also writes prompt/workflow metadata into every saved file, so dragging an output back onto the canvas restores the graph that made it - the only reason a sweep stays reproducible after the fact.

Picking the axis

测试项目 (Test item) is the axis, and there are eight: CFG, Checkpoint, 步数 (steps), 随机种子 (seed), 分辨率 (resolution), 骨架图 (pose images), 正向提示词 and 反向提示词 (positive/negative prompt).

测试值列表 (value list) is where values go - comma- or newline-separated, full-width included. CFG gets 5, 7, 9; steps gets 10, 20, 28; resolution gets 512*512, 512x768, 768×1024 (it normalises x, * and ×, and rounds each side to a multiple of 8, saying so in the console).

Two of the eight modes are different and this is where people get stuck:

  • Checkpoint mode doesn't read the value list at all. You multi-select via 基准Checkpoint plus 基准Checkpoint2–8, and 测试项目数量 decides how many of those slots the UI shows. It errors clearly if every slot is left on None.
  • 正向提示词 / 反向提示词 modes also ignore the value list. You fill the extra prompt boxes (正向提示词2–8 / 反向提示词2–8), and again 测试项目数量 caps how many slots count. Empty slots are skipped, so you can fill three and test three.

随机种子 mode is the odd one: a single number makes it roll that many random seeds itself; a list is used literally, though a single value above 64 is treated as one literal seed.

The rest of the setup

基准Checkpoint, 基准CFG, 基准步数, 种子, 采样器, 调度器, 宽度, 高度 and CLIP跳过层 are the fixed baseline the axis varies against - these matter more than they look, because a sweep at the wrong base resolution tells you nothing. LoRA, 可选CLIP/CLIP类型 and 可选VAE are optional; a unet-only checkpoint needs the last two or the node refuses to run.

There's also an optional ControlNet path: 可选ControlNet plus ControlNet图像 through ControlNet图像8, with 强度/开始/结束. The 骨架图 mode instead takes a folder of pose images in 测试值列表 - first line the directory, optional second line a max count - and walks it, preferring files named openpose or pose and skipping depth/lineart/softedge output. Genuinely nice if you keep a pose pack around.

启用Hires放大 does an A1111-style two-pass: sample, latent-upscale by Hires倍数 with Hires方法 (nearest-exact by default, matching A1111's Latent upscaler), then a second pass at Hires步数 and Hires降噪. Turn it on only when sharpness is part of the question - at 0.52 denoise it changes the image enough to muddy the axis you're testing.

Outputs

表格图像 is the contact sheet. 图片列表 is the individual images as a list - the one to feed the hand-repair node, and why the pack's nodes compose. 测试标签 is a parallel list like cfg=7 or pose=openpose_03.png, which is what you want beside a preview once you've forgotten which cell was which.

With 单独保存每张 on (default true) each cell is written under output/mcl_test/ with an A1111-style parameters block in the PNG text chunk, plus the grid as 00_grid. It's an output node, so everything lands in the queue history for comparison.

Install

Same clone as the rest of the pack; this node pulls in no extra Python packages.

cd ComfyUI/custom_nodes
git clone https://github.com/kukuxz007/comfyui-t2i-tester.git

Restart ComfyUI and it's under 自定义工作流. Everything you sweep has to already be in your normal model folders - the dropdowns are built from ComfyUI's own model lists. Through ComfyUI Manager, search the Registry for ComfyUI T2I Tester.

Two practical gotchas

The sheet is also one row wide. Eight cells at 768px each is a ~6.2k-pixel PNG that most viewers squash into unreadability - three or four values per sweep is the sweet spot, and better methodology anyway. (On the Nodes 2.0 frontend a widget here may look unlabelled or oddly placed: the pack ships its own JS to show and hide the extra slots, and widget-manipulating packs are what that Vue rewrite broke elsewhere. The legacy canvas is the safe way to run it.)

Category自定义工作流

Inputs (60)

NameTypeDefaultDescription
正向提示词STRINGmasterpiece, best quality, 1girl
正向提示词2STRING
正向提示词3STRING
正向提示词4STRING
正向提示词5STRING
正向提示词6STRING
正向提示词7STRING
正向提示词8STRING
反向提示词STRINGlow quality, worst quality, blurry
反向提示词2STRING
反向提示词3STRING
反向提示词4STRING
反向提示词5STRING
反向提示词6STRING
反向提示词7STRING
反向提示词8STRING
测试项目COMBOCFG8 options: CFG, Checkpoint, 步数, 随机种子, 分辨率, 骨架图, +2
测试项目数量INT21–8Checkpoint/正向/反向模式下显示的槽位数(含主槽)
测试值列表STRING7, 8, 9测骨架图:填姿势包目录。测正向/反向提示词请用提示词2~8,不用本框。
基准CheckpointCOMBONone1 options: None
基准Checkpoint2COMBONone2 options: None, None
基准Checkpoint3COMBONone2 options: None, None
基准Checkpoint4COMBONone2 options: None, None
基准Checkpoint5COMBONone2 options: None, None
基准Checkpoint6COMBONone2 options: None, None
基准Checkpoint7COMBONone2 options: None, None
基准Checkpoint8COMBONone2 options: None, None
基准CFGFLOAT7.00–100
基准步数INT201–10000
种子INT00–18446744073709550000
采样器COMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
调度器COMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
宽度INT51216–4096
高度INT51216–4096
CLIP跳过层INT21–12
LoRA模型optCOMBONone1 options: None
模型强度optFLOAT1.00-20–20
CLIP强度optFLOAT1.00-20–20
可选CLIPoptCOMBONone1 options: None
CLIP类型optCOMBOstable_diffusionAnima 的 qwen_3_06b 用 stable_diffusion;Qwen-Image 用 qwen_image
可选VAEoptCOMBONone1 options: None
降噪optFLOAT1.000–1
可选ControlNetoptCOMBONone1 options: None
ControlNet强度optFLOAT1.000–10
ControlNet开始optFLOAT0.0000–1
ControlNet结束optFLOAT1.0000–1
ControlNet图像optIMAGE
ControlNet图像2optIMAGE
ControlNet图像3optIMAGE
ControlNet图像4optIMAGE
ControlNet图像5optIMAGE
ControlNet图像6optIMAGE
ControlNet图像7optIMAGE
ControlNet图像8optIMAGE
单独保存每张optBOOLEANtrue
启用Hires放大optBOOLEANfalse一阶采样后潜空间放大再采一次,提升清晰度
Hires倍数optFLOAT1.751–4
Hires方法optCOMBOnearest-exact5 options: nearest-exact, bilinear, area, bicubic, bislerp
Hires步数optINT201–10000
Hires降噪optFLOAT0.520–1

Outputs (3)

NameTypeDescription
表格图像IMAGE
图片列表IMAGE
测试标签STRING