OpenClaw «присутність» — це легке, best-effort представлення:Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
- самого Gateway, і
- клієнтів, підключених до Gateway (застосунок Mac, WebChat, CLI тощо)
Поля присутності (що відображається)
Записи присутності — це структуровані обʼєкти з такими полями, як:instanceId(необовʼязкове, але настійно рекомендоване): стабільна ідентичність клієнта (зазвичайconnect.client.instanceId)host: зручна для людини назва хостаip: best-effort IP-адресаversion: рядок версії клієнтаdeviceFamily/modelIdentifier: підказки щодо апаратного забезпеченняmode:ui,webchat,cli,backend,probe,test,node, …lastInputSeconds: «секунди від останнього введення користувача» (якщо відомо)reason:self,connect,node-connected,periodic, …ts: мітка часу останнього оновлення (мс від епохи)
Виробники (звідки надходить присутність)
Записи присутності створюються кількома джерелами та обʼєднуються.1) Власний запис Gateway
Gateway завжди ініціалізує запис «self» під час запуску, щоб UI показували хост gateway ще до підключення будь-яких клієнтів.2) Підключення WebSocket
Кожен WS-клієнт починає із запитуconnect. Після успішного рукостискання
Gateway вставляє або оновлює запис присутності для цього підключення.
Чому одноразові команди CLI не відображаються
CLI часто підключається для коротких одноразових команд. Щоб не засмічувати список Instances,client.mode === "cli" не перетворюється на запис присутності.
3) Маяки system-event
Клієнти можуть надсилати багатші періодичні маяки через метод system-event. Застосунок Mac
використовує це, щоб повідомляти назву хоста, IP і lastInputSeconds.
4) Підключення Node (role: node)
Коли Node підключається через WebSocket Gateway зrole: node, Gateway
вставляє або оновлює запис присутності для цього Node (той самий потік, що й для інших WS-клієнтів).
Правила обʼєднання та усунення дублікатів (чому instanceId важливий)
Записи присутності зберігаються в одній карті в памʼяті:
- Записи індексуються за ключем присутності.
- Найкращий ключ — стабільний
instanceId(ізconnect.client.instanceId), який зберігається після перезапусків. - Ключі нечутливі до регістру.
instanceId, він може зʼявитися як
дубльований рядок.
TTL і обмежений розмір
Присутність навмисно ефемерна:- TTL: записи старші за 5 хвилин видаляються
- Максимум записів: 200 (найстаріші видаляються першими)
Застереження щодо віддаленого доступу/тунелю (loopback IP-адреси)
Коли клієнт підключається через SSH-тунель / локальне перенаправлення порту, Gateway може бачити віддалену адресу як127.0.0.1. Щоб не перезаписати коректну IP-адресу,
повідомлену клієнтом, віддалені loopback-адреси ігноруються.
Споживачі
Вкладка macOS Instances
Застосунок macOS відображає результатsystem-presence і застосовує невеликий індикатор
стану (активний/бездіяльний/застарілий) на основі віку останнього оновлення.
Поради з налагодження
- Щоб побачити необроблений список, викличте
system-presenceдля Gateway. - Якщо бачите дублікати:
- переконайтеся, що клієнти надсилають стабільний
client.instanceIdпід час рукостискання - переконайтеся, що періодичні маяки використовують той самий
instanceId - перевірте, чи запис, отриманий із підключення, не має
instanceId(дублікати очікувані)
- переконайтеся, що клієнти надсилають стабільний
Повʼязане
Індикатори введення
Коли надсилаються індикатори введення та як їх налаштовувати.
Потокове передавання та розбиття на фрагменти
Вихідне потокове передавання, розбиття на фрагменти та форматування для кожного каналу.
Архітектура Gateway
Компоненти Gateway і протокол WebSocket, який керує оновленнями присутності.
Протокол Gateway
Дротовий протокол для
connect, system-event і system-presence.