comfyui-mcp 0.48.21 → 0.48.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/comfyui/client.js +46 -6
- package/dist/comfyui/client.js.map +1 -1
- package/dist/config.js +15 -0
- package/dist/config.js.map +1 -1
- package/dist/orchestrator/error-text.js +29 -1
- package/dist/orchestrator/error-text.js.map +1 -1
- package/dist/orchestrator/error-text.test.js +28 -0
- package/dist/orchestrator/error-text.test.js.map +1 -1
- package/dist/orchestrator/index.js +331 -56
- package/dist/orchestrator/index.js.map +1 -1
- package/dist/orchestrator/panel-agent.js +122 -31
- package/dist/orchestrator/panel-agent.js.map +1 -1
- package/dist/orchestrator/panel-tools.js +1256 -198
- package/dist/orchestrator/panel-tools.js.map +1 -1
- package/dist/orchestrator/ready-banner.js +70 -0
- package/dist/orchestrator/ready-banner.js.map +1 -0
- package/dist/orchestrator/session-store.js +163 -28
- package/dist/orchestrator/session-store.js.map +1 -1
- package/dist/services/api-nodes.js +5 -7
- package/dist/services/api-nodes.js.map +1 -1
- package/dist/services/download-cache.js +126 -18
- package/dist/services/download-cache.js.map +1 -1
- package/dist/services/download-jobs.js +463 -14
- package/dist/services/download-jobs.js.map +1 -1
- package/dist/services/download-progress.js +252 -3
- package/dist/services/download-progress.js.map +1 -1
- package/dist/services/env-capabilities.js +80 -9
- package/dist/services/env-capabilities.js.map +1 -1
- package/dist/services/generate-audio.js +16 -0
- package/dist/services/generate-audio.js.map +1 -1
- package/dist/services/local-models-fallback.js +7 -3
- package/dist/services/local-models-fallback.js.map +1 -1
- package/dist/services/manifest.js +180 -65
- package/dist/services/manifest.js.map +1 -1
- package/dist/services/model-resolver.js +267 -11
- package/dist/services/model-resolver.js.map +1 -1
- package/dist/services/node-management.js +179 -45
- package/dist/services/node-management.js.map +1 -1
- package/dist/services/output-dir.js +33 -3
- package/dist/services/output-dir.js.map +1 -1
- package/dist/services/panel-secrets.js +19 -7
- package/dist/services/panel-secrets.js.map +1 -1
- package/dist/services/process-control.js +107 -8
- package/dist/services/process-control.js.map +1 -1
- package/dist/services/queue-monitor.js +45 -2
- package/dist/services/queue-monitor.js.map +1 -1
- package/dist/services/queue-monitor.stall.test.js +78 -0
- package/dist/services/queue-monitor.stall.test.js.map +1 -0
- package/dist/services/secure-bridge.js +84 -0
- package/dist/services/secure-bridge.js.map +1 -1
- package/dist/services/storage/azure-blob.js +8 -3
- package/dist/services/storage/azure-blob.js.map +1 -1
- package/dist/services/storage/index.js +3 -3
- package/dist/services/storage/index.js.map +1 -1
- package/dist/services/storage/s3.js +9 -3
- package/dist/services/storage/s3.js.map +1 -1
- package/dist/services/ui-bridge.js +341 -24
- package/dist/services/ui-bridge.js.map +1 -1
- package/dist/services/workflow-converter.js +767 -72
- package/dist/services/workflow-converter.js.map +1 -1
- package/dist/services/workflow-deps.js +20 -1
- package/dist/services/workflow-deps.js.map +1 -1
- package/dist/services/workflow-lock.js +127 -27
- package/dist/services/workflow-lock.js.map +1 -1
- package/dist/services/workflow-target-store.js +7 -3
- package/dist/services/workflow-target-store.js.map +1 -1
- package/dist/services/workspace-env.js +48 -0
- package/dist/services/workspace-env.js.map +1 -1
- package/dist/tools/diagnostics.js +10 -1
- package/dist/tools/diagnostics.js.map +1 -1
- package/dist/tools/generate-audio.js +44 -0
- package/dist/tools/generate-audio.js.map +1 -1
- package/dist/tools/model-explorer.js +85 -5
- package/dist/tools/model-explorer.js.map +1 -1
- package/dist/tools/model-extras.js +24 -4
- package/dist/tools/model-extras.js.map +1 -1
- package/dist/tools/model-management.js +124 -14
- package/dist/tools/model-management.js.map +1 -1
- package/dist/tools/report-issue.js +220 -66
- package/dist/tools/report-issue.js.map +1 -1
- package/dist/tools/report-issue.test.js +223 -83
- package/dist/tools/report-issue.test.js.map +1 -1
- package/dist/tools/skills-access.js +7 -2
- package/dist/tools/skills-access.js.map +1 -1
- package/dist/tools/template-schema.js +5 -5
- package/dist/tools/template-schema.js.map +1 -1
- package/dist/tools/workflow-compose.js +18 -3
- package/dist/tools/workflow-compose.js.map +1 -1
- package/dist/tools/workflow-visualize.js +1 -1
- package/dist/tools/workflow-visualize.js.map +1 -1
- package/package.json +1 -1
- package/packs/anima/install-runpod.sh +0 -1
- package/packs/anima/install-windows.bat +0 -1
- package/packs/anima/manifest.yaml +0 -1
- package/packs/anima-img2img/install-runpod.sh +0 -1
- package/packs/anima-img2img/install-windows.bat +0 -1
- package/packs/anima-img2img/manifest.yaml +0 -1
- package/packs/anima-inpaint/install-runpod.sh +0 -1
- package/packs/anima-inpaint/install-windows.bat +0 -1
- package/packs/anima-inpaint/manifest.yaml +0 -1
- package/packs/anima-txt2img/install-runpod.sh +0 -1
- package/packs/anima-txt2img/install-windows.bat +0 -1
- package/packs/anima-txt2img/manifest.yaml +0 -1
- package/packs/artokun-flow/install-runpod.sh +0 -1
- package/packs/artokun-flow/install-windows.bat +0 -1
- package/packs/artokun-flow/manifest.yaml +0 -1
- package/packs/ernie/install-runpod.sh +0 -1
- package/packs/ernie/install-windows.bat +0 -1
- package/packs/ernie/manifest.yaml +0 -1
- package/packs/ernie-combo/install-runpod.sh +0 -1
- package/packs/ernie-combo/install-windows.bat +0 -1
- package/packs/ernie-combo/manifest.yaml +0 -1
- package/packs/ernie-img2img/install-runpod.sh +0 -1
- package/packs/ernie-img2img/install-windows.bat +0 -1
- package/packs/ernie-img2img/manifest.yaml +0 -1
- package/packs/ernie-txt2img/install-runpod.sh +0 -1
- package/packs/ernie-txt2img/install-windows.bat +0 -1
- package/packs/ernie-txt2img/manifest.yaml +0 -1
- package/packs/ideogram/install-runpod.sh +0 -1
- package/packs/ideogram/install-windows.bat +0 -1
- package/packs/ideogram/manifest.yaml +0 -1
- package/packs/ideogram-img2img/install-runpod.sh +0 -1
- package/packs/ideogram-img2img/install-windows.bat +0 -1
- package/packs/ideogram-img2img/manifest.yaml +0 -1
- package/packs/ideogram-txt2img/install-runpod.sh +0 -1
- package/packs/ideogram-txt2img/install-windows.bat +0 -1
- package/packs/ideogram-txt2img/manifest.yaml +0 -1
- package/packs/ltx-2.3/install-runpod.sh +0 -1
- package/packs/ltx-2.3/install-windows.bat +0 -1
- package/packs/ltx-2.3/manifest.yaml +0 -1
- package/packs/ltx-2.3-extender/install-runpod.sh +0 -1
- package/packs/ltx-2.3-extender/install-windows.bat +0 -1
- package/packs/ltx-2.3-extender/manifest.yaml +0 -1
- package/packs/ltx-2.3-extender-no-audio/install-runpod.sh +0 -1
- package/packs/ltx-2.3-extender-no-audio/install-windows.bat +0 -1
- package/packs/ltx-2.3-extender-no-audio/manifest.yaml +0 -1
- package/packs/ltx-2.3-flf/install-runpod.sh +0 -1
- package/packs/ltx-2.3-flf/install-windows.bat +0 -1
- package/packs/ltx-2.3-flf/manifest.yaml +0 -1
- package/packs/ltx-2.3-img2vid/install-runpod.sh +0 -1
- package/packs/ltx-2.3-img2vid/install-windows.bat +0 -1
- package/packs/ltx-2.3-img2vid/manifest.yaml +3 -4
- package/packs/ltx-2.3-txt2vid/install-runpod.sh +0 -1
- package/packs/ltx-2.3-txt2vid/install-windows.bat +0 -1
- package/packs/ltx-2.3-txt2vid/manifest.yaml +3 -4
- package/packs/ltx-2.3-xy-plot/install-runpod.sh +0 -1
- package/packs/ltx-2.3-xy-plot/install-windows.bat +0 -1
- package/packs/ltx-2.3-xy-plot/manifest.yaml +0 -1
- package/packs/ltx23-distill-3stage/install-runpod.sh +0 -1
- package/packs/ltx23-distill-3stage/install-windows.bat +0 -1
- package/packs/ltx23-distill-3stage/manifest.yaml +0 -1
- package/packs/qwen-image/install-runpod.sh +0 -1
- package/packs/qwen-image/install-windows.bat +0 -1
- package/packs/qwen-image/manifest.yaml +0 -1
- package/packs/qwen-image-edit/install-runpod.sh +0 -1
- package/packs/qwen-image-edit/install-windows.bat +0 -1
- package/packs/qwen-image-edit/manifest.yaml +0 -1
- package/packs/qwen-image-edit-edit/install-runpod.sh +0 -1
- package/packs/qwen-image-edit-edit/install-windows.bat +0 -1
- package/packs/qwen-image-edit-edit/manifest.yaml +0 -1
- package/packs/wan-animate/install-runpod.sh +0 -1
- package/packs/wan-animate/install-windows.bat +0 -1
- package/packs/wan-animate/manifest.yaml +0 -1
- package/packs/wan-animate-character/install-runpod.sh +0 -1
- package/packs/wan-animate-character/install-windows.bat +0 -1
- package/packs/wan-animate-character/manifest.yaml +0 -1
- package/packs/wan-animate-ofm/install-runpod.sh +0 -1
- package/packs/wan-animate-ofm/install-windows.bat +0 -1
- package/packs/wan-animate-ofm/manifest.yaml +0 -1
- package/packs/wan-longer-videos/install-runpod.sh +0 -1
- package/packs/wan-longer-videos/install-windows.bat +0 -1
- package/packs/wan-longer-videos/manifest.yaml +0 -1
- package/packs/wan-longer-videos-i2v/install-runpod.sh +0 -1
- package/packs/wan-longer-videos-i2v/install-windows.bat +0 -1
- package/packs/wan-longer-videos-i2v/manifest.yaml +0 -1
- package/packs/wan-longer-videos-i2v-96gb/install-runpod.sh +0 -1
- package/packs/wan-longer-videos-i2v-96gb/install-windows.bat +0 -1
- package/packs/wan-longer-videos-i2v-96gb/manifest.yaml +0 -1
- package/packs/wan-longer-videos-t2v/install-runpod.sh +0 -1
- package/packs/wan-longer-videos-t2v/install-windows.bat +0 -1
- package/packs/wan-longer-videos-t2v/manifest.yaml +0 -1
- package/packs/wan-longer-videos-t2v-96gb/install-runpod.sh +0 -1
- package/packs/wan-longer-videos-t2v-96gb/install-windows.bat +0 -1
- package/packs/wan-longer-videos-t2v-96gb/manifest.yaml +0 -1
- package/packs/wan-longer-videos-v2v/install-runpod.sh +0 -1
- package/packs/wan-longer-videos-v2v/install-windows.bat +0 -1
- package/packs/wan-longer-videos-v2v/manifest.yaml +0 -1
- package/packs/wan-longer-videos-v2v-96gb/install-runpod.sh +0 -1
- package/packs/wan-longer-videos-v2v-96gb/install-windows.bat +0 -1
- package/packs/wan-longer-videos-v2v-96gb/manifest.yaml +0 -1
- package/packs/wan-multitalk/install-runpod.sh +0 -1
- package/packs/wan-multitalk/install-windows.bat +0 -1
- package/packs/wan-multitalk/manifest.yaml +0 -1
- package/packs/wan-pusa-extend/install-runpod.sh +0 -1
- package/packs/wan-pusa-extend/install-windows.bat +0 -1
- package/packs/wan-pusa-extend/manifest.yaml +0 -1
- package/packs/wan-transparent/install-runpod.sh +0 -1
- package/packs/wan-transparent/install-windows.bat +0 -1
- package/packs/wan-transparent/manifest.yaml +0 -1
- package/packs/wan-transparent-img2vid/install-runpod.sh +0 -1
- package/packs/wan-transparent-img2vid/install-windows.bat +0 -1
- package/packs/wan-transparent-img2vid/manifest.yaml +0 -1
- package/packs/wan-transparent-img2vid-96gb/install-runpod.sh +0 -1
- package/packs/wan-transparent-img2vid-96gb/install-windows.bat +0 -1
- package/packs/wan-transparent-img2vid-96gb/manifest.yaml +0 -1
- package/packs/z-image-base/install-runpod.sh +0 -1
- package/packs/z-image-base/install-windows.bat +0 -1
- package/packs/z-image-base/manifest.yaml +0 -1
- package/packs/z-image-base-combo/install-runpod.sh +0 -1
- package/packs/z-image-base-combo/install-windows.bat +0 -1
- package/packs/z-image-base-combo/manifest.yaml +0 -1
- package/packs/z-image-base-controlnet/install-runpod.sh +0 -1
- package/packs/z-image-base-controlnet/install-windows.bat +0 -1
- package/packs/z-image-base-controlnet/manifest.yaml +0 -1
- package/packs/z-image-base-img2img/install-runpod.sh +0 -1
- package/packs/z-image-base-img2img/install-windows.bat +0 -1
- package/packs/z-image-base-img2img/manifest.yaml +0 -1
- package/packs/z-image-base-inpaint/install-runpod.sh +0 -1
- package/packs/z-image-base-inpaint/install-windows.bat +0 -1
- package/packs/z-image-base-inpaint/manifest.yaml +0 -1
- package/packs/z-image-base-txt2img/install-runpod.sh +0 -1
- package/packs/z-image-base-txt2img/install-windows.bat +0 -1
- package/packs/z-image-base-txt2img/manifest.yaml +0 -1
- package/packs/z-image-turbo/install-runpod.sh +0 -1
- package/packs/z-image-turbo/install-windows.bat +0 -1
- package/packs/z-image-turbo/manifest.yaml +0 -1
- package/packs/z-image-turbo-combo/install-runpod.sh +0 -1
- package/packs/z-image-turbo-combo/install-windows.bat +0 -1
- package/packs/z-image-turbo-combo/manifest.yaml +0 -1
- package/packs/z-image-turbo-controlnet/install-runpod.sh +0 -1
- package/packs/z-image-turbo-controlnet/install-windows.bat +0 -1
- package/packs/z-image-turbo-controlnet/manifest.yaml +0 -1
- package/packs/z-image-turbo-detail-daemon/install-runpod.sh +0 -1
- package/packs/z-image-turbo-detail-daemon/install-windows.bat +0 -1
- package/packs/z-image-turbo-detail-daemon/manifest.yaml +0 -1
- package/packs/z-image-turbo-img2img/install-runpod.sh +0 -1
- package/packs/z-image-turbo-img2img/install-windows.bat +0 -1
- package/packs/z-image-turbo-img2img/manifest.yaml +0 -1
- package/packs/z-image-turbo-inpainting/install-runpod.sh +0 -1
- package/packs/z-image-turbo-inpainting/install-windows.bat +0 -1
- package/packs/z-image-turbo-inpainting/manifest.yaml +0 -1
- package/packs/z-image-turbo-txt2img/install-runpod.sh +0 -1
- package/packs/z-image-turbo-txt2img/install-windows.bat +0 -1
- package/packs/z-image-turbo-txt2img/manifest.yaml +0 -1
- package/packs/z-image-xy-plot/install-runpod.sh +0 -1
- package/packs/z-image-xy-plot/install-windows.bat +0 -1
- package/packs/z-image-xy-plot/manifest.yaml +0 -1
- package/plugin/skills/flux-txt2img/SKILL.md +9 -4
- package/plugin/skills/wan-scail-replacement/SKILL.md +95 -0
- package/scripts/sync-agents.mjs +18 -8
- package/scripts/test-packs.sh +8 -3
|
@@ -30,7 +30,7 @@ Flux is a guidance-distilled diffusion model family from Black Forest Labs. It u
|
|
|
30
30
|
| Component | Node | Model | Notes |
|
|
31
31
|
|-----------|------|-------|-------|
|
|
32
32
|
| **UNET** | `UNETLoader` | `bigLove_klein1.safetensors` | 17.3GB, Klein 9B variant |
|
|
33
|
-
| **CLIP** | `CLIPLoader` (type=`
|
|
33
|
+
| **CLIP** | `CLIPLoader` (type=`flux2`) | `qwen_3_8b_fp8mixed.safetensors` | Qwen3-8B in text_encoders/ (8.3GB). Use `flux2`, NOT `flux` — both exist in the enum and `flux` fails at the sampler |
|
|
34
34
|
| **VAE** | `VAELoader` | `flux2-vae.safetensors` | Flux 2 specific VAE (321MB) |
|
|
35
35
|
|
|
36
36
|
**Klein 9B vs Flux.1 Dev**: Klein uses Qwen3-8B text encoder (not T5XXL + CLIP-L). It has a different VAE (`flux2-vae.safetensors`). 9B distilled runs in 4 steps; 9B base needs ~50 steps at CFG 5.0. Fits in ~20GB VRAM with FP8.
|
|
@@ -195,11 +195,11 @@ Bad: "masterpiece, best quality, 1girl, cafe, paris"
|
|
|
195
195
|
```json
|
|
196
196
|
{
|
|
197
197
|
"1": { "class_type": "UNETLoader", "inputs": { "unet_name": "bigLove_klein1.safetensors", "weight_dtype": "default" }},
|
|
198
|
-
"2": { "class_type": "CLIPLoader", "inputs": { "clip_name": "qwen_3_8b_fp8mixed.safetensors", "type": "
|
|
198
|
+
"2": { "class_type": "CLIPLoader", "inputs": { "clip_name": "qwen_3_8b_fp8mixed.safetensors", "type": "flux2" }},
|
|
199
199
|
"3": { "class_type": "VAELoader", "inputs": { "vae_name": "flux2-vae.safetensors" }},
|
|
200
200
|
"4": { "class_type": "CLIPTextEncode", "inputs": { "clip": ["2", 0], "text": "<prompt>" }},
|
|
201
201
|
"5": { "class_type": "ConditioningZeroOut", "inputs": { "conditioning": ["4", 0] }},
|
|
202
|
-
"6": { "class_type": "
|
|
202
|
+
"6": { "class_type": "EmptyFlux2LatentImage", "inputs": { "width": 1024, "height": 1024, "batch_size": 1 }},
|
|
203
203
|
"7": { "class_type": "KSampler", "inputs": {
|
|
204
204
|
"model": ["1", 0],
|
|
205
205
|
"positive": ["4", 0],
|
|
@@ -212,7 +212,12 @@ Bad: "masterpiece, best quality, 1girl, cafe, paris"
|
|
|
212
212
|
}
|
|
213
213
|
```
|
|
214
214
|
|
|
215
|
-
**Klein note**: Uses single `CLIPLoader` (not DualCLIPLoader) with `type: "
|
|
215
|
+
**Klein note**: Uses single `CLIPLoader` (not DualCLIPLoader) with `type: "flux2"` and the Qwen3-8B text encoder from `text_encoders/`. The CLIP loader path resolves from `models/text_encoders/`.
|
|
216
|
+
|
|
217
|
+
**Two Flux-2-specific gotchas** (both fail at the KSampler, not at the loader, so the error points at the wrong node):
|
|
218
|
+
- `type` must be **`flux2`**, not `flux`. Both values exist in the CLIPLoader enum, so `flux` loads without complaint and then dies during sampling.
|
|
219
|
+
- Use **`EmptyFlux2LatentImage`**, not `EmptyLatentImage` — Flux 2 uses a different latent channel count.
|
|
220
|
+
- Klein **9B** pairs with the **Qwen3-8B** encoder (`qwen_3_8b*` from `Comfy-Org/vae-text-encorder-for-flux-klein-9b`). The similarly-named `qwen_3_4b` ships in the klein-**4b** repo and is for the 4B model. Mismatching them raises `mat1 and mat2 shapes cannot be multiplied (512x7680 and 12288x4096)` — 7680 = 2560x3 (4B hidden size) vs 12288 = 4096x3 (8B) — which reads as a confusing CLIP error rather than a wrong-file error.
|
|
216
221
|
|
|
217
222
|
## Complete Workflow: Flux.1 Dev + Turbo LoRA (4-Step)
|
|
218
223
|
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wan-scail-replacement
|
|
3
|
+
description: SCAIL-2 in-video character replacement on WAN 2.1 — WanSCAILToVideo + SCAIL2ColoredMask + SAM3, the reference-image framing→scale rule, and the tuning/compositing pitfalls
|
|
4
|
+
globs:
|
|
5
|
+
- "**/*.json"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# SCAIL-2 In-Video Character Replacement (WAN 2.1)
|
|
9
|
+
|
|
10
|
+
SCAIL-2 (zai-org, on WAN 2.1 14B) replaces the person in a driving video with a
|
|
11
|
+
character you supply as a reference image — end-to-end, with no pose maps, and
|
|
12
|
+
with multi-character support. It is the successor to WAN Animate / motion
|
|
13
|
+
transfer for the "swap the subject, keep the motion" job. The official ComfyUI
|
|
14
|
+
template is **`video_wan21_scail2_character_replacement_int8`**, built around
|
|
15
|
+
`WanSCAILToVideo` (+ `SCAIL2ColoredMask`) with a SAM3 mask driving *where* the
|
|
16
|
+
character goes.
|
|
17
|
+
|
|
18
|
+
This skill documents the non-obvious behaviours that cost a full multi-minute
|
|
19
|
+
render to discover. It is not a from-scratch graph — start from the official
|
|
20
|
+
template and apply the guidance below.
|
|
21
|
+
|
|
22
|
+
## The one rule that costs a re-render: reference framing controls SCALE
|
|
23
|
+
|
|
24
|
+
**In `replacement_mode: true`, the reference image's FRAMING controls the output
|
|
25
|
+
character's SIZE — not just its appearance.** The SAM3 mask controls *where* the
|
|
26
|
+
character is placed; the reference image controls *how large*.
|
|
27
|
+
|
|
28
|
+
Measured on a 720x1280 driving clip where the subject occupied ~30% of frame
|
|
29
|
+
height (subject bbox 363 px):
|
|
30
|
+
|
|
31
|
+
| Reference framing | Person bbox in output | vs driving subject |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| Full-bleed portrait (person ~93% of frame) | 621 px | **1.71x oversized** |
|
|
34
|
+
| Reframed (person ~34% of frame) | 364 px | **1.003x — correct** |
|
|
35
|
+
|
|
36
|
+
After reframing, top/bottom registration matched the driving subject within 1 px
|
|
37
|
+
(the character stands on the same ground plane at the same height). Pose transfer
|
|
38
|
+
was correct in *both* cases — only the scale was wrong, which makes it easy to
|
|
39
|
+
misread as "the model works" until you A/B against the source.
|
|
40
|
+
|
|
41
|
+
**Guidance — pad/reframe the reference before you render:**
|
|
42
|
+
|
|
43
|
+
> Pad/reframe the reference image onto a canvas at the working resolution so the
|
|
44
|
+
> person occupies roughly the same fraction of frame height as the subject in the
|
|
45
|
+
> driving video. A full-bleed portrait reference against a wide-shot driving clip
|
|
46
|
+
> renders the character oversized in proportion to the framing mismatch.
|
|
47
|
+
|
|
48
|
+
Why it's a trap: this isn't stated in the template's on-canvas notes, and it does
|
|
49
|
+
not surface in the popular Civitai motion-transfer workflows — those run
|
|
50
|
+
*animation* mode, where the reference legitimately fills the frame.
|
|
51
|
+
|
|
52
|
+
## Tuning trade-off: distill LoRA strength / shift leaks driving-subject detail
|
|
53
|
+
|
|
54
|
+
Running the `lightx2v` distill LoRA at `0.8` with `ModelSamplingSD3 shift 5` (the
|
|
55
|
+
settings the popular Civitai workflow uses) improves colour and detail versus
|
|
56
|
+
`1.0` / `shift 8` — but it also increases adherence to the driving video enough
|
|
57
|
+
that **original-subject details bleed onto the replacement character.** In one
|
|
58
|
+
run the original golfer's neon-yellow shoe appeared on a replacement character
|
|
59
|
+
who wears white shoes in the reference (same seed, same reference, only those two
|
|
60
|
+
params changed). If you see source details you didn't ask for, raise the LoRA
|
|
61
|
+
strength / shift back toward `1.0` / `shift 8`.
|
|
62
|
+
|
|
63
|
+
## Don't "fix" colour with post-hoc compositing — it's a regression
|
|
64
|
+
|
|
65
|
+
The raw SCAIL-2 output shows a measurable colour error (background ~-5 per channel
|
|
66
|
+
from the VAE round-trip; the character loses red ~2.4x faster than green, which
|
|
67
|
+
reads as a slight green cast). It is tempting to composite the generated character
|
|
68
|
+
back over the original plate through the SAM3 mask to "correct" it. **Don't** —
|
|
69
|
+
it measures better but looks worse:
|
|
70
|
+
|
|
71
|
+
- The mask boundary produces an obvious halo.
|
|
72
|
+
- Layering the original plate's props (e.g. a golf club) over generated hands
|
|
73
|
+
severs the grip relationship the model had solved coherently.
|
|
74
|
+
|
|
75
|
+
SCAIL-2 resolves colour, edges, grip and occlusion *jointly*; correcting any one
|
|
76
|
+
of them in isolation breaks the others. Leave the raw output alone.
|
|
77
|
+
|
|
78
|
+
## Models (reference set)
|
|
79
|
+
|
|
80
|
+
The template's int8 build was exercised with:
|
|
81
|
+
|
|
82
|
+
- `wan2.1_14B_SCAIL_2_int8_convrot` — SCAIL-2 model
|
|
83
|
+
- `wan2.1_SCAIL_2_DPO_lora_bf16` — DPO LoRA
|
|
84
|
+
- `lightx2v_I2V_14B_480p_cfg_step_distill_rank64_bf16` — distill LoRA (see tuning note)
|
|
85
|
+
- `Wan2_1_VAE_bf16`
|
|
86
|
+
- `umt5_xxl_fp8_e4m3fn_scaled` — text encoder
|
|
87
|
+
- `clip_vision_h`
|
|
88
|
+
- `sam3.1_multiplex_fp16` — SAM3 mask model
|
|
89
|
+
|
|
90
|
+
VRAM: ~22.2 GB peak at 576x1024 / 81-frame chunks on a 24 GB card.
|
|
91
|
+
|
|
92
|
+
## See also
|
|
93
|
+
|
|
94
|
+
- `wan-t2v-video`, `wan-flf-video` — other WAN 2.x video pipelines
|
|
95
|
+
- `director` — multi-shot scene direction for video pipelines
|
package/scripts/sync-agents.mjs
CHANGED
|
@@ -57,9 +57,25 @@ ${body.trim()}`;
|
|
|
57
57
|
const skillsDir = path.join(PLUGIN_DIR, 'skills');
|
|
58
58
|
if (fs.existsSync(skillsDir)) {
|
|
59
59
|
for (const skillName of fs.readdirSync(skillsDir)) {
|
|
60
|
-
const
|
|
61
|
-
|
|
60
|
+
const skillSrcDir = path.join(skillsDir, skillName);
|
|
61
|
+
if (!fs.statSync(skillSrcDir).isDirectory()) continue;
|
|
62
|
+
const srcPath = path.join(skillSrcDir, 'SKILL.md');
|
|
63
|
+
const destSkillDir = path.join(AGENTS_DIR, 'skills', skillName);
|
|
64
|
+
const destPath = path.join(destSkillDir, 'SKILL.md');
|
|
62
65
|
processSkillOrAgent(srcPath, destPath, skillName, false);
|
|
66
|
+
|
|
67
|
+
// Also copy sibling asset folders the SKILL.md links to (references/, docs/).
|
|
68
|
+
// Without this the synced bundle keeps the SKILL.md but drops the docs it
|
|
69
|
+
// points at, leaving dangling relative-doc links in .agents/skills/<name>/
|
|
70
|
+
// (the class of breakage reported in #552).
|
|
71
|
+
for (const sub of ['references', 'docs']) {
|
|
72
|
+
const subSrc = path.join(skillSrcDir, sub);
|
|
73
|
+
if (fs.existsSync(subSrc) && fs.statSync(subSrc).isDirectory()) {
|
|
74
|
+
const subDest = path.join(destSkillDir, sub);
|
|
75
|
+
fs.cpSync(subSrc, subDest, { recursive: true });
|
|
76
|
+
console.log(`Synced ${subSrc} -> ${subDest}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
63
79
|
}
|
|
64
80
|
}
|
|
65
81
|
|
|
@@ -129,12 +145,6 @@ const mcpConfig = {
|
|
|
129
145
|
CIVITAI_API_TOKEN: ""
|
|
130
146
|
}
|
|
131
147
|
},
|
|
132
|
-
civitai: {
|
|
133
|
-
url: "https://mcp.civitai.com/mcp",
|
|
134
|
-
headers: {
|
|
135
|
-
Authorization: "Bearer ${CIVITAI_API_TOKEN:-}"
|
|
136
|
-
}
|
|
137
|
-
},
|
|
138
148
|
huggingface: {
|
|
139
149
|
url: "https://huggingface.co/mcp",
|
|
140
150
|
headers: {
|
package/scripts/test-packs.sh
CHANGED
|
@@ -43,9 +43,14 @@ for dir in "$PACKS"/*/; do
|
|
|
43
43
|
( cd "$root" && PATH="$BIN:$PATH" bash "$sh" ) > "$WORK/r1.log" 2>&1
|
|
44
44
|
nodes=$(find "$root/custom_nodes" -mindepth 1 -maxdepth 1 -type d | wc -l | tr -d ' ')
|
|
45
45
|
models=$(find "$root/models" -type f | wc -l | tr -d ' ')
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
# Expected node count is derived from the generated installer itself (one
|
|
47
|
+
# `clone` invocation per custom_nodes entry). A pack may legitimately declare
|
|
48
|
+
# zero custom nodes (all nodes native to core ComfyUI) — assert the installer
|
|
49
|
+
# staged exactly what it declares rather than a blanket >=1.
|
|
50
|
+
want_nodes=$(grep -cE '^clone ' "$sh" || true)
|
|
51
|
+
echo " nodes=$nodes/$want_nodes models=$models"
|
|
52
|
+
if [ "$nodes" -ne "$want_nodes" ] || [ "$models" -lt 1 ]; then
|
|
53
|
+
echo " [FAIL] expected $want_nodes node(s) and >=1 model staged"; fail=1
|
|
49
54
|
fi
|
|
50
55
|
|
|
51
56
|
echo "== $name: second run (idempotency) =="
|