---
read_when:
    - Отладка текущего статуса на странице устройств Control UI
    - Исследование дублирующихся или устаревших строк экземпляров
    - Изменение подключения Gateway по WebSocket или маяков системных событий
summary: Как создаются, объединяются и отображаются записи о присутствии OpenClaw
title: Присутствие
x-i18n:
    generated_at: "2026-07-13T18:04:39Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 24
    provider: openai
    source_hash: b50291e26ddc06fac888847c9e94eba5f9351b1b8d06c55fd6bec16a38d0b6a5
    source_path: concepts/presence.md
    workflow: 16
---

«Присутствие» OpenClaw — это упрощённое представление, формируемое по мере возможности, о:

- самом **Gateway** и
- **видимых пользователю клиентах, подключённых к Gateway** (приложение для Mac, WebChat, узлы и т. д.)

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

На этой странице описан список клиентов Gateway. Чтобы определить компьютер Mac, который вы использовали последним,
и направлять на него оповещения узлов, см.
[Присутствие активного компьютера](/nodes/presence).

## Поля присутствия (что отображается)

Записи присутствия — это структурированные объекты с такими полями:

- `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 и средства проверки часто подключаются ненадолго. Чтобы не
сохранять эти часто меняющиеся подключения в течение всего срока жизни записей присутствия, клиенты в режиме `cli`, `backend`
или `probe` **не** преобразуются в записи присутствия. Клиенты в тестовом режиме
продолжают отслеживаться, поскольку наборы тестов используют их вместо реальных клиентов.

### 3) Сигналы `system-event`

Клиенты могут отправлять более подробные периодические сигналы с помощью метода `system-event`. Приложение
для Mac использует его для передачи имени хоста, IP-адреса и `lastInputSeconds`.

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

Когда узел подключается через WebSocket Gateway с `role: node`, Gateway
создаёт или обновляет запись присутствия этого узла (так же, как для других клиентов WS).

## Правила объединения и устранения дубликатов (почему `instanceId` имеет значение)

Записи присутствия хранятся в единой карте в памяти. Ключи в ней не зависят от регистра
и выбираются по первому доступному значению в следующем порядке: идентификатор сопряжённого устройства, `connect.client.instanceId`
или, в крайнем случае, идентификатор отдельного подключения.

Кратковременные клиенты плоскости управления полностью исключены из отслеживания (см.
выше), поэтому идентификаторы их подключений никогда не становятся ключами. Для всех остальных клиентов
резервное использование идентификатора подключения означает, что клиент, повторно подключившийся без стабильного
`instanceId`, отображается **дублирующейся** строкой.

## Срок жизни и ограничение размера

Данные о присутствии намеренно недолговечны:

- **Срок жизни:** записи старше 5 минут удаляются
- **Максимум записей:** 200 (сначала удаляются самые старые)

Это позволяет поддерживать актуальность списка и предотвращает неограниченный рост потребления памяти.

## Особенность удалённых и туннельных подключений (IP-адреса обратной петли)

Когда клиент подключается через SSH-туннель или локальное перенаправление портов, Gateway
может видеть удалённый адрес как `127.0.0.1`. Чтобы не записывать этот адрес туннеля
как IP-адрес клиента, при обработке подключения поле `ip` полностью исключается
для клиентов, определённых как локальные (обратная петля), вместо сохранения адреса обратной петли
в записи.

## Потребители

### Страница Devices интерфейса управления

Страница **Devices** объединяет `system-presence` с постоянными записями
о сопряжении и узлах. Собственный сигнал Gateway закрепляется первым, а совпадающие идентификаторы устройства или
экземпляра используются для получения актуальных метаданных о платформе, версии, модели и времени с момента последнего ввода.

### Вкладка Instances в macOS

Приложение для macOS отображает результат `system-presence` и применяет небольшой индикатор
состояния (Active/Idle/Stale) в зависимости от времени, прошедшего с последнего обновления.

## Советы по отладке

- Чтобы просмотреть необработанный список, вызовите `system-presence` для Gateway.
- Если отображаются дубликаты:
  - убедитесь, что клиенты передают стабильный `client.instanceId` при установлении соединения
  - убедитесь, что периодические сигналы используют тот же `instanceId`
  - проверьте, отсутствует ли `instanceId` в записи, полученной из подключения (в этом случае дубликаты ожидаемы)

## Связанные материалы

<CardGroup cols={2}>
  <Card title="Присутствие активного компьютера" href="/nodes/presence" icon="computer-mouse">
    Как физический ввод на Mac выбирает активный узел и направляет оповещения о подключении.
  </Card>
  <Card title="Индикаторы набора текста" href="/ru/concepts/typing-indicators" icon="ellipsis">
    Когда отправляются индикаторы набора текста и как их настроить.
  </Card>
  <Card title="Потоковая передача и разбиение на фрагменты" href="/ru/concepts/streaming" icon="bars-staggered">
    Исходящая потоковая передача, разбиение на фрагменты и форматирование для каждого канала.
  </Card>
  <Card title="Архитектура Gateway" href="/ru/concepts/architecture" icon="diagram-project">
    Компоненты Gateway и протокол WebSocket, обеспечивающий обновление данных о присутствии.
  </Card>
  <Card title="Протокол Gateway" href="/ru/gateway/protocol" icon="plug">
    Сетевой протокол для `connect`, `system-event` и `system-presence`.
  </Card>
</CardGroup>
