Дизайнерам, специалистам по подготовке ассетов для фронтенда и владельцам автоматизации часто нужен один мастер-экспорт, который превращается в пакет PNG (1x/2x, превью, кропы под соцсети) с предсказуемым именованием. На удалённом Mac OpenClaw может работать по пути мониторинга папки (watch folder), выполнять ресайз и шаги QA и выдавать аккуратное дерево out/. Этот материал в формате HowTo проходит настройку окружения, запуск и развёртывание наблюдателя, практическую таблицу размеров, повтор при сбое, связь с доставкой дизайна и FAQ — чтобы те же шаги завтра сработали на другой машине. Базовую установку смотрите в руководстве по установке OpenClaw; для конвейера только с переименованием — в статье мониторинг папки и автоматическое переименование PNG.
Содержание
Структура каталогов и права доступа
Пакетные пайплайны ассетов часто ломаются тихо, когда пути и владельцы расходятся. Прежде чем запускать любой watcher, один раз приведите дерево и права к скучной, предсказуемой схеме.
Рекомендуемая структура (корень подставьте под домашний каталог или общий том на удалённой машине):
~/DesignPipeline/inbox— сюда экспортируют Figma, Sketch или Affinity; мониторинг папки смотрит только на этот каталог.~/DesignPipeline/staging— воркер копирует или перемещает «захваченные» PNG на время ресайза, чтобы частичные записи вinboxне конфликтовали со следующим экспортом.~/DesignPipeline/out— итоговый набор размеров по каждому ассету: для git LFS, CDN или zip на отдачу.~/DesignPipeline/failed— карантин входов плюс строкиfailed.jsonlдля идемпотентного повторного прогона.~/DesignPipeline/logs— ротируемые журналы задач (файл на день или на релиз конфигурации).
Чеклист прав:
- Запускайте OpenClaw,
fswatchи оболочечные скрипты под одним пользователем macOS (тем же, что заходит по SSH или тем, для кого заведён LaunchAgent). - Этот пользователь должен владеть каталогами от
inboxдоlogs; избегайте world-writable. Если GUI пишет от другого UID, выровняйте ACL или группу «drop». - В конфиге используйте абсолютные пути (
$HOME/DesignPipeline/...), чтобыlaunchdиcronвели себя как интерактивная сессия. - Предполёт:
touchв каждой папке и проверка, что воркер читаетinboxи пишет вstaging,out,failed,logs.
Когда права перестают быть сюрпризом, задача мониторинга становится воспроизводимой для коллег и для «CI-стиля» повторных прогонов.
Настройка задачи мониторинга
Слой наблюдения должен реагировать на завершённые PNG, а не на каждый временный файл редактора.
Основные варианты:
- Скилл/задача OpenClaw с watch — путь наблюдения, маска (
*.png), пауза после серии событий (дебаунс 1–3 с), чтобы серия сохранений схлопнулась в одну задачу. - fswatch + воркер —
brew install fswatch; события передавайте в скрипт, который ставит задачи в очередь OpenClaw или сразу вызывает ImageMagick/sips. Для круглосуточной работы на удалённом Mac держите процесс вtmux,screenили LaunchAgent.
Поток развёртывания (высокий уровень):
- Установите OpenClaw по руководству для вашей платформы; зафиксируйте версии Node/Python в маленьком
READMEрядом с конфигом. - Закоммитьте или снимите снимок
watch.yaml/ переменных окружения:INBOX,STAGING,OUT,FAILED,LOG_DIR, лимит параллельных задач. - Дымовой тест: положите один PNG в
inbox; в логе должен появиться одинjob_id, вout/<slug>/— файлы вариантов. - Зарегистрируйте LaunchAgent или супервизор процессов, чтобы watcher переживал выход из сессии; на арендованных хостах отключите сон на время длинных партий.
Полезно добавить боковой файл .done или ждать стабильный размер (два одинаковых stat с интервалом ~500 мс) — тогда в очередь не попадают недописанные экспорты. Подробнее про семантику повторов и ротацию логов см. мониторинг PNG, повторы и архив логов на удалённом Mac.
Таблица шаблонов нескольких размеров
Из одного исходного PNG получите согласованный по именованию набор. Ниже стартовая таблица шаблонов, которую можно встроить в конфиг или CSV-манифест, который читает воркер.
| Роль | Длинная сторона / бокс | Суффикс в имени | Заметки |
|---|---|---|---|
| Веб 1x | 800 px по ширине | _w800 |
База для маркетинговых страниц |
| Веб 2x | 1600 px по ширине | _w1600 |
Retina; ICC sRGB согласован с мастером |
| Превью | 256×256 cover | _thumb256 |
Политика квадратного кропа — в бренд-гайде |
| Open Graph | 1200×630 | _og1200x630 |
Запас под текст в макете |
| Вертикаль / Stories | 1080×1920 | _story1080x1920 |
Опционально; кампейн-имена — в гайде по пакетным соц-PNG и API |
Шаблон имени (удобный для regex): {project}__{component}__{variant}_{token}.png — строчные буквы, двойное подчёркивание между смысловыми уровнями, одно подчёркивание перед токеном размера. Пример: acme__hero__spring-promo_w1600.png. Поля project и component храните в sidecar .json или выводите из имён родительских папок, чтобы выходы пакетного PNG оставались уникальными, когда дизайнер экспортирует очередной Frame 123.png.
На стороне реализации: sips -Z или ImageMagick -resize с одним и тем же фильтром; параметры кодирования пишите в лог рядом с прогоном. После записи проверяйте ширину и высоту — при расхождении с таблицей помечайте задачу как ошибочную.
Журналы и повтор при сбое
Зрелая автоматизация отделяет «пропустить битый файл» от «повторить временный сбой».
- Структурированные логи: одна строка на событие (JSON или key=value) с
job_id, исходным путём, списком вариантов, длительностью, кодом выхода. Ротируйте журналы ежедневно, чтобы на общем удалённом Mac диск не рос непредсказуемо. - Классы сбоев: повреждённый PNG → в
failed/и строка вfailed.jsonlс причиной; диск переполнен / таймаут → повтор с экспоненциальной задержкой (например 3 попытки: 5 с / 20 с / 60 с). - Сценарий повтора: после устранения причины прогоните
failed.jsonlсначала в режиме dry-run, затем ограниченной партией. Ограничьте число попыток на ассет, чтобы не зациклиться на испорченном мастере. - Ворота QA: по цепочке подключите пакетную проверку PNG в OpenClaw (объём файла, доля альфы, геометрия) до промоушена из
stagingвout.
Держите один источник правды для «последнего хорошего манифеста» (хэш + пути выходов), чтобы фронтенд видел diff между релизами ассетов.
Связь с доставкой дизайна
Автоматизация имеет смысл, если downstream-команды доверяют пакету.
- Публикуйте
out/вместе сmanifest.json: логический ассет, варианты, размер в байтах, пометка sRGB/P3 — в духе чеклиста по цвету PNG на Mac. - Если в продукте смешаны современные форматы, зафиксируйте слоты в гайде WebP/AVIF и PNG, чтобы дизайн знал, где остаётся только растр.
- Зафиксируйте в чате или базе знаний: путь к
inbox, шпаргалку по соглашению по именованию и SLA («варианты появляются вoutне позднее N минут»).
Так замыкается цикл: инструменты дизайна → воркеры OpenClaw → потребление ассетов фронтендом без ручных переэкспортов.
FAQ по устранению неполадок
В: Наблюдатель срабатывает дважды на один экспорт.
О: Увеличьте дебаунс; игнорируйте скрытые файлы; убедитесь, что приложение не пишет временный .png~ в ту же папку.
В: После ресайза PNG мыльные или с цветовым сдвигом.
О: Сначала выровняйте профиль мастера; избегайте двойной конверсии цвета; сверьтесь с sRGB и Display P3.
В: В середине партии «Permission denied».
О: Пользователь LaunchAgent должен совпадать с интерактивным SSH; в plist для переменных окружения подставляйте $HOME вместо ~.
В: Нехватка места при генерации 2x.
О: Оцените out как сумму байт вариантов; введите порог свободного места до старта задачи; архивируйте старые сборки out.
В: Нужны партии по API, а не дроп в папку.
О: См. пакетный сценарий с API; то же соглашение по именованию объединит оба контура.
Архив материалов — на странице «Технические идеи»; продолжите цепочку с автоименованием и пакетной валидацией PNG и конвейером дизайн-ассетов: переименование PNG. Справка по подключению без аккаунта — на странице помощи.
Многоразмерные PNG из watch folder на выделенном железе
Когда ноутбук не должен тащить ночные задачи пакетного PNG, удалённый Mac держит OpenClaw, нативные дизайн-приложения и Unix-утилиты в одной среде. Сравните конфигурации и цены на MacPng без входа в аккаунт, затем откройте раздел помощи по SSH/VNC и разверните этот HowTo без переписывания путей.