Anima 槽位归属检查器
Why isn't that tag protected? Anima Wardrobe Inspect tells you the slot
- report
This is the smallest node in the pack and, if you're debugging the cross-plugin tag protection, the one you'll use most. It takes text, classifies every comma-separated tag into a slot, and prints the result. That's it. No text output that changes anything, no decisions, no side effects - which is the point: you can drop it anywhere without risking your graph.
Why you'd need a slot report
Everything in this pack keys off slot ownership. Clothing, pose, expression, scene and artist are sticky - the first writer locks them, and later arrivals only get logged. Character, appearance, count and free words are replaceable. If a tag isn't recognized as belonging to a sticky slot, nothing protects it, and downstream packs are free to overwrite it. So the question "why did my tag get clobbered" almost always reduces to "which slot did the pack think it was in" - usually free, usually because the tag wasn't in the dictionary.
What decides a tag's slot
classify_token walks a short ladder:
- Anything starting with
@is an artist tag. - A count word (
solo,1girl,2girls,multiple girls…). - Appearance patterns:
xxx hair,xxx eyes(up to three words), and a fixed list of hair styles, body traits, ears, tails, halos and the like. - An exact hit in the ~2,700-tag dictionary built from the pack's clothing, pose, scene and expression preset libraries.
- A whole-word containment match against that dictionary, longest match first - this is the clever step.
black highleg leotardisn't a dictionary entry, buthighleg leotardis, so the tag still resolves as clothing. - Otherwise
free.
The report also prints the dictionary size, which is handy for confirming the preset data actually loaded rather than silently falling back to empty.
Inputs and outputs
One optional input, text, and one output, report. That's the whole node.
Wire the exact string you're feeding to your CLIP text encode into text - the same wire, tee'd off - queue the graph, and read the report. It prints each slot with its policy, so you see 服装[sticky]: black leotard versus 其他/自由[replaceable]: black leotard, and that single line tells you whether upstream protection will ever apply to it.
Install
It ships with the pack. No separate download, no Python dependencies.
cd ComfyUI/custom_nodes
git clone https://github.com/lingdongbudong/Comfyui-Anima-Wardrobe
# restart ComfyUI
Manager users: search Anima-Wardrobe, install, restart. The node lands in the AnimaWardrobe category alongside the other five.
Reading the output, and the limits
free doesn't mean the model won't understand the tag - it usually will. It means this pack won't defend it, because it has no idea whether thigh strap is clothing you picked or a prop someone's node appended. The fix is either to reword toward a phrase the dictionary knows, or to route that tag through a structured ANIMA_WARDROBE claim, which carries the slot explicitly instead of guessing.
Two honest caveats. It's a read-only diagnostic, so it never validates that your eventual prompt is correct - only that each tag landed somewhere. And it's tag-level, not text-level: punctuation, ordering and the three-tier authority rules are the arbiter's business, not the inspector's. If you're chasing a conflict, run the inspector first to see the slot layout, then check the arbiter's report to see who won.
For a headless sanity check of the pack's contract without starting ComfyUI at all, the repo also ships tools/selfcheck.py - useful when you've edited preset data and want to know you broke something before blaming your graph.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| textopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| report | STRING | — |