منصات المراسلة
Nostr
الحالة: إضافة اختيارية (معطلة افتراضيًا). Nostr هو بروتوكول لامركزي للتواصل الاجتماعي. تمكن هذه القناة OpenClaw من استقبال والرد على الرسائل المباشرة المشفرة عبر NIP-04.
التثبيت (حسب الطلب)
الإعداد المبدئي (مُوصى به)
- يعرض معالج الإعداد المبدئي (
openclaw onboard) وأمرopenclaw channels addإضافات القنوات الاختيارية. - اختيار Nostr يطلب منك تثبيت الإضافة حسب الطلب.
إعدادات التثبيت الافتراضية:
- قناة التطوير + نسخة git متاحة: تستخدم المسار المحلي للإضافة.
- الإصدار المستقر/بيتا: يقوم بالتحميل من npm.
يمكنك دائمًا تجاوز الاختيار في المطالبة.
التثبيت اليدوي
openclaw plugins install @openclaw/nostr
استخدم نسخة محلية (سير عمل التطوير):
openclaw plugins install --link <path-to-openclaw>/extensions/nostr
أعد تشغيل البوابة بعد تثبيت أو تمكين الإضافات.
الإعداد السريع
- إنشاء زوج مفاتيح Nostr (إذا لزم الأمر):
# باستخدام nak
nak key generate
- أضف إلى التكوين:
{
"channels": {
"nostr": {
"privateKey": "${NOSTR_PRIVATE_KEY}"
}
}
}
- صدّر المفتاح:
export NOSTR_PRIVATE_KEY="nsec1..."
- أعد تشغيل البوابة.
مرجع التكوين
| المفتاح | النوع | الافتراضي | الوصف |
|---|---|---|---|
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"
}
}
}
}
ملاحظات:
- يجب أن تستخدم روابط الملف الشخصي
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 | مخطط له | الرسائل المباشرة المغلفة كهدية |
| 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. - افحص سجلات البوابة بحثًا عن أخطاء اتصال الرابطة.
عدم إرسال الردود
- تحقق من أن الرابطة تقبل الكتابة.
- تحقق من اتصالية الصادر.
- راقب حدود معدل نقل الرابطة.
ردود مكررة
- متوقع عند استخدام عدة رابطات.
- يتم إزالة تكرار الرسائل بواسطة معرف الحدث؛ فقط أول تسليم يطلق ردًا.
الأمان
- لا تلتزم بالمفاتيح الخاصة أبدًا.
- استخدم متغيرات البيئة للمفاتيح.
- فكر في استخدام
allowlistللبوتات الإنتاجية.
القيود (النسخة الدنيا القابلة للتطبيق)
- الرسائل المباشرة فقط (لا توجد محادثات جماعية).
- لا توجد مرفقات وسائط.
- NIP-04 فقط (التغليف كهدية NIP-17 مخطط له).