欢迎回来

登录 EAKE AI,继续您的智能之旅

忘记密码?
还没有账号?立即注册

ComfyUI 图像生成

ComfyUI 图像生成

通过 ComfyUI 生成图像、视频和音频——交互式工作流

ComfyUI

Generate images, video, audio, and 3D content through ComfyUI using the

official comfy-cli for setup/lifecycle and direct REST/WebSocket API

for workflow execution.

技能内容

Reference docs (references/):

  • official-cli.md — every comfy ... command, with flags
  • rest-api.md — REST + WebSocket endpoints (local + cloud), payload schemas
  • workflow-format.md — API-format JSON, common node types, param mapping
  • Scripts (scripts/):

    ScriptPurpose
    `_common.py`Shared HTTP, cloud routing, node catalogs (don't run directly)
    `hardware_check.py`Probe GPU/VRAM/disk → recommend local vs Comfy Cloud
    `comfyui_setup.sh`Hardware check + comfy-cli + ComfyUI install + launch + verify
    `extract_schema.py`Read a workflow → list controllable params + model deps
    `check_deps.py`Check workflow against running server → list missing nodes/models
    `auto_fix_deps.py`Run check_deps then `comfy node install` / `comfy model download`
    `run_workflow.py`Inject params, submit, monitor, download outputs (HTTP or WS)
    `run_batch.py`Submit a workflow N times with sweeps, parallel up to your tier
    `ws_monitor.py`Real-time WebSocket viewer for executing jobs (live progress)
    `health_check.py`Verification checklist runner — comfy-cli + server + models + smoke test

    Example workflows (workflows/): SD 1.5, SDXL, Flux Dev, SDXL img2img,

    SDXL inpaint, ESRGAN upscale, AnimateDiff video, Wan T2V. See

    workflows/README.md.

    使用场景

  • User asks to generate images with Stable Diffusion, SDXL, Flux, SD3, etc.
  • User wants to run a specific ComfyUI workflow file
  • User wants to chain generative steps (txt2img → upscale → face restore)
  • User needs ControlNet, inpainting, img2img, or other advanced pipelines
  • User asks to manage ComfyUI queue, check models, or install custom nodes
  • User wants video/audio/3D generation via AnimateDiff, Hunyuan, Wan, AudioCraft, etc.
  • 架构说明: Two Layers

    
    ┌─────────────────────────────────────────────────────┐
    │ Layer 1: comfy-cli (official lifecycle tool)        │
    │   Setup, server lifecycle, custom nodes, models     │
    │   → comfy install / launch / stop / node / model    │
    └─────────────────────────┬───────────────────────────┘
                              │
    ┌─────────────────────────▼───────────────────────────┐
    │ Layer 2: REST/WebSocket API + skill scripts         │
    │   Workflow execution, param injection, monitoring   │
    │   POST /api/prompt, GET /api/view, WS /ws           │
    │   → run_workflow.py, run_batch.py, ws_monitor.py    │
    └─────────────────────────────────────────────────────┘
    

    Why two layers? The official CLI is excellent for installation and server

    management but has minimal workflow execution support. The REST/WS API fills

    that gap — the scripts handle param injection, execution monitoring, and

    output download that the CLI doesn't do.

    快速入门

    Detect environment

    
    # What's available?
    command -v comfy >/dev/null 2>&1 && echo "comfy-cli: installed"
    curl -s http://127.0.0.1:8188/system_stats 2>/dev/null && echo "server: running"
    
    # Can this machine run ComfyUI locally? (GPU/VRAM/disk check)
    python3 scripts/hardware_check.py
    

    If nothing is installed, see Setup & Onboarding below — but always run the

    hardware check first.

    One-line health check

    
    python3 scripts/health_check.py
    # → JSON: comfy_cli on PATH? server reachable? at least one checkpoint? smoke-test passes?
    

    Core Workflow

    Step 1: Get a workflow JSON in API format

    Workflows must be in API format (each node has class_type). They come from:

  • ComfyUI web UI → Workflow → Export (API) (newer UI) or
  • the legacy "Save (API Format)" button (older UI)

  • This skill's workflows/ directory (ready-to-run examples)
  • Community downloads (civitai, Reddit, Discord) — usually editor format,
  • must be loaded into ComfyUI then re-exported

    Editor format (top-level nodes and links arrays) is **not directly

    executable**. The scripts detect this and tell you to re-export.

    Step 2: See what's controllable

    
    python3 scripts/extract_schema.py workflow_api.json --summary-only
    # → {"parameter_count": 12, "has_negative_prompt": true, "has_seed": true, ...}
    
    python3 scripts/extract_schema.py workflow_api.json
    # → full schema with parameters, model deps, embedding refs
    

    Step 3: Run with parameters

    
    # Local (defaults to http://127.0.0.1:8188)
    python3 scripts/run_workflow.py 
      --workflow workflow_api.json 
      --args '{"prompt": "a beautiful sunset over mountains", "seed": -1, "steps": 30}' 
      --output-dir ./outputs
    
    # Cloud (export API key once; uses correct /api routing automatically)
    export COMFY_CLOUD_API_KEY="comfyui-..."
    python3 scripts/run_workflow.py 
      --workflow workflow_api.json 
      --args '{"prompt": "..."}' 
      --host https://cloud.comfy.org 
      --output-dir ./outputs
    
    # Real-time progress via WebSocket (requires `pip install websocket-client`)
    python3 scripts/run_workflow.py 
      --workflow flux_dev.json 
      --args '{"prompt": "..."}' 
      --ws
    
    # img2img / inpaint: pass --input-image to upload + reference automatically
    python3 scripts/run_workflow.py 
      --workflow sdxl_img2img.json 
      --input-image image=./photo.png 
      --args '{"prompt": "make it watercolor", "denoise": 0.6}'
    
    # Batch / sweep: 8 random seeds, parallel up to cloud tier limit
    python3 scripts/run_batch.py 
      --workflow sdxl.json 
      --args '{"prompt": "abstract"}' 
      --count 8 --randomize-seed --parallel 3 
      --output-dir ./outputs/batch
    

    -1 for seed (or omitting it with --randomize-seed) generates a fresh

    random seed per run.

    Step 4: Present results

    The scripts emit JSON to stdout describing every output file:

    
    {
      "status": "success",
      "prompt_id": "abc-123",
      "outputs": [
        {"file": "./outputs/sdxl_00001_.png", "node_id": "9",
         "type": "image", "filename": "sdxl_00001_.png"}
      ]
    }
    

    Decision Tree

    `fetch_logs.py`Pull traceback / status messages for a given prompt_id
    User saysToolCommand
    **Lifecycle (use comfy-cli)**
    "install ComfyUI"comfy-cli`bash scripts/comfyui_setup.sh`
    "start ComfyUI"comfy-cli`comfy launch --background`
    "stop ComfyUI"comfy-cli`comfy stop`
    "install X node"comfy-cli`comfy node install `
    "download X model"comfy-cli`comfy model download --url --relative-path models/checkpoints`
    "list installed models"comfy-cli`comfy model list`
    "list installed nodes"comfy-cli`comfy node show installed`
    **Execution (use scripts)**
    "is everything ready?"script`health_check.py` (optionally with `--workflow X --smoke-test`)
    "what can I change in this workflow?"script`extract_schema.py W.json`
    "check if W's deps are met"script`check_deps.py W.json`
    "fix missing deps"script`auto_fix_deps.py W.json`
    "generate an image"script`run_workflow.py --workflow W --args '{...}'`
    "use this image" (img2img)script`run_workflow.py --input-image image=./x.png ...`
    "8 variations with random seeds"script`run_batch.py --count 8 --randomize-seed ...`
    "show me live progress"script`ws_monitor.py --prompt-id `
    "fetch the error from job X"script`fetch_logs.py `
    **Direct REST**
    "what's in the queue?"REST`curl http://HOST:8188/queue` (local) or `--host https://cloud.comfy.org`
    "cancel that"REST`curl -X POST http://HOST:8188/interrupt`

    安装配置 & Onboarding

    When a user asks to set up ComfyUI, **the FIRST thing to do is ask whether

    they want Comfy Cloud (hosted, zero install, API key) or Local (install

    ComfyUI on their machine)**. Don't start running install commands or hardware

    checks until they've answered.

    Official docs: https://docs.comfy.org/installation

    CLI docs: https://docs.comfy.org/comfy-cli/getting-started

    Cloud docs: https://docs.comfy.org/get_started/cloud

    Cloud API: https://docs.comfy.org/development/cloud/overview

    Step 0: Ask Local vs Cloud (ALWAYS FIRST)

    Suggested script:

    > "Do you want to run ComfyUI locally on your machine, or use Comfy Cloud?

    >

    > - Comfy Cloud — hosted on RTX 6000 Pro GPUs, all common models pre-installed,

    > zero setup. Requires an API key (paid subscription required to actually run

    > workflows; free tier is read-only). Best if you don't have a capable GPU.

    > - Local — free, but your machine MUST meet the hardware requirements:

    > - NVIDIA GPU with ≥6 GB VRAM (≥8 GB for SDXL, ≥12 GB for Flux/video), OR

    > - AMD GPU with ROCm support (Linux), OR

    > - Apple Silicon Mac (M1+) with ≥16 GB unified memory (≥32 GB recommended).

    > - Intel Macs and machines with no GPU will NOT work — use Cloud instead.

    >

    > Which would you like?"

    Routing:

  • Cloud → skip to Path A.
  • Local → run hardware check first, then pick a path from Paths B–E based on the verdict.
  • Unsure → run the hardware check and let the verdict decide.
  • Step 1: Verify Hardware (ONLY if user chose local)

    
    python3 scripts/hardware_check.py --json
    # Optional: also probe `torch` for actual CUDA/MPS:
    python3 scripts/hardware_check.py --json --check-pytorch
    
    "free GPU memory"REST`curl -X POST http://HOST:8188/free`
    VerdictMeaningAction
    `ok`≥8 GB VRAM (discrete) OR ≥32 GB unified (Apple Silicon)Local install — use `comfy_cli_flag` from report
    `marginal`SD1.5 works; SDXL tight; Flux/video unlikelyLocal OK for light workflows, else **Path A (Cloud)**

    The script also surfaces wsl: true (WSL2 with NVIDIA passthrough) and

    rosetta: true (x86_64 Python on Apple Silicon — must reinstall as ARM64).

    If verdict is cloud but the user wants local, do not proceed silently.

    Show the notes array verbatim and ask whether they want to (a) switch to

    Cloud or (b) force a local install (will OOM or be unusably slow on modern models).

    Choosing an Installation Path

    Use the hardware check first. The table below is the fallback for when the

    user has already told you their hardware:

    `cloud`No usable GPU, <6 GB VRAM, <16 GB Apple unified, Intel Mac, Rosetta Python**Switch to Cloud** unless user explicitly forces local
    SituationRecommended Path
    `verdict: cloud` from hardware check**Path A: Comfy Cloud**
    No GPU / want to try without commitment**Path A: Comfy Cloud**
    Windows + NVIDIA + non-technical**Path B: ComfyUI Desktop**
    Windows + NVIDIA + technical**Path C: Portable** or **Path D: comfy-cli**
    Linux + any GPU**Path D: comfy-cli** (easiest)
    macOS + Apple Silicon**Path B: Desktop** or **Path D: comfy-cli**

    For the fully automated path (hardware check → install → launch → verify):

    
    bash scripts/comfyui_setup.sh
    # Or with overrides:
    bash scripts/comfyui_setup.sh --m-series --port=8190 --workspace=/data/comfy
    

    It runs hardware_check.py internally, refuses to install locally when the

    verdict is cloud (unless --force-cloud-override), picks the right

    comfy-cli flag, and prefers pipx/uvx over global pip to avoid polluting

    system Python.

    ---

    Path A: Comfy Cloud (No Local Install)

    For users without a capable GPU or who want zero setup. Hosted on RTX 6000 Pro.

    Docs: https://docs.comfy.org/get_started/cloud

  • Sign up at https://comfy.org/cloud
  • Generate an API key at https://platform.comfy.org/login
  • Set the key:
  • 
       export COMFY_CLOUD_API_KEY="comfyui-xxxxxxxxxxxx"
    
  • Run workflows:
  • 
       python3 scripts/run_workflow.py 
         --workflow workflows/flux_dev_txt2img.json 
         --args '{"prompt": "..."}' 
         --host https://cloud.comfy.org 
         --output-dir ./outputs
    

    Pricing: https://www.comfy.org/cloud/pricing

    Concurrent jobs: Free/Standard 1, Creator 3, Pro 5. Free tier

    cannot run workflows via API — only browse models. Paid subscription

    required for /api/prompt, /api/upload/*, /api/view, etc.

    ---

    Path B: ComfyUI Desktop (Windows / macOS)

    One-click installer for non-technical users. Currently Beta.

    Docs: https://docs.comfy.org/installation/desktop

  • Windows (NVIDIA): https://download.comfy.org/windows/nsis/x64
  • macOS (Apple Silicon): https://comfy.org
  • Linux is not supported for Desktop — use Path D.

    ---

    Path C: ComfyUI Portable (Windows Only)

    Docs: https://docs.comfy.org/installation/comfyui_portable_windows

    Download from https://github.com/comfyanonymous/ComfyUI/releases, extract,

    run run_nvidia_gpu.bat. Update via update/update_comfyui_stable.bat.

    ---

    Path D: comfy-cli (All Platforms — Recommended for Agents)

    The official CLI is the best path for headless/automated setups.

    Docs: https://docs.comfy.org/comfy-cli/getting-started

    Install comfy-cli

    
    # Recommended:
    pipx install comfy-cli
    # Or use uvx without installing:
    uvx --from comfy-cli comfy --help
    # Or (if pipx/uvx unavailable):
    pip install --user comfy-cli
    

    Disable analytics non-interactively:

    
    comfy --skip-prompt tracking disable
    

    Install ComfyUI

    
    comfy --skip-prompt install --nvidia              # NVIDIA (CUDA)
    comfy --skip-prompt install --amd                 # AMD (ROCm, Linux)
    comfy --skip-prompt install --m-series            # Apple Silicon (MPS)
    comfy --skip-prompt install --cpu                 # CPU only (slow)
    comfy --skip-prompt install --nvidia --fast-deps  # uv-based dep resolution
    

    Default location: ~/comfy/ComfyUI (Linux), ~/Documents/comfy/ComfyUI

    (macOS/Win). Override with comfy --workspace /custom/path install.

    Launch / verify

    
    comfy launch --background                       # background daemon on :8188
    comfy launch -- --listen 0.0.0.0 --port 8190    # LAN-accessible custom port
    curl -s http://127.0.0.1:8188/system_stats      # health check
    

    ---

    Path E: Manual Install (Advanced / Unsupported Hardware)

    For Ascend NPU, Cambricon MLU, Intel Arc, or other unsupported hardware.

    Docs: https://docs.comfy.org/installation/manual_install

    
    git clone https://github.com/comfyanonymous/ComfyUI.git
    cd ComfyUI
    pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu130
    pip install -r requirements.txt
    python main.py
    

    ---

    Post-Install: Download Models

    
    # SDXL (general purpose, ~6.5 GB)
    comfy model download 
      --url "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors" 
      --relative-path models/checkpoints
    
    # SD 1.5 (lighter, ~4 GB, good for 6 GB cards)
    comfy model download 
      --url "https://huggingface.co/stable-diffusion-v1-5/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors" 
      --relative-path models/checkpoints
    
    # Flux Dev fp8 (smaller variant, ~12 GB)
    comfy model download 
      --url "https://huggingface.co/Comfy-Org/flux1-dev/resolve/main/flux1-dev-fp8.safetensors" 
      --relative-path models/checkpoints
    
    # CivitAI (set token first):
    comfy model download 
      --url "https://civitai.com/api/download/models/128713" 
      --relative-path models/checkpoints 
      --set-civitai-api-token "YOUR_TOKEN"
    

    List installed: comfy model list.

    Post-Install: Install Custom Nodes

    
    comfy node install comfyui-impact-pack             # popular utility pack
    comfy node install comfyui-animatediff-evolved     # video generation
    comfy node install comfyui-controlnet-aux          # ControlNet preprocessors
    comfy node install comfyui-essentials              # common helpers
    comfy node update all
    comfy node install-deps --workflow=workflow.json   # install everything a workflow needs
    

    Post-Install: Verify

    
    python3 scripts/health_check.py
    # → comfy_cli on PATH? server reachable? checkpoints? smoke test?
    
    python3 scripts/check_deps.py my_workflow.json
    # → are this workflow's nodes/models/embeddings installed?
    
    python3 scripts/run_workflow.py 
      --workflow workflows/sd15_txt2img.json 
      --args '{"prompt": "test", "steps": 4}' 
      --output-dir ./test-outputs
    

    Image Upload (img2img / Inpainting)

    The simplest way is to use --input-image with run_workflow.py:

    
    python3 scripts/run_workflow.py 
      --workflow workflows/sdxl_img2img.json 
      --input-image image=./photo.png 
      --args '{"prompt": "make it cyberpunk", "denoise": 0.6}'
    

    The flag uploads photo.png, then injects its server-side filename into

    whatever schema parameter is named image. For inpainting, pass both:

    
    python3 scripts/run_workflow.py 
      --workflow workflows/sdxl_inpaint.json 
      --input-image image=./photo.png 
      --input-image mask_image=./mask.png 
      --args '{"prompt": "fill with flowers"}'
    

    Manual upload via REST:

    
    curl -X POST "http://127.0.0.1:8188/upload/image" 
      -F "image=@photo.png" -F "type=input" -F "overwrite=true"
    # Returns: {"name": "photo.png", "subfolder": "", "type": "input"}
    
    # Cloud equivalent:
    curl -X POST "https://cloud.comfy.org/api/upload/image" 
      -H "X-API-Key: $COMFY_CLOUD_API_KEY" 
      -F "image=@photo.png" -F "type=input" -F "overwrite=true"
    

    Cloud Specifics

  • Base URL: https://cloud.comfy.org
  • Auth: X-API-Key header (or ?token=KEY for WebSocket)
  • API key: set $COMFY_CLOUD_API_KEY once and the scripts pick it up automatically
  • Output download: /api/view returns a 302 to a signed URL; the scripts
  • follow it and strip X-API-Key before fetching from the storage backend

    (don't leak the API key to S3/CloudFront).

  • Endpoint differences from local ComfyUI:
  • /api/object_info, /api/queue, /api/userdata403 on free tier;
  • paid only.

  • /history is renamed to /history_v2 on cloud (the scripts route
  • automatically).

  • /models/ is renamed to /experiment/models/ on cloud
  • (the scripts route automatically).

  • clientId in WebSocket is currently ignored — all connections for a
  • user receive the same broadcast. Filter by prompt_id client-side.

  • subfolder is accepted on uploads but ignored — cloud has a flat namespace.
  • Concurrent jobs: Free/Standard: 1, Creator: 3, Pro: 5. Extras queue
  • automatically. Use run_batch.py --parallel N to saturate your tier.

    Queue & System Management

    
    # Local
    curl -s http://127.0.0.1:8188/queue | python3 -m json.tool
    curl -X POST http://127.0.0.1:8188/queue -d '{"clear": true}'    # cancel pending
    curl -X POST http://127.0.0.1:8188/interrupt                      # cancel running
    curl -X POST http://127.0.0.1:8188/free 
      -H "Content-Type: application/json" 
      -d '{"unload_models": true, "free_memory": true}'
    
    # Cloud — same paths under /api/, plus:
    python3 scripts/fetch_logs.py --tail-queue --host https://cloud.comfy.org
    

    Pitfalls

  • API format required — every script and the /api/prompt endpoint expect
  • API-format workflow JSON. The scripts detect editor format (top-level

    nodes and links arrays) and tell you to re-export via

    "Workflow → Export (API)" (newer UI) or "Save (API Format)" (older UI).

  • Server must be running — all execution requires a live server.
  • comfy launch --background starts one. Verify with

    curl http://127.0.0.1:8188/system_stats.

  • Model names are exact — case-sensitive, includes file extension.
  • check_deps.py does fuzzy matching (with/without extension and folder

    prefix), but the workflow itself must use the canonical name. Use

    comfy model list to discover what's installed.

  • Missing custom nodes — "class_type not found" means a required node
  • isn't installed. check_deps.py reports which package to install;

    auto_fix_deps.py runs the install for you.

  • Working directorycomfy-cli auto-detects the ComfyUI workspace.
  • If commands fail with "no workspace found", use

    comfy --workspace /path/to/ComfyUI or

    comfy set-default /path/to/ComfyUI.

  • Cloud free-tier API limits/api/prompt, /api/view, /api/upload/*,
  • /api/object_info all return 403 on free accounts. health_check.py and

    check_deps.py handle this gracefully and surface a clear message.

  • Timeout for video/audio workflows — auto-detected when an output node
  • is VHS_VideoCombine, SaveVideo, etc.; the default jumps from 300 s to

    900 s. Override explicitly with --timeout 1800.

  • Path traversal in output filenames — server-supplied filenames are
  • passed through safe_path_join to refuse anything escaping --output-dir.

    Keep this protection on — workflows with custom save nodes can produce

    arbitrary paths.

  • Workflow JSON is arbitrary code — custom nodes run Python, so
  • submitting an unknown workflow has the same trust profile as eval.

    Inspect workflows from untrusted sources before running.

  • Auto-randomized seed — pass seed: -1 in --args (or use
  • --randomize-seed and omit the seed) to get a fresh seed per run.

    The actual seed is logged to stderr.

  • tracking prompt — first run of comfy may prompt for analytics.
  • Use comfy --skip-prompt tracking disable to skip non-interactively.

    comfyui_setup.sh does this for you.

    Verification Checklist

    Use python3 scripts/health_check.py to run the whole list at once. Manual:

  • [ ] hardware_check.py verdict is ok OR the user explicitly chose Comfy Cloud
  • [ ] comfy --version works (or uvx --from comfy-cli comfy --help)
  • [ ] curl http://HOST:PORT/system_stats returns JSON
  • [ ] comfy model list shows at least one checkpoint (local) OR
  • /api/experiment/models/checkpoints returns models (cloud)

  • [ ] Workflow JSON is in API format
  • [ ] check_deps.py reports is_ready: true (or only node_check_skipped
  • on cloud free tier)

  • [ ] Test run with a small workflow completes; outputs land in --output-dir
  • Headless / server / CI / agents**Path D: comfy-cli**

    安装指南

    复制下方命令,在终端运行即可安装:

    # 安装到当前项目
    npx skills add comfyui
    # 全局安装 — 所有项目可用
    npx skills add comfyui -g

    使用指南

    安装完成后,在对话框中直接使用此技能。

    基本信息
    作者 Community 分类 agent 难度 Intermediate 时长 1 hour
    🛠️ 安装命令
    # 安装到当前项目
    npx skills add comfyui
    # 全局安装
    npx skills add comfyui -g

    发表评论