chore(brain): ASTRA 성장 자산 동기화 — 기능 인벤토리·growth(약점프로필/학습큐)·일화기억·장기기억·회의록 원문
This commit is contained in:
+83
@@ -0,0 +1,83 @@
|
||||
---
|
||||
id: getting-started---comfyui
|
||||
title: "Getting Started - ComfyUI"
|
||||
category: "10_Wiki/Topics"
|
||||
status: "draft"
|
||||
verification_status: "conceptual"
|
||||
canonical_id: ""
|
||||
aliases: []
|
||||
duplicate_of: ""
|
||||
source_trust_level: "B"
|
||||
confidence_score: 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/walkthrough"]
|
||||
applied_in: []
|
||||
github_commit: ""
|
||||
---
|
||||
|
||||
# [[Getting Started - ComfyUI]]
|
||||
|
||||
## 🎯 한 줄 통찰 (One-line insight)
|
||||
[[ComfyUI]]의 커스텀 노드를 개발하기 위해 Python 백엔드 코드 작성부터 JavaScript 클라이언트 확장까지의 전 과정을 단계별로 안내하는 가이드입니다.
|
||||
|
||||
## 🧠 핵심 개념 (Core concepts)
|
||||
* **Custom Node Development**: [[Python]] 클래스를 사용하여 [[ComfyUI]]에 새로운 기능을 추가하는 과정입니다.
|
||||
* **Node Structure**: 커스텀 노드는 `CATEGORY`, `INPUT_TYPES`, `RETURN_TSYPES`, `FUNCTION`이라는 네 가지 필수 요소를 포함해야 합니다.
|
||||
* **Backend-to-Frontend Communication**: `PromptServer`를 통해 서버에서 클라이언트로 메시지를 전송하여 UI에 피드백을 줄 수 있습니다.
|
||||
* **Client Extension**: [[JavaScript]]를 사용하여 클라이언트 측의 동작을 확장하고 인터페이스를 조정할 수 있습니다.
|
||||
|
||||
## 🧩 추출된 패턴 (Extracted patterns)
|
||||
* **Scaffolding Pattern**: `comfy-cli`를 사용하여 프로젝트 디렉토리 구조와 기본 설정을 자동 생성하는 방식입니다.
|
||||
* **Data Processing Pattern**: [[torch.Tensor]] 형태의 이미지 데이터를 입력받아 특정 연산(평균, 채널별 계산 등)을 통해 결과값을 도출하는 로ct 패턴이 반복됩니다.
|
||||
* **Registration Pattern**: `NODE_CLASS_MAPPINGS`와 `NODE_DISPLAY_NAME_MAPPINGS`를 통해 작성된 노드를 [[ComfyUI]] 시스템에 등록하는 구조입니다.
|
||||
|
||||
## 📖 세부 내용 (Details)
|
||||
|
||||
### 1. 커스텀 노드 개발 준비
|
||||
* **전제 조건**: 작동 가능한 [[ComfyUI]] 설치 및 `comfy-cli` 설치가 필요합니다.
|
||||
* **프로젝트 설정**: `cd ComfyUI/custom_nodes` 경로에서 `comform node scaffold` 명령어를 사용하여 프로젝트를 생성할 수 있습니다.
|
||||
|
||||
### 2. 노드 정의 (Defining the Node)
|
||||
커스텀 노드는 Python 클래스로 정의되며 다음의 네 가지 핵심 요소를 포함해야 합니다:
|
||||
* **CATEGORY**: 노드가 메뉴의 어느 위치에 표시될지 지정합니다.
|
||||
* **INPUT_TYPES**: 노드가 받을 입력값(Dictionary 형태)을 정의하는 클래 메서드입니다.
|
||||
* **RETURN_TYPES**: 노드가 출력할 데이터 타입의 튜플입니다.
|
||||
* **FUNCTION**: 노드 실행 시 호출될 메서드의 이름입니다.
|
||||
|
||||
### 3. 주요 기능 구현 (The main function)
|
||||
* 이미지 처리를 위해 `torch` 라이러리를 사용하며, 입력된 이미지는 `[B, H, W, C]` 형태의 `torch.Tensor`로 처리됩니다.
|
||||
* `.flatten()`, `torch.mean()`, `.item()` 등의 메서드를 사용하여 텐서 데이터를 Python float 값으로 변로 변환하여 연산할 수 있습니다.
|
||||
|
||||
### 4. 노드 등록 및 확장 (Register & Add Options)
|
||||
* **등록**: `src/nodes.py` 파일의 끝에 `NODE_CLASS_MAPPINGS`를 수정하여 노드를 등록해야 하며, 수정 후에는 [[ComfyUI]] 재시작이 필수적입니다.
|
||||
* **옵션 추가**: `INPUT_TYPES` 내에 새로운 위젯(예: mode 선택)을 추가하여 기능의 범위를 확장할 수 있습니다.
|
||||
|
||||
### 5. 클라이언트 확장 (Client Extension)
|
||||
* `web/js` 디렉토리를 생성하고 `__init__.py`에서 `WEB_DIRECTORY`를 내보내도록 설정합니다.
|
||||
* `app.registerExtension`을 통해 서버로부터 받은 메시지를 수신하는 리스너를 구축할 수 있습니다.
|
||||
|
||||
## ⚖️ 모동 및 업데이트 (Contradictions & updates)
|
||||
본문 내용 중 상충되는 정보는 없으며, 최신 개발 가이드를 따르고 있습니다.
|
||||
|
||||
## 🛠️ 적용 사례 (Applied in summary)
|
||||
* **예제 시나나리오**: 여러 이미지 배치 중 가장 밝은 이미지를 선택하는 노드에서 시작하여, 색상 기준(reddest, greenest 등)을 추가하고 최종적으로 클라이언트 메시지 알림까지 구현하는 전체 워크플로우를 보여줍니다.
|
||||
|
||||
## ✅ 검증 상태 및 신뢰도
|
||||
- **상태:** draft
|
||||
- **검증 단계:** conceptual
|
||||
- **출처 신뢰도:** B (Primary Source — 웹사이트 본문 직접 추출)
|
||||
- **중복 검사 결과:** 신규 생성 (New discovery)
|
||||
|
||||
## 🔗 관련 문서 링크 (Related document links)
|
||||
* [[ComfyUI]] - 커스텀 노드 개발의 대상이 되는 메인 프레임워크입니다.
|
||||
* [[Python]] - 백엔드 로직 작성을 위한 핵심 언어입니다.
|
||||
* [[JavaScript]] - 클라이언트 측 확장을 위해 사용되는 언어입니다.
|
||||
* [[torch.Tensor]] - 이미지 데이터 처리를 위한 기본 데이터 구조입니다.
|
||||
* [[comfy-cli]] - 노드 스캐폴딩 및 관리를 위한 도구입니다.
|
||||
|
||||
## 📝 변경 이력 (Change history)
|
||||
- 2026-05-20: Astra /wikify 로 https://docs.comfy.org/custom-nodes/walkthrough 본문에서 초안 생성.
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
---
|
||||
id: lifecycle---comfyui
|
||||
title: "Lifecycle - ComfyUI"
|
||||
category: "10_Wiki/Topics"
|
||||
status: "draft"
|
||||
verification_status: "conceptual"
|
||||
canonical_id: ""
|
||||
aliases: []
|
||||
duplicate_of: ""
|
||||
source_trust_level: "B"
|
||||
confidence_score: 1.0
|
||||
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/backend/lifecycle"]
|
||||
applied_in: []
|
||||
github_commit: ""
|
||||
---
|
||||
|
||||
# [[Lifecycle - ComfyUI]]
|
||||
|
||||
## 🎯 한 줄 통찰 (One-line insight)
|
||||
ComfyUI가 시작될 때 `custom_nodes` 디렉토리를 스캔하여 Python 모듈을 로드하고 커스텀 노드를 정의하는 라이프사이클 프로세스.
|
||||
|
||||
## 🧠 핵심 개념 (Core concepts)
|
||||
* **[[custom_nodes]] 로딩**: ComfyUI 시작 시 `custom_nodes` 폴ের더를 스캔하여 Python 모듈을 찾아 로드함.
|
||||
* **[[NODE_CLASS_MAPPINGS]]**: 모듈이 커스텀 노드로 인식되기 위해 반드시 내보내야(export) 하는 딕셔너리 매핑 정보.
|
||||
* **[[__init__.py]] 역할**: 커스텀 노드 모듈의 진입점으로, 실행 시 `NODE_CLASS_MAPPINGS`를 포함하여 노드 정의를 ComfyUI에 가용하게 함.
|
||||
* **[[WEB_DIRECTORY]] 설정**: 클라이언트 측 JavaScript 파일을 제공하기 위해 모듈 내 상대 경로를 지정하는 기능.
|
||||
|
||||
## 🧩 추출된 패턴 (Extracted patterns)
|
||||
* **모듈 인식 조건**: Python 모듈은 `__init__.py`를 포함하는 디렉토리 형태이며, `__all__` 속성에 정의된 내용을 내보냄.
|
||||
* **에러 처리 패턴**: 코드에 에러가 발생하더라도 ComfyUI는 계속 진행하지만, 해당 모듈이 로드에 실패했음을 Python 콘솔을 통해 보고함.
|
||||
* **표준화된 구조**: 커스텀 노드의 JavaScript 파일은 관례적으로 `js`라는 하위 디렉토리에 배치함.
|
||||
|
||||
## 📖 세부 내용 (Details)
|
||||
### 1. How Comfy loads custom nodes
|
||||
ComfyUI는 시작 시 `custom_nodes` 디렉토리를 스캔하여 Python 모듈을 로드하려고 시도합니다. 해당 모듈이 `NODE_CLASS_MAPPINGS`를 내보내면 커스텀 노드로 취급됩니다.
|
||||
|
||||
### 2. init.py 구성 요소
|
||||
커스텀 노드 정의를 위해 `__init__.py`에서 관리해야 하는 주요 매핑 정보는 다음과 같습니다.
|
||||
|
||||
| 필드 | 타입 | 필수/선택 | 제약·설명 |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| [[NODE_CLASS_MAPPINGS]] | dict | 필수 | 커스텀 노드 이름(고유값)을 해당 노드 클래스에 매핑함. |
|
||||
| [[NODE_DISPLAY_NAME_MAPPINGS]] | dict | 선택 | 고유 이름을 사용자에게 보여줄 표시용 이름으로 매핑함. 미제공 시 고유 이름을 사용함. |
|
||||
| [[WEB_DIRECTORY]] | string | 선택 | JavaScript 파일이 위치한 모듈 내 상대 경로를 지정함 (예: `js` 디렉토리). |
|
||||
|
||||
### 3. JavaScript 배포 및 주의사항
|
||||
* **파일 제한**: `.js` 파일만 제공 가능하며, `.css`나 기타 타입은 이 방식으로 배포할 수 없음.
|
||||
* **구 버전 방식 지양**: 과거에는 JavaScript 파일을 Comfy 웹 하위 디렉토리로 복사하는 코드가 필요했으나, 현재는 이를 권장하지 않음.
|
||||
|
||||
## ⚖️ 모모순 및 업데이트 (Contradictions & updates)
|
||||
* **업데이트 사항**: 이전 버전의 Comfy에서는 `__init__.py`가 JavaScript 파일을 메인 웹 디렉토리로 복사하는 작업이 필요했으나, 현재는 이를 수행하는 코드를 사용하지 말라고 명시되어 있음.
|
||||
|
||||
## 🛠️ 적용 사례 (Applied in summary)
|
||||
* **단순한 `__init__.py` 예시**:
|
||||
```python
|
||||
from .python_file import MyCustomNode
|
||||
NODE_CLASS_MAPPINGS = { "My Custom Node" : MyCustomNode }
|
||||
__all__ = ["NODE_CLASS_MAPPINGS"]
|
||||
```
|
||||
|
||||
## ✅ 검증 상태 및 신뢰도
|
||||
- **상태:** draft
|
||||
- **검증 단계:** conceptual
|
||||
- **출처 신뢰도:** B (Primary Source — 웹사이트 본문 직접 추출)
|
||||
- **중복 검사 결과:** 신규 생성 (New discovery)
|
||||
|
||||
## 🔗 관련 문서 링크 (Related document links)
|
||||
* [[custom_nodes]] - 커스텀 노드가 로드되는 물리적 경로와 메커니즘 설명.
|
||||
* [[NODE_CLASS_MAPPINGS]] - 노드 클래스를 식별하기 위한 핵심 매핑 구조.
|
||||
* [[WEB_DIRECTORY]] - 클라이언트 사이드 JS 파일 배포를 위한 경로 설정법.
|
||||
* [[__init__.py]] - Python 모듈의 초기화 및 커스텀 노드 로직 실행 지점.
|
||||
|
||||
## 📝 변경 이력 (Change history)
|
||||
- 2026-05-20: Astra /wikify 로 https://docs.comfy.org/custom-nodes/backend/lifecycle 본문에서 초안 생성.
|
||||
Reference in New Issue
Block a user