Платформы для обмена сообщениями
Nostr
Статус: Опциональный плагин (отключен по умолчанию). Nostr — это децентрализованный протокол для социальных сетей. Этот канал позволяет OpenClaw получать и отвечать на зашифрованные личные сообщения (DM) через NIP-04.
Установка (по требованию)
Онбординг (рекомендуется)
- Мастер онбординга (
openclaw onboard) и командаopenclaw channels addотображают список опциональных плагинов каналов. - Выбор Nostr предложит вам установить плагин по требованию.
Установка по умолчанию:
- Dev-канал + доступен git checkout: использует локальный путь к плагину.
- Stable/Beta: загружает из npm.
Вы всегда можете переопределить выбор в запросе.
Ручная установка
openclaw plugins install @openclaw/nostr
Использовать локальную копию (рабочие процессы для разработки):
openclaw plugins install --link <path-to-openclaw>/extensions/nostr
Перезапустите Gateway после установки или включения плагинов.
Быстрая настройка
- Сгенерируйте пару ключей Nostr (при необходимости):
# Используя nak
nak key generate
- Добавьте в конфигурацию:
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}"
}
}
}
- Экспортируйте ключ:
export NOSTR_PRIVATE_KEY="nsec1..."
- Перезапустите Gateway.
Справочник по конфигурации
| Ключ | Тип | По умолчанию | Описание |
|---|---|---|---|
privateKey | строка | обязательный | Приватный ключ в формате nsec или hex |
relays | массив строк | ['wss://relay.damus.io', 'wss://nos.lol'] | URL ретрансляторов (WebSocket) |
dmPolicy | строка | pairing | Политика доступа к личным сообщениям |
allowFrom | массив строк | [] | Разрешенные публичные ключи отправителей |
enabled | логический | true | Включить/отключить канал |
name | строка | - | Отображаемое имя |
profile | объект | - | Метаданные профиля NIP-01 |
Метаданные профиля
Данные профиля публикуются как событие NIP-01 kind:0. Вы можете управлять ими из Панели управления (Каналы -> Nostr -> Профиль) или задать напрямую в конфигурации. Пример:
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"profile": {
"name": "openclaw",
"displayName": "OpenClaw",
"about": "Персональный ассистент-бот для личных сообщений",
"picture": "https://example.com/avatar.png",
"banner": "https://example.com/banner.png",
"website": "https://example.com",
"nip05": "openclaw@example.com",
"lud16": "openclaw@example.com"
}
}
}
}
Примечания:
- URL в профиле должны использовать
https://. - Импорт с ретрансляторов объединяет поля и сохраняет локальные переопределения.
Контроль доступа
Политики личных сообщений
- pairing (по умолчанию): неизвестные отправители получают код сопряжения.
- allowlist: только публичные ключи из
allowFromмогут отправлять личные сообщения. - open: публичные входящие личные сообщения (требует
allowFrom: ["*"]). - disabled: игнорировать входящие личные сообщения.
Пример белого списка
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"dmPolicy": "allowlist",
"allowFrom": ["npub1abc...", "npub1xyz..."]
}
}
}
Форматы ключей
Принимаемые форматы:
- Приватный ключ:
nsec...или hex длиной 64 символа - Публичные ключи (
allowFrom):npub...или hex
Ретрансляторы
По умолчанию: relay.damus.io и nos.lol.
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"relays": ["wss://relay.damus.io", "wss://relay.primal.net", "wss://nostr.wine"]
}
}
}
Советы:
- Используйте 2-3 ретранслятора для избыточности.
- Избегайте слишком большого количества ретрансляторов (задержки, дублирование).
- Платные ретрансляторы могут повысить надежность.
- Локальные ретрансляторы подходят для тестирования (
ws://localhost:7777).
Поддержка протоколов
| NIP | Статус | Описание |
|---|---|---|
| NIP-01 | Поддерживается | Базовый формат событий + метаданные профиля |
| NIP-04 | Поддерживается | Зашифрованные личные сообщения (kind:4) |
| NIP-17 | Запланировано | Личные сообщения в обертке (gift-wrapped) |
| NIP-44 | Запланировано | Версионное шифрование |
Тестирование
Локальный ретранслятор
# Запустить strfry
docker run -p 7777:7777 ghcr.io/hoytech/strfry
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}",
"relays": ["ws://localhost:7777"]
}
}
}
Ручное тестирование
- Запишите публичный ключ бота (npub) из логов.
- Откройте клиент Nostr (Damus, Amethyst и т.д.).
- Отправьте личное сообщение на публичный ключ бота.
- Убедитесь в получении ответа.
Устранение неполадок
Сообщения не поступают
- Убедитесь, что приватный ключ действителен.
- Убедитесь, что URL ретрансляторов доступны и используют
wss://(илиws://для локальных). - Подтвердите, что
enabledне установлен вfalse. - Проверьте логи Gateway на наличие ошибок подключения к ретрансляторам.
Ответы не отправляются
- Проверьте, принимает ли ретранслятор запись.
- Убедитесь в наличии исходящего подключения.
- Следите за ограничениями скорости (rate limits) ретранслятора.
Дублирующиеся ответы
- Ожидаемо при использовании нескольких ретрансляторов.
- Сообщения дедуплицируются по ID события; только первая доставка запускает ответ.
Безопасность
- Никогда не коммитьте приватные ключи.
- Используйте переменные окружения для ключей.
- Рассмотрите использование
allowlistдля ботов в продакшене.
Ограничения (MVP)
- Только личные сообщения (без групповых чатов).
- Нет вложений медиафайлов.
- Только NIP-04 (NIP-17 gift-wrap запланирован).