> ## Documentation Index
> Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Строка меню

## Что отображается

* Мы показываем текущее рабочее состояние агента в значке строки меню и в первой строке состояния меню.
* Состояние работоспособности скрыто, пока работа активна; оно возвращается, когда все сеансы простаивают.
* Корневое подменю «Контекст» содержит недавние сеансы, вместо того чтобы раскрывать их напрямую в корневом меню.
* Блок «Узлы» в корневом меню перечисляет только **устройства** (связанные узлы через `node.list`), а не записи клиентов/присутствия.
* Корневой раздел «Использование» появляется под Контекстом, когда доступны снимки использования провайдера, после чего показываются сведения о стоимости использования, если они доступны.

## Модель состояния

* Сеансы: события приходят с `runId` (для отдельного запуска) плюс `sessionKey` в полезной нагрузке. «Основной» сеанс — это ключ `main`; если он отсутствует, мы возвращаемся к последнему обновленному сеансу.
* Приоритет: основной всегда побеждает. Если основной активен, его состояние отображается немедленно. Если основной простаивает, отображается последний активный неосновной сеанс. Мы не переключаемся туда-сюда во время активности; переключение происходит только когда текущий сеанс переходит в простой или основной становится активным.
* Типы активности:
  * `job`: выполнение команды высокого уровня (`state: started|streaming|done|error`).
  * `tool`: `phase: start|result` с `toolName` и `meta/args`.

## Перечисление IconState (Swift)

* `idle`
* `workingMain(ActivityKind)`
* `workingOther(ActivityKind)`
* `overridden(ActivityKind)` (отладочное переопределение)

### ActivityKind → глиф

* `exec` → 💻
* `read` → 📄
* `write` → ✍️
* `edit` → 📝
* `attach` → 📎
* по умолчанию → 🛠️

### Визуальное сопоставление

* `idle`: обычное существо.
* `workingMain`: бейдж с глифом, полная тонировка, анимация ног «работает».
* `workingOther`: бейдж с глифом, приглушенная тонировка, без суеты.
* `overridden`: использует выбранный глиф/тонировку независимо от активности.

## Подменю «Контекст»

* Корневое меню показывает одну строку «Контекст» с количеством/статусом сеансов и открывает подменю.
* Заголовок подменю «Контекст» показывает количество активных сеансов за последние 24 часа.
* Каждая строка сеанса сохраняет свою полосу токенов, возраст, предпросмотр, режим thinking/verbose, а также действия сброса, Compaction и удаления.
* Сообщения о загрузке, отключении и ошибке загрузки сеансов появляются внутри подменю «Контекст».
* Сведения об использовании провайдера и стоимости использования остаются на корневом уровне под Контекстом, чтобы их можно было быстро просмотреть без открытия подменю.

## Текст строки состояния (меню)

* Пока работа активна: `<Session role> · <activity label>`
  * Примеры: `Main · exec: pnpm test`, `Other · read: apps/macos/Sources/OpenClaw/AppState.swift`.
* В простое: возвращается к сводке работоспособности.

## Прием событий

* Источник: события `agent` control-channel (`ControlChannel.handleAgentEvent`).
* Разобранные поля:
  * `stream: "job"` с `data.state` для запуска/остановки.
  * `stream: "tool"` с `data.phase`, `name`, необязательными `meta`/`args`.
* Метки:
  * `exec`: первая строка `args.command`.
  * `read`/`write`: сокращенный путь.
  * `edit`: путь плюс выведенный тип изменения из `meta`/количества строк diff.
  * запасной вариант: имя инструмента.

## Отладочное переопределение

* Настройки ▸ Отладка ▸ средство выбора «Переопределение значка»:
  * `System (auto)` (по умолчанию)
  * `Working: main` (по типу инструмента)
  * `Working: other` (по типу инструмента)
  * `Idle`
* Хранится через `@AppStorage("iconOverride")`; сопоставляется с `IconState.overridden`.

## Контрольный список тестирования

* Запустить задачу основного сеанса: убедиться, что значок переключается немедленно, а строка состояния показывает метку основного сеанса.
* Запустить задачу неосновного сеанса, пока основной простаивает: значок/статус показывает неосновной; остается стабильным до завершения.
* Запустить основной, пока другой активен: значок мгновенно переключается на основной.
* Быстрые всплески инструментов: убедиться, что бейдж не мерцает (льготный TTL для результатов инструментов).
* Строка работоспособности снова появляется, когда все сеансы простаивают.

## Связанное

* [приложение macOS](/ru/platforms/macos)
* [Значок строки меню](/ru/platforms/mac/icon)
