Sessions and memory
Закрепление канала
Докинг канала — это переадресация вызовов для одного сеанса OpenClaw. Он сохраняет тот же контекст разговора, но изменяет место доставки будущих ответов для этого сеанса. Докинг работает только из личного чата; его нельзя выполнить из группового чата.
Пример
Алиса может отправлять сообщения OpenClaw в Telegram и Discord:
{ session: { identityLinks: { alice: ["telegram:123", "discord:456"], }, },}Если Алиса отправит следующую команду из личного чата Telegram:
/dock_discordOpenClaw сохранит контекст текущего сеанса и изменит маршрут ответов:
| До докинга | После /dock_discord |
|---|---|
Ответы поступают в Telegram 123 |
Ответы поступают в Discord 456 |
Сеанс не создаётся заново. История переписки остаётся привязанной к тому же сеансу.
Зачем это использовать
Используйте докинг, когда задача начинается в одном приложении для общения, но следующие ответы должны поступать в другое.
Типичный сценарий:
- Запустите задачу агента из Telegram.
- Перейдите в Discord, где вы координируете работу.
- Отправьте
/dock_discordиз личного чата Telegram. - Продолжайте использовать тот же сеанс OpenClaw, но получайте будущие ответы в Discord.
Обязательная конфигурация
Для докинга требуется session.identityLinks. Исходный отправитель и целевой собеседник
должны входить в одну группу идентичности:
{ session: { identityLinks: { alice: ["telegram:123", "discord:456", "slack:U123"], }, },}Значения представляют собой идентификаторы собеседников с префиксом канала:
| Значение | Значение |
|---|---|
telegram:123 |
Идентификатор отправителя Telegram 123 |
discord:456 |
Идентификатор личного собеседника Discord 456 |
slack:U123 |
Идентификатор пользователя Slack U123 |
Канонический ключ (alice выше) — это только общее имя группы идентичности. Команды
докинга используют значения с префиксом канала, чтобы подтвердить, что исходный
отправитель и целевой собеседник — один и тот же человек.
Команды
OpenClaw создаёт по одной команде /dock-<channel> для каждого загруженного плагина
канала, поддерживающего нативные команды, поэтому список растёт по мере добавления
плагинов. Встроенные плагины, которые поддерживают эту функцию в настоящее время:
| Целевой канал | Команда | Псевдоним |
|---|---|---|
| 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
- предоставление пользователю доступа
- обход списков разрешений каналов или политик личных сообщений
- перенос истории переписки в другой сеанс
- объединение сеансов не связанных между собой пользователей
Он изменяет только маршрут доставки для текущего сеанса.
Устранение неполадок
Команда сообщает, что отправитель не привязан.
Добавьте текущего отправителя и целевого собеседника в одну группу
session.identityLinks. Например, если отправитель Telegram 123 должен выполнить докинг
к собеседнику Discord 456, укажите и telegram:123, и discord:456.
Команда сообщает, что докинг доступен только из личных чатов.
Отправьте команду докинга из личного чата с OpenClaw, а не из группового чата.
Команда сообщает, что активный сеанс отсутствует.
Выполните докинг из существующего сеанса личного чата. Команде требуется запись активного сеанса, чтобы сохранить новый маршрут.
Ответы по-прежнему поступают в старый канал.
Убедитесь, что команда вернула сообщение об успешном выполнении, и проверьте, что идентификатор целевого собеседника совпадает с идентификатором, используемым этим каналом. Докинг изменяет только маршрут активного сеанса; другой сеанс по-прежнему может направлять ответы в другое место.
Мне нужно переключиться обратно.
Отправьте соответствующую команду для исходного канала, например /dock_telegram или
/dock-telegram, от привязанного отправителя.