2026 OpenClaw Frontend-Praxis:
Remote Mac: Vite/Webpack-Buildzeiten aggregieren — PR-Performance-Regression-Summary zurückspielen
Pull-Request-Reviews leben von klaren Signalen: nicht nur „Build war langsam“, sondern welche Phase (Resolve, Transpile, Bundle, Minify) wie viele Millisekunden kostet und ob der Unterschied neu gegenüber der Baseline ist. Auf einem Remote Mac (Apple Silicon, reproduzierbare Pfade) fassen Sie Vite- und Webpack-Läufe in einem build_metrics.json zusammen, leiten daraus ein kompaktes pr_build_perf_summary.md per OpenClaw ab und spielen es per Webhook oder PR-Kommentar ein — ohne Roh-Logs zu exfiltrieren. Kontext aus dem Ökosystem: Bundle-Graph und Tree-Shaking-Summary, Bundle-Volumen-Schwellen und Vite-/Webpack-Cache-Tuning, damit Kaltstarts die Zeiten nicht uninterpretierbar verzerren. Öffentliche Buchung: Preise, kaufen.html.
- Roh-Konsolenzeiten ohne Schema — keine wiederholbaren Diffs zwischen PR und
main. - Warn-Schwellen ohne
fail-Policy: Teams wissen nicht, ob Merge blockiert wird. - Derselbe Token für GitHub und OpenClaw-Gateway — bei Leak doppelt gefährlich.
| Aspekt | Webpack / Rspack | Vite (Rollup/Rolldown) |
|---|---|---|
| Phasen-Hooks | compiler.hooks, compilation |
buildStart, closeBundle, Plugin-generateBundle |
| Cache-Signal | cache-Treffer im persistenten Store |
deps pre-bundled, optimizeDeps-Status |
| Typische Phasen-Labels | resolve, module, seal, emit | transform, chunk, minify (je nach Pipeline) |
| OpenClaw-Eingang | Normalisiert in phases[] mit name, ms, optional cacheHit |
|
01 Skript-Kette und Artefakt-Pfade
Legen Sie auf dem Remote Mac ein festes Ausgabeverzeichnis fest, etwa .openclaw/reports/${GITHUB_SHA:-$(git rev-parse HEAD)}/, und ignorieren Sie es in Git. Die ausführbare Kette beginnt mit reproduzierbarer Tooling-Basis: gleiche Node-LTS-Minor wie in der CI, npm ci oder pnpm install --frozen-lockfile, dann ein Build mit Instrumentierung. Webpack: kleines Node-Skript, das compiler-Hooks mit process.hrtime.bigint() um Phasen wie „seal“ und „emit“ wickelt und kumulierte Millisekunden schreibt. Vite: Plugin, das in closeBundle und nach optionaler Minification stoppt — wichtig ist, dass Sie Wall-Clock-ms je Phase speichern, nicht nur CPU-Profile.
Nach dem Lauf soll ein einziges JSON entstehen; Rohlogs bleiben optional unter raw/build.log. Validieren Sie mit jq empty build_metrics.json, bevor OpenClaw startet. So bleibt der Ablauf pro Git-SHA bitweise wiederholbar, solange Cache-Verzeichnisse dokumentiert und bei Bedarf geleert werden — siehe auch Cache-Optimierung für faire Vergleiche.
#!/usr/bin/env bash
set -euo pipefail
SHA="${GITHUB_SHA:-$(git rev-parse HEAD)}"
OUT=".openclaw/reports/${SHA}"
mkdir -p "$OUT"
export BUILD_METRICS_PATH="$OUT/build_metrics.json"
npm run build:instrumented # ruft eure Webpack/Vite-Hooks auf
jq empty "$BUILD_METRICS_PATH"
Trennen Sie „Messung“ und „Summary“: erst valides JSON, dann OpenClaw — so scheitern defekte Builds schnell und geben keine halbfertigen PR-Kommentare ab.
02
build_metrics.json — Felder parsen
Ein stabiler JSON-Vertrag reduziert Parser-Brüche zwischen Teams. Empfohlenes Minimum: schema (z. B. build_metrics/v1), gitSha, toolchain (vite|webpack|rspack), nodeVersion, totalMs, phases als Array von Objekten mit name, ms und optional cacheHit (boolean oder Trefferquote 0–1). Ergänzend: ciLabel (Runner-Name), coldStart (ob node_modules frisch war) und entries, wenn mehrere HTML-Entrypoints separat gemessen werden.
OpenClaw liest diese Felder deterministisch und projiziert sie in Markdown-Abschnitte: Übersicht (SHA, Gesamtzeit), Phasen-Tabelle, Cache-Hinweis. Keine Pfade mit Benutzernamen vom Remote Mac im JSON ablegen — relative Repo-Pfade oder Hash-IDs. Wenn Sie zusätzlich Bundle-Größen auswerten, verlinken Sie statt Duplikaten die Analyzer-Schwellen-Summary.
03
Baseline, Schwellen und build_gate.json
Performance-Regressionen sind relativ: laden Sie eine Baseline vom letzten grünen main-Build oder vom merge-base mit Ihrem Feature-Branch. Speichern Sie baselineMs und optional Phasen-Baseline in einer kleinen Datei oder holen Sie sie aus Ihrer Artefakt-Registry. Ein zweites JSON, build_gate.json, fasst das Ergebnis zusammen: level mit Werten pass, warn oder fail, reasons als kurze Strings (z. B. „totalMs +18 % gegenüber baseline“), deltas mit Phasennamen und Prozent.
Schwellen-Alarm: definieren Sie Team-weit z. B. +10 % warn, +25 % fail auf totalMs, plus harte Obergrenzen für Einzelphasen (Minify). CI kann bei fail den Job rot stellen, bei warn nur den OpenClaw-Kommentar posten — so bleiben harte Blocker und weiche Signale trennbar.
04 OpenClaw-Summary und Gateway-Token
Übergeben Sie build_metrics.json und build_gate.json an OpenClaw (CLI oder HTTP-Gateway) und erzeugen Sie pr_build_perf_summary.md mit festen Überschriften: Fingerprint, Gesamt-Delta, Top-Phasen, Empfehlung (z. B. „Prüfen Sie Minify-Plugins“). Der Agent soll keine Secrets nach stdout oder in die Markdown-Datei schreiben.
OpenClaw-Gateway-Token (Minimalrechte): separater Bearer- oder mTLS-Client nur für Ihre OpenClaw-Instanz — nicht der GitHub-GITHUB_TOKEN. Rechte: ausschließlich POST auf den Summary-Endpunkt mit Größenlimit; kein Zugriff auf Repositories, keine Org-Administration. Kurze TTL oder regelmäßige Rotation; in CI als verschlüsseltes Secret; lokal im macOS-Schlüsselbund statt in Shell-History. So bleibt ein Leck des Gateway-Tokens von Git-Write-Rechten entkoppelt — im Gegensatz zu einem PAT mit breiten Repo-Rechten.
Für Git-Interaktionen (PR-Kommentar) verwenden Sie weiterhin einen eingeschränkten GitHub-Token nur mit pull_requests: write und contents: read auf ein Repository — orthogonal zum OpenClaw-Gateway.
05 CI, Webhook und Idempotenz
Nach der Summary-Generierung kann die CI einen HMAC-signierten Webhook (Slack, Teams, eigenes Ingest) aufrufen oder gh pr comment nutzen. Der Body enthält nur den Markdown-Text und Metadaten wie PR-Nummer — keine Roh-JSON-Artefakte, wenn die Plattform Zeichenlimits hat. Setzen Sie einen Idempotency-Key aus pr-Nummer + gitSha oder einen HTML-Kommentar <!-- openclaw-build-perf:$SHA -->, damit erneute Läufe bestehende Kommentare aktualisieren statt Spam zu erzeugen — analog zur Bundle-Graph-Summary.
curl -sS -X POST "$BUILD_PERF_WEBHOOK_URL" \
-H "Content-Type: application/json" \
-H "X-Hub-Signature-256: sha256=$(printf '%s' "$BODY" | openssl dgst -sha256 -hmac "$WEBHOOK_SECRET" -binary | xxd -p -c 256)" \
-d "$BODY"
Verbinden Sie optional denselben Workflow mit Branch-Protection: fail aus build_gate.json bricht den Job ab, während warn nur annotiert. So bleibt die Webhook-Schicht rein informativ und der Merge-Status folgt Ihrer Policy.
06 FAQ
Monorepo: Messen Sie pro Workspace-Paket getrennte phases oder tragen Sie packageName im JSON, damit OpenClaw keine Zeiten verschiedener Apps summiert.
Parallelität: Wenn mehrere Builds gleichzeitig laufen, unterscheiden Sie Runs über ciRunId, um Baseline-Vergleiche nicht zu vermischen.
429 / Rate-Limits: Backoff und Warteschlange am Gateway; Fehler in status.txt neben dem Report loggen statt stillem Retry.
Ein versioniertes build_metrics.json, dazu build_gate.json mit klarer warn/fail-Semantik, OpenClaw für knappes Markdown und getrennte Credentials für Gateway und Git — so wird Build-Performance im PR reviewbar und auditierbar. Der Remote Mac entlastet Laptops und liefert stabile Apple-Silicon-Zeiten für lange Bundler-Läufe.
OpenClaw-Buildmetriken planen — öffentliche Preise, ohne Login-Zwang
Mieten Sie einen Mac Mini M4 für instrumentierte Vite-/Webpack-Läufe, JSON-Parsing und PR-Summaries — parallel zu Safari- und WebKit-Workflows. Preise und Kaufen sind auf der Website einsehbar; Anleitungen zu SSH und VNC in der Hilfe. Verknüpfen Sie dieses HowTo mit Ihrer Pipeline und verwandeln Sie Buildzeiten in reviewbare, wiederholbare Fakten.