Files
ruminar-ComfyUI-CheckpointH…/doc/CheckpointListSelector.md
T

7.1 KiB
Raw Blame History

💜 Checkpoint List Selector (頭脳)

Checkpoint List Selector は、リポジトリ内に存在するすべてのCheckpointを一手に統括し、状況に応じてその役割を美しく変化させる「シャドウガーデンの司令塔」じゃ。

最大の特徴は、ComfyUIの常識である「ノード同士を線(ワイヤー)で繋ぐ」という概念を飛び越え、キャンバス上の他のノードへ好きなタイミングで遠隔から情報をインジェクション(無線通信)できる点にあるのじゃ!

image

🔌 入出力仕様(Specifications)

📥 入力(Inputs)

  • checkpoint (必須 / COMBO): 管理・検分対象とするCheckpointをリストから選択する。
  • ※このリストはマウスホイールでのスクロール、矢印ボタン、スクロールバーのドラッグなど、極めて快適なUI操作をフルサポートしておるぞ。

📤 出力(Outputs)

  • ckpt_name_str (STRING): 現在選択されているCheckpointのファイルパス文字列。
  • ※この出力を他のノードに「繋ぐか・繋がないか」によって、ノードのアビリティが動的にトグル(変身)する仕様じゃ!

🎯 覚醒する2つのモード(Dynamic Mode Switching)

このノードの ckpt_name_str 出力の配線状態によって、UI上のメインボタンが自動で切り替わるのじゃ。

🏹 1. Push to Local List モード (スタンドアロン運用)

  • 発動条件: ckpt_name_str が、キャンバス上のレビュー系ノード(TaggerやPreview)に接続されていない場合。
  • 効果: ボタンが 🏹 Push to Local List になる。リストで選んだモデルを、隣のタブで絶賛爆走中の Checkpoint Name Cycler の一時的な緊急割り込みレーン(Local List)へダイレクトに送り込むことができるぞ。

🎯 2. Sync Checkpoint モード (ジュークボックス棚卸し運用)

  • 発動条件: ckpt_name_str が、Checkpoint Status Tagger や ImageDir Preview に接続されている場合。
  • 効果: ボタンが 🎯 Sync Checkpoint という名の「遠隔無線スイッチ」へと覚醒する!このボタンを押した瞬間、後述する【無線通信ハック】が発動するのじゃ。

🧠 技術的深淵:【配線なき遠隔無線通信(Wireless Event Injection)】

なぜ、ジョブを1ミリも実行(Queue)していないのに、別タブの生成ラインを邪魔せずに過去画像を瞬時に呼び出せるのか?

ComfyUIの標準的な設計において、ノードからノードへデータを渡すには、必ずキャンバス上でスパゲッティのように配線(ワイヤー)を繋がねばならん。そして、その線を通じてデータが流れるのは、「プロンプトサーバーにジョブが登録(Queue)され、上流から順番に処理が実行されたその瞬間」だけじゃ。

もし、過去のCheckpointをレビュー(棚卸し)するためにいちいち配線を繋いでジョブを実行していたら、

  • 「今まさに裏で500件の夜間バッチを全力疾走させている生成ライン」のキューに割り込んでしまい、生成パイプラインが空中衝突して大破壊される
  • レビューしたいモデルを切り替えるたびに、わざわざ中身のないダミーのジョブを実行せねばならず、恐ろしくテンポが悪い

という地獄のような制限が課せられてしまう。

これをエレガントに粉砕するために、Checkpoint List Selector に搭載されたのが、配線を一切使わずに情報を飛ばす 「遠隔無線通信(フロントエンド・非同期イベント)」 技術じゃ!

【従来の有線接続(シリアル処理)】
 [Selector] ═════(配線)═════> [Preview/Tagger]
     ↓
 ジョブを実行(Queue)して、順番が回ってくるまでデータが一切流れない!
 裏で走っている別の生成ジョブを破壊してしまう!

【HandpickerSuiteの無線ハック(非同期処理)】
 [Selector]                 [Preview/Tagger]
     │                           ▲
     └─ (非同期API / JS Event) ──┘ ⚡【配線なしで直接パルスを送信!】
 
 ジョブの実行(Queue)は一切不要!
 ComfyUIの「UI(画面)だけを間借り」して、裏の生成ラインを1ミリも邪魔せずに、
 好きなタイミングでピンポイントにモデル情報だけを裏から送り込む!

🎯 Sync Checkpoint ボタンを押したその瞬間、このノードはComfyUIのグラフ実行システムを完全にバイパス(黙殺)する。 ジョブのキューを1件も積むことなく、フロントエンド(JavaScript)のカスタムイベントを通じて、接続されたTaggerやPreviewの網膜(DOM)へ直接「このモデルを表示せよ!」「このモデルの過去画像を逆探知せよ!」というパルス(信号)をワイヤレスでブチ込むのじゃ!

これにより、メインブラウザ(タブA)で何百件ものAI美女をノンストップで量産させ続けたまま、別ブラウザ(タブB)でこのSelectorを優雅にポチポチ操作し、ComfyUIのインターフェースだけを贅沢に間借りして、SSDの中身を冷徹に仕分けるという「夢の並列棚卸しワークフロー」が完全実現したのじゃよ!

(※もちろん、この無線パルスは HPS_TAB_ID によってタブごとに完璧に隔離(時空隔離)されているため、別タブのSelectorをどれだけ連打しようが、隣で爆走中の生成タブ側の挙動を破壊することは絶対にないから安心されよ!)


⚡ おまけ:有線接続の挙動について(一応の補足)

「じゃあ、このノードを普通の有線ノードとして、そのままKSamplerのモデル読み込みに繋いだらどうなるのじゃ?」と思う勘のいいハッカーもおるかもしれん。 結論から言うと、普通に動作するぞ。 その場合は一般的なCheckpoint選択ノードと全く同じように、ジョブ実行時にその瞬間に選ばれているCheckpointのパスが静的に流れる仕様じゃ。

じゃがな……そんな普通の有線運用をするくらいなら、標準のノードを使えば良い話! この Checkpoint List Selector の真の価値は、「線を繋がずに時空を超えて情報をインジェクションする無線運用」 にこそある。我がシャドウガーデンの団員たるもの、ぜひこのスマートな無線棚卸しモード(Sync Checkpoint)の快感を骨の髄まで味わってくりゃれ!

CheckpointListSelector説明画像