Multi-agent
Presenza
OpenClaw "presence" è una vista leggera e basata sul massimo impegno di:
- il Gateway stesso e
- i client visibili all'utente connessi al Gateway (app per Mac, WebChat, nodi ecc.)
La presenza mostra i metadati della connessione in tempo reale nella pagina Dispositivi dell'interfaccia di controllo (in Impostazioni → Dispositivi) e nella scheda Istanze dell'app macOS.
Questa pagina descrive l'elenco dei client del Gateway. Per rilevare il Mac utilizzato più di recente e instradare lì gli avvisi dei nodi, consultare Presenza del computer attivo.
Campi della presenza (cosa viene visualizzato)
Le voci di presenza sono oggetti strutturati con campi quali:
instanceId(facoltativo ma fortemente consigliato): identità stabile del client (solitamenteconnect.client.instanceId)host: nome host facilmente comprensibileip: indirizzo IP determinato in base al massimo impegnoversion: stringa della versione del clientdeviceFamily/modelIdentifier: indicazioni sull'hardwaremode:ui,webchat,cli,backend,node,probe,testlastInputSeconds: secondi trascorsi dall'ultimo input dell'utente, se notoreason: stringa in formato libero fornita dal client; il Gateway stesso emette soloself,connectedisconnectdeviceId,roles,scopes: identità del dispositivo e indicazioni sul ruolo/ambito provenienti dall'handshake di connessionets: timestamp dell'ultimo aggiornamento (ms dall'epoca)
Produttori (origine della presenza)
Le voci di presenza sono prodotte da più fonti e vengono unite.
1) Voce del Gateway stesso
All'avvio, il Gateway inserisce sempre una voce relativa a sé stesso affinché le interfacce mostrino l'host del Gateway anche prima della connessione di qualsiasi client.
2) Connessione WebSocket
Ogni client WS inizia con una richiesta connect. Quando l'handshake riesce, il
Gateway inserisce o aggiorna una voce di presenza per quella connessione.
Perché le connessioni effimere del piano di controllo non vengono visualizzate
I comandi CLI, i client RPC di backend e le sonde spesso si connettono brevemente. Per evitare
di conservare queste frequenti variazioni per l'intero TTL della presenza, i client in modalità cli, backend
o probe non vengono trasformati in voci di presenza. I client in modalità di test
continuano a essere monitorati perché le suite di test li usano come sostituti dei client reali.
3) Beacon system-event
I client possono inviare beacon periodici più dettagliati tramite il metodo system-event. L'app per Mac
lo usa per segnalare il nome host, l'IP e lastInputSeconds.
4) Connessioni dei nodi (ruolo: nodo)
Quando un nodo si connette tramite il WebSocket del Gateway con role: node, il Gateway
inserisce o aggiorna una voce di presenza per quel nodo (seguendo lo stesso flusso degli altri client WS).
Regole di unione e deduplicazione (perché instanceId è importante)
Le voci di presenza vengono archiviate in un'unica mappa in memoria, le cui chiavi non distinguono tra maiuscole e minuscole
e corrispondono al primo valore disponibile tra i seguenti, nell'ordine: l'ID di un dispositivo associato, connect.client.instanceId
o, come ultima risorsa, l'ID specifico della connessione.
I client effimeri del piano di controllo sono completamente esclusi dal monitoraggio (vedere
sopra), pertanto i relativi ID di connessione non diventano mai chiavi. Per tutti gli altri client, il
ripiego sull'ID di connessione implica che un client che si riconnette senza un
instanceId stabile venga visualizzato come riga duplicata.
TTL e dimensione limitata
La presenza è intenzionalmente effimera:
- TTL: le voci più vecchie di 5 minuti vengono eliminate
- Numero massimo di voci: 200 (le più vecchie vengono eliminate per prime)
Ciò mantiene aggiornato l'elenco ed evita una crescita illimitata della memoria.
Avvertenza su connessioni remote/tunnel (IP di loopback)
Quando un client si connette tramite un tunnel SSH o un inoltro di porta locale, il Gateway
può rilevare l'indirizzo remoto come 127.0.0.1. Per evitare di registrare l'indirizzo del tunnel
come IP del client, la gestione della connessione omette completamente ip per
i client rilevati come locali (loopback), anziché scrivere l'indirizzo di loopback
nella voce.
Utilizzatori
Pagina Dispositivi dell'interfaccia di controllo
La pagina Dispositivi combina system-presence con i record persistenti di associazione e dei
nodi. Fissa per primo il beacon del Gateway stesso e usa gli ID corrispondenti del dispositivo o
dell'istanza per i metadati in tempo reale relativi a piattaforma, versione, modello e tempo trascorso dall'ultimo input.
Scheda Istanze di macOS
L'app macOS visualizza l'output di system-presence e applica un piccolo indicatore
di stato (Attivo/Inattivo/Obsoleto) in base al tempo trascorso dall'ultimo aggiornamento.
Suggerimenti per il debug
- Per visualizzare l'elenco non elaborato, chiamare
system-presencesul Gateway. - Se vengono visualizzati duplicati:
- verificare che i client inviino un
client.instanceIdstabile durante l'handshake - verificare che i beacon periodici usino lo stesso
instanceId - controllare se nella voce derivata dalla connessione manca
instanceId(i duplicati sono previsti)
- verificare che i client inviino un
Contenuti correlati
In che modo l'input fisico del Mac seleziona un nodo attivo e instrada gli avvisi di connessione.
Quando vengono inviati gli indicatori di digitazione e come regolarli.
Streaming in uscita, suddivisione in blocchi e formattazione specifica per canale.
I componenti del Gateway e il protocollo WebSocket che gestisce gli aggiornamenti della presenza.
Il protocollo di comunicazione per connect, system-event e system-presence.