Baies serveur et câblage évoquant l'infrastructure voix et la collaboration temps réel

2026 OpenClaw v2026.5.20 guide :
voix Discord temps réel followUsers, OAuth device-code xAI et lint Policy plugin doctor (isolation macOS loué au jour)

Après une montée vers v2026.5.20, le texte Discord répond alors que la voix semble morte ; la connexion xAI échoue sur un VPS sans navigateur local ; et doctor affiche soudain du lint Policy jamais vu. Ce trio forme le thème du release — pas trois incidents isolés. Ce guide propose trois clusters de douleur, une matrice voix/auth/policy, sept étapes ordonnées, un tableau de triage, trois indicateurs chiffrés et un rythme de location 1–3 jours, avec liens vers le guide d'installation multiplateforme, l'appairage Telegram/Discord et liste blanche, et la FAQ SSH/VNC.

01. Trois douleurs : suivi vocal, OAuth xAI headless, lint Policy

1) La voix Discord « suit la mauvaise salle » ou n'entre jamais : v2026.5.20 introduit voice.followUsers — le bot rejoint, se déplace et quitte avec des IDs utilisateur configurés, au lieu d'attendre /vc join ou un autoJoin fixe. Coller des pseudos au lieu de snowflakes, ou oublier les listes blanches guilde/canal, laisse le bot inactif pendant que les DM fonctionnent. Les notes de version insistent sur contrôles de canaux autorisés, relais multi-utilisateur, réconciliation bornée et préservation de la recovery DAVE — la voix n'est plus « écouter partout ». Croisez avec le guide appairage et liste blanche : l'ingress parlé respecte les mêmes portes membre/canal que le texte.

2) L'auth xAI casse sur VPS/SSH faute de navigateur : Avant 5.20, les équipes copiaient des jetons depuis un portable ou montaient des tunnels SSH fragiles. Le release ajoute l'OAuth device-code via openclaw models auth login --provider xai --device-code : URL et code dans le terminal, validation sur n'importe quel appareil, identifiants stockés sur l'hôte headless. L'échec typique devient « code expiré, personne au terminal » ou « mauvais ordre de profils auth après login ». Traitez le device-code comme une action de fenêtre de changement avec un humain présent — pas un job CI sans surveillance.

3) Le lint Policy plugin apparaît après upgrade : 5.20 embarque un Policy plugin pour conformité canal, lint doctor et repair workspace opt-in. Les lignes WARN semblent dire « Gateway mort ». En pratique, le lint signale souvent des politiques DM, des trous de liste blanche, des secrets en clair dans openclaw.json, ou des canaux contraires à votre baseline sécurité. Doctor avertit aussi si la sandbox masque des outils MCP, et sur les fichiers d'identifiants symlinkés (fail-closed). Lancez doctor avant d'ouvrir la voix en production — corriger le Policy sur un Mac loué coûte moins qu'en standup live.

Ces trois surfaces interagissent : la voix temps réel injecte par défaut IDENTITY.md, USER.md et SOUL.md dans les instructions provider — la dérive de persona en vocal est souvent un problème de fichiers bootstrap, pas de routage modèle. Le device-code xAI ouvre un chemin d'inférence pour les tours vocaux vers des modèles classe Grok. Le lint Policy confirme si le canal Discord ouvert pour follow-users est conforme à votre histoire d'appairage et de liste blanche.

02. Matrice : followUsers, bootstrapContextFiles, device-code, Policy plugin

Utilisez le tableau pendant la fenêtre de changement comme feuille d'acceptation — pas comme argumentaire marketing. Archivez la colonne de droite sur l'hôte loué avant d'effacer les secrets.

Surface (5.20) Signal OK Preuve location
voice.followUsers Bot rejoint quand l'utilisateur listé entre dans un canal vocal autorisé ; bouge ; quitte à la déconnexion Log voice-state redigé + JSON channels status --channel discord
voice.followUsersEnabled True par défaut si liste configurée ; false met en pause sans supprimer les IDs Capture Control UI panneau voix
voice.realtime.bootstrapContextFiles IDENTITY/USER/SOUL injectés par défaut ; sous-ensemble ou [] désactive ; AGENTS.md reste dans le contexte agent Extrait transcript avant/après ancrage persona
OAuth device-code xAI models auth login --provider xai --device-code réussit ; liste modèles montre xAI Liste profils auth redigée ; pas de clés API dans JSON config
Policy plugin / lint doctor WARN conformité résolu ou dérogé avec ticket ; repair opt-in si choisi stdout openclaw doctor archivé avant/après fix
Ingress voix liste blanche Parole d'un membre non listé rejetée avant transcription Sonde compte listé vs bloqué

Choisissez le mode de join délibérément. followUsers quand le bot doit suivre des opérateurs entre salles huddle. autoJoin pour assistants de salle fixe. /vc join pour sessions ponctuelles. Mélanger les trois sans documenter la priorité crée des tickets « bot fantôme dans canal vide ».

bootstrapContextFiles : ce qui change en voix temps réel

Les tours vocaux temps réel sont rapides et légers ; ils ne rejouent pas tout le contexte workspace. Par défaut, 5.20 injecte IDENTITY.md, USER.md et SOUL.md pour aligner les réponses parlées sur la persona de l'agent routé. Réglez voice.realtime.bootstrapContextFiles sur un sous-ensemble pour des prompts plus fins, ou [] pour un ton neutre. Cela ne remplace pas openclaw_agent_consult pour outils, mémoire ou faits courants — seulement l'ancrage identité à faible latence. Si le bot « sonne générique en vocal mais correct en texte », vérifiez les fichiers bootstrap avant de retoucher les prompts.

Policy plugin : lint vs repair

Le Policy plugin ajoute du lint visible dans doctor pour la conformité canal — signaux structurés quand politique DM, listes blanches guilde ou cartes canal divergent de la posture sécurité déclarée. Le repair workspace opt-in applique des correctifs sûrs si vous acceptez explicitement ; pas de migration silencieuse en heures ouvrées. Clés provider en clair ? Migrez vers SecretRef avant la voix en guildes clients. Doctor 5.20 retire aussi d'anciennes clés compat thinkingFormat sur doctor --fix et avertit si la sandbox masque des outils MCP configurés — même rapport que le lint Policy.

03. Sept étapes : upgrade → voix → xAI → doctor → preuves

  1. Geler la baseline : Noter openclaw --version, bloc voix Discord, profils auth xAI et openclaw channels status --json. Chemin openclaw.json et args de démarrage Gateway.
  2. Sauvegarder et upgrader : Snapshot config et fichiers profil workspace (IDENTITY/USER/SOUL). openclaw update vers v2026.5.20 ; archiver stdout, code sortie et intégrité npm si tarball épinglé.
  3. Configurer followUsers Discord : IDs snowflake (bruts ou discord:<id>). Confirmer listes blanches guilde/canal via le guide appairage. Redémarrer Gateway après changement voix.
  4. Ajuster bootstrapContextFiles : Partir des défauts ; sonde vocale courte. Persona trop lourde → sous-ensemble ; neutralité stricte → [] et ton générique accepté.
  5. Autoriser xAI sur hôtes headless : Login device-code en SSH/VPS ; vérification sur téléphone ou portable dans la durée de vie du code. Liste modèles et une completion avant trafic client.
  6. Policy plugin et passage doctor : openclaw doctor ; résoudre lint ou documenter dérogations. Repair opt-in d'abord sur hôte jetable. Relancer après doctor --fix.
  7. Recouper canaux et archiver preuves : Aligner Discord configured/enabled avec succès sonde voix. Rediger logs ; supprimer jetons démo et profils OAuth temporaires sur machine louée.
# Upgrade et baseline
openclaw --version
openclaw channels status --json | head -c 8000 | tee /tmp/oc520-channels-before.json
openclaw update

# OAuth xAI headless (compléter URL/code dans n'importe quel navigateur)
openclaw models auth login --provider xai --device-code

# Conformité Policy et santé canaux
openclaw doctor 2>&1 | tee /tmp/oc520-doctor.txt
openclaw channels status --probe --channel discord

Gardez au moins 15 Go libres avant upgrade parallèle, warmup provider voix et repair doctor — 5.20 augmente aussi le harness Codex bundlé et Baileys rc12. Bande passante et coût location : FAQ SSH/VNC. Installations fraîches : guide multiplateforme pour Node 24 (ou ≥22.19).

Exemple de fragment followUsers

Paramètres voix sous le bloc canal Discord. IDs numériques depuis le mode développeur, pas les pseudos :

{
  "channels": {
    "discord": {
      "voice": {
        "enabled": true,
        "followUsers": ["123456789012345678", "discord:987654321098765432"],
        "followUsersEnabled": true,
        "realtime": {
          "bootstrapContextFiles": ["IDENTITY.md", "USER.md", "SOUL.md"]
        }
      }
    }
  }
}

Après édition, redémarrer Gateway ; utilisateur suivi entre dans un canal vocal listé pendant que vous tail les logs. Bot immobile : vérifier followUsersEnabled, appartenance liste blanche, permissions Connect/Speak — pas immédiatement les routes modèle.

Workflow OAuth device-code sur VPS

SSH sur l'hôte Gateway, lancer login device-code, garder la session ouverte jusqu'à confirmation. Ouvrir l'URL sur appareil de confiance, saisir le code, approuver les scopes. Ne pas coller les codes dans les logs chat. Auth OK mais completions KO : ordre profils auth et ancienne clé xAI en clair dans config — le WARN plaintext de doctor existe pour ces bugs de précédence mixte.

04. Triage : symptôme → première action → mauvaise idée

Symptôme Première action Mauvaise idée
Bot ignore l'opérateur en voix Vérifier ID dans followUsers ; canal listé ; permission Connect Mettre groupPolicy: open sur le texte pour « réparer » la voix
Persona vocale ≠ agent texte Inspecter bootstrapContextFiles et MD profil workspace Dupliquer tout AGENTS.md dans config voix (non supporté)
Device-code xAI expiré Relancer login avec opérateur prêt ; décalage horaire VPS Embarquer clés API longue durée dans JSON versionné
Doctor inonde de WARN Policy Trier par catégorie : secrets, listes, sandbox/MCP ; corriger ou déroger Désactiver doctor ou supprimer Policy plugin aveuglément
Parole utilisateur aléatoire transcrite Resserrer listes membre/canal Discord ; retester compte bloqué Supposer la voix publique parce que le bot a rejoint
Bot bloqué après déconnexion DAVE Réessayer move follow-user ; notes recovery DAVE 5.20 ; redémarrer Gateway Retirer listes blanches pour forcer le join

Texte Discord OK, voix KO : scinder le problème — enregistrement app et OAuth Discord sont partagés, mais la voix ajoute provider temps réel, machine d'état follow et ingress listé. Capturer channels status et un extrait log voix avant trois changements simultanés — ré-auth xAI, réécriture SOUL.md et élargissement listes en parallèle masquent la cause gagnante.

05. Données chiffrées, mythes et calendrier location 1–3 jours

  • Donnée 1 : Release GitHub v2026.5.20 publiée le 2026-05-21 avec followUsers Discord, injection profil realtime, Policy plugin bundlé et OAuth device-code xAI — ancre d'audit pour votre ticket de changement.
  • Donnée 2 : Intégrité npm openclaw@2026.5.20 sur la page release (sha512-cgshS76CxS3Vp9NGtJR2UGtVZxVR5/4rvok8DKGGL19DugAftNabsXfYajyAEiJ3dC8QTXNqF62MdQNzUnQe8Q==) ; épingler sur hôtes loués pour reproduire incidents clients.
  • Donnée 3 : Échantillons opérateurs sur Mac M4 loué rapportent 3–5 heures pour valider followUsers, OAuth device-code et lint Policy quand les listes Discord étaient déjà documentées — plus long si dette d'appairage pré-5.12.

Mythe A : « followUsers remplace les listes blanches. » Non — l'ingress reste policy-gated. Mythe B : « Device-code supprime SecretRef. » Les WARN clair restent pertinents. Mythe C : « Lint Policy = rollback. » Souvent dette de conformité, pas crash runtime.

Jour 1 (gel + upgrade + doctor) : Matin channels status et profils auth. Après-midi upgrade 5.20, archiver doctor. Soir followUsers pour un ID opérateur en guilde test.

Jour 2 (persona voix + xAI) : Ajuster bootstrapContextFiles avec sondes parlées ; login device-code sur même forme d'hôte que VPS prod ; completion xAI sur agent routé.

Jour 3 (repair Policy + passation) : Résoudre ou déroger lint restant ; sondes voix listées vs bloquées ; effacer secrets location ; publier section runbook avec IDs voix, choix bootstrap et ordre profils auth.

Exporter quatre artefacts : JSON channels status redigé, résumé doctor, extrait transcript sonde voix, liste profils auth sans secrets. Les stakeholders veulent le suivi on-call ; les auditeurs veulent listes et lint Policy traités délibérément.

06. VPS Linux headless vs Mac au jour pour voix et auth

Un VPS Linux est économique pour un Gateway 24/7 et naturel pour device-code OAuth — étape navigateur sur téléphone, identifiants sur serveur. Cela se fissure quand il faut aussi déboguer l'état voix Discord, relire les toggles Control UI, utiliser des clés deploy Keychain et lire les MD profil en écoutant l'audio temps réel. Logs SSH, navigateur mobile et client Discord perso cachent un coût horaire qui dépasse souvent une courte location Apple Silicon.

Beaucoup de la checklist CLI tient sur VPS seul ; la prod peut rester Linux après acceptation. La valeur location est la fidélité de répétition : macOS natif regroupe Gateway, Control UI et Discord desktop en une session, preuves followUsers sans copier logs entre machines, repair Policy sur workspace jetable calqué sur les habitudes Mac de l'équipe. Les conteneurs aident aux spikes, reproduisent mal le réglage latence voix et l'UX handoff follow-mode.

Pour un runbook prêt passation en 1–3 jours sans acheter du matériel — et sans codes OAuth prod sur un compte Discord perso — le Mac au jour est en général plus fluide que VPS SSH + OAuth téléphone + checks audio ad hoc. Comparez les offres sur le guide tarifs Mac mini M4 ; connectivité et coûts dans la FAQ SSH/VNC.