Guide de déploiement 2026-04-22

2026 — Gouvernance des canaux entrants OpenClaw : Slack et Discord, appariage en messages privés, groupPolicy (liste de groupes) sur Mac physique distant — runbook reproductible pour l’absence de réponse, le pairing expiré et le recouvrement des modèles par conversation (openclaw.json + FAQ)

Les équipes qui font tourner OpenClaw sur un Mac physique distant ZoneMac doivent souvent unifier Slack et Discord dans une même gouvernance des entrantes : appariage en MP (pairing) pour lier une identité humaine, groupPolicy pour verrouiller les espaces partagés, et des surcharges de modèle explicites par conversation afin d’aligner coût et latence sur le risque. Ce guide s’adresse aux opérateurs qui voient aucune réponse visible côté utilisateur, des boucles pairing expiré, ou « le mauvais modèle » sur un fil précis. Il comporte une matrice de décision, des extraits openclaw.json prêts à coller, un runbook en sept étapes, des points de contrôle citables et une FAQ. Pour l’observabilité complète de la même passerelle, branchez /metrics comme dans OpenClaw : Prometheus et Grafana sur Mac physique distant (7j/7, 2026) ; pour le runbook multicanal doctor, voir passerelle multicanal OpenClaw : doctor, sondes Telegram/Discord, reload 18789 (2026). Le choix de région et de nœud influence la latence des webhooks : la matrice de sélection des nœuds Mac distants 2026 résume critères d’affinité et conformité.

2026 OpenClaw gouvernance entrantes Slack Discord appariage MP groupPolicy Mac physique distant

1. Introduction & périmètre

L’appariage en messages privés (DM pairing) est souvent le moyen par lequel les déploiements passerelle prouvent qu’un humain a le droit de parler à l’agent en privé avant d’enclencher outils onéreux ou secrets. groupPolicy est la couche de liste autorisée pour les espaces partagés : seuls certains identifiants de canaux, fils ou groupes peuvent invoquer outils ou modèles coûteux. Sur un Mac physique « sans écran », les symptômes ressemblent à des clients de chat OK pour les humains, mais un processus OpenClaw qui n’acquitte jamais : le plus souvent, il s’agit d’une incohérence signature/URL, d’un OAuth ou d’un appariage incomplet, d’intents ou d’abonnements d’événements manquants, ou d’un blocage de politique (y compris la précédence du routage des modèles).

Cet article suppose un accès SSH au nœud et l’édition de openclaw.json avec sauvegardes. Pour l’observabilité continue de la même passerelle, reliez /metrics au guide OpenClaw : Prometheus & Grafana sur Mac distant.

2. Points de douleur (pourquoi « rien ne se passe »)

  1. Prendre la remise côté chat comme preuve que l’agent a vu le message. L’éditeur peut accepter un webhook, renvoyer 200, et votre appli ne reçoit toujours rien si le secret de signature est faux ou si un second point de terminaison a volé l’événement. Il faut un HMAC vérifiable (ou équivalent) et une seule URL d’appli active sur l’arête publique.
  2. Supposer un MP autorisé sans appariage. L’appariage sert à lier user idsujet de politique interne. S’il a expiré, n’a jamais été complété, ou si une réinstallation a invalidé l’appartenance du bot, la passerelle a raison de jeter ou d’ignorer.
  3. Oublier que liste de groupes et matrice de modèles interagissent. Un canal peut être autorisé pour la conversation alors qu’une politique de modèle plus stricte achemine le trafic vers un profil moins coûteur — d’où l’impression de « mauvais modèle » plutôt qu’un refus explicite. Il faut une précédence claire et une table de surcharge explicite par id.

3. Matrice de décision : surfaces Slack vs Discord

Sélection des valeurs par défaut sur une même passerelle Mac physique distant.

Axe Slack Discord
Identité & garde-fous d’entreprise Modèle workspace + appli mûr, piste d’audit Modèle serveur ; intents et bits de permission exacts requis
MP & fils Fils et mentions d’appli propres côté Events API Ids de fils différents ; veiller Gateway et intents contenu
Appariage / liaison Souvent commande slash ou code MP vers OpenClaw Souvent OAuth + MP ; respecter les snowflakes user id
Posture d’exploitation ZoneMac Cohérent avec l’entreprise déjà sur Slack Cohérent avec communauté / dev

4. Extraits openclaw.json (illustratifs)

Exemple structural uniquement : noms de clés et imbrications doivent suivre votre build OpenClaw. En production, employez l’indirection SecretRef / variables, fusion avec un bloc gateway existant, et sauvegarde avant application.

4.1 Slack : signature + appariage MP + groupPolicy

{
  "channels": {
    "slack": {
      "enabled": true,
      "appIdRef": "env:SLACK_APP_ID",
      "clientIdRef": "env:SLACK_CLIENT_ID",
      "clientSecretRef": "env:SLACK_CLIENT_SECRET",
      "botTokenRef": "env:SLACK_BOT_TOKEN",
      "signingSecretRef": "env:SLACK_SIGNING_SECRET",
      "inbound": {
        "urlPath": "/openclaw/slack/events",
        "verifyRequestSigning": true
      },
      "dmPairing": {
        "mode": "inline-code",
        "codeTtlMinutes": 15,
        "requireNewPairingOnWorkspaceReinstall": true
      },
      "groupPolicy": {
        "default": "deny",
        "allowChannelIds": ["C0123456789"],
        "allowThreadOnlyChannelIds": []
      },
      "modelByConversation": {
        "C0123456789": "anthropic:claude-3-5-sonnet",
        "DMBIND:U0ABCDEF": "openai:gpt-4.1-mini"
      }
    }
  }
}

4.2 Discord : jeton bot + intents + liste autorisée

{
  "channels": {
    "discord": {
      "enabled": true,
      "botTokenRef": "env:DISCORD_BOT_TOKEN",
      "applicationIdRef": "env:DISCORD_APP_ID",
      "gateway": {
        "intents": ["GUILDS", "GUILD_MESSAGES", "DIRECT_MESSAGES", "MESSAGE_CONTENT"]
      },
      "groupPolicy": {
        "default": "deny",
        "allowGuildIds": ["9876543210"],
        "allowChannelIds": ["111122223333444455"]
      },
      "dmPairing": {
        "mode": "dm-code",
        "codeTtlMinutes": 15
      }
    }
  }
}

Alignez codeTtlMinutes sur le message montré aux utilisateurs ; face à pairing expiré, clarifiez d’abord l’UI avant d’allonger le TTL. Mappez les clés de modelByConversation sur le format d’id canon de votre build (canal, MP ou fil) et évitez de définir deux fois le même id avec des graphies différentes. Pour des chaînes de modèles côté routeur (failover) plutôt que des surcharges par fil, alignez routeur amont et politique canal afin d’éviter les conflits entre couches.

5. Runbook en sept étapes (Mac physique distant)

  1. Instantané et figer la config. cp openclaw.json openclaw.json.bak.$(date +%Y%m%d%H%M) ; consigner l’id de build OpenClaw et l’id d’appli du chat dans le ticket.
  2. Prouver l’entrée publique vers ce Mac. Depuis Internet, appelez l’URL de challenge du fournisseur ; vérifiez que le proxy inverse cible le même port loopback que celui d’écoute (ex. 127.0.0.1:18789).
  3. Rapprocher signature et secrets. Slack : signature des requêtes. Discord : intents + autorisations du bot. Un seul mauvais secret ressemble à un silence total côté utilisateur.
  4. Compléter (ou refaire) l’appariage MP. Émettez un code neuf ; si le stockage d’appariage est disque, sauvegardez-le avant toute effacement. Vérifiez la table de liaison en logs info ou cache local.
  5. Serrer groupPolicy, tester deny → allow. En installation neuve, partez de default: deny ; ajoutez un canal connu par test, puis élargissez par petits incréments.
  6. Contrôler la précédence des modèles. Même texte en MP et en canal : des profils amont distincts si la matrice l’exige. Sinon, c’est l’id de la surcharge qui est faute, pas le nom du modèle.
  7. Transmission à l’astreinte : métriques + audit. Exporter la liste autorisée, le TTL d’appariage et le vhost du proxy ; l’astreinte suivante peut recharger sans redériver les ids à partir de captures d’écran.

6. Triage : silence, pairing expiré, mauvais modèle

Symptôme Cause probable Premier geste
Aucune réponse visible Mauvaise signature, mauvais chemin, deny groupPolicy ; bot absent du canal Vérifier signature côté fournisseur, réinviter le bot, comparer l’id de canal à la liste ; surveiller logs passerelle et taux de 4xx sur le proxy
« Pairing expiré » TTL < boucle humaine ; dérive d’horloge ; réutilisation de lien NTP / sntp sur le Mac, nouveau code, texte d’UI plus clair ; n’augmentez le TTL qu’après revue des risques
Message pris en charge mais mauvais outil / modèle Surcharge ne correspond pas à l’id de conversation résolu ; repli du routeur masqué Journaliser les ids résolus, comparer à modelByConversation ; dédoublonner politique routeur et canal

7. Chiffres & éléments de checklist citables

  • TTL d’exemple (codes d’appariage) : 15 minutes dans les extraits — à caler sur le SLO interne, mais noter toute modification à côté de la version OpenClaw.
  • Refus par défaut (groupPolicy) : default: "deny" comme ligne de base 2026 pour tout bot outillé ; n’ouvrez les listes qu’en lots maîtrisés.
  • Écoute locale : Lier la passerelle à 127.0.0.1 et terminer le TLS en périphérie correspond au cas fréquent ZoneMac SSH + reverse proxy et limite l’exposition sur l’hôte.

8. FAQ

Q : les MP atteignent la plateforme, pourquoi OpenClaw se tait-il ?
Le plus souvent : signature, abonnement d’événements, ou MP non apparié selon groupPolicy. Après rotation de secrets, l’arête peut 200 côté fournisseur tandis que le processus rejette en interne : comparez la vérification du corps brut et votre env.

Q : faut-il allonger le TTL pour les utilisateurs chargés ?
Parfois, mais l’ordre sûr est d’abord : instructions plus claires, vérification horloge, chemin de ré-appariage en un clic. Un TTL long élargit la fenêtre d’usage accidentel ou malveillant d’un code.

Q : deux canaux devraient différer en modèle, mais ne le font pas ?
Dumpez l’id de conversation résolue après normalisation côté adaptateur ; fils Slack vs canaux, snowflakes de fils Discord. Une seule espace de noms autoritaire pour modelByConversation, et tests dès l’ajout d’un canal.

Q : Discord sans portée de contenu des messages ?
Pour beaucoup d’agents, non : MESSAGE_CONTENT (ou équivalent) est requis. Refusez par la politique OpenClaw après réception, pas en affamant le client.

9. Synthèse & intérêt du Mac mini

Réussir dès le premier essai des entrantes Slack/Discord, ce n’est pas une question d’hype : c’est une vérification de signatures, preuve d’appariage et verrouillage de groupPolicy avant d’élargir les outils. Un Mac physique distant ZoneMac, notamment de classe Mac mini M4, convient bien : consommation idle de l’ordre de quelques watts sur Apple Silicon, chaîne Unix cohérente avec openssh, launchd, Homebrew, et pile de bureau peu sujette aux plantages pour des services 7×24.

Pour des webhooks longue durée, macOS (Gatekeeper, SIP, FileVault) offre une surface plus intégrée que la plupart des hôtes Windows utilitaires. Mieux vaut un boîtier discret et fiable qu’une VM instable quand les codes d’appariage doivent être justes à 3 h du matin.

Pour héberger OpenClaw, proxies inverses et l’observabilité de ce runbook, le Mac mini M4 constitue un point de départ pertinent. Obtenez un nœud physique dédié chez ZoneMac et exécutez ce jeu sur du matériel réel : vos entrantes Slack et Discord restent prévisibles, auditable, et alignées sur la politique.

Offre limitée dans le temps

Besoin d’un Mac physique distant pour héberger les entrantes OpenClaw Slack/Discord ?

Le cloud Mac mini ZoneMac offre une cible macOS stable pour openclaw.json, proxy inverse et secrets de signature sur un seul nœud : rejouez ce runbook sans simulateur.

Compatible astreinte Mac matériel Prêt pour SSH
Location cloud macOS Offre à durée limitée
Obtenir maintenant