2026 OpenClaw 前端实战:
远程 Mac 上合并 Oxlint 与 Biome JSON 为单一门禁摘要并回传 PR 可读评论
要把高速 Rust 系扫描与 Biome 的诊断一起纳入合前闸口,又不想让 PR 线程被两份原始 JSON 淹没,可以在 OpenClaw 调度下的 远程 Mac 上走同一套路:机器可读产物进固定目录 → 网关归一计数与阈值 → 可选经 OpenAI 兼容端点压成一句人话 → 带锚点幂等回传评论。本文是 HowTo,附步骤清单与阈值表;延伸阅读 Biome 与增量类型检查、knip 未使用导出摘要、package.json 预检;站点导航 首页、帮助、博客。
适用场景
Monorepo 里已用 Oxlint 做 JS/TS 快速扫、用 Biome 覆盖格式化以外的诊断时,CI 往往各写各的 JSON。把两源折叠成一张表再给合并请求,值班与机器人都能用同一退出码收束;与「仅跑其中一种工具」相比,能避免「Biome 绿了但 Oxlint 仍拦变更」的灰区。
与在审查机上手动点开两份原始报告相比,网关层的价值在于稳定字段与统一截断:无论上游 JSON 是否增删键,下游 PR 模板与机器人解析只依赖你自建的 lint_summary.json schema。大仓首次接入时,建议先在 feature 分支把 warn 预算放宽,观察一周计数分布再收紧,避免误伤主干合并节奏。
CI 负责产出稳定 JSON;OpenClaw 网关在远程节点做归一、截断与评论,避免在共享 Runner 上长驻令牌。与 Playwright 分片摘要 并列时,统一 artifacts/ 父目录便于工单引用。
| 项 | 建议阈值 | 说明 |
|---|---|---|
| 致命 / error | 合计 > 0 即非零退出 | 两源任一存在 error 级即判失败,避免半套门禁。 |
| warn 预算 | 例如 ≤ 30(按团队基线调) | 超预算失败或仅标黄进摘要,二选一写进仓库规范。 |
| 评论截断 | ≤ 6000 字符;每源 ≤ 12 条样例 | 余量用一行计数;全文 JSON 放公开制品,勿贴需登录私链。 |
| LLM 可选超时 | 8–15 s;最多重试 2 次 | 摘要失败则退回纯表格,不把合前闸挂死在模型上。 |
01 产物路径与命令约定
在仓库根约定 artifacts/oxlint.json 与 artifacts/biome.json(文件名可按流水线调整,但网关侧只认白名单)。远程 Mac 与 CI 使用相同 engines.node 与锁文件;Oxlint、Biome 版本写进 package.json,避免字段结构漂移。Oxlint 侧使用 json 风格输出重定向到文件;Biome 侧使用 biome check 的 json 报告落盘。若 Monorepo 在子包执行,额外写 artifacts/lint-meta.json 记录工作目录与短 SHA,供下游拼绝对路径。
mkdir -p artifacts npx oxlint --format json . > artifacts/oxlint.json npx @biomejs/biome check --reporter=json . > artifacts/biome.json
具体子命令以你锁定的主版本文档为准;关键是始终写出 UTF-8 JSON,失败时 stderr 另落 artifacts/*.stderr.log 便于排障。
02 网关归一与门禁阈值
OpenClaw 下游用一小段 Node 或 jq 流水线读取两文件,映射到统一结构:source(oxlint|biome)、severity、path、line、rule、message。聚合后写 artifacts/lint_summary.json,包含 issue_count、by_source、top_diagnostics、exit_code。判失败逻辑建议与上表一致:先数 error,再可选检查 warn 预算;加权分方案仅在与存量基线对齐时使用,并在 README 写明公式,避免与机器人摘要打架。
node scripts/merge-oxlint-biome.mjs \ --ox artifacts/oxlint.json \ --biome artifacts/biome.json \ --out artifacts/lint_summary.json \ --max-warn 30
03 可选:OpenAI 兼容客户端串联
若希望 PR 上出现一句自然语言结论,可在网关内把 lint_summary.json 裁剪为百行以内的结构化片段(去掉重复 message),经自建或供应商网关向 /v1/chat/completions 兼容路径发起 POST:模型只负责润色,退出码仍以原始计数为准。令牌与 base URL 只进受控密钥存储;请求体打码路径中的仓库名;响应失败按上文超时策略降级为纯 Markdown 表。与审计合规冲突时,可直接关闭该分支,不影响主路径。
04 PR 评论幂等与清单
调用 Git 托管方 REST/GraphQL 时,用 HTML 注释锚(如 <!-- openclaw-oxlint-biome -->)定位机器人评论,存在则 PATCH,不存在则 POST。幂等键建议 pr-{number}-{short_sha}。正文用紧凑表列出两源 error/warn、exit_code、可选一句模型摘要;勿内嵌完整 JSON。排障清单:
- 两命令是否在非交互环境下调到同一
cwd; - JSON 是否可被
jq empty解析; - 网关日志是否含未脱敏令牌;
- 评论 API 是否触长度上限,必要时再砍样例行数;
- 与 构建指标摘要 同楼时锚点命名是否冲突。
05 可复现步骤总清单
按顺序勾选即可完成最小闭环;与 Monorepo 远程缓存 同跑时,把缓存键加上两工具的版本号段。
- 在
package.json声明 engines 与 Oxlint、Biome 精确版本。 - CI 与远程 Mac 同锁文件安装依赖,打印
node -v留痕。 - 增加上文两条 shell 行,失败时也保留已写入的 JSON 或 stderr 片段。
- 提交
merge-oxlint-biome.mjs(或等价实现),单测覆盖空报告与畸形 JSON。 - 在 OpenClaw 任务图挂载聚合步骤,读环境变量中的 warn 预算与样例行上限。
- (可选)配置网关内 LLM 分支:仅 POST 裁剪后的摘要字段,超时降级。
- 实现 PR 评论:锚点、PATCH/POST、长度检查。
- 在一条真实 PR 上做一次 dry-run,核对移动端渲染与退出码。
更多文章:博客列表。