[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80734":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":14,"compositeScore":18,"rankGlobal":9,"rankLanguage":9,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":9,"pushedAt":9,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":15,"starSnapshotCount":15,"syncStatus":27,"lastSyncTime":28,"discoverSource":29},80734,"Anima-Artist-Mixer","An1X3R\u002FAnima-Artist-Mixer","An1X3R","Implement the anima plugin for artisti mix by hooking into the attention layer",null,"Python",63,3,42,1,0,6,22,1.81,"MIT License",false,"main",true,[],"2026-06-12 02:04:06","# Anima-Artist-Mixer\n\nA ComfyUI custom node that enables **multi-artist mixing** for the Anima model by hooking into its cross-attention layers.\n\n![surtr](docs\u002Fimages\u002FComfyUI_01092_.png)\n## What it does\n\nAnima uses an LLM as its text encoder. When multiple artist tags are stacked in a single prompt, the LLM's contextualization causes them to interfere with each other, producing a conditioning that resembles neither artist clearly. This node encodes each artist independently and mixes them at the model's cross-attention layer, sidestepping the interference at the prompt-encoding stage.\n\nThe bundled `AnimaArtistPack` node provides a one-shot experience: write your artist list (separated by commas or newlines) in one text box, your main prompt in another, and the node handles splitting, encoding, and packaging automatically.\n\nThe current release (v24) adds layered cross-seed stabilizers, CFG-style strength extrapolation, and a new linear injection-layer weight syntax `::name::weight`.\n\n## Quick links\n\n- [Full documentation](docs\u002FUSAGE.md) — usage, parameters, modes, stabilizers, performance tips\n- [Issues](..\u002F..\u002Fissues) — bug reports, feature requests\n- [Discussions](..\u002F..\u002Fdiscussions) — usage questions, results sharing\n\n## Installation\n\nClone or download into your ComfyUI `custom_nodes` directory:\n\n```\nComfyUI\u002Fcustom_nodes\u002F\u003Cthis-plugin-folder>\u002F\n```\n\nRestart ComfyUI. No extra dependencies.\n\n## Requirements\n\n- **Anima model only** — depends on Anima's built-in `LLMAdapter` (`preprocess_text_embeds`)\n- Use the **same CLIP loader** that Anima's own text-encoding workflow uses (the one whose tokens carry `t5xxl_ids`)\n- Inference only\n\n## Quick start\n![workflow](docs\u002Fimages\u002Fworkflow.png)\n\n```\n                          ┌──► artist_pack ──► AnimaArtistCrossAttn ──► MODEL ──► KSampler\n[Load CLIP] ─► CLIP ──────┤                              │                          │\n                          │                              └──► base_prompt ──► (positive)\n                          │\n                          └──► CLIPTextEncode (Negative) ──► (negative)\n\n[Load Anima Model] ──► MODEL ──► AnimaArtistCrossAttn\n\n(optional) AnimaArtistOptions ──► advanced_options ──► AnimaArtistCrossAttn\n```\n\n- Top text box of `AnimaArtistPack`: your artist chain (comma or newline separated)\n- Bottom text box: the main prompt (no need to repeat artist names here)\n- Wire `AnimaArtistCrossAttn`'s `base_prompt` output directly to KSampler's positive input\n\nFor full parameter explanations and recommended combinations, see [docs\u002FUSAGE.md](docs\u002FUSAGE.md).\n\n## Recommended defaults\n\n```\ncombine_mode = output_avg\nfusion_mode  = interpolate\nstrength     = 1.0\n```\n\nTo weight individual artists within the chain, use either of two syntaxes (they can coexist and stack):\n\n```\nwlop, ::sakimichan::1.2, (krenz:0.7)\n```\n\n- `(name:1.2)` — CLIP-side weighting (same as SD\u002FA1111), non-linear, applied at text encoding\n- `::name::1.2` — injection-side weighting (v24), linear and predictable, applied at cross-attention output\n\n## Cross-seed stability\n\nIn multi-artist setups, the same prompt with different seeds tends to produce noticeably different style mixes — sometimes one artist dominates, other times another, even at equal weights. This is structural to how cross-attention interacts with seed-driven hidden state.\n\nv24 provides four optional stabilizers via `AnimaArtistOptions`, ordered from light to heavy:\n\n| Stabilizer | Strength | Notes |\n|---|---|---|\n| `artist_ema_alpha` | light | Temporal EMA across sampling steps |\n| `combine_mode = lowrank_avg` + `lowrank_k` | medium | SVD low-rank constraint on multi-artist deltas |\n| `artist_static_capture` + `static_capture_k` | heavy | Freeze artist attention after K warmup steps (also a 30-50% speedup) |\n| `artist_anchor_q` | heaviest | Replace user-seed Q with a fixed-seed anchor's Q (near-full cross-seed decoupling) |\n\nAll are off by default. Recommended progression: start with EMA, escalate as needed. See [docs\u002FUSAGE.md](docs\u002FUSAGE.md) for detailed mechanics and tuning.\n\n## Style amplification\n\n`strength` accepts values in `[0, 4]`:\n\n- `0 ~ 1` — interpolation between base and artist (`strength=1` = pure artist replacement)\n- `1 ~ 4` — CFG-style extrapolation: `out = base + strength * (artist - base)`, amplifying the artist's deviation from base for stronger style\n\n`1.5 ~ 2.5` is a common range for \"stronger style without breaking content\"; pushing past `3` tends to oversaturate.\n\n## Performance notes\n\nGeneration time scales with artist count. Per the math of `output_avg`, each layer runs `N + 1` cross-attention forwards (N artists + base). Approximate measured cost (varies by GPU):\n\n| Configuration | Relative time |\n|---|---|\n| 1 artist | 1.0x |\n| 4 artists | ~1.4x |\n| 8 artists | ~1.7x |\n| 5 artists + `artist_static_capture` (K=6) | ~1.1x |\n| 5 artists + `artist_anchor_q` (cached) | ~1.05x |\n\n**Strongly recommended**: connect `AnimaArtistOptions` and limit either the layer range (`start_block \u002F end_block`) or the sampling-step range (`start_percent \u002F end_percent`). Both can dramatically reduce generation time with minimal quality loss, and stack with the cache-based stabilizers above. See the docs for details.\n\n## Important caveat\n\nThis node **cannot achieve the near-lossless artist mixing that SDXL does**. Anima's text encoder is non-linear, so any mixing strategy introduces some distortion. What this node does is make that distortion controllable. Style-similar artists mix well; style-divergent artists may \"regress to the mean\" into a compromise look — `lowrank_avg` accepts more of this regression in exchange for cross-seed stability.\n\n## Acknowledgements\n\nSpecial thanks to **汐浮尘\u002Futowo** for co-development, testing, and design contributions. The `AnimaArtistPack` split-and-encode design comes from their improvement.\n\n## License\n\nMIT License. See [LICENSE](LICENSE) for the full text.\n","Anima-Artist-Mixer 是一个 ComfyUI 自定义节点，通过接入 Anima 模型的交叉注意力层实现多艺术家风格混合。项目的核心功能是独立编码每个艺术家标签，并在模型的交叉注意力层进行混合，从而避免了多个艺术家标签在同一提示中相互干扰的问题。技术特点包括支持艺术家列表的一键式处理、分层交叉种子稳定器、CFG 风格强度外推以及新的线性注入层权重语法。适用于需要将不同艺术家风格融合到单一图像生成中的场景，特别是使用 Anima 模型进行图像创作时。",2,"2026-06-11 04:01:48","CREATED_QUERY"]