Närvaro¶
OpenClaw ”närvaro” är en lättviktig vy enligt best effort av:
- Gatewayn själv, och
- klienter som är anslutna till Gateway (mac-app, WebChat, CLI, osv.)
Närvaro används främst för att rendera macOS-appens flik Instances och för att ge operatörer snabb överblick.
Närvarofält (vad som visas)¶
Närvaroposter är strukturerade objekt med fält som:
instanceId(valfritt men starkt rekommenderat): stabil klientidentitet (vanligenconnect.client.instanceId)host: lättläst värdnamnip: IP-adress enligt best effortversion: klientens versionssträngdeviceFamily/modelIdentifier: hårdvaruindikationermode:ui,webchat,cli,backend,probe,test,node, ...lastInputSeconds: ”sekunder sedan senaste användarinmatning” (om känt)reason:self,connect,node-connected,periodic, ...ts: tidsstämpel för senaste uppdatering (ms sedan epok)
Producenter (var närvaro kommer ifrån)¶
Närvaroposter produceras av flera källor och slås samman.
1. Gatewayns egen post¶
Gateway skapar alltid en ”egen”-post vid uppstart så att UI:er visar gateway-värden redan innan några klienter ansluter.
2. WebSocket-anslutning¶
Varje WS-klient börjar med en connect-begäran. Vid lyckad handskakning höjer
Gateway en närvaropost för den anslutningen.
Varför engångskommandon i CLI inte syns¶
CLI ansluter ofta för korta, one‐off kommandon. För att undvika spamming av listan
instanser, client.mode === "cli" är inte förvandlas till en närvaropost.
3. system-event-beacons¶
Klienter kan skicka rikare periodiska fyrar via system-event-metoden. Appen mac
använder detta för att rapportera värdnamn, IP och lastInputSeconds.
4. Nodanslutningar (roll: node)¶
När en nod ansluter via Gateway-WebSocket med role: node uppdaterar Gateway
(en upsert) en närvaropost för den noden (samma flöde som för andra WS-klienter).
Sammanfogning + deduplicering (varför instanceId är viktigt)¶
Närvaroposter lagras i en enda minnesbaserad map:
- Poster nycklas med en närvaronyckel.
- Den bästa nyckeln är en stabil
instanceId(frånconnect.client.instanceId) som överlever omstarter. - Nycklar är skiftlägesokänsliga.
Om en klient återansluter utan en stabil instanceId kan den visas som en
duplicerad rad.
TTL och begränsad storlek¶
Närvaro är avsiktligt flyktig:
- TTL: poster äldre än 5 minuter rensas bort
- Max antal poster: 200 (äldsta tas bort först)
Detta håller listan aktuell och undviker obegränsad minnestillväxt.
Fjärr-/tunnel-varning (loopback-IP:n)¶
När en klient ansluter över en SSH-tunnel / lokal port framåt kan Gateway
se fjärradressen som 127.0.0.1. För att undvika att skriva över en bra klientrapporterad
IP-adresser ignoreras.
Konsumenter¶
macOS-fliken Instances¶
MacOS-appen renderar utdata från system-presence och tillämpar en liten
statusindikator (Active/Idle/Stale) baserat på åldern på den senaste uppdateringen.
Felsökningstips¶
- För att se rålistan, anropa
system-presencemot Gateway. - Om du ser dubbletter:
- bekräfta att klienter skickar en stabil
client.instanceIdi handskakningen - bekräfta att periodiska beacons använder samma
instanceId - kontrollera om den anslutningshärledda posten saknar
instanceId(dubbletter är förväntade)