2026 OpenClaw front sur Mac distant :
Oxlint et Biome en JSON → une seule porte et un commentaire PR lisible
Public : équipes qui courent déjà Oxlint et Biome mais veulent un seul digest par pull request. Ce HowTo aligne portable, CI et Mac distant : la passerelle OpenClaw fusionne les arbres JSON, applique des budgets, puis upserte un commentaire. Pour une autre chaîne déjà documentée sur le site (feuilles de style historiques), voir l’article passerelle associé. Jetons et bots : résumé E2E côté secrets. Incrémental TypeScript côté Biome : checklist Mac distant.
00 HowTo : fil reproductible de bout en bout
Gardez le même ordre sur poste local, pipeline et Mac distant loué : les empreintes de chemins et les totaux restent comparables quand la passerelle agrège.
- Épinglez
oxlintet@biomejs/biomedanspackage.json; validez Node 22+ viaengines. - Écrivez Oxlint JSON avec
oxlint --format jsonvers.openclaw/reports/oxlint.json(tableaudiagnosticsracine). - Écrivez Biome JSON avec
biome check --reporter=jsonoubiome ci --reporter=jsonvers.openclaw/reports/biome.json; réservez stderr aux humains. - Transmettez
GIT_SHA,PR_NUMBER,REPO_ROOTà OpenClaw avec les deux fichiers, sans mélanger TTY et disque. - Exécutez le script de fusion, appliquez le tableau de seuils, produisez
pr_lint_gate_summary.md, appelez l’API du fournisseur Git. - En option, enfilez un job qui lit seulement le digest et appelle un point de terminaison compatible OpenAI pour une prose courte.
L’ordonnancement reste compatible avec les rapports Playwright shard sur Mac distant : gardez les contrôles statiques rapides avant les matrices navigateur.
01 Pourquoi deux flux JSON restent pénibles en revue
- Dérive de forme : Oxlint expose des diagnostics plats tandis que Biome imbrique codes et sévérités ; sans couche de fusion, les bots doublonnent ou oublient des fichiers.
- Bruit de chemins : les chemins absolus divergent entre CI et poste développeur ; la passerelle doit retirer la racine du dépôt de façon identique.
- Spam de commentaires : deux messages bot par push fatiguent l’équipe ; un upsert avec marqueur stabilise le fil.
En revue, citez des chiffres versionnés : « le digest agrégé porte la vérité contractuelle » plutôt que des captures d’écran locales.
02 Matrice : où chaque outil porte la décision
Utilisez la matrice pour ordonner les blocs du Markdown et pour négocier les budgets avec la sécurité.
| Enjeu | Priorité Oxlint | Priorité Biome |
|---|---|---|
| Débit sur grands arbres | Analyseur Rust, parallélisme naturel. | Chaîne unique format plus lint. |
| Surface politique | Catalogue Oxc et règles ciblées JS/TS. | Assistants, tri des imports, fichiers JSON. |
| Fusion côté passerelle | Traiter severity: error comme bloquant. |
Mapper les sévérités vers le même enum interne. |
03 Émission stable des artefacts sur Node 22+
En local, gardez stdout pour le triage humain ; en automation, écrivez toujours sur disque. La passerelle ne relance les binaires que si un fichier est tronqué.
Extrait package.json :
{
"engines": { "node": ">=22" },
"scripts": {
"lint:oxlint:json": "mkdir -p .openclaw/reports && oxlint --format json . > .openclaw/reports/oxlint.json",
"lint:biome:json": "mkdir -p .openclaw/reports && biome check --reporter=json . > .openclaw/reports/biome.json",
"lint:fast:json": "npm run lint:oxlint:json && npm run lint:biome:json"
}
}
Si Biome signale un reporter expérimental, figez une mineure et snapshottez des fixtures pour que les montées de version restent prévisibles sur le Mac distant.
04 Seuils versionnés côté passerelle
Versionnez les plafonds à côté du script de fusion ; code de sortie non nul dès qu’une ligne « dur » échoue. Sur branche fonctionnelle, un drapeau peut assouplir les lignes « douces ».
| Signal | Échec dur lorsque | Plafond souple suggéré |
|---|---|---|
| Diagnostics Oxlint en erreur | compte > 0 | n.d. |
| Diagnostics Biome niveau erreur | compte > 0 | n.d. |
| Avertissements combinés | branche release uniquement | ≤ 24 jusqu’à fin du sprint dette |
| Longueur Markdown commentaire | rejet fournisseur | ≤ 32k caractères après troncature |
Le réducteur doit émettre un schéma explicite (lint_gate/v2 par exemple) avec totaux par outil, cinq règles dominantes, au plus cinq fichiers par règle pour garder la synthèse PR parcourable.
05 Chaîne optionnelle : passerelle puis client compatible OpenAI
Une fois pr_lint_gate_summary.md écrit, vous pouvez le POST vers toute base compatible OpenAI (OpenAI, Azure OpenAI, vLLM) en complétions chat. Prompt système minimal : pas de chemins inventés, respect des marqueurs de troncature, puces courtes.
Placez OPENAI_BASE_URL et la clé sur la même passerelle que les jetons Git ; journalisez seulement les identifiants de réponse. Ordre recommandé : fusion JSON, garde-fous HTTP, passage LLM, commentaire PR afin qu’une panne modèle ne bloque pas la fusion.
06 Commentaire PR, idempotence et retries
Réutilisez un marqueur HTML stable (slug dépôt, numéro PR, empreinte des deux JSON) pour retrouver le commentaire bot existant avant d’en créer un nouveau. Ne réessayez que les codes 429 et 5xx avec backoff plafonné.
Évitez les URL de prévisualisation privées derrière login ; renvoyez plutôt vers la documentation d’aide MacWww ou vers le numéro de job CI.
Oxlint et Biome en JSON sous un contrat de dossier unique permettent à la passerelle OpenClaw sur Mac distant de posséder la politique : formes unifiées, seuils, narration LLM optionnelle, puis synthèse PR unique lisible par l’équipe.
Pour poursuivre sur le site : accueil, centre d’aide, achat sans compte et index du blog.
Exécutez la porte Oxlint + Biome sur un Mac distant dédié
Workers Node 22+ à côté des fumées Safari : louez un Mac distant Apple Silicon, déposez vos scripts OpenClaw de fusion, puis ouvrez achat.html pour finaliser sans créer de compte au préalable.