Multi-agent

Присутність

«Присутність» OpenClaw — це спрощене подання, що формується за принципом найкращих зусиль, для:

  • самого Gateway та
  • видимих користувачеві клієнтів, підключених до Gateway (застосунок для Mac, WebChat, вузли тощо)

Дані про присутність відображаються наживо на сторінці Devices інтерфейсу керування (у розділі Settings → Devices) і на вкладці Instances застосунку для macOS.

На цій сторінці описано список клієнтів Gateway. Щоб визначити Mac, який використовувався останнім, і спрямовувати на нього сповіщення вузла, див. Присутність активного комп’ютера.

Поля присутності (що відображається)

Записи присутності — це структуровані об’єкти з такими полями:

  • instanceId (необов’язкове, але наполегливо рекомендоване): стабільний ідентифікатор клієнта (зазвичай connect.client.instanceId)
  • host: зрозуміле користувачеві ім’я хоста
  • ip: IP-адреса, визначена за принципом найкращих зусиль
  • version: рядок версії клієнта
  • deviceFamily / modelIdentifier: відомості про обладнання
  • mode: ui, webchat, cli, backend, node, probe, test
  • lastInputSeconds: кількість секунд із моменту останнього введення користувача, якщо відомо
  • reason: довільний рядок, наданий клієнтом; сам Gateway надсилає лише self, connect і disconnect
  • deviceId, roles, scopes: ідентифікатор пристрою та відомості про роль і область дії з рукостискання під час підключення
  • ts: часова позначка останнього оновлення (мс від початку епохи)

Джерела (звідки надходять дані про присутність)

Записи присутності створюються кількома джерелами й об’єднуються.

1) Власний запис Gateway

Під час запуску Gateway завжди створює власний запис, щоб інтерфейси показували хост Gateway ще до підключення будь-яких клієнтів.

2) Підключення WebSocket

Кожен клієнт WS починає із запиту connect. Після успішного рукостискання Gateway додає або оновлює запис присутності для цього підключення.

Чому тимчасові підключення площини керування не відображаються

Команди CLI, серверні клієнти RPC і засоби перевірки часто підключаються ненадовго. Щоб не зберігати ці мінливі підключення протягом усього TTL присутності, клієнти в режимі cli, backend або probe не перетворюються на записи присутності. Клієнти в тестовому режимі й надалі відстежуються, оскільки набори тестів використовують їх як замінники реальних клієнтів.

3) Сигнали system-event

Клієнти можуть надсилати докладніші періодичні сигнали за допомогою методу system-event. Застосунок для Mac використовує його, щоб повідомляти ім’я хоста, IP-адресу та lastInputSeconds.

4) Підключення вузлів (роль: node)

Коли вузол підключається через WebSocket Gateway із role: node, Gateway додає або оновлює запис присутності цього вузла (за тією самою схемою, що й для інших клієнтів WS).

Правила об’єднання та усунення дублікатів (чому instanceId має значення)

Записи присутності зберігаються в єдиній мапі в пам’яті з ключами без урахування регістру, утвореними з першого доступного значення в такому порядку: ідентифікатор спареного пристрою, connect.client.instanceId або, як крайній варіант, ідентифікатор окремого підключення.

Тимчасові клієнти площини керування повністю виключаються з відстеження (див. вище), тому ідентифікатори їхніх підключень ніколи не стають ключами. Для всіх інших клієнтів резервне використання ідентифікатора підключення означає, що клієнт, який повторно підключається без стабільного instanceId, відображається як дублікат рядка.

TTL та обмежений розмір

Дані про присутність навмисно є тимчасовими:

  • TTL: записи, старші за 5 хвилин, видаляються
  • Максимальна кількість записів: 200 (спочатку видаляються найстаріші)

Це підтримує актуальність списку та запобігає необмеженому зростанню використання пам’яті.

Застереження щодо віддалених підключень і тунелів (loopback IP-адреси)

Коли клієнт підключається через тунель SSH або локальне перенаправлення порту, Gateway може бачити віддалену адресу як 127.0.0.1. Щоб не записувати адресу тунелю як IP-адресу клієнта, під час обробки підключення поле ip повністю пропускається для клієнтів, визначених як локальні (loopback), замість записування loopback-адреси до запису.

Споживачі

Сторінка Devices інтерфейсу керування

Сторінка Devices поєднує system-presence зі збереженими записами про спарювання та вузли. Вона закріплює власний сигнал Gateway першим і використовує відповідні ідентифікатори пристрою або екземпляра для актуальних метаданих про платформу, версію, модель і давність введення.

Вкладка Instances у macOS

Застосунок для macOS відображає результат system-presence і застосовує невеликий індикатор стану (Active/Idle/Stale) залежно від давності останнього оновлення.

Поради щодо налагодження

  • Щоб переглянути необроблений список, викличте system-presence у Gateway.
  • Якщо відображаються дублікати:
    • переконайтеся, що клієнти надсилають стабільний client.instanceId під час рукостискання
    • переконайтеся, що періодичні сигнали використовують той самий instanceId
    • перевірте, чи в записі, отриманому з підключення, відсутній instanceId (у такому разі дублікати очікувані)

Пов’язані матеріали

Was this useful?
On this page

On this page