a3f63e56e2
- 10_Wiki/Comfyui/: ComfyUI docs generated via /wikify - 00_Raw/_youtube/: /youtube extraction outputs - Move some 00_Raw originals into 10_Wiki/Topics_meeting; remove empty canvases and stray files Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
5.4 KiB
5.4 KiB
id, title, category, status, verification_status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, created_at, updated_at, review_reason, merge_리스트, tags, raw_sources, applied_in, github_commit
| id | title | category | status | verification_status | canonical_id | aliases | duplicate_of | source_trust_level | confidence_score | created_at | updated_at | review_reason | merge_리스트 | tags | raw_sources | applied_in | github_commit | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| hidden-and-flexible-inputs---comfyui | Hidden and Flexible inputs - ComfyUI | 10_Wiki/Topics | draft | conceptual | B | 0.8 | 2026-05-20 | 2026-05-20 |
|
|
Hidden and Flexible inputs - ComfyUI
🎯 한 줄 통찰 (One-line insight)
ComfyUI 커스텀 노드 개발 시 서버로부터 특정 정보를 요청하기 위한 숨겨진 입력(Hidden inputs)과 데이터 타입을 유연하게 정의하는 방법론에 대한 가이드입니다.
🧠 핵심 개념 (Core concepts)
- Hidden inputs: 클라이언트 측에는 나타나지 않지만, 서버로부터 UNIQUE_ID, PROMPT, EXTRA_PNGINFO, DYNPROMT와 같은 특정 정보를 요청할 수 있는 입력 옵션입니다.
- Custom datatypes: 노드 간 데이터 전달을 위해 고유한 이름을 가진 사용자 정의 타입을 생성하고,
forceInput옵션을 통해 위젯이 아닌 입력으로 강제하는 기능입니다. - Wildcard inputs:
*기호를 사용하여 모든 소스에 연결 가능한 입력을 정의하며, 백엔드 검증을 건너뛰기 위해[[VALIDATE_INPUTS]]를 활용할 수 있습니다. - Dynamically created inputs: 클라이언트 측에서 동적으로 생성된 데이터를 처리하기 위해
ContainsAnyDict와 같은 구조를 사용하여 임의의 이름으로 전달되는 데이터를 수용합니다.
🧩 추출된 패턴 (Extracted patterns)
- 서버 요청 패턴:
INPUT_TYPES내hidden키를 사용하여 서버의 특정 데이터에 접근하는 구조화된 방식. - 타입 안전성 패턴: 커스텀 타입을 정의하고, 출력과 입력의 타입을 일치시켜 데이터 흐름을 제어하는 방식.
- 유연한 검증 패턴: 백엔드에서 지원하지 않는 와일드카드(
*) 기능을 사용하기 위해VALIDATE_INPUTS함수를 통해 검증 로직을 재정의하는 접근법.
📖 세부 내용 (Details)
1. Hidden Inputs (숨겨진 입력)
커스텀 노드는 INPUT_TYPES의 hidden 딕셔너리를 통해 서버로부터 다음 정보를 요청할 수 있습니다:
| 필드 | 타입 | 설명 |
|---|---|---|
unique_id |
dict[str, str] |
UNIQUE_ID: 노드의 유일 식별자. 클라이언트 측의 id 속성과 일치하며 클라이언트-서버 통커뮤니케이션에 사용됨. |
prompt |
dict[str, str] |
PROMPT: 클라이언트가 서버로 보낸 전체 프롬프트 객체. |
extra_pnginfo |
dict[str, str] |
EXTRA_PNGINFO: 저장될 .png 파일의 메타데이터에 복사될 딕셔너리. 추가 정보 저장 및 노드 간 통신용으로 사용됨. |
dynamic_prompt |
dict[str, str] |
DYNPROMPT: comfy_execution.graph.DynamicPrompt 인스턴스. 실행 중 Node Expansion에 따라 변할 수 있음 (고급 루프 구현용). |
2. Flexible Inputs (유연한 입력)
Custom Datatypes (사용자 정의 데이터 타입)
- 정의: 고유한 대문자 이름(예:
CHEESE)을 가진 타입을 생성하여 노드 간 데이터를 전달합니다. - 제약 사항: 클라이언트가 해당 타입을 인지하지 못하므로, 위젯이 아닌 입력으로 작동하도록
forceInput: True설정을 권장합니다.
Wildcard Inputs (와일드카드 입력)
*를 사용하여 모든 소스에 연결 가능한 입력을 정의할 수 있습니다.- 백엔드 검증을 건너뛰기 위해
VALIDATE_INPUTS함수에서input_types파라미터를 활용합니다.
Dynamically Created Inputs (동적 생성 입력)
- 클라이언트에서 동적으로 생성된 데이터에 접근하기 위해
ContainsAnyDict(dict)클래스를 사용하여 임의의 키를 가진 데이터를 수용할 수 있습니다.
⚖️ 모돌 및 업데이트 (Contradictions & updates)
- 메타데이터 관련 주의사항:
disable_metadata옵션으로 ComfyUI를 시작할 경우,EXTRA_PNGINFO에 저장된 데이터가 저장되지 않을 수 있습니다.
🛠️ 적용 사례 (Applied in summary)
- 고급 노드 구현:
DYNPROMPT를 사용하여 커스텀 노드 내에서 루프(loops) 기능을 구현하는 사례. - 데이터 전달 전략:
CHEESE와 같은 사용자 정의 타입을 생성하여 특정 타입의 출력만 특정 입력에 연결되도록 제한하는 설계.
✅ 검증 상태 및 신뢰도
- 상태: draft
- 검증 단계: conceptual
- 출처 신뢰도: B (Primary Source — 웹사이트 본문 직접 추출)
- 중복 검ass 결과: 신규 생성 (New discovery)
🔗 관련 문서 링크 (Related document links)
- INPUT_TYPES - 노드의 입력 및 위젯을 정의하는 핵심 메서드.
- VALIDATE_INPUTS - 백엔드에서의 타입 검증 로직을 제어하기 위한 함수.
- comfy_execution.graph.DynamicPrompt - 실행 중 동적으로 변할 수 있는 프롬프트 객체.
- forceInput - 커스텀 위젯을 입력 필드로 강제하는 설정 방법.
📝 변경 이력 (Change history)
- 2026-05-20: Astra /wikify 로 https://docs.comfy.org/custom-nodes/backend/more_on_inputs 본문에서 초안 생성.