Les utilisateurs OpenClaw jugent le produit sur la latence du chat, tandis que la feuille de route le juge sur le débit des automatisations longues. Lorsque les deux partagent une passerelle unique sur un Mac mini M4, le mode d’échec est prévisible : une reconstruction d’index monorepo ou une chaîne d’outils de plusieurs minutes monopolise les cœurs et les réponses Slack passent de centaines de ms à dizaines de secondes. En 2026, publiez une matrice de concurrence qui nomme les slots mutex, la sémantique d’annulation et des classes SLO séparées—puis imposez-les avec des métriques, pas des impressions.
Contrôles associés : auth passerelle & limites d’outils, alignement launchd, probes readiness & SLO. Si le même hôte exécute aussi la CI, lisez équité de concurrence CI. Tarifs ; aide ; VNC pour le bris de vitre.
Deux classes de trafic, deux budgets
Le chat interactif est sensible à la latence et généralement petit en charge utile. Les jobs longs sont sensibles au débit et peuvent générer des arbres de sous-processus, un gros IO disque et des appels LLM répétés. Traitez-les comme des locataires concurrents dans un même OS—même quand « une seule équipe » possède les deux—car le noyau ne connaît pas votre organigramme.
- Interactif : prioriser l’équité d’ordonnancement et plafonner la profondeur de file visible par les utilisateurs.
- Long-run : prioriser la contre-pression et l’annulation ; jamais de boucles de retry infinies.
- Commandes hybrides : les étiqueter explicitement pour que le routeur choisisse le bon budget.
Matrice de concurrence
| Charge | Politique de slot par défaut | Risque visible utilisateur |
|---|---|---|
| Réponses DM avec appels outils légers | Slot(s) réservé(s) toujours actif(s) | Perception « bot down » si p95 > ~3s |
| Rebuild doc nocturne sur monorepo | Workers parallèles bornés + mutex git | Famine du chat si mutex absent |
| Tsunami « corriger tout le lint » humain | File avec position visible + annulation | Edits dupliqués si l’annulation n’est pas coopérative |
Annulation et timeouts coopératifs
Un bouton d’annulation qui n’arrête que la coroutine parente pendant que les processus xcodebuild enfants continuent est pire qu’aucune annulation—il crée des écritures partielles. Standardisez : jetons d’annulation, groupes de processus quand c’est possible, et caps d’horloge murale par classe d’outil avec journaux d’audit lors des kills.
| Famille d’outils | Timeout souple | Kill dur |
|---|---|---|
| API JSON HTTP | Lecture client 30s | 90s absolu |
| Compile / tests locaux | Événements de progression toutes les 60s | Plafond 45 min sauf dérogation ticket |
| Sync disque lourd | Alarme plancher de débit IO | Annulation opérateur + vérif checksum |
Note opérateur : planifiez les jobs lourds avec du jitter calendaire pour ne pas s’aligner sur les rafales de stand-up—simple, efficace, ennuyeux au bon sens.
Huit étapes de déploiement
- Instrumenter la latence p95 du chat séparément du temps de complétion des jobs.
- Définir des mutex autour de git, des gestionnaires de paquets et du boot simulateur.
- Réserver des slots pour le trafic interactif sur chaque hôte passerelle.
- Câbler des tableaux de bord pour profondeur de file et taux de succès d’annulation.
- Documenter quelles commandes sont « lourdes » dans votre runbook ou README opérateur.
- Tests de charge mélangeant rafales de chat et jobs planifiés.
- Scinder les hôtes lorsque les métriques montrent une contention soutenue—ajoutez un second Mac mini M4 NodeMac.
- Post-mortem doit citer quel budget a été dépassé.
FAQ
Pourquoi le chat est lent seulement la nuit ?
CPU, IO et plafonds de concurrence d’outils partagés. Réservez des slots interactifs et limitez les jobs longs parallèles.
Un processus passerelle ou deux ?
La prod doit isoler ou utiliser des niveaux mutex stricts ; le partage sans limites crée des pics de latence de queue.
Comment NodeMac aide ?
M4 dédiés par rôle/région, automatisation SSH, VNC optionnel—séparez chat et batch sur des hôtes.