Sessions and memory
Управление сеансами
OpenClaw организует разговоры в сеансы. Каждое сообщение направляется в сеанс в зависимости от того, откуда оно пришло: личные сообщения, групповые чаты, задания Cron и т. д.
Как маршрутизируются сообщения
| Источник | Поведение |
|---|---|
| Личные сообщения | Общий сеанс по умолчанию |
| Групповые чаты | Изоляция для каждой группы |
| Комнаты/каналы | Изоляция для каждой комнаты |
| Задания Cron | Новый сеанс для каждого запуска |
| Webhook-и | Изоляция для каждого hook |
Изоляция личных сообщений
По умолчанию все личные сообщения используют один сеанс для сохранения непрерывности. Это подходит для установок с одним пользователем.
Исправление:
{ session: { dmScope: "per-channel-peer", // isolate by channel + sender },}Другие варианты:
main(по умолчанию) -- все личные сообщения используют один сеанс.per-peer-- изоляция по отправителю (между каналами).per-channel-peer-- изоляция по каналу + отправителю (рекомендуется).per-account-channel-peer-- изоляция по учетной записи + каналу + отправителю.
Стыковка связанных каналов
Команды стыковки позволяют пользователю перенести маршрут ответа текущего сеанса прямого чата в другой связанный канал без запуска нового сеанса. См. Стыковка каналов с примерами, конфигурацией и устранением неполадок.
Проверьте настройку с помощью 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", чтобы сообщать, что было бы очищено, без изменения хранилища/файлов:
{ 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-- что находится в системном промпте.
Дополнительное чтение
- Обрезка сеансов -- сокращение результатов инструментов
- Compaction -- суммаризация длинных разговоров
- Инструменты сеанса -- инструменты агента для работы между сеансами
- Подробный обзор управления сеансами -- схема хранилища, транскрипты, политика отправки, метаданные происхождения и расширенная конфигурация
- Мультиагентность — маршрутизация и изоляция сеансов между агентами
- Фоновые задачи — как отсоединенная работа создает записи задач со ссылками на сеансы
- Маршрутизация каналов — как входящие сообщения маршрутизируются в сеансы