Веб-автоматизация 2026

2026 OpenClaw — фронтенд на практике:
Граф импортов бандла и сигналы tree-shaking на удалённом Mac: читаемая сводка для PR

10.04.2026 Фронтенд и релиз 9 мин

Ревьюерам нужна не простыня stats.json, а кто потянул тяжёлый подграф, какой barrel сломал tree-shaking и новая ли регрессия для этого коммита. HowTo: на удалённом Mac с OpenClaw — метаданные модулей → bundle_graph.jsonpr_bundle_graph_summary.md → PR или webhook с least privilege; шаги ниже воспроизводимы без ручного копирования логов в чат. Рядом держите пороги бандла, source map, кэш Vite/Webpack.

01 Подготовка среды

Node 20/22 LTS и менеджер по lockfile как в CI; при огромном stats.jsonjq и потоковый парсер. Для сравнения графов между PR храните указатель baseline.json (SHA main и URL артефакта), чтобы агент не угадывал родителя. Checkout рядом с OpenClaw: чтение репо и артефактов, запись только в .openclaw/reports/<git-sha>/ в .gitignore. Детерминизм: закреплённые зависимости, отдельный analyze без грязного кэша, NODE_ENV=production для реального tree-shaking.

Граф — инспекция, не второй тест-сьют: одна установка, одна analyze-сборка, один парсинг и стабильная JSON-схема. Вызов (webpack --json, Rspack, Vite/Rolldown, visualizer в JSON) опишите в README.openclaw.md.

02 Поток разбора артефактов сборки

Прод-сборка со структурой модулей: webpack — --json > stats.json без лишнего профиля; Vite — плагин после build; Rspack/Rolldown — причины зависимостей. Сырьё кладите в .openclaw/reports/$SHA/raw/ до правок.

bundle_graph.json со схемой вроде bundle_graph/v1: gitSha, bundler, edges, warnings. Рёбра: откуда/куда (относительно репо), static/dynamic/common. Предупреждения: tree-shaking, sideEffects, unused export; стеки — только с source map.

Стек Типичный артефакт Заметка для парсера
webpack / Rspack stats.json, причины модулей Ограничить поля, стримить при >100 МБ
Vite / Rolldown JSON плагина визуализатора / meta Явно пометить entry и режим analyze
Rollup Вывод visualizer в JSON Разделить чанки и ручные split
Монорепозиторий

Фильтр по git diff или entry; bundle_graph.full.json в архив, bundle_graph.pruned.json — в агент.

Exit ≠0 при нерезолве id или превышении порога предупреждений — CI отделяет «граф сломан» от «сводка записана». Парсинг — потоково, без одной гигантской строки в RAM на Apple Silicon; при сотнях мегабайт в enterprise SPA это критично для стабильности раннера.

03 Шаблон сводки

OpenClaw заполняет pr_bundle_graph_summary.md из bundle_graph.pruned.json: отпечаток (SHA, бандлер, флаги), топ импортёров (до пяти по весу или числу зависимостей), tree-shaking и sideEffects с путями от корня репо, дельта к baseline только по новым рёбрам и предупреждениям, один следующий шаг (barrel, lazy, sideEffects в package.json).

  • Markdown ~400 слов; таблицы — во вложение или артефакт.
  • Без /Users/... — только пути от корня репо.
  • Пороги — одна ссылка, не дублировать цифры.
Слоты из JSON лучше прозы: grep по регрессиям и понятный путь к сырому stats.

04 Связка с CI и комментариями в PR

Workflow на Mac или после артефактов CI — один SHA на checkout и dist/. Вывод: webhook или gh pr comment с узкими permissions / PAT на один репо.

curl -sS -X POST "$BUNDLE_GRAPH_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d "$(jq -n --rawfile body pr_bundle_graph_summary.md --arg sha "${GITHUB_SHA:-local}" '{text: $body, sha: $sha}')"

Маркер <!-- openclaw-bundle-graph:$SHA --> для дедупа. Лимиты API — очередь на шлюзе, ошибки в status.txt, не бесконечный retry в агенте.

05 Права и таймауты

Webhook — только env; токены: Pull requests R/W, при нужде Contents Read для baseline; без org-admin на общих ботах. Входящий HTTP: TLS, HMAC, rate limit по IP.

timeout или лимиты systemd на analyze и парсинг; бюджет как у худшего легитимного SPA (часто 20–40 мин), маркер BUILD_TIMEOUT_EXIT=124 для сводки OpenClaw. Память: при пике Node снизить UV_THREADPOOL_SIZE или parallelism webpack только на inspect-job.

06 FAQ

Граф vs рантайм: компиляция не покрывает все динамические import навигации; при code-splitting добавляйте замеры по маршрутам.

Шум без роста gzip: пороги из статьи про bundle analyzer как gate merge, предупреждения tree-shaking — подсказки triage.

Несколько entry: отдельный JSON на HTML-точку входа или поле entryId на каждом ребре.

403 GitHub: срок PAT, авторизация SSO организации, право бота комментировать внешние форки.

Дубли OpenClaw: HTML-маркер в теле комментария, lock в .openclaw/reports/$SHA/ или чтение существующих комментариев до POST.

Итог

Стабильный bundle_graph.json, слотовый Markdown для людей, отдача в PR или webhook с идемпотентностью по SHA и узкими токенами. Удалённый Mac выдерживает длинные analyze-сборки и большие JSON рядом с Safari и WebKit, не перегружая ноутбуки и не вставляя секреты в текст сводки.

Mac Mini M4 под analyze и ботов: покупка без входа, SSH/VNC, тарифы — встройте HowTo в релиз.

Удалённый Mac для анализа бандла

OpenClaw и граф бандла на публичных страницах — без стены логина

Mac Mini M4 для длительных analyze-сборок, парсинга stats и ботов сводок в PR рядом с реальным WebKit. Откройте тарифы, помощь и SSH/VNC или сразу оформите покупку без регистрации — и встройте контур в релиз.

Граф импортов OpenClaw Markdown для PR
Mac для OpenClaw и графа бандла