用途:frontend-audit 是可复用的设计验证循环,用于把目标设计图(goal PNG)与实时渲染的 UI 对齐,适用于用户提供设计稿要求“按此匹配界面”“迭代这个 mock”“校验实现是否符合设计”,或指出按钮过白、装饰位置偏差等视觉漂移的场景。
使用前提:用户只需把目标 PNG 放入 design/ 并让开发服务器处于运行状态,其余步骤由助手完成。首次在项目中使用时会先检查项目根目录是否存在 .frontend-audit.json:
test -f .frontend-audit.json && echo "configured" || echo "needs-bootstrap"
若显示 needs-bootstrap,助手会一次性完成配置:收集开发服务器 URL、目标图目录、是否立即安装依赖,再安装 JS 依赖(如 pngjs、jpeg-js、playwright 及 chromium),检查 Python 3.10+ 并可按需安装,随后预置 OmniParser 区域检测环境(约 3GB,一次性),最后写入 .frontend-audit.json 并提示配置完成。
主要流程:运行时按顺序执行若干脚本,包括 discover.mjs(发现哪些 PNG 需要生成区域,按 SHA-256 判断 new、stale、up-to-date、unhashed)、bootstrap-regions.mjs(默认基于 ML 的 OmniParser 生成语义标签区域,或用 --programmatic 走纯 JS 的 Sobel + 连通分量回退路径)、bind-selectors.mjs(把区域定位符绑定到实时 DOM,优先 testid、role+name、文本、结构 CSS 路径)、sample-colors.mjs(直方图聚类提取主色)、inspect-shape.mjs(检查圆角、边框、背景模式、阴影)、check.mjs(读取实时渲染的计算样式)、snap.mjs(截图并生成与目标图的差异图,须带 --goal)。区域描述以分数坐标写在各 PNG 同级的 .regions.json 中。
限制与注意:OmniParser 依赖较大,需 Python 3.10+,首次安装约 3GB 且需下载模型权重,Windows 下无法可靠通过 CLI 安装 Python;icon_detect 采用 AGPL 许可;程序化回退路径生成的是按网格位置命名的区域,语义性较弱,需人工重命名;区域文件可由用户自行编辑,但通常无需手动改动。