Lorsque mon collègue a commencé à utiliser mon instance OpenClaw, j’ai découvert que le multi-utilisateur n’était pas simplement une case à cocher dans la configuration. C’était une refonte de la façon dont l’agent pense au contexte, aux autorisations et à la confidentialité.
Au moment où je me suis rendu compte de cela : mon collègue a demandé à l’agent de vérifier « le projet », et l’agent a affiché mon projet personnel — pas le projet d’équipe qu’ils voulaient dire. L’agent avait un contexte, une mémoire, et pas de concept que différents utilisateurs pourraient avoir des projets différents avec le même nom.
Configurer correctement le multi-utilisateur m’a pris trois essais. Voici ce que j’ai appris.
Essai 1 : Tout partagé
Ma première approche : nous utilisons tous les deux le même agent avec la même configuration. Configuration facile. Terrible en pratique.
Problèmes :
– L’agent a confondu nos contextes (« Vous avez mentionné vouloir de la pizza pour le dîner » — c’était mon collègue, pas moi)
– Les autorisations étaient identiques (mon collègue pouvait voir mes automatisations personnelles et vice versa)
– La mémoire était partagée (tout ce que l’une des personnes disait à l’agent, l’autre personne pouvait y accéder)
– Les tâches cron s’exécutaient pour nous deux, quelle que soit leur pertinence
Cela fonctionne si vous n’avez aucune exigence de confidentialité et des cas d’utilisation identiques. En pratique, personne n’a zéro exigence de confidentialité.
Essai 2 : Instances séparées
Ma deuxième approche : chaque utilisateur a sa propre instance OpenClaw fonctionnant sur le même serveur. Isolation complète. Aucun contexte partagé.
Problèmes :
– Double utilisation des ressources (deux processus, deux ensembles de mémoire)
– Pas de connaissances partagées (nous devions informer les deux agents des processus d’équipe séparément)
– Configuration dupliquée (chaque changement devait être effectué deux fois)
– Compétences installées deux fois, mises à jour deux fois, maintenues deux fois
Cela fonctionne si les utilisateurs sont complètement indépendants. Mais nous partageons une équipe, travaillons sur les mêmes projets et avons besoin d’un certain niveau de contexte partagé.
Essai 3 : Ce qui fonctionne réellement
La solution : une instance avec des sessions spécifiques aux utilisateurs et une mémoire partagée mais séparée.
Sessions utilisateur. Chaque utilisateur a sa propre session avec son propre historique de conversation et contexte. Lorsque j’envoie un message à l’agent, il charge mon contexte. Quand mon collègue lui envoie un message, il charge leur contexte. Pas de contamination croisée.
Mémoire à portée définie. Trois portées de mémoire :
– Portée personnelle : visible uniquement par l’utilisateur propriétaire (préférences, projets personnels, notes privées)
– Portée d’équipe : visible par tous (processus d’équipe, détails de projets partagés, décisions de groupe)
– Portée globale : informations au niveau système (adresses serveur, configurations d’outils)
Lorsque je parle de mon projet personnel à l’agent, cela va dans ma portée personnelle. Lorsque je lui parle du processus de déploiement de l’équipe, cela va dans la portée d’équipe.
Autorisations basées sur les rôles. Je suis l’administrateur — je peux configurer le système, gérer les compétences et accéder à toutes les portées. Mon collègue est un utilisateur standard — il peut utiliser l’agent et gérer sa propre portée personnelle mais ne peut pas changer la configuration du système.
Configurer le tout
Étape 1 : Configurer l’authentification utilisateur. Chaque plateforme de messagerie a sa propre identification utilisateur. Discord utilise des identifiants d’utilisateur, Slack utilise des identifiants de membre, Telegram utilise des identifiants d’utilisateur. OpenClaw les associe à des identités utilisateur internes.
Étape 2 : Mettre en place l’isolation des sessions. Configurer OpenClaw pour maintenir des sessions séparées par utilisateur. Chaque session a son propre historique de conversation et fenêtre de contexte.
Étape 3 : Configurer les portées de mémoire. Définir quelles portées existent (personnelle, équipe, globale) et la portée par défaut pour les nouvelles mémoires. Je privilégie la portée personnelle — tout est privé à moins d’être explicitement partagé.
Étape 4 : Définir les autorisations. Définir ce que chaque rôle d’utilisateur peut faire. Utilisateurs standards : interagir avec l’agent, gérer la mémoire personnelle, utiliser les compétences approuvées. Administrateurs : tout plus la configuration système et l’accès à toutes les portées.
Les pièges
Tâches cron partagées. Une tâche cron qui publie un briefing matinal — doit-elle s’exécuter par utilisateur ou une fois pour tout le monde ? La réponse dépend de la tâche. Les briefings matinaux sont personnels (calendriers différents, priorités différentes). Les vérifications de santé du serveur sont partagées (mêmes serveurs pour tout le monde). Configurez chaque tâche avec la portée appropriée.
Autorisations des compétences. Certaines compétences conviennent à tout le monde (recherche sur le web, résumé). Certaines sont réservées aux administrateurs (gestion de serveurs, configuration système). Examinez les capacités de chaque compétence et attribuez-lui le niveau d’autorisation approprié.
Conflits de mémoire. Deux utilisateurs peuvent enregistrer des informations contradictoires dans la portée d’équipe. « Nous utilisons PostgreSQL » et « Nous migrons vers MySQL. » L’agent ne réconcilie pas automatiquement cela — il stocke les deux et peut afficher l’un ou l’autre. Un examen régulier de la mémoire détecte ces conflits avant qu’ils ne causent de la confusion.
Attribution des coûts. Avec plusieurs utilisateurs partageant une clé API, le suivi des coûts individuels devient important. Sans cela, l’utilisation intensive d’un utilisateur est subventionnée par le budget des autres. J’ai ajouté le suivi des coûts par utilisateur à mon tableau de bord de surveillance.
Considérations d’échelle
Cette configuration fonctionne bien pour 2 à 5 utilisateurs. À cette échelle, la gestion manuelle de la mémoire est pratique, la configuration des autorisations est gérable, et une seule instance OpenClaw gère la charge.
Pour des équipes plus grandes (10+ utilisateurs), vous voudrez : une gestion automatisée des portées de mémoire (au lieu de manuelle), un contrôle d’accès granulaire basé sur les rôles, un équilibrage de charge entre plusieurs instances, et un véritable tableau de bord administratif pour la gestion des utilisateurs.
Je n’ai pas eu besoin de passer à une échelle supérieure à 5 utilisateurs, donc je ne peux pas parler des détails des déploiements plus importants. Mais l’architecture de base (sessions isolées, mémoire à portée définie, autorisations basées sur les rôles) devrait s’adapter si l’infrastructure le permet.
🕒 Published: