Multi-agent
Aanwezigheid
OpenClaw-"presence" is een lichtgewicht overzicht op basis van best effort van:
- de Gateway zelf, en
- voor gebruikers zichtbare clients die met de Gateway zijn verbonden (Mac-app, WebChat, nodes enz.)
Presence toont live verbindingsmetadata op de pagina Devices van de Control UI (onder Settings → Devices) en op het tabblad Instances van de macOS-app.
Deze pagina behandelt het clientoverzicht van de Gateway. Zie Presence van actieve computer om de Mac te detecteren die je het laatst hebt gebruikt en nodewaarschuwingen daarheen te routeren.
Presence-velden (wat wordt weergegeven)
Presence-vermeldingen zijn gestructureerde objecten met velden zoals:
instanceId(optioneel, maar sterk aanbevolen): stabiele clientidentiteit (meestalconnect.client.instanceId)host: gebruiksvriendelijke hostnaamip: IP-adres op basis van best effortversion: tekenreeks met de clientversiedeviceFamily/modelIdentifier: hardwareaanwijzingenmode:ui,webchat,cli,backend,node,probe,testlastInputSeconds: seconden sinds de laatste gebruikersinvoer, indien bekendreason: vrije, door de client aangeleverde tekenreeks; de Gateway zelf genereert alleenself,connectendisconnectdeviceId,roles,scopes: apparaatidentiteit en aanwijzingen voor rol/bereik uit de verbindingshandshakets: tijdstempel van de laatste update (ms sinds epoch)
Producenten (waar presence vandaan komt)
Presence-vermeldingen worden door meerdere bronnen geproduceerd en samengevoegd.
1) Eigen vermelding van de Gateway
De Gateway maakt bij het opstarten altijd een eigen vermelding aan, zodat gebruikersinterfaces de Gateway-host tonen voordat er clients verbinding maken.
2) WebSocket-verbinding
Elke WS-client begint met een connect-verzoek. Na een geslaagde handshake
voegt de Gateway een presence-vermelding voor die verbinding toe of werkt deze bij.
Waarom tijdelijke control-plane-verbindingen niet worden weergegeven
CLI-opdrachten, backend-RPC-clients en probes maken vaak kortstondig verbinding. Om te voorkomen
dat deze wisselingen gedurende de volledige presence-TTL worden bewaard, worden clients in de modus
cli, backend of probe niet omgezet in presence-vermeldingen.
Clients in testmodus blijven gevolgd, omdat testsuites deze gebruiken als vervanging voor echte clients.
3) system-event-bakens
Clients kunnen uitgebreidere periodieke bakens verzenden via de methode system-event. De Mac-app
gebruikt dit om hostnaam, IP, versie en metadata over beschikbaarheid te rapporteren. Activiteit van
fysieke invoer maakt geen deel uit van dit generieke baken; de speciaal daarvoor bestemde native
nodegebeurtenis die wordt beschreven in Presence van actieve computer, beheert dit. De
Mac voorziet deze bakens van system-presence-clear-last-input; huidige Gateways gebruiken
deze achterwaarts compatibele markering om recentheid van invoer te verwijderen die door een
oudere app is bewaard. Het baken bevat ook een vaste waarde van 30 dagen, zodat oudere Gateways die
de markering negeren de exacte recentheid overschrijven in plaats van deze te bewaren. Voor deze
compatibiliteitswaarde wordt geen nieuwe activiteit gemeten.
4) Nodeverbindingen (rol: node)
Wanneer een node via de Gateway-WebSocket verbinding maakt met role: node, voegt de Gateway
een presence-vermelding voor die node toe of werkt deze bij (dezelfde flow als voor andere WS-clients).
Regels voor samenvoegen en ontdubbelen (waarom instanceId belangrijk is)
Presence-vermeldingen worden opgeslagen in één in-memory map, zonder onderscheid tussen hoofdletters
en kleine letters geïndexeerd op de eerste beschikbare waarde, in deze volgorde: een gekoppelde apparaat-id,
connect.client.instanceId of, als laatste redmiddel, de id per verbinding.
Tijdelijke control-plane-clients worden volledig uitgesloten van tracking (zie
hierboven), zodat hun verbindings-id's nooit sleutels worden. Voor elke andere client betekent de
terugval op de verbindings-id dat een client die opnieuw verbinding maakt zonder een stabiele
instanceId, als een dubbele rij wordt weergegeven.
TTL en begrensde grootte
Presence is bewust tijdelijk:
- TTL: vermeldingen ouder dan 5 minuten worden verwijderd
- Maximumaantal vermeldingen: 200 (oudste eerst verwijderd)
Hierdoor blijft de lijst actueel en wordt onbeperkte groei van het geheugengebruik voorkomen.
Aandachtspunt bij externe verbindingen/tunnels (loopback-IP's)
Wanneer een client verbinding maakt via een SSH-tunnel/lokale poortdoorsturing, kan de Gateway
het externe adres zien als 127.0.0.1. Om te voorkomen dat dit tunneladres
als IP-adres van de client wordt opgeslagen, laat de verbindingsafhandeling ip volledig
weg voor gedetecteerde lokale clients (loopback), in plaats van het loopback-adres
in de vermelding te schrijven.
Consumenten
Pagina Devices van de Control UI
De pagina Devices combineert system-presence met duurzame koppelings- en
noderecords. Deze zet het eigen Gateway-baken bovenaan vast en gebruikt overeenkomende apparaat- of
instantie-id's voor live metadata over platform, versie, model en recentheid van invoer.
Tabblad Instances van macOS
De macOS-app geeft de uitvoer van system-presence weer en past een kleine statusindicator
(Active/Idle/Stale) toe op basis van de ouderdom van de laatste update.
Tips voor foutopsporing
- Roep
system-presenceaan op de Gateway om de onbewerkte lijst te bekijken. - Als je dubbele vermeldingen ziet:
- controleer of clients tijdens de handshake een stabiele
client.instanceIdverzenden - controleer of periodieke bakens dezelfde
instanceIdgebruiken - controleer of
instanceIdontbreekt in de van de verbinding afgeleide vermelding (dubbele vermeldingen zijn dan te verwachten)
- controleer of clients tijdens de handshake een stabiele
Gerelateerd
Hoe fysieke invoer op een Mac een actieve node selecteert en verbindingswaarschuwingen routeert.
Wanneer typindicatoren worden verzonden en hoe je ze afstemt.
Uitgaande streaming, segmentering en opmaak per kanaal.
Gateway-componenten en het WebSocket-protocol dat presence-updates aanstuurt.
Het wire-protocol voor connect, system-event en system-presence.