Tile Test: Settings
Settings — Every Setting in the File, as a Wire
- global_style_instruction
- global_style_max_tokens
- tile_caption_instruction
- tile_caption_max_tokens
- tile_tags_instruction
- prompt_tags_instruction
- tile_tags_verification_statement
- caption_megapixels
- canvas_tokens
- crop_tokens
- tile_tags_verification_threshold
- tile_tags_position_threshold
- prompt_tags_verification_threshold
Here's the odd bit about this pack: most of the behaviour of the VL nodes doesn't live in widgets. It lives in a TOML file, and if you want to know what the file currently says, your options are "open it in a text editor" or "use this node."
Tile Test: Settings is the second option. It has exactly one input, one output per settings key, and no opinion. It reads one preset out of the settings file and hands you the values as sockets you can look at, log, or rewire.
Why that's more useful than it sounds
The VL nodes in this pack condition each tile on the image itself - vision tokens of the tile's crop, its slice of a whole-image encode, and a short text derived from the tile. That text is written by a vision-language model following an instruction, and the instruction is a string in settings.toml: how to list things in a tile, how to score a candidate tag, what to ask the style caption, how many tokens each generation gets.
Which makes prose the highest-leverage thing you can tune in this pack - and editing a TOML file, re-running the workflow and squinting at the console is a bad way to iterate on prose.
Drop this node in and those strings become wires. Swap any single wire for a text node, type a new wording, queue it: the node you wired it into picks up the new text while everything else keeps coming from the file. Find wording you like, paste it back into settings.user.toml, delete the text node. It's a scratchpad with proper plumbing.
The one input
preset is a combo, default tags. The choices are built from the [presets.<label>] blocks in your settings file, once per ComfyUI session. Out of the box there's exactly one. Adding the caption presets means copying a block out of settings.user.example.toml.
The startup cadence is what to remember: adding, renaming, removing or reordering a preset needs a restart, because the combo is cached at startup. Editing the wording inside an existing preset doesn't - and this node is built for that, re-reading the file and changing its own cache key when the file changes. An edit applies on the next queued run.
The thirteen outputs
They fall into three groups, and the order matters if you're looking at a saved workflow's links rather than the node.
Preset keys (seven). global_style_instruction, global_style_max_tokens, tile_caption_instruction, tile_caption_max_tokens, tile_tags_instruction, prompt_tags_instruction, tile_tags_verification_statement. Instructions come out with their placeholders intact - {PROMPT} and {TAG} are still in the string, because the node that consumes them is the one that fills them in.
The [vision] table (three). caption_megapixels, canvas_tokens, crop_tokens - how many vision tokens a tile takes from the whole-image encode, how many from its own crop, and how big a picture the VL model reads to write a caption. Zero turns a source off.
Tags thresholds (three). tile_tags_verification_threshold, tile_tags_position_threshold, prompt_tags_verification_threshold - the scores a candidate tag must reach to be kept, and the score it needs on a strip of the tile to be given a position like bottom-left.
A key the preset's kind doesn't use outputs an empty value rather than failing: empty string, 0, or 0.0. On the shipped tags preset, tile_caption_instruction comes out blank. That's the signal, not a bug.
Wiring it up
The intended chain: Settings → Captions and Settings → Render. Instructions go into the Captions node, canvas_tokens and crop_tokens into Render. Then the workflow and the file can't drift apart, because there's only one copy.
Installing, and the one way this node disappears
Standard pack install: ComfyUI Manager, search "Context-Anchored Tile Refine", or clone into custom_nodes and pip install -r requirements.txt (the only dependency is logit-classifier>=0.4.0). Restart.
Then set up your settings file properly:
cd ComfyUI/custom_nodes/ComfyUI-ContextAnchoredTileRefine
cp settings.toml settings.user.toml
The pack reads settings.user.toml whenever it exists and ignores settings.toml, and no update ever overwrites your copy. Edit the copy. The header of the file documents every key.
The failure mode worth knowing: a syntax error in the settings file makes this node - and Tile Test: Captions and Tile Test: Render - vanish from the node menu. Not grey out. Vanish. ComfyUI prints the reason and the filename to its console, and it stays off the menu until you fix the file. If one of these three nodes is suddenly missing from your search results, that's where to look first, and the answer is in the terminal, not in the browser.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| preset | COMBO | tags | Which settings file preset the outputs are read from, of the caption or the tags kind. The list is built when ComfyUI starts, so a new or renamed preset needs a restart. An edited wording reaches the outputs on the next queued run. |
Outputs (13)
| Name | Type | Description |
|---|---|---|
| global_style_instruction | STRING | The question the VL model is asked about the entire image for the style caption, with {PROMPT} left in. |
| global_style_max_tokens | INT | The generation budget for the style caption. |
| tile_caption_instruction | STRING | The question the VL model is asked about each tile by the caption kind, with {PROMPT} left in. A tags preset outputs an empty text. |
| tile_caption_max_tokens | INT | The generation budget for each tile caption. A tags preset outputs 0. |
| tile_tags_instruction | STRING | The question that asks the VL model to list the things in each tile as tags. A caption preset outputs an empty text. |
| prompt_tags_instruction | STRING | The question that asks the VL model to list the things the prompt names, with {PROMPT} left in. A caption preset outputs an empty text. |
| tile_tags_verification_statement | STRING | The statement each candidate tag is scored against on its tile, with {TAG} left in. A caption preset outputs an empty text. |
| caption_megapixels | FLOAT | The picture size in megapixels the VL model reads for each caption, from the [vision] table. |
| canvas_tokens | INT | The vision rows a tile takes from one encode of the entire image, from the [vision] table. |
| crop_tokens | INT | The vision rows a tile takes from the encode of its own crop, from the [vision] table. |
| tile_tags_verification_threshold | FLOAT | The score a tag the tile's own list names must reach on the entire tile to be kept. A caption preset outputs 0. |
| tile_tags_position_threshold | FLOAT | The score a tag must reach on one of the six strips of a tile for that strip to hold it. A caption preset outputs 0. |
| prompt_tags_verification_threshold | FLOAT | The score a thing from the prompt that the tile's own list lacks must reach on the entire tile to be kept. A caption preset outputs 0. |