Последние изменения в comfy-skill заметно расширили его возможности и, что важнее, изменили сам характер инструмента. Если раньше это был в основном skill для text-to-image генерации, то теперь он постепенно становится полноценным workflow layer для визуальных задач: генерации, редактирования, апскейла и анимации.

Здесь важно сразу обозначить контекст: сам по себе comfy-skill не особенно интересен в отрыве от OpenClaw-агентов. Именно агенты выступают интерфейсом к этому слою возможностей: они выбирают сценарий, подставляют нужный workflow, управляют job-пайплайном, забирают результат и встраивают его в реальную задачу. Без этого связующего слоя вся история теряет большую часть практического смысла и превращается просто в набор разрозненных скриптов. Все изображения в этой статье, включая иллюстрации, галереи и анимированные фрагменты, тоже были сгенерированы OpenClaw-агентом в рамках этого же workflow.

Сейчас в этом пайплайне используются такие модели и режимы:

  • flux-dev — основная модель для text-to-image и части иллюстраций;
  • flux-fill — для inpainting и outpainting;
  • upscale / UltraSharp 4x — для увеличения разрешения;
  • wan-video — для image-to-video;
  • sdxl и flux-schnell тоже поддерживаются skill’ом, но в этой статье основной визуальный материал собирался вокруг flux-dev, flux-fill, upscale и wan-video.

Поддержка FLUX Fill: переход от генерации к редактированию

Одно из самых важных обновлений — добавление FLUX Fill и отдельного wrapper’а для inpainting. Это сразу открыло несколько практических сценариев:

  • заменить часть изображения,
  • удалить объект,
  • дорисовать фон,
  • расширить кадр за пределы исходной картинки.

На практике это более важный шаг, чем просто добавление ещё одной модели. Генерация перестаёт быть одноразовой операцией. Вместо бесконечных попыток с нуля появляется возможность брать уже удачный результат и точечно доводить его до нужного состояния. Для реального использования это один из самых полезных сценариев во всём skill: не просить модель каждый раз заново придумать весь кадр, а редактировать только ту часть изображения, которая действительно требует изменения.

Удаление hardcoded model choices из txt2img wrapper’а

Следующее важное изменение — из generate_image_job.py убрали жёстко зашитый список моделей. Теперь wrapper не ограничивает backend искусственно, а сервер сам валидирует доступные model aliases.

Это небольшая на вид правка, но архитектурно она очень полезна. Backend можно расширять быстрее, не попадая каждый раз в ситуацию, когда сервис уже умеет новую модель, а клиентский скрипт ещё запрещает её использовать. В результате уменьшается рассинхрон между API и wrapper’ами, а сам skill становится заметно менее хрупким.

Отдельный upscale workflow вместо обходных решений

После этого появился полноценный сценарий для UltraSharp 4x upscale. Это отдельный job model и отдельный wrapper, а не попытка решать задачу через img2img.

Такой workflow кажется второстепенным ровно до тех пор, пока не начинаешь пользоваться им регулярно. На практике он нужен постоянно: сгенерировал удачный кадр, получил не самое большое изображение, а затем просто поднял разрешение без повторной генерации всей сцены. Это очень понятная и прикладная возможность, которая делает skill полезнее в реальной работе, а не только в демо-сценариях. Возможно, это вообще самая приземлённая функция из всех обновлений, но именно поэтому она и даёт одну из самых быстрых практических выгод.

Image-to-video на Wan 2.2

Самое заметное расширение — добавление Wan 2.2 image-to-video. Появился новый wrapper, новый сценарий wan-video, и skill вышел за пределы чисто image tooling.

С этого момента задача уже не ограничивается картинкой. Можно взять один кадр и превратить его в короткий анимированный ролик. Это меняет сам набор сценариев использования: теперь можно не только сгенерировать изображение, но и оживить его, добавить естественное движение, сделать короткий видеофрагмент из фото или концепт-арта.

При этом здесь важно оговориться отдельно: video generation в текущем состоянии для меня скорее исследовательская функция, чем зрелый production-инструмент. Сам факт, что это работает локально, уже интересен, но качество результата пока остаётся скорее посредственным, чем стабильно полезным. Вся эта история по-прежнему сильно упирается в железо — в доступную GPU-мощность, память, скорость пайплайна и цену таких экспериментов по времени. Я реализовал этот сценарий не потому, что уже готов использовать его каждый день, а чтобы понять, какого результата вообще можно добиться на своей инфраструктуре и где сейчас проходит практический предел.

Упрощение API: отказ от /status

Отдельно стоит отметить инфраструктурное упрощение API. Из пайплайна убрали отдельный precheck через /status, а основную логику availability перенесли в POST /jobs.

Это делает систему чище сразу в нескольких местах:

  • меньше лишних round-trip’ов,
  • меньше гонок между проверкой состояния и реальной отправкой job,
  • меньше дублирования логики между разными ручками.

Для клиентских скриптов это тоже плюс: wrappers становятся проще, а поведение — предсказуемее.

Inline mask generation без внешних зависимостей

Одна из самых полезных инженерных доработок — встроенная генерация масок для inpainting. Wrapper теперь умеет строить mask сам, например из прямоугольников, и не требует внешних библиотек вроде Pillow или ImageMagick для базового сценария.

Это особенно важно для агентной среды. Очень часто проблема не в самой модели, а в окружении: не установлен нужный пакет, нет подходящего редактора, нет простой утилиты для подготовки mask image. Встроенная генерация масок убирает один из самых частых operational blockers и делает skill намного автономнее.

Что получилось в итоге

Если собрать все изменения вместе, становится понятно, что comfy-skill больше нельзя считать просто skill’ом для генерации картинок. Теперь он покрывает сразу несколько независимых классов задач:

  • text-to-image,
  • img2img,
  • inpainting и outpainting,
  • upscale,
  • image-to-video.

То есть речь уже идёт не о single-purpose wrapper’е, а о более общем интерфейсе над media backend.

Главный результат этого обновления не в количестве новых скриптов и не в числе поддержанных моделей. Главное в том, что skill стал:

  • более универсальным,
  • менее хрупким,
  • лучше согласованным с backend,
  • и заметно удобнее для агентного использования.

Если формулировать коротко, то comfy-skill эволюционирует из набора image wrappers в полноценный visual workflow toolkit.

Что дальше

Следующий логичный шаг я вижу в ещё большем упрощении пользовательского слоя. Чем меньше пользователю или агенту нужно думать про конкретную модель и внутренний workflow, тем лучше. На верхнем уровне хочется оперировать не названием модели, а намерением:

  • сгенерировать,
  • изменить,
  • улучшить,
  • оживить.

Но даже в текущем виде обновление уже получилось сильным. На практике skill перестаёт быть коллекцией отдельных обёрток и становится цельным инструментом для повседневной работы с визуальным контентом. При этом зрелость сценариев пока разная: где-то уже получается удобный рабочий поток, а где-то это всё ещё исследование границ текущего железа и моделей. И именно в этом, наверное, главный результат всей работы: вместо набора разрозненных экспериментов начал появляться единый visual workflow, с которым уже можно нормально жить и дальше его последовательно улучшать.