---
read_when:
    - Вы хотите понять маршрутизацию и изоляцию сеансов
    - Вы хотите настроить область DM для многопользовательских установок
    - Вы отлаживаете ежедневные сбросы или сбросы неактивных сеансов
summary: Как OpenClaw управляет сеансами бесед
title: Управление сеансами
x-i18n:
    generated_at: "2026-06-28T22:53:18Z"
    model: gpt-5.5
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: f65249b17c8b45f569531134471683e9f458015b02af29ddf4aa6e1e5c2eac05
    source_path: concepts/session.md
    workflow: 16
---

OpenClaw организует разговоры в **сеансы**. Каждое сообщение направляется в
сеанс в зависимости от того, откуда оно пришло: личные сообщения, групповые чаты, задания Cron и т. д.

## Как маршрутизируются сообщения

| Источник         | Поведение                         |
| ---------------- | --------------------------------- |
| Личные сообщения | Общий сеанс по умолчанию          |
| Групповые чаты   | Изоляция для каждой группы        |
| Комнаты/каналы   | Изоляция для каждой комнаты       |
| Задания Cron     | Новый сеанс для каждого запуска   |
| Webhook-и        | Изоляция для каждого hook         |

## Изоляция личных сообщений

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

<Warning>
Если несколько человек могут писать вашему агенту, включите изоляцию личных сообщений. Без нее все
пользователи используют один и тот же контекст разговора: личные сообщения Алисы будут
видны Бобу.
</Warning>

**Исправление:**

```json5
{
  session: {
    dmScope: "per-channel-peer", // isolate by channel + sender
  },
}
```

Другие варианты:

- `main` (по умолчанию) -- все личные сообщения используют один сеанс.
- `per-peer` -- изоляция по отправителю (между каналами).
- `per-channel-peer` -- изоляция по каналу + отправителю (рекомендуется).
- `per-account-channel-peer` -- изоляция по учетной записи + каналу + отправителю.

<Tip>
Если один и тот же человек связывается с вами из нескольких каналов, используйте
`session.identityLinks`, чтобы связать его идентификаторы и дать им один общий сеанс.
</Tip>

### Стыковка связанных каналов

Команды стыковки позволяют пользователю перенести маршрут ответа текущего сеанса прямого чата в
другой связанный канал без запуска нового сеанса. См.
[Стыковка каналов](/ru/concepts/channel-docking) с примерами, конфигурацией и
устранением неполадок.

Проверьте настройку с помощью `openclaw security audit`.

## Жизненный цикл сеанса

Сеансы используются повторно, пока не истекут:

- **Ежедневный сброс** (по умолчанию) -- новый сеанс в 4:00 утра по местному времени на хосте
  Gateway. Ежедневная свежесть основана на времени начала текущего `sessionId`, а не
  на более поздних записях метаданных.
- **Сброс по бездействию** (необязательно) -- новый сеанс после периода бездействия. Задайте
  `session.reset.idleMinutes`. Свежесть по бездействию основана на последнем реальном
  взаимодействии пользователя/канала, поэтому события Heartbeat, Cron и системные события exec не
  поддерживают сеанс активным.
- **Ручной сброс** -- введите `/new` или `/reset` в чате. `/new <model>` также
  переключает модель.

Когда настроены и ежедневный сброс, и сброс по бездействию, срабатывает тот, чей срок истекает первым.
Heartbeat, Cron, exec и другие ходы системных событий могут записывать метаданные сеанса,
но эти записи не продлевают свежесть ежедневного сброса или сброса по бездействию. Когда сброс
переводит сеанс, уведомления системных событий в очереди для старого сеанса
отбрасываются, чтобы устаревшие фоновые обновления не добавлялись в начало первого промпта в
новом сеансе.

Сеансы с активным CLI-сеансом, принадлежащим провайдеру, не обрываются неявным
ежедневным значением по умолчанию. Используйте `/reset` или явно настройте `session.reset`, когда такие
сеансы должны истекать по таймеру.

## Где хранится состояние

Все состояние сеансов принадлежит **Gateway**. UI-клиенты запрашивают данные
сеансов у Gateway.

- **Хранилище:** `~/.openclaw/agents/<agentId>/sessions/sessions.json`
- **Транскрипты:** `~/.openclaw/agents/<agentId>/sessions/<sessionId>.jsonl`

`sessions.json` хранит отдельные метки времени жизненного цикла:

- `sessionStartedAt`: когда начался текущий `sessionId`; ежедневный сброс использует это значение.
- `lastInteractionAt`: последнее взаимодействие пользователя/канала, продлевающее срок жизни по бездействию.
- `updatedAt`: последняя мутация строки хранилища; полезно для списков и очистки, но не
  является авторитетным источником свежести для ежедневного сброса/сброса по бездействию.

Старые строки без `sessionStartedAt` при наличии берутся из заголовка сеанса JSONL-транскрипта.
Если в старой строке также нет `lastInteractionAt`,
свежесть по бездействию откатывается к времени начала этого сеанса, а не к более поздним
служебным записям.

## Обслуживание сеансов

OpenClaw автоматически ограничивает объем хранилища сеансов со временем. По умолчанию он работает
в режиме `enforce` и выполняет очистку во время обслуживания. Задайте
`session.maintenance.mode` как `"warn"`, чтобы сообщать, что было бы очищено, без изменения хранилища/файлов:

```json5
{
  session: {
    maintenance: {
      mode: "enforce",
      pruneAfter: "30d",
      maxEntries: 500,
    },
  },
}
```

Для производственных лимитов `maxEntries` записи среды выполнения Gateway используют небольшой буфер верхней отметки и пакетно очищают обратно до настроенного предела. Чтения хранилища сеансов не сокращают и не ограничивают записи во время запуска Gateway. Это позволяет избежать полной очистки хранилища при каждом запуске или изолированном сеансе Cron. `openclaw sessions cleanup --enforce` применяет предел немедленно.

Пробные сеансы запуска моделей Gateway по умолчанию недолговечны. Совпадающие строки со
строгими явными ключами, такими как `agent:*:explicit:model-run-<uuid>`, используют фиксированное
хранение `24h`, но очистка ограничена давлением: она удаляет устаревшие пробные строки только тогда, когда
достигнуто давление обслуживания/лимита записей сеансов. Когда выполняется очистка model-run,
она запускается до более широкого отсечения устаревших записей по возрасту и до лимита записей. Обычные прямые,
групповые, потоковые, Cron, hook, Heartbeat, ACP и сеансы субагентов не наследуют
это 24-часовое хранение.

Обслуживание сохраняет долговечные внешние указатели разговоров, включая групповые
сеансы и чат-сеансы в рамках потоков, при этом позволяя синтетическим записям Cron,
hook, Heartbeat, ACP и субагентов устаревать и удаляться.

Если вы ранее использовали изоляцию личных сообщений, а затем вернули
`session.dmScope` к `main`, предварительно просмотрите устаревшие строки личных сообщений с ключами peer с помощью
`openclaw sessions cleanup --dry-run --fix-dm-scope`. Применение того же флага
выводит из обращения эти старые строки прямых личных сообщений и сохраняет их транскрипты как удаленные
архивы.

Предварительный просмотр: `openclaw sessions cleanup --dry-run`.

## Проверка сеансов

- `openclaw status` -- путь к хранилищу сеансов и недавняя активность.
- `openclaw sessions --json` -- все сеансы (фильтр через `--active <minutes>`).
- `/status` в чате -- использование контекста, модель и переключатели.
- `/context list` -- что находится в системном промпте.

## Дополнительное чтение

- [Обрезка сеансов](/ru/concepts/session-pruning) -- сокращение результатов инструментов
- [Compaction](/ru/concepts/compaction) -- суммаризация длинных разговоров
- [Инструменты сеанса](/ru/concepts/session-tool) -- инструменты агента для работы между сеансами
- [Подробный обзор управления сеансами](/ru/reference/session-management-compaction) --
  схема хранилища, транскрипты, политика отправки, метаданные происхождения и расширенная конфигурация
- [Мультиагентность](/ru/concepts/multi-agent) — маршрутизация и изоляция сеансов между агентами
- [Фоновые задачи](/ru/automation/tasks) — как отсоединенная работа создает записи задач со ссылками на сеансы
- [Маршрутизация каналов](/ru/channels/channel-routing) — как входящие сообщения маршрутизируются в сеансы

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

- [Обрезка сеансов](/ru/concepts/session-pruning)
- [Инструменты сеанса](/ru/concepts/session-tool)
- [Очередь команд](/ru/concepts/queue)
