Wprowadzenie
Nostr to opcjonalna, wbudowana wtyczka OpenClaw umożliwiająca odbiór i odpowiadanie na szyfrowane wiadomości bezpośrednie za pośrednictwem protokołu NIP-04 w zdecentralizowanej sieci Nostr. Dzięki tej integracji Twój agent AI może komunikować się przez w pełni zdecentralizowaną infrastrukturę.
Instalacja
Wtyczka jest dołączona do standardowych wydań. Dla niestandardowych buildów:
openclaw plugins install @openclaw/nostr
Generowanie kluczy
Potrzebujesz pary kluczy Nostr. Wygeneruj je narzędziem nak:
nak key generate
Akceptowane formaty kluczy: nsec... (bech32) i 64-znakowy hex. Klucze publiczne obsługują format npub... (bech32) i hex.
Konfiguracja
Podstawowa konfiguracja obejmuje trzy kroki:
- Wygeneruj parę kluczy (jeśli jeszcze nie masz)
- Dodaj klucz prywatny do konfiguracji
- Zrestartuj Gateway
{
channels: {
nostr: {
privateKey: "nsec1...",
relays: ["wss://relay.damus.io", "wss://nos.lol"],
dmPolicy: "pairing",
allowFrom: []
}
}
}
Eksport klucza jako zmienna środowiskowa jest również obsługiwany.
Konfiguracja relay
Domyślne relay to relay.damus.io i nos.lol. Zalecamy 2-3 relay dla redundancji. Płatne relay mogą poprawić niezawodność. Duplikaty odpowiedzi między wieloma relay są oczekiwane i deduplikowane po ID zdarzenia.
Profil (metadane)
Dane profilowe publikowane są jako zdarzenie NIP-01 kind:0. Konfigurowalne pola:
- name — nazwa użytkownika
- display_name — nazwa wyświetlana
- about — biografia
- picture — URL awatara (wymaga HTTPS)
- banner — baner profilowy
- website — strona internetowa
- nip05 — identyfikator kontaktowy
Kontrola dostępu
Cztery tryby polityki DM:
- pairing — nieznani nadawcy otrzymują kody weryfikacyjne
- allowlist — ograniczone do wskazanych kluczy publicznych
- open — publiczny odbiór (wymaga wildcard w
allowFrom) - disabled — ignoruje przychodzące wiadomości
Podpisy zdarzeń przychodzących są weryfikowane przed sprawdzeniem polityki nadawcy, co zapewnia wczesne odrzucanie sfałszowanych wiadomości.
Obsługiwane protokoły
- NIP-01 (obsługiwany) — podstawowe zdarzenia i profile
- NIP-04 (obsługiwany) — szyfrowane wiadomości bezpośrednie
- NIP-17 (planowany) — wiadomości w kopertach (gift-wrapped)
- NIP-44 (planowany) — ulepszone szyfrowanie
Testowanie lokalne
Do testów lokalnych użyj relay strfry hostowanego w Dockerze. Testowanie ręczne polega na pobraniu klucza publicznego bota z logów, a następnie wysłaniu wiadomości przez standardowego klienta Nostr.
Bezpieczeństwo
- Klucze prywatne nigdy nie powinny trafiać do systemu kontroli wersji
- Zmienne środowiskowe chronią sekrety
- W środowisku produkcyjnym używaj polityki allowlist
- Architektura waliduje podpisy przed przetwarzaniem, uniemożliwiając nieautoryzowanym nadawcom wymuszenie operacji kryptograficznych
Rozwiązywanie problemów
- Nieprawidłowe klucze — sprawdź format (nsec/hex) i poprawność klucza
- Nieosiągalne relay — zweryfikuj adresy WebSocket i połączenie sieciowe
- Limitowanie relay — niektóre relay mogą limitować częstotliwość; dodaj więcej relay dla redundancji
- Brak odpowiedzi — sprawdź politykę DM, listę dozwolonych i logi Gateway