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 |
Сеанс не створюється заново. Історія стенограми залишається прив’язаною до того самого сеансу.
Навіщо це використовувати
Використовуйте стикування, коли завдання починається в одному застосунку чату, але наступні відповіді мають надходити кудись іще.
Типовий сценарій:
- Запустіть завдання агента з Telegram.
- Перейдіть до Discord, де ви координуєте роботу.
- Надішліть
/dock_discordіз сеансу Telegram. - Збережіть той самий сеанс 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, від пов’язаного відправника.