2026 OpenClaw — фронтенд на практике:
Граф импортов бандла и сигналы tree-shaking на удалённом Mac: читаемая сводка для PR
Ревьюерам нужна не простыня stats.json, а кто потянул тяжёлый подграф, какой barrel сломал tree-shaking и новая ли регрессия для этого коммита. HowTo: на удалённом Mac с OpenClaw — метаданные модулей → bundle_graph.json → pr_bundle_graph_summary.md → PR или webhook с least privilege; шаги ниже воспроизводимы без ручного копирования логов в чат. Рядом держите пороги бандла, source map, кэш Vite/Webpack.
01 Подготовка среды
Node 20/22 LTS и менеджер по lockfile как в CI; при огромном stats.json — jq и потоковый парсер. Для сравнения графов между 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/...— только пути от корня репо. - Пороги — одна ссылка, не дублировать цифры.
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 в релиз.
OpenClaw и граф бандла на публичных страницах — без стены логина
Mac Mini M4 для длительных analyze-сборок, парсинга stats и ботов сводок в PR рядом с реальным WebKit. Откройте тарифы, помощь и SSH/VNC или сразу оформите покупку без регистрации — и встройте контур в релиз.