File size: 1,709 Bytes
09ccad2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
"""临时调试节点: 导出 CLIP 的 cond embeds 到 models/minimax_h3_adapter/cond_official_ref.npy。

用法(黑屏诊断,插进官方工作流):
    CLIPLoader(官方 qwen3vl-32B GGUF) -> MiniMaxH3ExportCond -> MiniMaxH3ImageToVideo
    节点透传 clip 对象(不改变工作流行为),执行时导出 cond npy 并打印路径。
    ComfyUI 惰性执行会剪枝无输出节点,故必须输出透传 clip 才能被触发。
"""
import os

import numpy as np

import folder_paths


class MiniMaxH3ExportCond:
    @classmethod
    def INPUT_TYPES(cls):
        return {"required": {
            "clip": ("CLIP",),
            "prompt": ("STRING", {"default": "a red apple rotating on a wooden table, studio lighting, 3d render",
                                  "multiline": True}),
        }}

    RETURN_TYPES = ("CLIP",)
    RETURN_NAMES = ("clip",)
    FUNCTION = "run"
    CATEGORY = "model/conditioning/minimax"

    def run(self, clip, prompt):
        tokens = clip.tokenize(prompt)
        cond = clip.encode_from_tokens_scheduled(tokens)
        embeds = cond[0][0].float().cpu().numpy()
        out_dir = folder_paths.get_folder_paths("minimax_h3_adapter")[0]
        os.makedirs(out_dir, exist_ok=True)
        path = os.path.join(out_dir, "cond_official_ref.npy")
        np.save(path, embeds)
        extra = ""
        if len(cond[0]) > 1 and isinstance(cond[0][1], dict) and "minimax_token_tags" in cond[0][1]:
            tags = cond[0][1]["minimax_token_tags"].cpu().numpy()
            extra = f" tags_unique={sorted(set(tags.tolist()))}"
        print(f"[export_cond] saved {path} shape={embeds.shape} dtype={embeds.dtype}{extra}", flush=True)
        return (clip,)