用途
ComfyUI Inventory 用于发现用户 ComfyUI 实例中已安装的内容,并缓存结果以供工作流校验。其核心目的是:每次生成工作流之前都必须先进行库存检查,以防止引用未下载的模型、使用未安装的节点,或超出显存(VRAM)限制。
主要能力
两种发现模式
在线模式(ComfyUI API 运行中)
查询实时服务器以获取权威信息。
- 系统信息:
curl http://127.0.0.1:8188/system_stats
提取:GPU 名称、总显存、空闲显存、ComfyUI 版本。
- 已安装节点:
curl http://127.0.0.1:8188/object_info
返回所有已注册的节点类及其输入/输出规格。
- 已安装模型(按类型):
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
离线模式(目录扫描)
当 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)。
缓存格式
将结果保存到 state/inventory.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"
]
}
工作流校验
给定一个工作流 JSON,对照库存进行校验:
对每个节点:
- 检查 class_type 是否在已知节点类中
- 若缺失:识别哪个 custom_node 包提供它
- 建议安装:"Install via ComfyUI-Manager: {package_name}"
对每个模型引用:
- 检查文件名是否在该类型的库存模型中
- 若缺失:在 references/models.md 中查找下载链接
- 报告:"Missing: {filename} - Download from {url} -> {path}"
常见节点到包的映射
| 节点类 | 包 |
|---|---|
| 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 |
缓存新鲜度
- 在活跃会话期间,缓存有效期为 1 小时
- 当用户安装新模型/节点时使缓存失效
- 强制刷新:scan-inventory.ps1 或 API 重新查询
使用方式
该技能由其他技能调用:
- 由 comfyui-workflow-builder 在生成工作流之前调用
- 由 comfyui-character-gen(通过 agent wrapper)在模型选择时调用
- 由 comfyui-troubleshooter 在诊断缺失模型错误时调用
结果存储在 state/inventory.json 中,供所有技能引用。
适用场景
- 在生成 ComfyUI 工作流前确认模型与节点是否可用
- 诊断工作流中缺失模型或节点的问题
- 为角色生成等任务选择可用模型
限制
- 在线模式需要 ComfyUI API 正在运行
- 离线模式需要提供 ComfyUI 安装路径
- 缓存有效期为 1 小时,安装新内容后需使缓存失效
- 资料未提供其他平台、收费或价格信息