Перейти к основному содержанию
Закрепление канала — это переадресация вызовов для одного сеанса 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. Исходный отправитель и целевой собеседник должны быть в одной группе идентичности:
{
  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
lastChanneldiscord
lastTo456
lastAccountIdучетная запись целевого канала или default
Эти поля сохраняются в хранилище сеансов и используются последующей доставкой ответов для этого сеанса.

Что не меняется

Закрепление не:
  • создает учетные записи каналов
  • подключает нового бота Discord, Telegram, Slack или Mattermost
  • предоставляет доступ пользователю
  • обходит списки разрешенных каналов или политики личных сообщений
  • переносит историю стенограммы в другой сеанс
  • заставляет несвязанных пользователей совместно использовать сеанс
Оно меняет только маршрут доставки для текущего сеанса.

Устранение неполадок

Команда сообщает, что отправитель не связан. Добавьте и текущего отправителя, и целевого собеседника в одну и ту же группу session.identityLinks. Например, если отправитель Telegram 123 должен закрепиться за собеседником Discord 456, включите и telegram:123, и discord:456. Команда сообщает, что активный сеанс отсутствует. Закрепляйтесь из существующего сеанса прямого чата. Команде нужна активная запись сеанса, чтобы сохранить новый маршрут. Ответы по-прежнему идут в старый канал. Проверьте, что команда ответила сообщением об успехе, и подтвердите, что идентификатор целевого собеседника совпадает с идентификатором, используемым этим каналом. Закрепление меняет только маршрут активного сеанса; другой сеанс все еще может направляться в другое место. Мне нужно переключиться обратно. Отправьте соответствующую команду для исходного канала, например /dock_telegram или /dock-telegram, от связанного отправителя.