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