Sessions and memory

Стикування каналів

Стикування каналів — це переадресація викликів для одного сеансу OpenClaw.

Воно зберігає той самий контекст розмови, але змінює, куди доставлятимуться майбутні відповіді для цього сеансу.

Приклад

Alice може писати OpenClaw у Telegram і Discord:

{
  session: {
    identityLinks: {
      alice: ["telegram:123", "discord:456"],
    },
  },
}

Якщо Alice надішле це з Telegram:

/dock_discord

OpenClaw збереже контекст поточного сеансу й змінить маршрут відповіді:

До стикування Після /dock_discord
Відповіді надходять у Telegram 123 Відповіді надходять у Discord 456

Сеанс не створюється заново. Історія стенограми залишається прив’язаною до того самого сеансу.

Навіщо це використовувати

Використовуйте стикування, коли завдання починається в одному застосунку чату, але наступні відповіді мають надходити кудись іще.

Типовий сценарій:

  1. Запустіть завдання агента з Telegram.
  2. Перейдіть до Discord, де ви координуєте роботу.
  3. Надішліть /dock_discord із сеансу Telegram.
  4. Збережіть той самий сеанс OpenClaw, але отримуйте майбутні відповіді в Discord.

Обов’язкова конфігурація

Для стикування потрібен session.identityLinks. Відправник джерела й цільовий peer мають бути в одній групі ідентичності:

{
  session: {
    identityLinks: {
      alice: ["telegram:123", "discord:456", "slack:U123"],
    },
  },
}

Значення — це ідентифікатори peer із префіксом каналу:

Значення Значення
telegram:123 Ідентифікатор відправника Telegram 123
discord:456 Ідентифікатор прямого peer у Discord 456
slack:U123 Ідентифікатор користувача Slack U123

Канонічний ключ (alice вище) — це лише спільна назва групи ідентичності. Команди dock використовують значення з префіксом каналу, щоб підтвердити, що відправник джерела й цільовий peer — це одна й та сама особа.

Команди

Команди dock генеруються із завантажених плагінів каналів, які підтримують нативні команди. Поточні вбудовані команди:

Цільовий канал Команда Псевдонім
Discord /dock-discord /dock_discord
Mattermost /dock-mattermost /dock_mattermost
Slack /dock-slack /dock_slack
Telegram /dock-telegram /dock_telegram

Псевдоніми з підкресленням корисні на поверхнях нативних команд, таких як Telegram.

Що змінюється

Стикування оновлює поля доставки активного сеансу:

Поле сеансу Приклад після /dock_discord
lastChannel discord
lastTo 456
lastAccountId цільовий обліковий запис каналу або default

Ці поля зберігаються у сховищі сеансів і використовуються для подальшої доставки відповідей у цьому сеансі.

Що не змінюється

Стикування не:

  • створює облікові записи каналів
  • підключає нового бота Discord, Telegram, Slack або Mattermost
  • надає користувачу доступ
  • обходить allowlist каналів або політики прямих повідомлень
  • переносить історію стенограми до іншого сеансу
  • не робить так, щоб непов’язані користувачі спільно використовували один сеанс

Воно лише змінює маршрут доставки для поточного сеансу.

Усунення несправностей

Команда повідомляє, що відправника не пов’язано.

Додайте і поточного відправника, і цільовий peer до тієї самої групи session.identityLinks. Наприклад, якщо відправник Telegram 123 має стикуватися з peer Discord 456, включіть і telegram:123, і discord:456.

Команда повідомляє, що активного сеансу не існує.

Виконайте стикування з наявного сеансу прямого чату. Команді потрібен запис активного сеансу, щоб вона могла зберегти новий маршрут.

Відповіді все ще надходять у старий канал.

Перевірте, що команда повернула повідомлення про успіх, і підтвердьте, що ідентифікатор цільового peer збігається з ідентифікатором, який використовує цей канал. Стикування змінює лише маршрут активного сеансу; інший сеанс усе ще може спрямовувати відповіді в інше місце.

Мені потрібно переключитися назад.

Надішліть відповідну команду для початкового каналу, наприклад /dock_telegram або /dock-telegram, від пов’язаного відправника.