comfyui-inventory
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseComfyUI 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_statsExtracts: GPU name, total VRAM, free VRAM, ComfyUI version.
2. Installed nodes:
bash
curl http://127.0.0.1:8188/object_infoReturns 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_modelsOffline Mode (Directory Scan)
离线模式(目录扫描)
When ComfyUI isn't running, scan the filesystem directly.
Requires: ComfyUI installation path (e.g., )
C:\ComfyUIScan 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 packagesCustom node detection: List directories under . Each directory name corresponds to a node package (e.g., , ).
custom_nodes/ComfyUI_IPAdapter_plusComfyUI-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_plusComfyUI-Impact-PackCache Format
缓存格式
Save results to :
state/inventory.jsonjson
{
"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.jsonjson
{
"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 Class | Package |
|---|---|
| ApplyInstantID | ComfyUI_InstantID |
| IPAdapterUnifiedLoader | ComfyUI_IPAdapter_plus |
| FaceDetailer | ComfyUI-Impact-Pack |
| ReactorFaceSwap | ComfyUI-ReActor |
| AnimateDiffLoaderWithContext | ComfyUI-AnimateDiff-Evolved |
| VideoHelper* | ComfyUI-VideoHelperSuite |
| ControlNetApply* | comfyui_controlnet_aux |
| UltimateSDUpscale | ComfyUI_UltimateSDUpscale |
| VHS_* | ComfyUI-VideoHelperSuite |
| RIFE* | ComfyUI-Frame-Interpolation |
| 节点类 | 包 |
|---|---|
| ApplyInstantID | ComfyUI_InstantID |
| IPAdapterUnifiedLoader | ComfyUI_IPAdapter_plus |
| FaceDetailer | ComfyUI-Impact-Pack |
| ReactorFaceSwap | ComfyUI-ReActor |
| AnimateDiffLoaderWithContext | ComfyUI-AnimateDiff-Evolved |
| VideoHelper* | ComfyUI-VideoHelperSuite |
| ControlNetApply* | comfyui_controlnet_aux |
| UltimateSDUpscale | ComfyUI_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: or API re-query
scan-inventory.ps1
- 活跃会话期间,缓存有效期为1小时
- 当用户安装新模型或节点时,使缓存失效
- 强制刷新:运行或重新查询API
scan-inventory.ps1
Integration
集成方式
- Called by before generating workflows
comfyui-workflow-builder - Called by (via agent wrapper) for model selection
comfyui-character-gen - Called by when diagnosing missing model errors
comfyui-troubleshooter - Results stored in for all skills to reference
state/inventory.json
- 在生成工作流前由调用
comfyui-workflow-builder - 由(通过代理包装器)调用以进行模型选择
comfyui-character-gen - 诊断模型缺失错误时由调用
comfyui-troubleshooter - 结果存储在中,供所有技能引用
state/inventory.json