Matrix
Matrix هي إضافة القناة المدمجة Matrix في OpenClaw. وهي تستخدمmatrix-js-sdk الرسمي وتدعم الرسائل المباشرة، والغرف، وسلاسل الرسائل، والوسائط، والتفاعلات، والاستطلاعات، والموقع، وE2EE.
الإضافة المدمجة
تأتي Matrix كإضافة مدمجة في إصدارات OpenClaw الحالية، لذلك لا تحتاج البنيات المجمعة العادية إلى تثبيت منفصل. إذا كنت تستخدم إصدارًا أقدم أو تثبيتًا مخصصًا يستبعد Matrix، فقم بتثبيته يدويًا: التثبيت من npm:الإعداد
- تأكد من توفر إضافة Matrix.
- إصدارات OpenClaw المجمعة الحالية تتضمنها بالفعل.
- يمكن للتثبيتات الأقدم/المخصصة إضافتها يدويًا باستخدام الأوامر أعلاه.
- أنشئ حساب Matrix على خادمك المنزلي.
- هيئ
channels.matrixباستخدام أحد الخيارين:homeserver+accessToken، أوhomeserver+userId+password.
- أعد تشغيل Gateway.
- ابدأ رسالة مباشرة مع البوت أو ادعه إلى غرفة.
- عنوان URL للخادم المنزلي
- طريقة المصادقة: access token أو كلمة مرور
- معرّف المستخدم فقط عند اختيار المصادقة بكلمة المرور
- اسم الجهاز اختياريًا
- ما إذا كنت تريد تمكين E2EE
- ما إذا كنت تريد تهيئة وصول غرفة Matrix الآن
- إذا كانت متغيرات بيئة مصادقة Matrix موجودة بالفعل للحساب المحدد، وكان هذا الحساب لا يحتوي بالفعل على بيانات مصادقة محفوظة في الإعداد، فإن المعالج يعرض اختصار env ويكتب فقط
enabled: trueلذلك الحساب. - عند إضافة حساب Matrix آخر بشكل تفاعلي، يتم تطبيع اسم الحساب الذي أدخلته إلى معرّف الحساب المستخدم في الإعداد ومتغيرات env. على سبيل المثال، تصبح
Ops Botهيops-bot. - تقبل مطالبات قائمة السماح للرسائل المباشرة قيم
@user:serverالكاملة مباشرة. ولا تعمل أسماء العرض إلا عندما يعثر البحث الحي في الدليل على تطابق واحد دقيق؛ وإلا يطلب منك المعالج إعادة المحاولة باستخدام معرّف Matrix كامل. - تقبل مطالبات قائمة السماح للغرف معرّفات الغرف والأسماء المستعارة مباشرة. ويمكنها أيضًا حل أسماء الغرف المنضم إليها حيًا، لكن الأسماء غير المحلولة لا يتم الاحتفاظ بها إلا كما كُتبت أثناء الإعداد ويتم تجاهلها لاحقًا بواسطة حل قائمة السماح في وقت التشغيل. فضّل
!room:serverأو#alias:server. - تستخدم هوية الغرفة/الجلسة في وقت التشغيل معرّف غرفة Matrix الثابت. ولا تُستخدم الأسماء المستعارة المعلنة للغرفة إلا كمدخلات بحث، وليس كمفتاح جلسة طويل الأمد أو هوية مجموعة ثابتة.
- لحل أسماء الغرف قبل حفظها، استخدم
openclaw channels resolve --channel matrix "Project Room".
~/.openclaw/credentials/matrix/.
ويستخدم الحساب الافتراضي credentials.json؛ وتستخدم الحسابات المسماة credentials-<account>.json.
المكافئات في متغيرات البيئة (تُستخدم عندما لا يكون مفتاح الإعداد مضبوطًا):
MATRIX_HOMESERVERMATRIX_ACCESS_TOKENMATRIX_USER_IDMATRIX_PASSWORDMATRIX_DEVICE_IDMATRIX_DEVICE_NAME
MATRIX_<ACCOUNT_ID>_HOMESERVERMATRIX_<ACCOUNT_ID>_ACCESS_TOKENMATRIX_<ACCOUNT_ID>_USER_IDMATRIX_<ACCOUNT_ID>_PASSWORDMATRIX_<ACCOUNT_ID>_DEVICE_IDMATRIX_<ACCOUNT_ID>_DEVICE_NAME
ops:
MATRIX_OPS_HOMESERVERMATRIX_OPS_ACCESS_TOKEN
ops-bot، استخدم:
MATRIX_OPS_X2D_BOT_HOMESERVERMATRIX_OPS_X2D_BOT_ACCESS_TOKEN
- إلى _X2D_، لذا يُحوَّل ops-prod إلى MATRIX_OPS_X2D_PROD_*.
لا يعرض المعالج التفاعلي اختصار متغيرات env إلا عندما تكون متغيرات env الخاصة بالمصادقة موجودة بالفعل ولا يكون الحساب المحدد قد حفظ بالفعل مصادقة Matrix في الإعداد.
مثال على التهيئة
هذه تهيئة أساسية عملية مع اقتران الرسائل المباشرة، وقائمة سماح للغرف، وE2EE مفعّل:معاينات البث
بث الردود في Matrix اختياري. اضبطchannels.matrix.streaming على "partial" عندما تريد أن يرسل OpenClaw مسودة رد واحدة،
ويعدل هذه المسودة في مكانها أثناء توليد النموذج للنص، ثم ينهيها عند اكتمال
الرد:
- القيمة الافتراضية هي
streaming: "off". ينتظر OpenClaw الرد النهائي ثم يرسله مرة واحدة. - ينشئ
streaming: "partial"رسالة معاينة واحدة قابلة للتعديل لكتلة المساعد الحالية بدلًا من إرسال عدة رسائل جزئية. - يفعّل
blockStreaming: trueرسائل تقدم Matrix منفصلة. ومعstreaming: "partial"، تحتفظ Matrix بالمسودة الحية للكتلة الحالية وتحافظ على الكتل المكتملة كرسائل منفصلة. - عندما تكون
streaming: "partial"وblockStreamingمعطلة، لا تقوم Matrix إلا بتعديل المسودة الحية وترسل الرد المكتمل عند انتهاء تلك الكتلة أو الدورة. - إذا لم تعد المعاينة تتسع لحدث Matrix واحد، يوقف OpenClaw بث المعاينة ويرجع إلى الإرسال النهائي العادي.
- تواصل ردود الوسائط إرسال المرفقات بشكل طبيعي. وإذا تعذر إعادة استخدام معاينة قديمة بأمان، يقوم OpenClaw بتنقيحها قبل إرسال رد الوسائط النهائي.
- تعديلات المعاينة تستهلك استدعاءات إضافية إلى Matrix API. اترك البث معطلًا إذا كنت تريد السلوك الأكثر تحفظًا فيما يتعلق بحدود المعدل.
blockStreaming وحده بتمكين معاينات المسودات.
استخدم streaming: "partial" لتعديلات المعاينة؛ ثم أضف blockStreaming: true فقط إذا كنت تريد أيضًا أن تظل كتل المساعد المكتملة مرئية كرسائل تقدم منفصلة.
التشفير والتحقق
في الغرف المشفرة (E2EE)، تستخدم أحداث الصور الصادرةthumbnail_file بحيث تكون معاينات الصور مشفرة إلى جانب المرفق الكامل. أما الغرف غير المشفرة فما زالت تستخدم thumbnail_url العادي. لا يلزم أي إعداد — تكتشف الإضافة حالة E2EE تلقائيًا.
غرف بوت إلى بوت
افتراضيًا، يتم تجاهل رسائل Matrix القادمة من حسابات Matrix OpenClaw أخرى مهيأة. استخدمallowBots عندما تريد عمدًا حركة Matrix بين الوكلاء:
- يقبل
allowBots: trueالرسائل من حسابات Matrix bot أخرى مهيأة في الغرف المسموح بها والرسائل المباشرة. - يقبل
allowBots: "mentions"تلك الرسائل فقط عندما تشير بوضوح إلى هذا البوت في الغرف. وتظل الرسائل المباشرة مسموحًا بها. - تتجاوز
groups.<room>.allowBotsالإعداد على مستوى الحساب لغرفة واحدة. - يواصل OpenClaw تجاهل الرسائل من معرّف مستخدم Matrix نفسه لتجنب حلقات الرد الذاتي.
- لا تكشف Matrix هنا عن علامة bot أصلية؛ ويتعامل OpenClaw مع “منشأ بواسطة bot” على أنه “أرسلته حساب Matrix آخر مهيأ على Gateway OpenClaw هذا”.
channels.matrix.accounts مع بيانات اعتماد لكل حساب وname اختياري. راجع مرجع التهيئة للنمط المشترك.
تشخيصات bootstrap مفصلة:
verify موجزة افتراضيًا (بما في ذلك تسجيلات SDK الداخلية الهادئة) ولا تعرض تشخيصات مفصلة إلا مع --verbose.
استخدم --json للحصول على مخرجات كاملة قابلة للقراءة آليًا عند استخدام البرامج النصية.
في الإعدادات متعددة الحسابات، تستخدم أوامر Matrix في CLI الحساب الافتراضي الضمني لـ Matrix ما لم تمرر --account <id>.
وإذا هيأت عدة حسابات مسماة، فاضبط أولًا channels.matrix.defaultAccount وإلا فإن عمليات CLI الضمنية تلك ستتوقف وتطلب منك اختيار حساب صراحة.
استخدم --account كلما أردت أن تستهدف عمليات التحقق أو الأجهزة حسابًا مسمى صراحة:
channels.matrix.accounts.assistant.encryption.
ما معنى “تم التحقق”
يتعامل OpenClaw مع جهاز Matrix هذا على أنه تم التحقق منه فقط عندما تتحقق منه هوية cross-signing الخاصة بك. عمليًا، يكشفopenclaw matrix verify status --verbose ثلاث إشارات ثقة:
Locally trusted: هذا الجهاز موثوق به من قبل العميل الحالي فقطCross-signing verified: يفيد SDK بأن الجهاز تم التحقق منه عبر cross-signingSigned by owner: تم توقيع الجهاز بواسطة مفتاح self-signing الخاص بك
Verified by owner هي yes فقط عند وجود تحقق cross-signing أو توقيع من المالك.
ولا تكفي الثقة المحلية وحدها لكي يتعامل OpenClaw مع الجهاز على أنه متحقق منه بالكامل.
ماذا يفعل bootstrap
الأمرopenclaw matrix verify bootstrap هو أمر الإصلاح والإعداد لحسابات Matrix المشفرة.
وهو ينفذ كل ما يلي بالترتيب:
- يهيئ التخزين السري، مع إعادة استخدام مفتاح استرداد موجود متى أمكن
- يهيئ cross-signing ويرفع مفاتيح cross-signing العامة الناقصة
- يحاول وسم الجهاز الحالي وتوقيعه عبر cross-signing
- ينشئ نسخة احتياطية جديدة لمفاتيح الغرف على الخادم إذا لم تكن موجودة بالفعل
m.login.dummy، ثم باستخدام m.login.password عندما تكون channels.matrix.password مهيأة.
استخدم --force-reset-cross-signing فقط عندما تريد عمدًا تجاهل هوية cross-signing الحالية وإنشاء هوية جديدة.
إذا كنت تريد عمدًا تجاهل النسخة الاحتياطية الحالية لمفاتيح الغرف وبدء
خط أساس جديد للنسخ الاحتياطي للرسائل المستقبلية، فاستخدم openclaw matrix verify backup reset --yes.
ولا تفعل ذلك إلا إذا كنت تقبل أن السجل المشفر القديم غير القابل للاسترداد سيظل
غير متاح، وأن OpenClaw قد يعيد إنشاء التخزين السري إذا تعذر تحميل
سر النسخ الاحتياطي الحالي بأمان.
خط أساس جديد للنسخ الاحتياطي
إذا كنت تريد الحفاظ على عمل الرسائل المشفرة المستقبلية وتقبل فقدان السجل القديم غير القابل للاسترداد، فشغّل هذه الأوامر بالترتيب:--account <id> إلى كل أمر عندما تريد استهداف حساب Matrix مسمى صراحة.
سلوك بدء التشغيل
عندما تكونencryption: true، تضبط Matrix القيمة الافتراضية لـ startupVerification على "if-unverified".
عند بدء التشغيل، إذا ظل هذا الجهاز غير متحقق منه، فستطلب Matrix تحققًا ذاتيًا في عميل Matrix آخر،
وستتخطى الطلبات المكررة ما دام هناك طلب قيد الانتظار بالفعل، وستطبق فترة تهدئة محلية قبل إعادة المحاولة بعد إعادة التشغيل.
وتُعاد محاولة الطلبات الفاشلة بشكل أسرع من إنشاء الطلبات الناجح افتراضيًا.
اضبط startupVerification: "off" لتعطيل طلبات بدء التشغيل التلقائية، أو عدّل startupVerificationCooldownHours
إذا كنت تريد نافذة إعادة محاولة أقصر أو أطول.
ينفذ بدء التشغيل أيضًا تمريرة bootstrap تشفيرية محافظة تلقائيًا.
تحاول هذه التمريرة أولًا إعادة استخدام التخزين السري الحالي وهوية cross-signing الحالية، وتتجنب إعادة تعيين cross-signing ما لم تشغّل مسار إصلاح bootstrap صريحًا.
إذا اكتشف بدء التشغيل حالة bootstrap معطلة وكانت channels.matrix.password مهيأة، يمكن لـ OpenClaw محاولة مسار إصلاح أكثر صرامة.
وإذا كان الجهاز الحالي موقعًا بالفعل من المالك، فإن OpenClaw يحافظ على تلك الهوية بدلًا من إعادة تعيينها تلقائيًا.
الترقية من إضافة Matrix العامة السابقة:
- يعيد OpenClaw تلقائيًا استخدام حساب Matrix نفسه، وaccess token نفسه، وهوية الجهاز نفسها متى أمكن.
- قبل تشغيل أي تغييرات ترحيل Matrix قابلة للتنفيذ، ينشئ OpenClaw أو يعيد استخدام لقطة استرداد ضمن
~/Backups/openclaw-migrations/. - إذا كنت تستخدم عدة حسابات Matrix، فاضبط
channels.matrix.defaultAccountقبل الترقية من تخطيط التخزين المسطح القديم لكي يعرف OpenClaw أي حساب يجب أن يستقبل هذه الحالة القديمة المشتركة. - إذا كانت الإضافة السابقة تخزن محليًا مفتاح فك تشفير النسخ الاحتياطي لمفاتيح غرف Matrix، فسيقوم بدء التشغيل أو
openclaw doctor --fixباستيراده إلى تدفق مفتاح الاسترداد الجديد تلقائيًا. - إذا تغير access token الخاص بـ Matrix بعد إعداد الترحيل، فإن بدء التشغيل يفحص الآن جذور تخزين تجزئة الرموز المجاورة بحثًا عن حالة استعادة قديمة معلقة قبل التخلي عن الاستعادة التلقائية للنسخ الاحتياطي.
- إذا تغير access token الخاص بـ Matrix لاحقًا للحساب نفسه والخادم المنزلي نفسه والمستخدم نفسه، فإن OpenClaw يفضل الآن إعادة استخدام جذر تخزين تجزئة الرمز الأكثر اكتمالًا بدلًا من البدء من دليل حالة Matrix فارغ.
- عند بدء تشغيل Gateway التالي، تتم استعادة مفاتيح الغرف المنسوخة احتياطيًا تلقائيًا إلى مخزن التشفير الجديد.
- إذا كانت الإضافة القديمة تحتوي على مفاتيح غرف محلية فقط ولم تُنسخ احتياطيًا مطلقًا، فسيحذر OpenClaw بوضوح. ولا يمكن تصدير هذه المفاتيح تلقائيًا من مخزن rust crypto السابق، لذلك قد يظل بعض السجل المشفر القديم غير متاح حتى تتم استعادته يدويًا.
- راجع ترحيل Matrix للتدفق الكامل للترقية، والقيود، وأوامر الاسترداد، ورسائل الترحيل الشائعة.
~/.openclaw/matrix/accounts/<account>/<homeserver>__<user>/<token-hash>/.
ويحتوي هذا الدليل على مخزن المزامنة (bot-storage.json) ومخزن التشفير (crypto/)،
وملف مفتاح الاسترداد (recovery-key.json)، ولقطة IndexedDB (crypto-idb-snapshot.json)،
وروابط سلاسل الرسائل (thread-bindings.json)، وحالة التحقق عند بدء التشغيل (startup-verification.json)
عندما تكون هذه الميزات قيد الاستخدام.
وعندما يتغير الرمز المميز مع بقاء هوية الحساب نفسها، يعيد OpenClaw استخدام أفضل
جذر موجود لذلك الثلاثي account/homeserver/user بحيث تظل حالة المزامنة السابقة، وحالة التشفير، وروابط سلاسل الرسائل،
وحالة التحقق عند بدء التشغيل مرئية.
نموذج مخزن التشفير في Node
تستخدم Matrix E2EE في هذه الإضافة مسار Rust crypto الرسمي الخاص بـmatrix-js-sdk في Node.
ويتوقع هذا المسار تخزينًا دائمًا قائمًا على IndexedDB عندما تريد أن تستمر حالة التشفير بعد إعادة التشغيل.
يوفر OpenClaw ذلك حاليًا في Node من خلال:
- استخدام
fake-indexeddbكطبقة واجهة IndexedDB المتوقعة من SDK - استعادة محتويات IndexedDB الخاصة بـ Rust crypto من
crypto-idb-snapshot.jsonقبلinitRustCrypto - حفظ محتويات IndexedDB المحدثة مرة أخرى إلى
crypto-idb-snapshot.jsonبعد التهيئة وأثناء وقت التشغيل - تسلسل استعادة اللقطة وحفظها مقابل
crypto-idb-snapshot.jsonباستخدام قفل ملف استشاري حتى لا يتسابق حفظ وقت تشغيل Gateway وصيانة CLI على ملف اللقطة نفسه
- إضافة دعم SecretRef لمواد مفاتيح Matrix الدائمة بحيث يمكن جلب مفاتيح الاسترداد والأسرار ذات الصلة بتشفير المخزن من موفري أسرار OpenClaw بدلًا من الملفات المحلية فقط
إدارة الملف الشخصي
حدّث الملف الشخصي الذاتي لـ Matrix للحساب المحدد باستخدام:--account <id> عندما تريد استهداف حساب Matrix مسمى صراحة.
تقبل Matrix عناوين URL للصور الرمزية بصيغة mxc:// مباشرة. وعندما تمرر عنوان URL للصورة الرمزية من نوع http:// أو https://، يقوم OpenClaw أولًا برفعه إلى Matrix ثم يخزن عنوان mxc:// المحلول مرة أخرى في channels.matrix.avatarUrl (أو تجاوز الحساب المحدد).
إشعارات التحقق التلقائية
تنشر Matrix الآن إشعارات دورة حياة التحقق مباشرة في غرفة التحقق الصارمة للرسائل المباشرة كرسائلm.notice.
ويشمل ذلك:
- إشعارات طلب التحقق
- إشعارات جاهزية التحقق (مع إرشادات صريحة “تحقق عبر emoji”)
- إشعارات بدء التحقق واكتماله
- تفاصيل SAS (emoji والأرقام العشرية) عند توفرها
NO_REPLY.
نظافة الأجهزة
يمكن أن تتراكم أجهزة Matrix القديمة التي يديرها OpenClaw على الحساب وتجعل الثقة في الغرف المشفرة أصعب في الفهم. اعرضها باستخدام:إصلاح الغرفة المباشرة
إذا خرجت حالة الرسائل المباشرة عن المزامنة، فقد ينتهي الأمر بـ OpenClaw مع روابطm.direct قديمة تشير إلى غرف فردية قديمة بدلًا من الرسالة المباشرة الحية. افحص الرابط الحالي لنظير باستخدام:
- يفضل رسالة مباشرة 1:1 صارمة تم ربطها بالفعل في
m.direct - وإلا يعود إلى أي رسالة مباشرة 1:1 صارمة منضم إليها حاليًا مع ذلك المستخدم
- وإذا لم توجد رسالة مباشرة سليمة، فإنه ينشئ غرفة مباشرة جديدة ويعيد كتابة
m.directللإشارة إليها
سلاسل الرسائل
تدعم Matrix سلاسل Matrix الأصلية لكل من الردود التلقائية ورسائل أدوات الإرسال.- يبقي
threadReplies: "off"الردود في المستوى الأعلى ويبقي الرسائل الواردة المترابطة على جلسة الأصل. - يرد
threadReplies: "inbound"داخل سلسلة فقط عندما تكون الرسالة الواردة بالفعل في تلك السلسلة. - يبقي
threadReplies: "always"ردود الغرفة داخل سلسلة متجذرة في الرسالة المشغلة ويوجه تلك المحادثة عبر الجلسة المطابقة ذات النطاق الخاص بالسلسلة من أول رسالة مشغلة. - تتجاوز
dm.threadRepliesالإعداد الأعلى مستوى للرسائل المباشرة فقط. على سبيل المثال، يمكنك إبقاء سلاسل الغرف معزولة مع إبقاء الرسائل المباشرة مسطحة. - تتضمن الرسائل الواردة ضمن السلاسل رسالة جذر السلسلة كسياق إضافي للوكيل.
- ترث رسائل أدوات الإرسال الآن سلسلة Matrix الحالية تلقائيًا عندما يكون الهدف هو الغرفة نفسها، أو هدف مستخدم الرسائل المباشرة نفسه، ما لم يتم توفير
threadIdصراحة. - الروابط التشغيلية لسلاسل الرسائل مدعومة في Matrix. تعمل الآن
/focusو/unfocusو/agentsو/session idleو/session max-ageو/acp spawnالمرتبطة بالسلسلة في غرف Matrix والرسائل المباشرة. - ينشئ
/focusفي غرفة/رسالة مباشرة Matrix من المستوى الأعلى سلسلة Matrix جديدة ويربطها بالجلسة الهدف عندما تكونthreadBindings.spawnSubagentSessions=true. - يؤدي تشغيل
/focusأو/acp spawn --thread hereداخل سلسلة Matrix موجودة إلى ربط تلك السلسلة الحالية بدلًا من ذلك.
روابط محادثات ACP
يمكن تحويل غرف Matrix والرسائل المباشرة وسلاسل Matrix الموجودة إلى مساحات عمل ACP دائمة دون تغيير واجهة الدردشة. تدفق مشغل سريع:- شغّل
/acp spawn codex --bind hereداخل رسالة Matrix المباشرة، أو الغرفة، أو السلسلة الموجودة التي تريد الاستمرار في استخدامها. - في رسالة Matrix مباشرة أو غرفة من المستوى الأعلى، تظل الرسالة المباشرة/الغرفة الحالية هي واجهة الدردشة وتوجَّه الرسائل المستقبلية إلى جلسة ACP التي تم إنشاؤها.
- داخل سلسلة Matrix موجودة، يربط
--bind hereتلك السلسلة الحالية في مكانها. - يعيد
/newو/resetتعيين جلسة ACP المرتبطة نفسها في مكانها. - يغلق
/acp closeجلسة ACP ويزيل الربط.
- لا ينشئ
--bind hereسلسلة Matrix فرعية. - لا تكون
threadBindings.spawnAcpSessionsمطلوبة إلا لـ/acp spawn --thread auto|here، حيث يحتاج OpenClaw إلى إنشاء سلسلة Matrix فرعية أو ربطها.
تهيئة ربط السلاسل
ترث Matrix القيم الافتراضية العامة منsession.threadBindings، كما تدعم تجاوزات لكل قناة:
threadBindings.enabledthreadBindings.idleHoursthreadBindings.maxAgeHoursthreadBindings.spawnSubagentSessionsthreadBindings.spawnAcpSessions
- اضبط
threadBindings.spawnSubagentSessions: trueللسماح للأمر/focusفي المستوى الأعلى بإنشاء سلاسل Matrix جديدة وربطها. - اضبط
threadBindings.spawnAcpSessions: trueللسماح للأمر/acp spawn --thread auto|hereبربط جلسات ACP بسلاسل Matrix.
التفاعلات
تدعم Matrix إجراءات التفاعل الصادرة، وإشعارات التفاعل الواردة، وتفاعلات الإقرار الواردة.- تخضع أدوات التفاعل الصادر للبوابة
channels["matrix"].actions.reactions. - يضيف
reactتفاعلًا إلى حدث Matrix محدد. - تسرد
reactionsملخص التفاعلات الحالي لحدث Matrix محدد. - تؤدي
emoji=""إلى إزالة تفاعلات حساب البوت نفسه على ذلك الحدث. - تؤدي
remove: trueإلى إزالة تفاعل emoji المحدد فقط من حساب البوت.
channels["matrix"].accounts.<accountId>.ackReactionchannels["matrix"].ackReactionmessages.ackReaction- الرجوع الاحتياطي إلى emoji الخاص بهوية الوكيل
channels["matrix"].accounts.<accountId>.ackReactionScopechannels["matrix"].ackReactionScopemessages.ackReactionScope
channels["matrix"].accounts.<accountId>.reactionNotificationschannels["matrix"].reactionNotifications- الافتراضي:
own
- يؤدي
reactionNotifications: "own"إلى تمرير أحداثm.reactionالمضافة عندما تستهدف رسائل Matrix التي أنشأها البوت. - يؤدي
reactionNotifications: "off"إلى تعطيل أحداث نظام التفاعل. - لا تزال إزالة التفاعلات غير تُركّب كأحداث نظام لأن Matrix تعرضها كتنقيحات، وليس كعمليات إزالة
m.reactionمستقلة.
سياق السجل
- يتحكم
channels.matrix.historyLimitفي عدد رسائل الغرف الحديثة التي تُضمَّن كـInboundHistoryعندما تشغّل رسالة غرفة Matrix الوكيل. - ويرجع احتياطيًا إلى
messages.groupChat.historyLimit. اضبطه على0للتعطيل. - يكون سجل غرف Matrix خاصًا بالغرفة فقط. وتستمر الرسائل المباشرة باستخدام سجل الجلسة العادي.
- سجل غرف Matrix يكون للمعلّق فقط: يخزّن OpenClaw رسائل الغرفة التي لم تشغّل ردًا بعد، ثم يلتقط هذه النافذة عندما تصل إشارة أو مشغّل آخر.
- لا تُضمَّن رسالة المشغّل الحالية في
InboundHistory؛ بل تبقى في نص الإدخال الرئيسي لتلك الدورة. - تعيد محاولات الحدث Matrix نفسه استخدام لقطة السجل الأصلية بدلًا من الانجراف إلى رسائل غرفة أحدث.
ظهور السياق
تدعم Matrix عنصر التحكم المشتركcontextVisibility للسياق الإضافي للغرفة مثل نص الرد المجتلب، وجذور السلاسل، والسجل المعلّق.
contextVisibility: "all"هي القيمة الافتراضية. ويتم الاحتفاظ بالسياق الإضافي كما ورد.- يقوم
contextVisibility: "allowlist"بتصفية السياق الإضافي إلى المرسلين المسموح لهم بواسطة فحوصات قائمة سماح الغرفة/المستخدم النشطة. - يتصرف
contextVisibility: "allowlist_quote"مثلallowlist، لكنه يحتفظ مع ذلك برد مقتبس صريح واحد.
groupPolicy وgroups وgroupAllowFrom وسياسات الرسائل المباشرة.
مثال على سياسة الرسائل المباشرة والغرف
موافقات exec
يمكن لـ Matrix أن تعمل كعميل موافقات exec لحساب Matrix.channels.matrix.execApprovals.enabledchannels.matrix.execApprovals.approvers(اختياري؛ يرجع احتياطيًا إلىchannels.matrix.dm.allowFrom)channels.matrix.execApprovals.target(dm|channel|both، الافتراضي:dm)channels.matrix.execApprovals.agentFilterchannels.matrix.execApprovals.sessionFilter
@owner:example.org. تقوم Matrix بتمكين موافقات exec الأصلية تلقائيًا عندما تكون enabled غير مضبوطة أو "auto" وعندما يمكن حل موافق واحد على الأقل، إما من execApprovals.approvers أو من channels.matrix.dm.allowFrom. اضبط enabled: false لتعطيل Matrix كعميل موافقات أصلي صراحة. وبخلاف ذلك، تعود طلبات الموافقة احتياطيًا إلى مسارات الموافقة المهيأة الأخرى أو إلى سياسة الرجوع الاحتياطي لموافقات exec.
التوجيه الأصلي في Matrix يقتصر اليوم على exec فقط:
- تتحكم
channels.matrix.execApprovals.*في التوجيه الأصلي للرسائل المباشرة/القنوات لموافقات exec فقط. - لا تزال موافقات الإضافات تستخدم
/approveالمشترك في الدردشة نفسها بالإضافة إلى أي إعادة توجيه مهيأة فيapprovals.plugin. - لا يزال بإمكان Matrix إعادة استخدام
channels.matrix.dm.allowFromلتفويض موافقات الإضافات عندما تتمكن من استنتاج الموافقين بأمان، لكنها لا تعرض مسار توزيع أصلي منفصل لموافقات الإضافات عبر الرسائل المباشرة/القنوات.
- يؤدي
target: "dm"إلى إرسال مطالبات الموافقة إلى الرسائل المباشرة للموافقين - يؤدي
target: "channel"إلى إعادة إرسال المطالبة إلى غرفة أو رسالة Matrix المباشرة الأصلية - يؤدي
target: "both"إلى الإرسال إلى الرسائل المباشرة للموافقين وإلى غرفة أو رسالة Matrix المباشرة الأصلية
/approve <id> allow-once أو /approve <id> allow-always أو /approve <id> deny.
يمكن فقط للموافقين الذين تم حلهم الموافقة أو الرفض. ويتضمن التسليم عبر القنوات نص الأمر، لذلك لا تمكّن channel أو both إلا في الغرف الموثوقة.
تعيد مطالبات موافقة Matrix استخدام مخطط الموافقات الأساسي المشترك. أما الواجهة الأصلية الخاصة بـ Matrix فهي مجرد وسيلة نقل لموافقات exec: توجيه الغرف/الرسائل المباشرة وسلوك إرسال/تحديث/حذف الرسائل.
تجاوز لكل حساب:
channels.matrix.accounts.<account>.execApprovals
مثال على تعدد الحسابات
channels.matrix من المستوى الأعلى كقيم افتراضية للحسابات المسماة ما لم يتجاوزها حساب ما.
يمكنك تقييد إدخالات الغرف الموروثة إلى حساب Matrix واحد باستخدام groups.<room>.account (أو rooms.<room>.account القديم).
وتظل الإدخالات التي لا تحتوي على account مشتركة بين جميع حسابات Matrix، كما أن الإدخالات التي تحتوي على account: "default" تظل تعمل عندما يكون الحساب الافتراضي مهيأ مباشرة على channels.matrix.* من المستوى الأعلى.
ولا تنشئ القيم الافتراضية المشتركة الجزئية للمصادقة حسابًا افتراضيًا ضمنيًا منفصلًا بمفردها. لا يقوم OpenClaw بتوليف الحساب default في المستوى الأعلى إلا عندما يمتلك ذلك الافتراضي مصادقة حديثة (homeserver مع accessToken، أو homeserver مع userId وpassword)؛ ويمكن للحسابات المسماة أن تظل قابلة للاكتشاف من homeserver مع userId عندما تلبّي بيانات الاعتماد المخزنة مؤقتًا المصادقة لاحقًا.
إذا كانت Matrix تحتوي بالفعل على حساب مسمى واحد بالضبط، أو كانت defaultAccount تشير إلى مفتاح حساب مسمى موجود، فإن ترقية الإصلاح/الإعداد من حساب واحد إلى عدة حسابات تحافظ على ذلك الحساب بدلًا من إنشاء إدخال جديد accounts.default. ولا تنتقل إلى ذلك الحساب المُرقّى إلا مفاتيح Matrix الخاصة بالمصادقة/bootstrap؛ أما مفاتيح سياسات التسليم المشتركة فتبقى في المستوى الأعلى.
اضبط defaultAccount عندما تريد أن يفضّل OpenClaw حساب Matrix مسمى واحدًا للتوجيه الضمني، والفحص، وعمليات CLI.
إذا هيأت عدة حسابات مسماة، فاضبط defaultAccount أو مرر --account <id> لأوامر CLI التي تعتمد على اختيار الحساب الضمني.
مرر --account <id> إلى openclaw matrix verify ... وopenclaw matrix devices ... عندما تريد تجاوز هذا الاختيار الضمني لأمر واحد.
الخوادم المنزلية الخاصة/الشبكات المحلية
افتراضيًا، يمنع OpenClaw خوادم Matrix المنزلية الخاصة/الداخلية للحماية من SSRF ما لم توافق صراحة لكل حساب. إذا كان خادمك المنزلي يعمل على localhost أو عنوان IP ضمن LAN/Tailscale أو اسم مضيف داخلي، فقم بتمكينallowPrivateNetwork لذلك الحساب في Matrix:
http://matrix.example.org:8008 فتظل محظورة. ويفضل استخدام https:// كلما أمكن.
تمرير حركة Matrix عبر وكيل
إذا كان نشر Matrix لديك يحتاج إلى وكيل HTTP(S) صادر صريح، فاضبطchannels.matrix.proxy:
channels.matrix.accounts.<id>.proxy.
ويستخدم OpenClaw إعداد الوكيل نفسه لحركة Matrix في وقت التشغيل ولفحوصات حالة الحساب.
حل الأهداف
تقبل Matrix صيغ الأهداف التالية أينما طلب منك OpenClaw هدف غرفة أو مستخدم:- المستخدمون:
@user:serverأوuser:@user:serverأوmatrix:user:@user:server - الغرف:
!room:serverأوroom:!room:serverأوmatrix:room:!room:server - الأسماء المستعارة:
#alias:serverأوchannel:#alias:serverأوmatrix:channel:#alias:server
- تستعلم عمليات البحث عن المستخدمين دليل مستخدمي Matrix على ذلك الخادم المنزلي.
- تقبل عمليات البحث عن الغرف معرّفات الغرف والأسماء المستعارة الصريحة مباشرة، ثم تعود احتياطيًا إلى البحث في أسماء الغرف المنضم إليها لذلك الحساب.
- يكون البحث في أسماء الغرف المنضم إليها بأفضل جهد. وإذا تعذر حل اسم الغرفة إلى معرّف أو اسم مستعار، فسيتم تجاهله بواسطة حل قائمة السماح في وقت التشغيل.
مرجع التهيئة
enabled: تمكين القناة أو تعطيلها.name: تسمية اختيارية للحساب.defaultAccount: معرّف الحساب المفضل عند تهيئة عدة حسابات Matrix.homeserver: عنوان URL للخادم المنزلي، مثلhttps://matrix.example.org.allowPrivateNetwork: السماح لهذا الحساب في Matrix بالاتصال بخوادم منزلية خاصة/داخلية. فعّل هذا عندما يُحل الخادم المنزلي إلىlocalhostأو عنوان IP ضمن LAN/Tailscale أو مضيف داخلي مثلmatrix-synapse.proxy: عنوان URL اختياري لوكيل HTTP(S) لحركة Matrix. ويمكن للحسابات المسماة تجاوز الافتراضي في المستوى الأعلى عبرproxyخاص بها.userId: معرّف مستخدم Matrix كامل، مثل@bot:example.org.accessToken: access token للمصادقة القائمة على الرمز المميز. تُدعم القيم النصية الصريحة وقيم SecretRef لكل منchannels.matrix.accessTokenوchannels.matrix.accounts.<id>.accessTokenعبر موفري env/file/exec. راجع Secrets Management.password: كلمة المرور لتسجيل الدخول القائم على كلمة المرور. تُدعم القيم النصية الصريحة وقيم SecretRef.deviceId: معرّف جهاز Matrix صريح.deviceName: اسم عرض الجهاز لتسجيل الدخول بكلمة المرور.avatarUrl: عنوان URL للصورة الرمزية الذاتية المخزن لمزامنة الملف الشخصي وتحديثاتset-profile.initialSyncLimit: حد أحداث المزامنة عند بدء التشغيل.encryption: تمكين E2EE.allowlistOnly: فرض سلوك قائمة السماح فقط على الرسائل المباشرة والغرف.allowBots: السماح بالرسائل من حسابات Matrix OpenClaw أخرى مهيأة (trueأو"mentions").groupPolicy:openأوallowlistأوdisabled.contextVisibility: وضع ظهور السياق الإضافي للغرفة (allأوallowlistأوallowlist_quote).groupAllowFrom: قائمة سماح لمعرّفات المستخدمين لحركة الغرف.- يجب أن تكون إدخالات
groupAllowFromمعرّفات مستخدم Matrix كاملة. ويتم تجاهل الأسماء غير المحلولة في وقت التشغيل. historyLimit: الحد الأقصى لرسائل الغرف المضمّنة كسياق سجل للمجموعات. يرجع احتياطيًا إلىmessages.groupChat.historyLimit. اضبط0للتعطيل.replyToMode:offأوfirstأوall.markdown: تهيئة Markdown اختيارية لتصيير نص Matrix الصادر.streaming:off(الافتراضي) أوpartialأوtrueأوfalse. تؤديpartialوtrueإلى تمكين معاينات مسودة أحادية الرسالة مع تحديثات تعديل في المكان.blockStreaming: يؤديtrueإلى تمكين رسائل تقدم منفصلة للكتل المكتملة للمساعد أثناء تفعيل بث معاينة المسودة.threadReplies:offأوinboundأوalways.threadBindings: تجاوزات لكل قناة لتوجيه الجلسات المرتبطة بالسلاسل ودورة حياتها.startupVerification: وضع طلب التحقق الذاتي التلقائي عند بدء التشغيل (if-unverifiedأوoff).startupVerificationCooldownHours: فترة التهدئة قبل إعادة محاولة طلبات التحقق التلقائية عند بدء التشغيل.textChunkLimit: حجم تجزئة الرسائل الصادرة.chunkMode:lengthأوnewline.responsePrefix: بادئة رسائل اختيارية للردود الصادرة.ackReaction: تجاوز اختياري لتفاعل الإقرار لهذه القناة/الحساب.ackReactionScope: تجاوز اختياري لنطاق تفاعل الإقرار (group-mentionsأوgroup-allأوdirectأوallأوnoneأوoff).reactionNotifications: وضع إشعارات التفاعل الواردة (ownأوoff).mediaMaxMb: الحد الأقصى لحجم الوسائط بالميغابايت لمعالجة وسائط Matrix. ويُطبّق على الإرسال الصادر ومعالجة الوسائط الواردة.autoJoin: سياسة الانضمام التلقائي للدعوات (alwaysأوallowlistأوoff). الافتراضي:off.autoJoinAllowlist: الغرف/الأسماء المستعارة المسموح بها عندما تكونautoJoinهيallowlist. تُحل إدخالات الأسماء المستعارة إلى معرّفات غرف أثناء معالجة الدعوات؛ ولا يثق OpenClaw في حالة الاسم المستعار التي تدعيها الغرفة المدعو إليها.dm: كتلة سياسة الرسائل المباشرة (enabledأوpolicyأوallowFromأوthreadReplies).- يجب أن تكون إدخالات
dm.allowFromمعرّفات مستخدم Matrix كاملة ما لم تكن قد قمت بحلها بالفعل عبر البحث الحي في الدليل. dm.threadReplies: تجاوز لسياسة السلاسل في الرسائل المباشرة فقط (offأوinboundأوalways). ويتجاوز إعدادthreadRepliesالأعلى مستوى لكل من موضع الرد وعزل الجلسة في الرسائل المباشرة.execApprovals: تسليم موافقات exec الأصلية في Matrix (enabledأوapproversأوtargetأوagentFilterأوsessionFilter).execApprovals.approvers: معرّفات مستخدمي Matrix المسموح لهم بالموافقة على طلبات exec. وهو اختياري عندما تكونdm.allowFromتحدد الموافقين بالفعل.execApprovals.target:dm | channel | both(الافتراضي:dm).accounts: تجاوزات مسماة لكل حساب. وتعمل القيم العليا فيchannels.matrixكقيم افتراضية لهذه الإدخالات.groups: خريطة سياسات لكل غرفة. فضّل معرّفات الغرف أو الأسماء المستعارة؛ ويتم تجاهل أسماء الغرف غير المحلولة في وقت التشغيل. تستخدم هوية الجلسة/المجموعة معرّف الغرفة الثابت بعد الحل، بينما تظل التسميات المقروءة للبشر مأخوذة من أسماء الغرف.groups.<room>.account: يقيّد إدخال غرفة موروثًا واحدًا إلى حساب Matrix محدد في الإعدادات متعددة الحسابات.groups.<room>.allowBots: تجاوز على مستوى الغرفة للمرسلين من البوتات المهيأة (trueأو"mentions").groups.<room>.users: قائمة سماح للمرسلين لكل غرفة.groups.<room>.tools: تجاوزات السماح/المنع للأدوات لكل غرفة.groups.<room>.autoReply: تجاوز على مستوى الغرفة لبوابة الإشارات. تؤديtrueإلى تعطيل متطلبات الإشارة لتلك الغرفة؛ وتفرضfalseإعادتها.groups.<room>.skills: مرشح Skills اختياري على مستوى الغرفة.groups.<room>.systemPrompt: مقتطف system prompt اختياري على مستوى الغرفة.rooms: اسم مستعار قديم لـgroups.actions: بوابات الأدوات لكل إجراء (messagesأوreactionsأوpinsأوprofileأوmemberInfoأوchannelInfoأوverification).
ذو صلة
- Channels Overview — جميع القنوات المدعومة
- Pairing — مصادقة الرسائل المباشرة وتدفق الاقتران
- Groups — سلوك الدردشة الجماعية وبوابة الإشارات
- Channel Routing — توجيه الجلسات للرسائل
- Security — نموذج الوصول والتقوية