Для кого: design ops и владельцы автоматизации, которые выгружают PNG из Figma, Sketch, браузера или фото-пайплайна и видят неправильный поворот превью в части просмотрщиков при нормальном виде в других — чаще всего виноват тег EXIF Orientation (в PNG часто в чанке eXIf), который так и не нормализовали. На удалённом Mac OpenClaw может оборачивать одни и те же shell-шаги: watch inbox, прочитать тег, при необходимости применить физическую ротацию без лишнего ресэмплинга, сбросить или снять ориентацию по политике, выдать файл под детерминированным именем. Базовая установка — в руководстве по установке OpenClaw на все платформы; шаблоны повторов и логов — в watch, retry и архив логов PNG и цепочке CLI и retry на M-серии.
Содержание
План внутренних ссылок (редактор / SEO)
Карта обхода и сопряжённых материалов — каждый пункт дополняет этот туториал без дублирования установки.
- Базовая установка: установка OpenClaw на все платформы
- Watch, JSONL и повторы: батч watch, retry и логи PNG
- Цепочки CLI и backoff: PNG CLI и retry на M-серии
- После ротации — цвет: контур ICC и переименования и метаданные PNG, ICC и без потерь пересжатие
- Имена и валидация: автоимена PNG и пакетная валидация
- Мультиразрешение: watch folder и наборы PNG
- Смежный ingest: HEIC → PNG watch folder
OpenClaw и Gateway: минимальное развёртывание
Сделайте удалённый Mac-воркер предсказуемым: одна служебная учётка, зафиксированная версия OpenClaw и Gateway, отвечающий /health только на 127.0.0.1. Следуйте руководству по установке, положите токены в ~/.config/openclaw.env с правами 600 и убедитесь, что curl -sS http://127.0.0.1:<порт>/health проходит и из GUI-сессии, и из ssh user@host bash -lc '…' — неинтерактивные shell часто не видят PATH для magick и exiftool.
Минимальный чеклист:
- Владение процессом: наблюдатель и OpenClaw запускайте под тем же UID, что владеет
inbox/иout/. - TCC: если macOS блокирует чтение каталогов, добавьте точный бинарник волкера в «Конфиденциальность и безопасность → Полный доступ к диску».
- Файрвол: не выставляйте Gateway в WAN; при необходимости используйте SSH port forwarding.
- Граница навыка: шаги EXIF и ротации оформите как shell или Python, вызываемый из навыка OpenClaw — так команды можно тестировать без полного цикла агента.
which magick exiftool, magick -version и exiftool -ver из того же wrapper-скрипта, что вызывает наблюдатель.
Стратегия мониторинга каталога экспорта
Дизайн-инструменты нередко пишут файл по частям. Направляйте экспорт в выделенный inbox вроде ~/png_jobs/design_export/inbox на локальном SSD, не в iCloud Desktop и не на SMB — иначе получите полузаписанные PNG и задержки синхронизации. Дерево каталогов согласуйте с watch folder и наборами PNG: inbox, work, out, failed, logs.
Правила наблюдателя, которые переживают реальных дизайнеров:
- Фильтр
*.png; игнор.DS_Store,*.tmp,*.crdownload. - Стабильный размер: два одинаковых
statс интервалом ~500 мс перед постановкой в очередь. - Дебаунс: слияние событий 1–3 с для
fswatchили короткая задержка в скрипте приlaunchdWatchPaths. - Тихое окно для пакетов: при ливне файлов ждите 30–60 с без новых PNG, затем сливайте inbox в отсортированном порядке — как в контуре ICC и переименования.
- Single-flight: один воркер, чтобы параллельные экспорты шли детерминированно.
Воспроизводимый триггер (fswatch): brew install fswatch, затем тот же цикл zsh, что вызывает навык OpenClaw. Внутренний sleep схлопывает серию событий; путь к воркеру подставьте свой.
INBOX=~/png_jobs/design_export/inbox
fswatch -o "$INBOX" | while read -r; do
sleep 2
/opt/homebrew/bin/your_png_exif_rotate_worker.zsh
done
Альтернатива launchd: WatchPaths на inbox и обёртка со sleep 1–3 перед вызовом воркера — зафиксируйте путь plist в репозитории, чтобы второй оператор мог сделать diff.
Поток обработки EXIF Orientation
Значения EXIF Orientation 1–8 задают, как просмотрщик должен повернуть или отразить декодированные пиксели. В одном приложении PNG выглядит верно (тег применяется автоматически), в пайплайне, читающем «сырую» растру, — нет. Автоматизация должна сначала прочитать тег, затем решить: пропуск, ротация или карантин на ручную проверку.
Чтение ориентации (число):
exiftool -n -Orientation -s3 "$PNG"
Пустой вывод или 1 обычно означают, что пиксели уже «стоят прямо»; всё равно сверьте ширину и высоту со спецификацией макета. Значения 3, 6, 8 задают повороты 180°, 90° по часовой и 90° против; зеркальные 2, 4, 5, 7 требуют явной политики (часто бренд-ассеты с отражением отправляют в карантин).
Таблица политики (рекомендация):
| Тег Orientation | Действие | Заметки |
|---|---|---|
| Нет или 1 | Без ротации; при необходимости позже снять метаданные | UI-PNG часто без EXIF — не крутите «наугад». |
| 3, 6, 8 | magick -auto-orient, затем нормализация тега |
Физически вертикальные пиксели для «глупых» потребителей. |
| 2, 4, 5, 7 (зеркало) | Карантин или явный flop+rotate | Отражение редко намеренно в UI — флаг для ревью. |
После ротации задайте Orientation=1 через exiftool -overwrite_original -Orientation=1 или снимите EXIF по вашему runbook метаданных и ICC, чтобы downstream не применил поворот второй раз.
Пакетная без потерь ротация, имена и архив
Без потерь здесь — сохранение содержимого декодированного изображения без нежелательного ресэмплинга: повороты 90°/180° для PNG обычно не меняют глубину цвета; при этом перекодирование может изменить сжатый объём файла. Если обещаете байт-в-байт поставку, проверьте на золотом наборе — см. заметки по без потерь пересжатию.
Один файл, auto-orient (ImageMagick 7):
magick "$IN" -auto-orient "$OUT"
exiftool -overwrite_original -Orientation=1 "$OUT"
Эскиз пакетного цикла (zsh) — внутри навыка OpenClaw или LaunchAgent:
inbox=~/png_jobs/design_export/inbox
out_root=~/png_jobs/design_export/out/$(date +%F)
mkdir -p "$out_root"
for f in "$inbox"/*.png; do
[ -f "$f" ] || continue
ori=$(exiftool -n -Orientation -s3 "$f" 2>/dev/null || echo "")
[[ -z "$ori" || "$ori" == "1" ]] && cp -p "$f" "$out_root/$(basename "$f")" && continue
base=$(basename "$f" .png)
magick "$f" -auto-orient "$out_root/${base}_rot_v01.png"
exiftool -overwrite_original -Orientation=1 "$out_root/${base}_rot_v01.png"
done
Согласуйте финальные имена с автоименами и валидацией PNG: суффикс _rot_v01 или semver — только если воркер менял пиксели. На каждый файл добавляйте строку JSONL: sha256_before, sha256_after, orientation_in, длительность мс.
Опционально: после ротации прогоните проверки ICC из контура ICC — поворот не должен «съедать» профиль, но плохая цепочка инструментов может; при пропаже встроенного sRGB отправляйте файл в quarantine/.
FAQ: типичные ошибки
exiftool пишет «Unknown file type» для PNG, который открывается в Preview.
Файл может быть нулевой длины, переименованным JPEG или лежать на томе, недоступном песочнице. Проверьте сигнатуру xxd -l 8 (ожидайте 89 50 4E 47) и запускайте exiftool от того же пользователя, что наблюдатель.
-auto-orient ничего не сделал, превью всё ещё боком.
Инструмент мог записать ориентацию только в sidecar, который ваш просмотрщик игнорирует, либо в макете несоответствие внутреннего размера — не крутите без тега или подтверждения человека.
Gateway отвечает 401 — ротация не запускается.
Область токена или env не подхвачен в launchd: смотрите launchctl print gui/$(id -u), задайте EnvironmentVariables в plist или source для openclaw.env внутри обёртки.
Файл вырос или уменьшился после magick — это провал?
Не обязательно: PNG пересжимается. Сравнивайте декодированные пиксели или pHash. Для маркетинговой комплаенсности задокументируйте, нужен ли байт-идентичный вывод.
Operation not permitted на inbox — воркер не видит файлы.
TCC заблокировал бинарник или SSH-сессию. Выполните ls -leO на пути, убедитесь в совпадении UID владельца, при необходимости выдайте Terminal или подписанному хелперу полный доступ к диску.
Итог: относитесь к EXIF Orientation как к данным, которые читаются до любой трансформации пикселей; на удалённом Mac сочетайте дебаунс и гейт стабильного размера на inbox; при физической ротации используйте magick -auto-orient и явно нормализуйте Orientation=1; складывайте результаты в каталоги по датам и JSONL — тогда тот же навык OpenClaw перенесётся на следующий проект. Когда нужен постоянно включённый Apple Silicon под автоматизацию ассетов без привязки к ноутбуку дизайнера, откройте на MacPng публичные страницы без входа: аренда и покупка, тарифы и узлы, помощь по SSH и VNC. Остальные материалы — в разделе технические идеи.
Выделенный удалённый Mac под OpenClaw: EXIF watch, ротация PNG и архив
Ещё по теме: установка OpenClaw, watch и логи PNG, ICC и без потерь пересжатие.