OpenClaw · 網關 Webhook · Lighthouse CLI · 遠端 Mac · 2026

2026 OpenClaw 前端實戰:
遠端 Mac 上網關 Webhook 收預覽 URL、串 Lighthouse 閾值與 PR 摘要

2026.04.25 前端/發布閘道 約 8 分鐘閱讀

適用對象:已在遠端 Mac上跑 OpenClaw,希望建置完成後由網關 Webhook 單點收束預覽網址,再觸發 Lighthouse CLI、用庫內 閾值 JSON 做可重現裁決,並把短 Markdown冪等寫回 PR。固定 slug:2026-openclaw-remote-mac-preview-lighthouse-webhook.html。若還要把狀態寫進 Deployments 列,可併讀 GitHub Deployments × Lighthouse;排程告警見 Lighthouse 效能告警;供應商 Hook 冒煙見 Vercel Deployment Hook

預覽 URL 常附帶部署保護、邊緣快取與 HTTP/3 協商差異;在 Linux 容器裡跑的 Lighthouse 與設計師手上的 Safari/WebKit 所見未必一致。OpenClaw 網關負責驗簽、速率限制、載荷正規化與任務 enqueue;實際量測放在租用的 遠端 Mac 上執行,可固定 Chromium 通道、對齊字型與合成器行為,並在同一台機器上再排短程 Playwright webkit 冒煙,補上實驗室指標以外的真機訊號。

本文路徑刻意不綁定單一 PaaS:只要 Webhook 能把 preview_urlGIT_SHA 送到網關,後續暖站、lighthouse CLI、perf/thresholds.json 比對與退出碼映射皆可版本庫化複製。

01 可複現 HowTo 步驟

  1. 網關 Ingress。在 OpenClaw 暴露 POST /hooks/preview-lighthouse(路徑自訂即可),強制 X-OpenClaw-Signature 或 mTLS;拒絕缺少 Idempotency-Key 的請求,避免雙送洗版。
  2. 解析載荷。讀取 preview_urlgit.shapull_request.number(或供應商別名欄位),校驗僅 https: 且主機名在白名單;寫入佇列並附 OPENCLAW_RUN_ID
  3. Runner checkout。遠端 Mac 以該 SHA fetch,確保 perf/thresholds.json 與腳本同源;環境變數注入預覽鑑權(例如 PREVIEW_BEARER),勿寫進 PR 正文。
  4. 暖站。以與 Lighthouse 相同的 User-Agent 對 HTML 與主入口 JS 各做一次 GET;遇 429 指數退避一次。
  5. Lighthouse CLI。範例:lighthouse "${PREVIEW_URL}" --output=json --output-path="./.openclaw/reports/${OPENCLAW_RUN_ID}.lhr.json" --chrome-flags="--headless=new" --only-categories=performance(類別視團隊擴充)。
  6. 閾值閘道。以 Node 或小腳本讀取 lhr.jsonperf/thresholds.json,產出 gate.json(通過/失敗欄位與差額);映射退出碼後結束程序。
  7. 回傳 PR。將同一 Markdown 填入「更新既有 bot 留言」或 Checks 摘要;隱藏鍵建議 <!-- openclaw-lh-preview:${GIT_SHA} -->。可選追加一行 NDJSON 供網關儀表板。
網關能力對齊

OpenClaw 網關適合集中簽章驗證金鑰旋轉佇列反壓;Mac Runner 只處理長耗時瀏覽器工作,爆炸半徑較小、也方便稽核「誰在何時對哪個預覽網址做了量測」。

02 閾值 JSON 與退出碼對照

將門檻寫入版本庫的 perf/thresholds.json(鍵名與內部腳本對齊即可)。下列為建議欄位與程序退出碼語意,供合併佇列與網關告警規則共用。

JSON 鍵/指標 建議語意 退出碼
performanceScore.min 效能類別加權分數下限(0–100)。 未達成 → 2(回歸)
metrics.LCP_ms.max 最大內容繪製上限(毫秒)。 超標 → 2
metrics.CLS.maxTBT_ms.max 版面穩定與主執行緒阻塞預算。 任一超標 → 2
schemaVersion 不符或 JSON 損毀 無法裁決。 1(設定/工件錯誤)
頁面載入逾時、無頭瀏覽器崩潰、DNS 間歇 與產品效能無關的基礎設施不穩定。 3(建議重試排程,勿當作回歸)
全指標在門檻內 通過閘道。 0
// perf/thresholds.json 範例片段
{
  "schemaVersion": 1,
  "performanceScore": { "min": 0.85 },
  "metrics": {
    "LCP_ms": { "max": 2800 },
    "CLS": { "max": 0.08 },
    "TBT_ms": { "max": 350 }
  }
}

03 PR 可讀摘要模板(Markdown)

維持四至六行,只寫與基線的差額與裁決;連結到短效簽章的 lhr.json 或內部工件,勿貼長效 Cookie 或祕鑰。

<!-- openclaw-lh-preview:${GIT_SHA} -->
### Lighthouse 預覽閘道(OpenClaw/遠端 Mac)
- **預覽**:${PREVIEW_URL}
- **提交**:\`${GIT_SHA}\` · run \`${OPENCLAW_RUN_ID}\`
- **裁決**:${VERDICT}(perf ${PERF_SCORE},LCP ${LCP_MS} ms,CLS ${CLS},TBT ${TBT_MS} ms)
- **工件**:見 CI/網關工件 \`lhr.json\`/\`gate.json\`

04 Safari/WebKit 與自動化如何並陳

Lighthouse 預設以 Chromium 產出可重現的實驗室曲線,適合當合併閘道;但業務方常問「Safari 上是否也炸裂」。建議在同一台遠端 Mac上為通過閘道的提交再加一段極短的 Playwright webkit 冒煙(關鍵路由與 LCP 元素可見性),失敗類型與 Lighthouse 分開標籤,避免把 WebKit 佈局差異誤判成「效能回歸」。

05 FAQ:403、逾時

為何無頭 Chrome 對預覽網址拿到 HTTP 403?

常見原因包括:部署保護(Vercel/Netlify 等)、地理封鎖、或缺少與瀏覽器一致的 Authorization/Cookie。請把網關在冒煙測試已驗證可用的標頭與憑證,經環境變數注入 Runner,並讓暖站與 Lighthouse 共用同一組標頭;若策略允許,將遠端 Mac 的固定出口 IP加入允許清單,優於全域關閉保護。

Lighthouse 間歇逾時要怎麼分類?

以相同 OPENCLAW_RUN_ID 重試一次,同步調高等待上限並固定 Chromium 版本。若仍失敗,請以退出碼 3 結束並標記為基礎設施事件,讓合併佇列與 on-call 不把冷啟動與 CDN 抖動誤當效能回歸。

遠端 Mac · OpenClaw · 免登入導覽

把預覽閘道留在網關,把量測留在真 Mac

歡迎先免登入瀏覽 首頁定價幫助中心;需要專屬節點承載 Webhook、Lighthouse 與 WebKit 冒煙時,請至 購買/租用 取得 Mac 雲端資源。延伸可讀 Playwright 分片與 PR 摘要,或回到 技術見解索引

網關 Webhook Lighthouse WebKit 冒煙
租用遠端 Mac · 預覽 Lighthouse