---
id: hidden-and-flexible-inputs---comfyui
title: "Hidden and Flexible inputs - ComfyUI"
category: "10_Wiki/Topics"
status: "draft"
verification_status: "conceptual"
canonical_id: ""
aliases: []
duplicate_of: ""
source_trust_level: "B"
confidence_score: 0.8
created_at: 2026-05-20
updated_at: 2026-05-20
review_reason: ""
merge_리스트: []
tags: ["web", "wikify"]
raw_sources: ["https://docs.comfy.org/custom-nodes/backend/more_on_inputs"]
applied_in: []
github_commit: ""
---

# [[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 본문에서 초안 생성.