Quando il mio collega ha iniziato a utilizzare la mia istanza di OpenClaw, ho scoperto che il multi-utente non era solo una casella di configurazione. Si trattava di una riprogettazione di come l’agente gestisce contesto, permessi e privacy.
Il momento in cui me ne sono reso conto: il mio collega ha chiesto all’agente di controllare “il progetto”, e l’agente ha mostrato il mio progetto personale — non il progetto di squadra a cui si riferiva. L’agente aveva un contesto, una memoria e nessun concetto che diversi utenti potessero avere progetti diversi con lo stesso nome.
Impostare correttamente il multi-utente ha richiesto tre tentativi. Ecco cosa ho imparato.
Tentativo 1: Condivisione Totale
Il mio primo approccio: entrambi utilizziamo lo stesso agente con la stessa configurazione. Impostazione facile. Terribile nella pratica.
Problemi:
– L’agente confondeva i nostri contesti (“Hai menzionato di voler pizza per cena” — era il mio collega, non io)
– I permessi erano identici (il mio collega poteva vedere le mie automazioni personali e viceversa)
– La memoria era condivisa (qualsiasi cosa una persona dicesse all’agente, l’altra poteva accedere)
– I cron job venivano eseguiti per entrambi indipendentemente dalla rilevanza
Questo funziona se non hai requisiti di privacy e casi d’uso identici. Nella pratica, nessuno ha requisiti di privacy nulli.
Tentativo 2: Istanze Separate
Il mio secondo approccio: ogni utente ha la propria istanza di OpenClaw che gira sullo stesso server. Completamente isolata. Nessun contesto condiviso.
Problemi:
– Doppio utilizzo delle risorse (due processi, due set di memoria)
– Nessuna conoscenza condivisa (dovevamo informare entrambi gli agenti sui processi del team separatamente)
– Configurazione duplicata (ogni modifica doveva essere apportata due volte)
– Competenze installate due volte, aggiornate due volte, mantenute due volte
Questo funziona se gli utenti sono completamente indipendenti. Ma condividiamo un team, lavoriamo sugli stessi progetti e abbiamo bisogno di un certo livello di contesto condiviso.
Tentativo 3: Cosa Funziona Davvero
La soluzione: un’istanza con sessioni a scopo utente e memoria condivisa ma separata.
Sessioni utente. Ogni utente ha la propria sessione con la propria cronologia di conversazione e contesto. Quando invio un messaggio all’agente, carica il mio contesto. Quando il mio collega lo contatta, carica il suo contesto. Nessuna contaminazione incrociata.
Memoria a scopo. Tre ambiti di memoria:
– Ambito personale: visibile solo all’utente proprietario (preferenze, progetti personali, note private)
– Ambito di team: visibile a tutti (processi di team, dettagli di progetti condivisi, decisioni di gruppo)
– Ambito globale: informazioni a livello di sistema (indirizzi server, configurazioni degli strumenti)
Quando parlo all’agente del mio progetto personale, esso va nel mio ambito personale. Quando gli parlo del processo di distribuzione del team, esso va nell’ambito del team.
Permessi basati sul ruolo. Io sono l’amministratore — posso configurare il sistema, gestire le competenze e accedere a tutti gli ambiti. Il mio collega è un utente standard — può usare l’agente e gestire il proprio ambito personale ma non può modificare la configurazione di sistema.
Impostazione
Passo 1: Configura l’autenticazione utente. Ogni piattaforma di messaggistica ha la propria identificazione degli utenti. Discord usa gli ID utente, Slack usa gli ID membri, Telegram usa gli ID utente. OpenClaw mappa questi alle identità utente interne.
Passo 2: Imposta l’isolamento delle sessioni. Configura OpenClaw per mantenere sessioni separate per utente. Ogni sessione ha la propria cronologia di conversazione e finestra di contesto.
Passo 3: Configura gli ambiti di memoria. Definisci quali ambiti esistono (personale, team, globale) e l’ambito predefinito per le nuove memorie. Io imposto l’ambito personale come predefinito — tutto è privato, a meno che non venga esplicitamente condiviso.
Passo 4: Imposta i permessi. Definisci cosa può fare ciascun ruolo utente. Utenti standard: interagire con l’agente, gestire la memoria personale, usare competenze approvate. Amministratori: tutto più la configurazione di sistema e accesso a tutti gli ambiti.
Le Insidie
Cron job condivisi. Un cron job che pubblica un briefing mattutino — deve essere eseguito per ogni utente o una volta per tutti? La risposta dipende dal lavoro. I briefing mattutini sono personali (diversi calendari, diverse priorità). I controlli di salute del server sono condivisi (stessi server per tutti). Configura ogni lavoro con l’ambito appropriato.
Permessi delle competenze. Alcune competenze sono appropriate per tutti (ricerca web, sintesi). Alcune sono solo per amministratori (gestione del server, configurazione del sistema). Rivedi le capacità di ciascuna competenza e assegnala al livello di permesso appropriato.
Conflitti di memoria. Due utenti potrebbero salvare informazioni contraddittorie nell’ambito del team. “Utilizziamo PostgreSQL” e “Stiamo migrando a MySQL.” L’agente non riconcilia automaticamente queste — memorizza entrambe e potrebbe mostrare una delle due. La revisione regolare della memoria cattura questi conflitti prima che causino confusione.
Attribuzione dei costi. Con più utenti che condividono una chiave API, il tracciamento dei costi individuali diventa importante. Senza di esso, l’uso intenso di un utente è sovvenzionato dal budget degli altri utenti. Ho aggiunto il tracciamento dei costi per utente al mio dashboard di monitoraggio.
Considerazioni sulla Scalabilità
Questa configurazione funziona bene per 2-5 utenti. A questa scala, la gestione manuale della memoria è pratica, la configurazione dei permessi è gestibile e un’unica istanza di OpenClaw gestisce il carico.
Per team più grandi (10+ utenti), avrai bisogno di: gestione automatizzata degli ambiti di memoria (anziché manuale), controllo di accesso basato su ruolo più granulare, bilanciamento del carico tra più istanze e un adeguato dashboard di amministrazione per la gestione degli utenti.
Non ho avuto bisogno di scalare oltre 5 utenti, quindi non posso parlare dei dettagli dei deployment più grandi. Ma l’architettura principale (sessioni isolate, memoria a scopo, permessi basati sul ruolo) dovrebbe scalare se l’infrastruttura lo fa.
🕒 Published: