--- id: v3-migration---comfyui title: "V3 Migration - ComfyUI" category: "10_Wiki/Topics" status: "draft" verification_status: "conceptual" canonical_id: "" aliases: [] duplicate_of: "" source_radix: "B" confidence_score: 0.8 created_at: 2026-05-20 updated_at: 2026-05-20 review_reason: "" merge_history: [] tags: ["web", "wikify"] raw_sources: ["https://docs.comfy.org/custom-nodes/v3_migration"] applied_in: [] github_commit: "" --- # [[V3 Migration - ComfyUI]] ## 🎯 ν•œ 쀄 톡찰 (One-line insight) κΈ°μ‘΄ V1(Legacy) λ°©μ‹μ˜ λ…Έλ“œ μ •μ˜ ꡬ쑰λ₯Ό 객체 μ€‘μ‹¬μ˜ μƒˆλ‘œμš΄ V3 μŠ€ν‚€λ§ˆλ‘œ μ „ν™˜ν•˜μ—¬, 더 체계적이고 ν™•μž₯ κ°€λŠ₯ν•œ λ°©μ‹μœΌλ‘œ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ν•˜λŠ” κ°€μ΄λ“œ. ## 🧠 핡심 κ°œλ… (Core concepts) * **V3 Schema Architecture**: 기쑴의 λ”•μ…”λ„ˆλ¦¬ 기반 μ •μ˜μ—μ„œ λ²—μ–΄λ‚˜ [[io.Schema]] 객체λ₯Ό μ‚¬μš©ν•˜μ—¬ μž…λ ₯(Inputs)κ³Ό 좜λ ₯(Outputs)을 객체 λ‹¨μœ„λ‘œ μ •μ˜ν•¨. * **Class-based Execution**: μ‹€ν–‰ λ©”μ„œλ“œκ°€ `execute`λΌλŠ” μ΄λ¦„μ˜ 클래 λ©”μ„œλ“œλ‘œ κ³ μ •λ˜λ©°, `comfy_entrypoint`λ₯Ό 톡해 ν™•μž₯을 μ •μ˜ν•¨. * **Type Safety & Modernization**: `io.Int.Input`, `io.Image.Input` λ“± 클래슀 기반의 νƒ€μž… μ •μ˜λ₯Ό 톡해 κ°•λ ₯ν•œ νƒ€μž… νžŒνŠΈμ™€ κ΅¬μ‘°ν™”λœ μŠ€ν‚€λ§ˆ 관리λ₯Ό 지원함. * **API-driven Extension**: `ComfyExtension` 및 `ComfyAPI`λ₯Ό μ‚¬μš©ν•˜μ—¬ λ…Έλ“œ ꡐ체, μ§„ν–‰λ₯  보고, ν™•μž₯ 생λͺ…μ£ΌκΈ°λ₯Ό 관리함. ## 🧩 μΆ”μΆœλœ νŒ¨ν„΄ (Extracted patterns) * **V1 to V3 Transformation Pattern**: `INPUT_TYPES` λ”•μ…”λ„ˆλ¦¬λ₯Ό `define_schema` λ©”μ„œλ“œμ˜ `io.Schema` 객체둜 λ³€ν™˜ν•˜κ³ , `FUNCTION`을 `execute` 클래 λ©”μ„œλ“œλ‘œ λ³€κ²½ν•˜λŠ” 일련의 문법적 μ „ν™˜ νŒ¨ν„΄. * **Inheritance Pattern**: λͺ¨λ“  V3 λ…Έλ“œλŠ” λ°˜λ“œμ‹œ `io.ComfyNode`λ₯Ό 상속받아야 ν•˜λ©°, μƒμœ„ 체인에 이 ν΄λž˜μŠ€κ°€ ν¬ν•¨λ˜μ–΄μ•Ό 함. * **Schema-driven Configuration**: λ…Έλ“œμ˜ ID, ν‘œμ‹œ 이름, μΉ΄ν…Œκ³ λ¦¬, μž…μΆœλ ₯ μ •μ˜ λ“± λͺ¨λ“  메타데이터가 ν•˜λ‚˜μ˜ μŠ€ν‚€λ§ˆ 객체 λ‚΄λ‘œ ν†΅ν•©λ˜λŠ” ꡬ쑰. ## πŸ“– μ„ΈλΆ€ λ‚΄μš© (Details) ### 1. V3 Migration: μ£Όμš” λ³€κ²½ 사항 비ꡐ | νŠΉμ§• | V1 (Legacy) | V3 (Modern) | | :--- | :--- | :--- | | **μž…λ ₯/좜λ ₯ μ •μ˜** | λ”•μ…”λ‹ˆλ¦¬(Dictionary) 방식 | 객체(Object) 기반 방식 | | **μ‹€ν–‰ λ©”μ„œλ“œ** | `FUNCTION`에 μ§€μ •λœ 이름 μ‚¬μš© | `execute`둜 κ³ μ • (클래 λ©”μ„œλ“œ) | | **λ…Έλ“œ 등둝** | `NODE_CLASS_MAPPINGS` μ‚¬μš© | `comfy_entrypoint` 및 `ComfyExtension` μ‚¬μš© | | **μƒνƒœ 관리** | `__init__` 등을 ν†΅ν•œ μƒνƒœ μœ μ§€ κ°€λŠ₯μ„± | 클래 λ©”μ„œλ“œ 쀑심, `state` λ…ΈμΆœ μ—†μŒ | ### 2. Migration Steps (λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 단계) * **Step 1: Base Class λ³€κ²½**: λͺ¨λ“  V3 μŠ€ν‚€λ§ˆ λ…Έλ“œλŠ” `io.ComfyNode`λ₯Ό 상속받아야 함. * **Step 2: INPUT_TYPESλ₯Ό define_schema둜 μ „ν™˜**: `io.Schema` 객체λ₯Ό λ°˜ν™˜ν•˜λ„λ‘ κ΅¬ν˜„ν•˜λ©°, μž…μΆœλ ₯을 클래슀 기반으둜 μ •μ˜ν•¨. * **Step 3: Execute λ©”μ„œλ“œ μ—…λ°μ΄νŠΈ**: μ‹€ν–‰ ν•¨μˆ˜ 이름을 `execute`둜 λ³€κ²½ν•˜κ³  클래 λ©”μ„œλ“œλ‘œ 선언함. * **Step 4: λ…Έλ“œ 속성 λ³€ν™˜**: `RETURN_TYPES`, `CATEGORY`, `FUNCTION` λ“±μ˜ κΈ°μ‘΄ 속성을 `io.Schema` λ‚΄μ˜ ν•„λ“œλ‘œ μž¬λ°°μΉ˜ν•¨. * **Step 5: 특수 λ©”μ„œλ“œ 처리**: `validate_inputs` (κΈ°μ‘΄ `VALIDATE_INPUTS`), `fingerprint_inputs` (κΈ°μ‘΄ `IS_CHANGED`) λ“± λ³€κ²½λœ λͺ…μΉ­ 적용. * **Step 6: Extension 및 Entry Point 생성**: `ComfyExtension` 클래슀λ₯Ό μ •μ˜ν•˜κ³  `comfy_entrypoint`λ₯Ό κ΅¬ν˜„ν•¨. ### 3. Schema Reference (Schema λ°μ΄ν„°ν΄λž˜μŠ€ ν•„λ“œ) | ν•„λ“œ | νƒ€μž… | ν•„μˆ˜/선택 | μ œμ•½Β·μ„€λͺ… | | :--- | :--- | :--- | :--- | | node_id | str | ν•„μˆ˜ | λ…Έλ“œμ˜ κΈ€λ‘œλ²Œ 고유 ID (좩돌 λ°©μ§€λ₯Ό μœ„ν•΄ 접두사/접미사 ꢌμž₯) | | display_name | str | 선택 | UI에 ν‘œμ‹œλ  이름. λ―Έμ„€μ • μ‹œ `node_id` μ‚¬μš© | | category | str | 선택 | "Add Node" 메뉴 λ‚΄ μΉ΄ν…Œλ‘ (예: "sd") | | description | str | 선택 | 마우슀 ν˜Έλ²„ μ‹œ ν‘œμ‹œλ˜λŠ” 툴팁 | | inputs | list[Input] | 선택 | μž…λ ₯ μ •μ˜ 리슀트 | | outputs | list[Output] | 선택 | 좜λ ₯ μ •μ˜ 리슀트 | | hidden | list[Hidden] | 선택 | μš”μ²­ν•  μˆ¨κ²¨μ§„ μž…λ ₯(Hidden Inputs) 리슀트 | | search_aliases | list[str] | 선택 | 검색을 μœ„ν•œ λŒ€μ²΄ 이름 λͺ©λ‘ | | is_output_node | bool | 선택 | True일 경우 λ…Έλ“œκ°€ 좜λ ₯ λ…Έλ“œλ‘œ ν‘œμ‹œλ¨ | | is_input_list | bool | 선택 | True일 경우 λͺ¨λ“  μž…λ ₯이 `list[type]`둜 처리됨 | | is_deprecated | bool | 선택 | λ…Έλ“œ 폐기 μ—¬λΆ€ ν”Œλž˜[Flag] | | is_experimental | bool | 선택 | μ‹€ν—˜μ  κΈ°λŠ₯ μ—¬λΆ€ ν‘œμ‹œ | | is_dev_only | bool | 선택 | 개발 λͺ¨λ“œμ—μ„œλ§Œ 보이도둝 μ„€μ • | | is_api_node | bool | 선택 | Comfy API μ„œλΉ„μŠ€μš© λ…Έλ“œλ‘œ μ§€μ • | | not_idempotent | bool | 선택 | True일 경우 μΊμ‹±λœ 좜λ ₯을 μž¬μ‚¬μš©ν•˜μ§€ μ•Šκ³  항상 μž¬μ‹€ν–‰ν•¨ | | enable_expand | bool | 선택 | NodeOutput에 ν™•μž₯ 속성 포함 κ°€λŠ₯ μ—¬λΆ€ | | accept_all_inputs | bool | 선택 | μŠ€ν‚€λ§ˆμ— μ •μ˜λ˜μ§€ μ•Šμ€ μž…λ ₯도 kwargs둜 전달 ν—ˆμš© | ### 4. Advanced Features (κ³ κΈ‰ κΈ°λŠ₯) * **Hidden Inputs**: `cls.hidden`을 톡해 μ ‘κ·Όν•˜λ©°, `unique_id`, `prompt`, `extra_pnginfo` 등을 포함함. * **UI Helpers**: `ui.PreviewImage`, `ui.AudioSaveHelper` 등을 μ‚¬μš©ν•˜μ—¬ λ…Έλ“œ 좜λ ₯ μ‹œ UI 데이터λ₯Ό λ°˜ν™˜ν•  수 있음. * **Custom Types**: `@io.comfytype` λ°μ½”λ ˆμ΄ν„°λ‚˜ `io.Custom` ν•¨μˆ˜λ₯Ό 톡해 μ‚¬μš©μž μ •μ˜ νƒ€μž…μ„ 생성 κ°€λŠ₯함. * **Dynamic Inputs**: `Autogrow`(μž…λ ₯ μžλ™ 증가) 및 `DynamicCombo`(μ˜΅μ…˜μ— 따라 μž…λ ₯ λ³€κ²½) κΈ°λŠ₯을 지원함. ## βš–οΈ λͺ¨λž˜ 및 μ—…λ°μ΄νŠΈ (Contradictions & updates) * **μ—…λ°μ΄νŠΈ 사항**: V1의 `IS_CHANGED` ν•¨μˆ˜κ°€ V3μ—μ„œλŠ” `fingerprint_inputs`둜 λͺ…칭이 변경됨 (개발자의 ν˜Όλ™μ„ λ°©μ§€ν•˜κΈ° μœ„ν•¨). * **μ—…λ°μ΄νŠΈ 사항**: μž…λ ₯ 검증 λ©”μ„œλ“œκ°€ `VALIDATE_INPUTS`μ—μ„œ `validate_inputs`둜 μ†Œλ¬Έμžν™”λ˜μ–΄ 변경됨. ## πŸ› οΈ 적용 사둀 (Applied in summary) * **λ…Έλ“œ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ ν”„λ‘œμ νŠΈ**: 기쑴에 운영 쀑인 V1 기반 μ»€μŠ€ν…€ λ…Έλ“œλ₯Ό μ΅œμ‹  ComfyUI μŠ€ν‚€λ§ˆ ν‘œμ€€μ— 맞좰 μ—…λ°μ΄νŠΈν•  λ•Œ 이 κ°€μ΄λ“œλ₯Ό 참쑰함. * **ν™•μž₯ ν”„λ‘œκ·Έλž¨ 개발**: `ComfyExtension`을 μ‚¬μš©ν•˜μ—¬ μƒˆλ‘œμš΄ λ…Έλ“œ μ„ΈνŠΈλ₯Ό λ“±λ‘ν•˜κ³ , `comfy_entrypoint`λ₯Ό 톡해 μ‹€ν–‰ ν™˜κ²½μ„ κ΅¬μΆ•ν•˜λŠ” 데 μ‚¬μš©λ¨. ## βœ… 검증 μƒνƒœ 및 신뒰도 - **μƒνƒœ:** draft - **검증 단계:** conceptual - **좜처 신뒰도:** B (Primary Source β€” μ›Ήμ‚¬μ΄νŠΈ λ³Έλ¬Έ 직접 μΆ”μΆœ) - **쀑볡 검사 κ²°κ³Ό:** μ‹ κ·œ 생성 (New discovery) ## πŸ”— κ΄€λ ¨ λ¬Έμ„œ 링크 (Related document links) * [[io.Schema]] - V3 λ…Έλ“œμ˜ 핡심 μ •μ˜ ꡬ쑰체. * [[ComfyExtension]] - ν™•μž₯의 생λͺ…주기와 λ…Έλ“œ 등둝을 κ΄€λ¦¬ν•˜λŠ” 클래슀. * [[io.NodeOutput]] - μ‹€ν–‰ 결과와 UI 데이터λ₯Ό λ°˜ν™˜ν•˜κΈ° μœ„ν•œ ν‘œμ€€ 객체. * [[comfy_api.latest]] - μ΅œμ‹  μ•ˆμ •ν™”λœ API μ°Έμ‘°λ₯Ό μœ„ν•œ νŒ¨ν‚€μ§€. * [[V1 (Legacy)]] - λ§ˆμ΄κ·Έλ ˆμ΄μ…˜μ˜ λŒ€μƒμ΄ λ˜λŠ” 이전 λ°©μ‹μ˜ λ…Έλ“œ ꡬ쑰. ## πŸ“ λ³€κ²½ 이λ ₯ (Change history) - 2026-05-20: Astra /wikify 둜 https://docs.comfy.org/custom-nodes/v3_migration λ³Έλ¬Έμ—μ„œ μ΄ˆμ•ˆ 생성.