Сессии и агенты в OpenClaw: маршрутизация на русском

Когда AI-агент общается с несколькими людьми через разные мессенджеры — как он решает, какой контекст показывать какому пользователю? Как разделить рабочие и личные чаты? Как обеспечить, чтобы один пользователь не видел переписку другого? Всё это решает система сессий OpenClaw.

Эта статья — адаптированный перевод документации по Session Management. Если вы только начинаете — рекомендуем сначала прочитать что такое OpenClaw и руководство по быстрому старту.

Что такое сессия в OpenClaw

Сессия — это контейнер для разговора. Она хранит историю сообщений, контекст и состояние. У каждой сессии есть уникальный ключ, который определяет, откуда пришло сообщение и кому оно принадлежит.

OpenClaw автоматически маршрутизирует входящие сообщения в нужную сессию на основе:

Режимы группировки личных сообщений (dmScope)

Параметр session.dmScope — ключевая настройка, определяющая, как организованы личные чаты:

main (по умолчанию)

Все личные сообщения со всех каналов попадают в одну общую сессию. Это удобно для одного пользователя — вы можете начать разговор в Telegram, продолжить в WhatsApp, и агент сохранит контекст.

per-peer

Изоляция по отправителю. Каждый человек получает свою сессию, но один и тот же человек из разных каналов — в одной.

per-channel-peer (рекомендуется для нескольких пользователей)

Изоляция по каналу и отправителю. Самый безопасный вариант для ботов, доступных нескольким людям.

per-account-channel-peer

Максимальная изоляция — если у вас несколько аккаунтов на одном канале.

⚠️ Важно для безопасности: Если вашему боту могут писать несколько человек, обязательно включите per-channel-peer. Без этого все пользователи будут видеть контекст друг друга!

Пример проблемы без изоляции

Алиса пишет агенту о медицинском приёме. Борис спрашивает агента: «О чём мы говорили?» Без изоляции модель может ответить Борису, используя контекст Алисы. Чтобы этого не произошло:

{
  session: {
    dmScope: "per-channel-peer",
  },
}

Маршрутизация: как формируются ключи сессий

Каждая сессия имеет ключ, построенный по формуле:

Связывание идентичностей (identityLinks)

Если один и тот же человек пишет вам из Telegram и Discord, можно объединить его сессии:

{
  session: {
    identityLinks: {
      alice: ["telegram:123456789", "discord:987654321"],
    },
  },
}

Теперь Алиса получит один общий контекст, независимо от канала.

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

Сброс сессий

Сессии автоматически сбрасываются по политике:

{
  session: {
    reset: {
      mode: "daily",
      atHour: 4,
      idleMinutes: 120,
    },
  },
}

Ручной сброс

Отправьте /new или /reset в чате, чтобы начать новую сессию. Можно указать модель: /new opus.

Настройки по типу чата

{
  session: {
    resetByType: {
      direct: { mode: "idle", idleMinutes: 240 },
      group: { mode: "idle", idleMinutes: 120 },
      thread: { mode: "daily", atHour: 4 },
    },
  },
}

Политика отправки (Send Policy)

Можно заблокировать отправку ответов для определённых сессий без указания конкретных ID:

{
  session: {
    sendPolicy: {
      rules: [
        { action: "deny", match: { channel: "discord", chatType: "group" } },
        { action: "deny", match: { keyPrefix: "cron:" } },
      ],
      default: "allow",
    },
  },
}

Управление на лету: /send on, /send off, /send inherit.

Где хранятся данные сессий

Gateway — единственный источник истины для сессий. UI-клиенты (macOS, WebChat) запрашивают данные у Gateway, а не читают файлы напрямую.

Полезные команды для отладки

Управляйте сессиями через удобный интерфейс

AI Magic Hub предоставляет графический интерфейс для управления сессиями и агентами OpenClaw.

Скачать AI Magic Hub