comfyui-inventory

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

ComfyUI Inventory Skill

ComfyUI 库存技能

Discovers what's installed in the user's ComfyUI instance and caches results for workflow validation.
用于发现用户ComfyUI实例中已安装的内容,并缓存结果以进行工作流验证。

Purpose

用途

Every workflow generation MUST be preceded by an inventory check. This prevents:
  • Referencing models that aren't downloaded
  • Using nodes that aren't installed
  • Exceeding VRAM limits
生成任何工作流之前都必须先进行库存检查,这可以避免:
  • 引用未下载的模型
  • 使用未安装的节点
  • 超出VRAM限制

Two Discovery Modes

两种发现模式

Online Mode (ComfyUI API Running)

在线模式(ComfyUI API 运行中)

Query the live server for authoritative information.
1. System info:
bash
curl http://127.0.0.1:8188/system_stats
Extracts: GPU name, total VRAM, free VRAM, ComfyUI version.
2. Installed nodes:
bash
curl http://127.0.0.1:8188/object_info
Returns all registered node classes with their input/output specifications.
3. Installed models (per type):
bash
curl http://127.0.0.1:8188/models/checkpoints
curl http://127.0.0.1:8188/models/loras
curl http://127.0.0.1:8188/models/vae
curl http://127.0.0.1:8188/models/controlnet
curl http://127.0.0.1:8188/models/clip
curl http://127.0.0.1:8188/models/clip_vision
curl http://127.0.0.1:8188/models/upscale_models
curl http://127.0.0.1:8188/models/diffusion_models
查询运行中的服务器以获取权威信息。
1. 系统信息:
bash
curl http://127.0.0.1:8188/system_stats
提取内容:GPU名称、总VRAM、可用VRAM、ComfyUI版本。
2. 已安装节点:
bash
curl http://127.0.0.1:8188/object_info
返回所有已注册的节点类及其输入/输出规格。
3. 已安装模型(按类型分类):
bash
curl http://127.0.0.1:8188/models/checkpoints
curl http://127.0.0.1:8188/models/loras
curl http://127.0.0.1:8188/models/vae
curl http://127.0.0.1:8188/models/controlnet
curl http://127.0.0.1:8188/models/clip
curl http://127.0.0.1:8188/models/clip_vision
curl http://127.0.0.1:8188/models/upscale_models
curl http://127.0.0.1:8188/models/diffusion_models

Offline Mode (Directory Scan)

离线模式(目录扫描)

When ComfyUI isn't running, scan the filesystem directly.
Requires: ComfyUI installation path (e.g.,
C:\ComfyUI
)
Scan directories:
{ComfyUI}/models/checkpoints/    → .safetensors, .ckpt
{ComfyUI}/models/loras/          → .safetensors
{ComfyUI}/models/vae/            → .safetensors, .pt
{ComfyUI}/models/controlnet/     → .safetensors, .pth
{ComfyUI}/models/clip/           → .safetensors
{ComfyUI}/models/clip_vision/    → .safetensors
{ComfyUI}/models/upscale_models/ → .pth, .safetensors
{ComfyUI}/models/diffusion_models/ → .safetensors
{ComfyUI}/models/ipadapter/      → .safetensors, .bin
{ComfyUI}/models/instantid/      → .bin
{ComfyUI}/models/insightface/    → .onnx + folders
{ComfyUI}/models/facerestore_models/ → .pth
{ComfyUI}/models/ultralytics/bbox/ → .pt
{ComfyUI}/custom_nodes/          → folder names = node packages
Custom node detection: List directories under
custom_nodes/
. Each directory name corresponds to a node package (e.g.,
ComfyUI_IPAdapter_plus
,
ComfyUI-Impact-Pack
).
当ComfyUI未运行时,直接扫描文件系统。
要求:ComfyUI安装路径(例如:
C:\ComfyUI
扫描目录:
{ComfyUI}/models/checkpoints/    → .safetensors, .ckpt
{ComfyUI}/models/loras/          → .safetensors
{ComfyUI}/models/vae/            → .safetensors, .pt
{ComfyUI}/models/controlnet/     → .safetensors, .pth
{ComfyUI}/models/clip/           → .safetensors
{ComfyUI}/models/clip_vision/    → .safetensors
{ComfyUI}/models/upscale_models/ → .pth, .safetensors
{ComfyUI}/models/diffusion_models/ → .safetensors
{ComfyUI}/models/ipadapter/      → .safetensors, .bin
{ComfyUI}/models/instantid/      → .bin
{ComfyUI}/models/insightface/    → .onnx + folders
{ComfyUI}/models/facerestore_models/ → .pth
{ComfyUI}/models/ultralytics/bbox/ → .pt
{ComfyUI}/custom_nodes/          → folder names = node packages
自定义节点检测:列出
custom_nodes/
下的目录,每个目录名称对应一个节点包(例如:
ComfyUI_IPAdapter_plus
ComfyUI-Impact-Pack
)。

Cache Format

缓存格式

Save results to
state/inventory.json
:
json
{
  "last_updated": "2026-02-06T12:00:00Z",
  "mode": "online",
  "comfyui_version": "0.3.10",
  "system": {
    "gpu": "NVIDIA RTX 5090",
    "vram_total_gb": 32,
    "vram_free_gb": 28
  },
  "models": {
    "checkpoints": ["flux1-dev.safetensors", "RealVisXL_V5.0.safetensors"],
    "loras": ["sage_character.safetensors"],
    "vae": ["ae.safetensors", "wan_2.1_vae.safetensors"],
    "controlnet": ["instantid_controlnet.safetensors"],
    "clip": ["t5xxl_fp16.safetensors", "clip_l.safetensors"],
    "clip_vision": ["CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors"],
    "upscale_models": ["4x-UltraSharp.pth"],
    "diffusion_models": ["wan2.1_i2v_720p_14b_bf16.safetensors"],
    "ipadapter": ["ip-adapter-faceid-plusv2_sd15.bin"],
    "instantid": ["ip-adapter.bin"],
    "insightface": ["inswapper_128.onnx"],
    "facerestore": ["codeformer.pth"],
    "detection": ["face_yolov8m.pt"]
  },
  "custom_nodes": [
    "ComfyUI-Manager",
    "ComfyUI_IPAdapter_plus",
    "ComfyUI_InstantID",
    "ComfyUI-Impact-Pack",
    "ComfyUI-AnimateDiff-Evolved",
    "ComfyUI-VideoHelperSuite"
  ]
}
将结果保存到
state/inventory.json
json
{
  "last_updated": "2026-02-06T12:00:00Z",
  "mode": "online",
  "comfyui_version": "0.3.10",
  "system": {
    "gpu": "NVIDIA RTX 5090",
    "vram_total_gb": 32,
    "vram_free_gb": 28
  },
  "models": {
    "checkpoints": ["flux1-dev.safetensors", "RealVisXL_V5.0.safetensors"],
    "loras": ["sage_character.safetensors"],
    "vae": ["ae.safetensors", "wan_2.1_vae.safetensors"],
    "controlnet": ["instantid_controlnet.safetensors"],
    "clip": ["t5xxl_fp16.safetensors", "clip_l.safetensors"],
    "clip_vision": ["CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors"],
    "upscale_models": ["4x-UltraSharp.pth"],
    "diffusion_models": ["wan2.1_i2v_720p_14b_bf16.safetensors"],
    "ipadapter": ["ip-adapter-faceid-plusv2_sd15.bin"],
    "instantid": ["ip-adapter.bin"],
    "insightface": ["inswapper_128.onnx"],
    "facerestore": ["codeformer.pth"],
    "detection": ["face_yolov8m.pt"]
  },
  "custom_nodes": [
    "ComfyUI-Manager",
    "ComfyUI_IPAdapter_plus",
    "ComfyUI_InstantID",
    "ComfyUI-Impact-Pack",
    "ComfyUI-AnimateDiff-Evolved",
    "ComfyUI-VideoHelperSuite"
  ]
}

Workflow Validation

工作流验证

Given a workflow JSON, validate against inventory:
For each node:
  1. Check class_type against known node classes
  2. If missing: identify which custom_node package provides it
  3. Suggest install: "Install via ComfyUI-Manager: {package_name}"

For each model reference:
  1. Check filename against inventory models of that type
  2. If missing: look up in references/models.md for download link
  3. Report: "Missing: {filename} - Download from {url} -> {path}"
给定一个工作流JSON,对照库存进行验证:
对于每个节点:
  1. 检查class_type是否属于已知节点类
  2. 如果缺失:确定提供该节点的自定义节点包
  3. 建议安装:“通过ComfyUI-Manager安装:{package_name}”

对于每个模型引用:
  1. 检查文件名是否存在于对应类型的库存模型中
  2. 如果缺失:在references/models.md中查找下载链接
  3. 报告:“缺失:{filename} - 从{url}下载 -> {path}”

Common Node-to-Package Mapping

常见节点与包的映射关系

Node ClassPackage
ApplyInstantIDComfyUI_InstantID
IPAdapterUnifiedLoaderComfyUI_IPAdapter_plus
FaceDetailerComfyUI-Impact-Pack
ReactorFaceSwapComfyUI-ReActor
AnimateDiffLoaderWithContextComfyUI-AnimateDiff-Evolved
VideoHelper*ComfyUI-VideoHelperSuite
ControlNetApply*comfyui_controlnet_aux
UltimateSDUpscaleComfyUI_UltimateSDUpscale
VHS_*ComfyUI-VideoHelperSuite
RIFE*ComfyUI-Frame-Interpolation
节点类
ApplyInstantIDComfyUI_InstantID
IPAdapterUnifiedLoaderComfyUI_IPAdapter_plus
FaceDetailerComfyUI-Impact-Pack
ReactorFaceSwapComfyUI-ReActor
AnimateDiffLoaderWithContextComfyUI-AnimateDiff-Evolved
VideoHelper*ComfyUI-VideoHelperSuite
ControlNetApply*comfyui_controlnet_aux
UltimateSDUpscaleComfyUI_UltimateSDUpscale
VHS_*ComfyUI-VideoHelperSuite
RIFE*ComfyUI-Frame-Interpolation

Cache Freshness

缓存时效性

  • Cache is valid for 1 hour during active sessions
  • Invalidate cache when user installs new models/nodes
  • Force refresh:
    scan-inventory.ps1
    or API re-query
  • 活跃会话期间,缓存有效期为1小时
  • 当用户安装新模型或节点时,使缓存失效
  • 强制刷新:运行
    scan-inventory.ps1
    或重新查询API

Integration

集成方式

  • Called by
    comfyui-workflow-builder
    before generating workflows
  • Called by
    comfyui-character-gen
    (via agent wrapper) for model selection
  • Called by
    comfyui-troubleshooter
    when diagnosing missing model errors
  • Results stored in
    state/inventory.json
    for all skills to reference
  • 在生成工作流前由
    comfyui-workflow-builder
    调用
  • comfyui-character-gen
    (通过代理包装器)调用以进行模型选择
  • 诊断模型缺失错误时由
    comfyui-troubleshooter
    调用
  • 结果存储在
    state/inventory.json
    中,供所有技能引用