Nodes/ComfyUI T2I Tester/🧪 手工提示词单项测试
ComfyUI Node

🧪 手工提示词单项测试

The X/Y/Z plot ComfyUI never shipped

By kukuxz007·Created 21 days ago·Updated 21 days ago· 1
🧪 手工提示词单项测试
  • 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—