2026 OpenClaw 前端实战:
远程 Mac 聚合 Vite/Webpack 构建耗时并生成 PR 性能回归摘要
合并前要看清生产构建 wall time是否回归,但 Vite 与 Webpack 日志难横向对比。本文给出远程 Mac Runner可复现串联:落盘 build_metrics.json,对比基线分级门禁,OpenClaw 生成 pr_build_perf_summary.md,由 CI Webhook 或 PR 评论回传。延伸阅读 Vite/Webpack 缓存与时长、Bundle 体积 PR 摘要、import 图谱 PR 摘要。
01 痛点与目标
① 两工具日志难用同一口径说「慢百分之几」。② 整段日志进 PR 易泄露路径。③ 高权限 Token 交给网关审计面过大。目标:薄 schema 聚合阶段耗时,阈值分级后 OpenClaw 只出短摘要,凭据拆成网关与 Git 两类最小权限。
02 采集方式对照:Vite 与 Webpack
只采集可机读毫秒,避免依赖 ANSI 日志。
| 工具 | 推荐钩子 | 注意点 |
|---|---|---|
| Vite | 插件 buildStart / closeBundle 打点或累计阶段。 |
区分 dev 与 build;记 cacheDir 是否命中。 |
| Webpack | done 与 processAssets 间分段;stats 再裁剪。 |
并行多时以阶段墙钟为准。 |
03 build_metrics.json 字段解析
键名可微调,建议保留下列字段。
| 字段 | 含义 |
|---|---|
repo sha pr toolchain |
坐标、提交、可选 PR 号;工具链与 Node 小版本、Runner 标签含机型。 |
totalMs |
入口到成功退出的墙钟毫秒,不含上传 artifact。 |
phases cacheHit |
phases 为 name+ms 数组;cacheHit 解释是否缓存未命中致慢。 |
04 可执行脚本串联(≥5 步)
build:metrics:生产构建后 Node 写.openclaw/reports/${SHA}/build_metrics.json。- CI:
jq empty校验,失败非零退出。 - 拉 main 绿构建基线,输出
build_gate.json(level、reasons)。 - OpenClaw 读 metrics 与 gate,落地
pr_build_perf_summary.md,stdout 不打印密钥。 - fail 则 job 红;warn 则绿但走通知。
- 通知:HMAC Webhook 或
gh pr comment,正文链 artifact。
可引用:.openclaw/reports/<SHA>/;阶段名用英文 slug;Mac 与 Linux 各跑一次对照 Apple 栈差异。
05 阈值与告警分级
总时长与最长阶段双轨对比基线:低于 warn 记 INFO;warn 与 fail 间标黄并出摘要;超 fail 则红。设最小绝对增量如总时长慢满五百毫秒才算回归。缓存未命中标 warn 并附原因,勿与代码回归混谈。
06 CI Webhook 联动与幂等
Webhook 负载建议含 sha、pr、gate.level 与摘要前两百字。服务端用常量时间校验 HMAC,拒绝重放可用短时戳窗口。评论去重可用隐藏 HTML 注释键 build-metrics/<SHA> 或查 API 是否已有同前缀。失败重试采用指数退避,避免合并潮打满内部网关。
07 OpenClaw 网关 Token 与最小权限
网关 Token仅用于调用受控模板与模型路由:绑定工作区、限速、禁用任意网络抓取;生命周期短并支持按环境轮换。写 Git仍优先 GITHUB_TOKEN 配 permissions: pull-requests: write,或使用细粒度 PAT 限定单仓且只开 PR 评论与 Contents 读。勿把组织管理员或 workflow 写权限交给 OpenClaw 执行层;网关门与 Git 凭据分库存储,流水线日志对两类 Token 一律脱敏。