الاقتران
“الاقتران” هو خطوة موافقة المالك الصريحة في OpenClaw. ويُستخدم في موضعين:- اقتران الرسائل المباشرة (من يُسمح له بالتحدث إلى البوت)
- اقتران العقد (أي الأجهزة/العقد يُسمح لها بالانضمام إلى شبكة البوابة)
1) اقتران الرسائل المباشرة (الوصول إلى الدردشة الواردة)
عندما تُضبط قناة بسياسة رسائل مباشرةpairing، يحصل المرسلون غير المعروفين على رمز قصير ولا تتم معالجة رسالتهم حتى توافق عليها.
سياسات الرسائل المباشرة الافتراضية موثقة في: الأمان
رموز الاقتران:
- 8 أحرف، بأحرف كبيرة، من دون أحرف ملتبسة (
0O1I). - تنتهي صلاحيتها بعد ساعة واحدة. لا يرسل البوت رسالة الاقتران إلا عند إنشاء طلب جديد (تقريبًا مرة واحدة كل ساعة لكل مرسل).
- يُحدَّد الحد الأقصى لطلبات اقتران الرسائل المباشرة المعلقة عند 3 لكل قناة افتراضيًا؛ ويتم تجاهل الطلبات الإضافية حتى تنتهي صلاحية أحدها أو تتم الموافقة عليه.
الموافقة على مرسل
bluebubbles وdiscord وfeishu وgooglechat وimessage وirc وline وmatrix وmattermost وmsteams وnextcloud-talk وnostr وopenclaw-weixin وsignal وslack وsynology-chat وtelegram وtwitch وwhatsapp وzalo وzalouser.
مكان وجود الحالة
تُخزَّن تحت~/.openclaw/credentials/:
- الطلبات المعلقة:
<channel>-pairing.json - مخزن قائمة السماح المعتمدة:
- الحساب الافتراضي:
<channel>-allowFrom.json - الحساب غير الافتراضي:
<channel>-<accountId>-allowFrom.json
- الحساب الافتراضي:
- تقرأ الحسابات غير الافتراضية وتكتب فقط إلى ملف قائمة السماح الخاص بنطاقها.
- يستخدم الحساب الافتراضي ملف قائمة السماح غير المقيّد بنطاق الحساب والخاص بالقناة.
groupAllowFrom أو groups أو التجاوزات الخاصة بكل مجموعة/موضوع بحسب القناة).
2) اقتران أجهزة العقد (عقد iOS/Android/macOS/headless)
تتصل العقد بالبوابة كأجهزة ذاتrole: node. وتنشئ البوابة طلب اقتران جهاز يجب الموافقة عليه.
الإقران عبر Telegram (مستحسن لـ iOS)
إذا كنت تستخدم plugin device-pair، فيمكنك تنفيذ اقتران الجهاز لأول مرة بالكامل من Telegram:
- في Telegram، أرسل إلى البوت:
/pair - يرد البوت برسالتين: رسالة تعليمات ورسالة منفصلة تحتوي على رمز الإعداد (ليسهل نسخه/لصقه في Telegram).
- على هاتفك، افتح تطبيق OpenClaw على iOS → Settings → Gateway.
- الصق رمز الإعداد واتصل.
- ارجع إلى Telegram:
/pair pending(لمراجعة معرّفات الطلبات والدور والنطاقات)، ثم وافق.
url: عنوان WebSocket URL الخاص بالبوابة (ws://...أوwss://...)bootstrapToken: رمز bootstrap قصير العمر لجهاز واحد يُستخدم في مصافحة الاقتران الأولية
- يظل رمز
nodeالأساسي المُسلَّم بصلاحياتscopes: [] - يظل أي رمز
operatorمُسلَّم مقيّدًا بقائمة السماح الخاصة بالـ bootstrap:operator.approvalsوoperator.readوoperator.talk.secretsوoperator.write - تكون عمليات التحقق من نطاق bootstrap مسبوقة بالدور، وليست مجموعة نطاقات مسطحة واحدة: إدخالات نطاق operator تلبّي فقط طلبات operator، ولا تزال الأدوار غير operator مطالبة بطلب نطاقات تحت بادئة دورها الخاصة
الموافقة على جهاز عقدة
requestId جديد.
تخزين حالة اقتران العقدة
تُخزَّن تحت~/.openclaw/devices/:
pending.json(قصير العمر؛ تنتهي صلاحية الطلبات المعلقة)paired.json(الأجهزة المقترنة + الرموز)
ملاحظات
- واجهة
node.pair.*القديمة (CLI: openclaw nodes pending|approve|reject|rename) هي مخزن اقتران منفصل مملوك للبوابة. ولا تزال عقد WS تتطلب اقتران الأجهزة. - سجل الاقتران هو المصدر الدائم للحقيقة بالنسبة إلى الأدوار المعتمدة. وتبقى رموز الأجهزة النشطة مقيّدة بمجموعة الأدوار المعتمدة تلك؛ ولا يؤدي وجود إدخال رمز شارد خارج الأدوار المعتمدة إلى إنشاء وصول جديد.