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,testlastInputSeconds: кількість секунд із моменту останнього введення користувача, якщо відомоreason: довільний рядок, наданий клієнтом; сам Gateway надсилає лишеself,connectіdisconnectdeviceId,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(у такому разі дублікати очікувані)
- переконайтеся, що клієнти надсилають стабільний
Пов’язані матеріали
Як фізичне введення на Mac визначає активний вузол і спрямовує сповіщення про підключення.
Коли надсилаються індикатори введення та як їх налаштувати.
Вихідне потокове передавання, поділ на фрагменти та форматування для кожного каналу.
Компоненти Gateway і протокол WebSocket, що забезпечує оновлення даних про присутність.
Мережевий протокол для connect, system-event і system-presence.