Сохраняются ли missing nodes внутри API JSON
Почему в API JSON пропадают ноды ComfyUI: различайте формат интерфейса и API, проверьте классы нод, зависимости и логи сервера.
Короткий ответ. API JSON ComfyUI сохраняет ссылки на типы нод, которые участвуют в исполняемом графе, но не содержит код отсутствующих кастомных расширений. Если такой файл открыть или отправить на другой сервер без нужного пакета, нода останется недоступной и запрос может не пройти проверку. Кроме того, API-экспорт может исключать неисполняемые части визуального workflow. Чтобы передать граф другому человеку, сохраните обычный JSON вместе с API-вариантом и списком пакетов. Реестр расширений и способы установки описаны в ComfyUI-Manager.
Что означает «нода сохранилась»
В обычном workflow файл содержит данные для интерфейса: блоки, провода и их расположение. В API-формате важны тип ноды, входы и связи между ID. Это ссылка на функцию, которая должна существовать в установленном ComfyUI. JSON не превращает чужой Python-пакет в часть файла. Аналогия проста: запись «открыть программу X» не устанавливает саму программу. Поэтому missing nodes после переноса — ожидаемый результат, если пакет не установлен или его версия не содержит старый тип.
Откройте API JSON как текст и найдите class_type. Сравните названия с тем, что появляется в ComfyUI другого компьютера. Одно и то же имя репозитория может предоставлять несколько типов. Если class_type отсутствует у нужного блока, проверьте, был ли он подключён к исполняемой ветке и не был ли отключён при экспорте.
Почему список в API-файле может быть короче
Визуальный граф иногда содержит заметки, группы, запасные ветки и отключённые блоки. API-экспорт предназначен для выполнения, поэтому содержимое может отличаться от полной схемы редактора. Не считайте это потерей без сравнения: откройте обычный workflow и посмотрите, какие ноды реально ведут к выходу. Если важная ветка не выполняется в UI, она не станет выполняться и в API только потому, что файл экспортирован.
Расположение блоков и удобные для человека свойства тоже могут не сохраняться в API JSON. Для последующего редактирования держите исходный файл. Для программного вызова используйте исполняемый формат, который ожидает ваша версия API. Официальная спецификация ComfyUI помогает сверить запросы, но совместимость конкретного графа нужно тестировать на сервере.
Как подготовить workflow к передаче
- Сохраните обычный JSON и API JSON под разными именами.
- Составьте список кастомных пакетов с ссылками на репозитории и версиями.
- Укажите модели, их базовое семейство и папки загрузчика; сами веса в JSON не входят.
- Проверьте, что в файлах нет приватных путей, токенов и случайных личных данных.
- На чистой установке сначала поставьте ноды, затем модели и только потом откройте граф.
- Запустите короткий тест и сохраните точную ошибку, если что-то осталось красным.
ComfyUI-Manager может предложить пакеты для отсутствующих типов, но не гарантирует совместимость каждой старой ноды. Проверяйте репозиторий и README автора workflow. Если пакет установлен, а тип всё равно missing, ищите ошибку импорта в стартовом логе или переименование класса в новой версии. Простое обновление вкладки браузера не загружает новый Python-код; после установки нужен перезапуск ComfyUI.
Чем отличаются три частых случая
| Что видите | Вероятная причина |
|---|---|
| Тип ноды есть в API JSON, но сервер его не знает | Пакет отсутствует или не импортировался |
| Ноды нет в API JSON, но она есть на canvas | Ветка не участвует в исполнении или особенность экспорта |
| Нода доступна, но модель не найдена | Нет файла весов или выбран неправильный каталог |
Ошибки моделей и нод не смешивайте. Установка расширения не загружает автоматически checkpoint, а скачивание checkpoint не создаёт класс ноды. Разделение причин экономит время и уменьшает число случайных изменений рабочей сборки.
Частые вопросы
Можно ли восстановить недостающую ноду из одного API JSON?
Файл подскажет тип и связи, но исходный код и зависимости нужно получить из репозитория пакета.
Можно ли отправить только обычный workflow?
Для человека, который откроет граф в интерфейсе, часто да. Для программного вызова обычно нужен API-формат. Уточните задачу получателя.