مقدمة للمبتدئين (دقيقتان)
يعمل OpenClaw ضمن حسابات المراسلة الخاصة بك. لا يوجد مستخدم بوت منفصل في WhatsApp: إذا كنت أنت عضوًا في مجموعة، فيمكن لـ OpenClaw رؤية تلك المجموعة والرد فيها. السلوك الافتراضي:- المجموعات مقيّدة (
groupPolicy: "allowlist")؛ ويُحظر مرسلو المجموعات حتى تُضاف أسماؤهم إلى قائمة السماح. - تتطلب الردود إشارة ما لم تعطّل تقييد الإشارات للمجموعة.
- يُنشر نص الرد النهائي في الغرفة تلقائيًا (
visibleReplies: "automatic").
الخلاصة
- يُتحكم في الوصول عبر الرسائل المباشرة بواسطة
*.allowFrom. - يُتحكم في الوصول إلى المجموعات بواسطة
*.groupPolicy+ قوائم السماح (*.groupsو*.groupAllowFrom). - يُتحكم في تشغيل الردود بواسطة تقييد الإشارات (
requireMentionو/activation).
الردود المرئية
لطلبات المجموعات/القنوات العادية، يستخدم OpenClaw افتراضيًاmessages.groupChat.visibleReplies: "automatic": إذ يُنشر نص المساعد النهائي في الغرفة بوصفه الرد المرئي.
استخدم messages.groupChat.visibleReplies: "message_tool" عندما ينبغي للغرفة المشتركة أن تتيح للوكيل تحديد وقت التحدث من خلال استدعاء message(action=send). يعمل هذا بأفضل صورة مع النماذج الموثوقة في استخدام الأدوات (مثل GPT-5.6 Sol). إذا لم يستخدم النموذج الأداة وأعاد نصًا نهائيًا ذا محتوى فعلي، يُبقي OpenClaw ذلك النص خاصًا بدلًا من نشره في الغرفة.
استخدم "automatic" للنماذج أو بيئات التشغيل التي لا تلتزم بصورة موثوقة بالتسليم عبر الأدوات فقط: تُنشر النصوص النهائية العادية مباشرةً في الغرفة، مع استمرار إمكانية استدعاء الوكيل لـ message(action=send) لإرسال الملفات أو الصور أو المرفقات الأخرى التي لا يمكن إرفاقها بالنص النهائي.
إذا لم تكن أداة الرسائل متاحة بموجب سياسة الأدوات النشطة، يعود OpenClaw إلى الردود المرئية التلقائية بدلًا من منع الرد بصمت. يحذّر openclaw doctor من عدم التطابق هذا.
بالنسبة إلى المحادثات المباشرة وأي حدث مصدر آخر، يطبّق messages.visibleReplies: "message_tool" السلوك نفسه القائم على الأدوات فقط بصورة عامة؛ ويظل messages.groupChat.visibleReplies هو التجاوز الأكثر تحديدًا لغرف المجموعات/القنوات. تستخدم المنعطفات المباشرة الداخلية في WebChat افتراضيًا التسليم التلقائي للرد النهائي، لكي يتلقى Pi وCodex عقد الرد المرئي نفسه.
يحل وضع الأدوات فقط محل النمط القديم الذي كان يُجبر النموذج على الإجابة بـ NO_REPLY في معظم منعطفات وضع المراقبة الصامتة. في وضع الأدوات فقط، لا يحدد الموجّه عقد NO_REPLY؛ وعدم فعل أي شيء مرئي يعني ببساطة عدم استدعاء أداة الرسائل.
تُستثنى روابط المحادثات التي يملكها Plugin. بمجرد أن يربط Plugin سلسلة محادثة ويستحوذ على المنعطف الوارد، يصبح الرد الذي يعيده Plugin هو استجابة الربط المرئية؛ ولا يحتاج إلى message(action=send). هذا الرد هو مخرجات بيئة تشغيل Plugin، وليس نص النموذج النهائي الخاص.
يستمر إرسال مؤشرات الكتابة لطلبات المجموعات المباشرة. وتظل أحداث الغرف المحيطة دائمة التشغيل، عند تمكينها، صارمة وهادئة ما لم يستدعِ الوكيل أداة الرسائل.
تمنع الجلسات افتراضيًا ملخصات الأدوات/التقدم المطوّلة. استخدم /verbose on (أو /verbose full) لإظهارها للجلسة الحالية أثناء تصحيح الأخطاء، واستخدم /verbose off للعودة إلى سلوك الرد النهائي فقط. تكون حالة الإسهاب خاصة بكل جلسة، وتعمل بالطريقة نفسها في المحادثات المباشرة والمجموعات والقنوات وموضوعات المنتديات.
لإرسال دردشة المجموعة دائمة التشغيل غير المتضمنة لإشارة بوصفها سياق غرفة هادئًا بدلًا من طلبات مستخدم، استخدم أحداث الغرف المحيطة:
unmentionedInbound: "user_request". وتظل الرسائل المتضمنة لإشارات والأوامر وطلبات الإلغاء والرسائل المباشرة طلبات مستخدم.
لاشتراط مرور المخرجات المرئية عبر أداة الرسائل لطلبات المجموعات/القنوات:
messages دون إعادة تشغيل بعد حفظ الملف. أعد التشغيل فقط عند تعطيل إعادة تحميل الإعدادات (gateway.reload.mode: "off").
تتجاوز منعطفات الأوامر visibleReplies: "message_tool" وترد دائمًا بصورة مرئية: تنشر كل من أوامر الشرطة المائلة الأصلية (في Discord وTelegram والأسطح الأخرى التي تدعم الأوامر الأصلية) وأوامر /... النصية المصرح بها استجابتها في محادثة المصدر. وتظل منعطفات /... النصية غير المصرح بها في المجموعات مقصورة على أداة الرسائل؛ أما منعطفات المحادثة العادية فتتبع الإعداد الافتراضي المضبوط.
رؤية السياق وقوائم السماح
يتضمن أمان المجموعات عنصرَي تحكم مختلفين:- تفويض التشغيل: من يمكنه تشغيل الوكيل (
groupPolicyوgroupsوgroupAllowFromوقوائم السماح الخاصة بكل قناة). - رؤية السياق: ما السياق الإضافي الذي يُحقن في النموذج (نص الرد/الاقتباس وسجل سلسلة المحادثة والبيانات الوصفية المعاد توجيهها).
contextVisibility:
اضبطه لكل قناة (
channels.<channel>.contextVisibility) أو لكل حساب (channels.<channel>.accounts.<accountId>.contextVisibility) أو بصورة عامة (channels.defaults.contextVisibility). تطبّق القنوات التي تجلب سياقًا إضافيًا (Discord وFeishu وiMessage وMatrix وMicrosoft Teams وSignal وSlack وTelegram وWhatsApp) السياسة عند إنشاء السياق الوارد؛ وتفشل مجموعات السياسات غير المعروفة بصورة مغلقة وتحذف السياق.
لقوائم سماح المرسلين القابلة لإعادة الاستخدام، راجع مجموعات الوصول.
مفاتيح الجلسات
- تستخدم جلسات المجموعات مفاتيح جلسات
agent:<agentId>:<channel>:group:<id>(وتستخدم الغرف/القنواتagent:<agentId>:<channel>:channel:<id>). - تضيف موضوعات منتديات Telegram القيمة
:topic:<threadId>إلى معرّف المجموعة، بحيث تكون لكل موضوع جلسته الخاصة. - تستخدم المحادثات المباشرة الجلسة الرئيسية (أو جلسات منفصلة لكل مرسل إذا جرى ضبط
session.dmScope). - تعمل Heartbeat في جلسة Heartbeat المضبوطة (الافتراضي: الجلسة الرئيسية للوكيل)؛ ولا تشغّل جلسات المجموعات Heartbeat خاصة بها.
النمط: رسائل مباشرة شخصية + مجموعات عامة (وكيل واحد)
نعم — يعمل هذا جيدًا إذا كانت حركة المرور «الشخصية» لديك هي رسائل مباشرة وحركة المرور «العامة» هي مجموعات. السبب: في وضع الوكيل الواحد، تصل الرسائل المباشرة عادةً إلى مفتاح الجلسة الرئيسية (agent:main:main)، بينما تستخدم المجموعات دائمًا مفاتيح جلسات غير رئيسية (agent:main:<channel>:group:<id>). إذا مكّنت العزل باستخدام mode: "non-main"، فستعمل جلسات المجموعات تلك في الواجهة الخلفية المضبوطة للعزل، بينما تظل جلسة الرسائل المباشرة الرئيسية على المضيف. Docker هو الواجهة الخلفية الافتراضية إذا لم تختر واحدة.
يمنحك هذا «عقل» وكيل واحدًا (مساحة عمل + ذاكرة مشتركتان)، لكن بوضعَي تنفيذ مختلفين:
- الرسائل المباشرة: جميع الأدوات (المضيف)
- المجموعات: عزل + أدوات مقيّدة
إذا كنت بحاجة إلى مساحات عمل/شخصيات منفصلة حقًا (بحيث يجب ألا يختلط «الشخصي» و«العام» أبدًا)، فاستخدم وكيلًا ثانيًا + روابط. راجع توجيه الوكلاء المتعددين.
- الرسائل المباشرة على المضيف، والمجموعات معزولة
- لا ترى المجموعات سوى مجلد مدرج في قائمة السماح
- مفاتيح الإعدادات والقيم الافتراضية: إعدادات Gateway
- تصحيح سبب حظر أداة: العزل مقابل سياسة الأدوات مقابل الصلاحيات المرتفعة
- تفاصيل روابط التحميل: العزل
تسميات العرض
- تستخدم تسميات واجهة المستخدم
displayNameعند توفره، بالتنسيق<channel>:<token>. #roomمحجوز للغرف/القنوات؛ وتستخدم محادثات المجموعاتg-<slug>(أحرف صغيرة، والمسافات ->-، مع الاحتفاظ بـ#@+._-). تُختصر المعرّفات المبهمة شديدة الطول إلى رمز ثابت بدلًا من كشف معرّفات المسارات الكاملة في واجهة المستخدم.
سياسة المجموعات
تحكّم في كيفية معالجة رسائل المجموعات/الغرف لكل قناة:ملاحظات خاصة بكل قناة
ملاحظات خاصة بكل قناة
groupPolicyمنفصلة عن اشتراط الإشارة (الذي يتطلب إشارات @).- WhatsApp/Telegram/Signal/iMessage/Microsoft Teams/Zalo: استخدم
groupAllowFrom(البديل الاحتياطي:allowFromالصريحة). - Signal: يمكن أن تطابق
groupAllowFromإما معرّف مجموعة Signal الوارد أو هاتف المرسل/UUID الخاص به. - تنطبق موافقات إقران الرسائل المباشرة (إدخالات مخزن
*-allowFrom) على الوصول إلى الرسائل المباشرة فقط؛ ويظل تخويل مرسلي المجموعات محددًا صراحةً في قوائم سماح المجموعات. - Discord: تستخدم قائمة السماح
channels.discord.guilds.<id>.channels. - Slack: تستخدم قائمة السماح
channels.slack.channels. - Matrix: تستخدم قائمة السماح
channels.matrix.groups. استخدم معرّفات الغرف (!room:server) أو الأسماء المستعارة (#alias:server)؛ ولا تتطابق مفاتيح أسماء الغرف إلا معchannels.matrix.dangerouslyAllowNameMatching: true، وتُتجاهل الإدخالات غير المحلولة في وقت التشغيل. استخدمchannels.matrix.groupAllowFromلتقييد المرسلين؛ كما تُدعم قوائم السماح الخاصة بكل غرفة فيusers. - تُتحكم في الرسائل المباشرة الجماعية بصورة منفصلة (
channels.discord.dm.*،channels.slack.dm.*:groupEnabled،groupChannels). - Telegram: لا تقبل قوائم سماح المرسلين إلا معرّفات المستخدمين الرقمية (
"123456789"؛ وتُزال بادئاتtelegram:/tg:دون حساسية لحالة الأحرف). لا تتطابق إدخالات@usernameفي وقت التشغيل، ويُسجَّل تحذير؛ وتحل عملية الإعداد@usernameإلى معرّفات. يجب وضع معرّفات المحادثات السالبة ضمنchannels.telegram.groups، لا ضمن قوائم سماح المرسلين. - القيمة الافتراضية هي
groupPolicy: "allowlist"؛ وإذا كانت قائمة سماح المجموعات فارغة، تُحظر رسائل المجموعات. - أمان وقت التشغيل: عندما تكون كتلة المزوّد مفقودة بالكامل (
channels.<provider>غير موجودة)، تفشل سياسة المجموعات بصورة مغلقة إلىallowlistبدلًا من وراثةchannels.defaults.groupPolicy، ويسجّل Gateway استخدام البديل الاحتياطي مرة واحدة لكل حساب.
1
groupPolicy
groupPolicy (مفتوحة/معطّلة/قائمة سماح).2
قوائم سماح المجموعات
قوائم سماح المجموعات (
*.groups، *.groupAllowFrom، قائمة السماح الخاصة بالقناة).3
اشتراط الإشارة
اشتراط الإشارة (
requireMention، /activation).اشتراط الإشارة (افتراضيًا)
تتطلب رسائل المجموعات إشارةً ما لم يُتجاوز ذلك لكل مجموعة. توجد القيم الافتراضية لكل نظام فرعي ضمن*.groups."*".
يُحتسب الرد على رسالة بوت إشارةً ضمنيةً عندما تتيح القناة بيانات الرد الوصفية؛ كما يمكن أن يُحتسب اقتباس رسالة بوت إشارةً في القنوات التي تتيح بيانات الاقتباس الوصفية. الحالات المضمّنة حاليًا: Discord وMicrosoft Teams وQQBot وSlack وTelegram وWhatsApp وZalo الشخصي.
تحديد نطاق أنماط الإشارة المُعدّة
تُعدmentionPatterns المُعدّة محفزات احتياطية بتعبيرات نمطية. استخدمها عندما لا
تتيح المنصة إشارة أصلية إلى البوت، أو عندما تريد احتساب نص عادي مثل
openclaw: إشارةً. إشارات المنصة الأصلية منفصلة:
عندما يتمكن Discord أو Slack أو Telegram أو Matrix أو Signal أو قناة أخرى من إثبات أن الرسالة
أشارت صراحةً إلى البوت، تظل تلك الإشارة الأصلية محفزةً حتى إذا
رُفضت أنماط التعبيرات النمطية المُعدّة.
افتراضيًا، تُطبّق أنماط الإشارة المُعدّة في كل موضع تمرر فيه القناة معلومات المزوّد والمحادثة إلى اكتشاف الإشارات. لمنع الأنماط الواسعة من إيقاظ الوكيل في كل مجموعة، حدّد نطاقها لكل قناة باستخدام channels.<channel>.mentionPatterns.
استخدم mode: "deny" عندما ينبغي تعطيل أنماط الإشارة بالتعبيرات النمطية افتراضيًا لقناة ما، ثم فعّلها في غرف محددة باستخدام allowIn:
mode: "allow" (أو احذف mode) عندما ينبغي تطبيق أنماط الإشارة بالتعبيرات النمطية على نطاق واسع، ثم عطّلها في الغرف الصاخبة باستخدام denyIn:
سياسة التعبيرات النمطية محددة النطاق المدعومة حاليًا:
يمكن لإعدادات القناة على مستوى الحساب تعيين السياسة نفسها ضمن
channels.<channel>.accounts.<accountId>.mentionPatterns عندما تدعم تلك القناة حسابات متعددة. تتقدم سياسة الحساب على سياسة القناة ذات المستوى الأعلى لذلك الحساب.
ملاحظات اشتراط الإشارة
ملاحظات اشتراط الإشارة
mentionPatternsهي أنماط تعبيرات نمطية آمنة وغير حساسة لحالة الأحرف؛ وتُتجاهل الأنماط غير الصالحة وأشكال التكرار المتداخل غير الآمنة (مع تحذير).- أسبقية الأنماط: تتقدم
agents.list[].groupChat.mentionPatterns(مفيدة عندما يتشارك عدة وكلاء مجموعةً واحدة) علىmessages.groupChat.mentionPatterns؛ وعندما لا تُضبط أي منهما، تُشتق الأنماط من اسم/رمز هوية الوكيل. - لا يُفرض اشتراط الإشارة إلا عندما يكون اكتشاف الإشارة ممكنًا (عبر الإشارات الأصلية أو عند إعداد
mentionPatterns). - لا يؤدي إدراج مجموعة أو مرسل في قائمة السماح إلى تعطيل اشتراط الإشارة؛ اضبط
requireMentionلتلك المجموعة علىfalseعندما ينبغي لجميع الرسائل أن تكون محفزة. - يحمل سياق المطالبة التلقائي لمحادثات المجموعات تعليمة الرد الصامت المحلولة في كل دور؛ وينبغي ألا تكرر ملفات مساحة العمل آليات
NO_REPLY. - تعامل المجموعات التي يُسمح فيها بالردود الصامتة التلقائية أدوار النموذج الفارغة النظيفة أو التي تحتوي على استدلال فقط بوصفها صامتة، بما يكافئ
NO_REPLY. لا تتلقى المحادثات المباشرة إرشاداتNO_REPLYمطلقًا، وتظل ردود المجموعات التي تستخدم أداة الرسائل فقط صامتةً بعدم استدعاءmessage(action=send). - تستخدم أحاديث المجموعات المحيطة والدائمة دلالات طلب المستخدم افتراضيًا. اضبط
messages.groupChat.unmentionedInbound: "room_event"لإرسالها كسياق هادئ بدلًا من ذلك. راجع أحداث الغرف المحيطة للاطلاع على أمثلة الإعداد. - لا تُخزَّن أحداث الغرف كطلبات مستخدم زائفة، ولا يُعاد تشغيل نص المساعد الخاص الناتج من أحداث الغرف التي لا تستخدم أداة الرسائل ضمن سجل المحادثة.
- توجد قيم Discord الافتراضية في
channels.discord.guilds."*"(ويمكن تجاوزها لكل خادم/قناة). - يُغلَّف سياق سجل المجموعات بصورة موحدة عبر القنوات. تحتفظ المجموعات المشروطة بالإشارة بالرسائل المتخطاة المعلقة؛ وقد تحتفظ المجموعات الدائمة أيضًا برسائل الغرفة الحديثة التي تمت معالجتها عندما تدعم القناة ذلك. استخدم
messages.groupChat.historyLimitللقيمة الافتراضية العامة وchannels.<channel>.historyLimit(أوchannels.<channel>.accounts.*.historyLimit) للتجاوزات. اضبط0للتعطيل.
قيود أدوات المجموعة/القناة (اختيارية)
تدعم بعض إعدادات القنوات تقييد الأدوات المتاحة داخل مجموعة/غرفة/قناة محددة.tools: السماح بالأدوات أو رفضها للمجموعة بأكملها (allow،alsoAllow،deny؛ ويتغلب الرفض).toolsBySender: تجاوزات خاصة بكل مرسل داخل المجموعة. استخدم بادئات مفاتيح صريحة:channel:<channelId>:<senderId>،id:<senderId>،e164:<phone>،username:<handle>،name:<displayName>، وحرف البدل"*". تستخدم معرّفات القنوات معرّفات قنوات OpenClaw القياسية؛ وتُطبَّع الأسماء المستعارة مثلteamsإلىmsteams. لا تزال المفاتيح القديمة غير المسبوقة مقبولة، ولا تُطابق إلا بوصفهاid:، ويُسجَّل تحذير إيقاف استخدام.
1
أدوات المجموعة حسب المرسل
تطابق
toolsBySender للمجموعة/القناة.2
أدوات المجموعة
tools للمجموعة/القناة.3
الأدوات الافتراضية حسب المرسل
تطابق
toolsBySender الافتراضي ("*").4
الأدوات الافتراضية
tools الافتراضية ("*").تُطبَّق قيود أدوات المجموعة/القناة بالإضافة إلى سياسة الأدوات العامة/الخاصة بالوكيل (ويظل المنع هو الغالب). تستخدم بعض القنوات تداخلاً مختلفًا للغرف/القنوات (مثل Discord
guilds.*.channels.*، وSlack channels.*، وMicrosoft Teams teams.*.channels.*).قوائم السماح للمجموعات
عند ضبطchannels.whatsapp.groups أو channels.telegram.groups أو channels.imessage.groups، تعمل المفاتيح كقائمة سماح للمجموعات. استخدم "*" للسماح بجميع المجموعات مع الاستمرار في ضبط سلوك الإشارة الافتراضي.
الأغراض الشائعة (نسخ/لصق):
- تعطيل جميع ردود المجموعات
- السماح بمجموعات محددة فقط (WhatsApp)
- السماح بجميع المجموعات مع اشتراط الإشارة
- المشغّلات الخاصة بالمالك فقط (WhatsApp)
التنشيط (للمالك فقط)
يمكن لمالكي المجموعات تبديل التنشيط لكل مجموعة بواسطة رسالة مستقلة:/activation mention/activation always
/activation هو أمر أساسي مقيّد بالمالك ولا ينطبق إلا في محادثات المجموعات. يُقصد بالمالك أن المرسل يطابق commands.ownerAllowFrom؛ ولا تتحكم قوائم allowFrom الخاصة بالقناة إلا في الوصول العادي إلى القناة والأوامر. يتجاوز الوضع المخزّن قيمة requireMention لتلك المجموعة في القنوات التي تستعلم عنه (Google Chat وQQBot وTelegram وWhatsApp)، وتعكس مقدمة موجه النظام الخاصة بالمجموعة الوضع النشط في كل مكان.
حقول السياق
تضبط حمولات المجموعات الواردة:ChatType=groupGroupSubject(إذا كان معروفًا)GroupMembers(إذا كان معروفًا)WasMentioned(نتيجة تقييد الإشارة)- تتضمن موضوعات منتديات Telegram أيضًا
MessageThreadIdوIsForum.
/activation). وهي تذكّر النموذج بالرد كإنسان، وتقليل الأسطر الفارغة واتباع تباعد المحادثة المعتاد، وتجنب كتابة تسلسلات \n حرفيًا. كما تثني القنوات التي لا يحافظ وضع الجداول المعلن فيها على الجداول الأصلية أو الخام عن استخدام جداول Markdown. تُعرض أسماء المجموعات وتسميات المشاركين الواردة من القناة كبيانات وصفية غير موثوقة داخل سياج، وليس كتعليمات نظام مضمنة.
تفاصيل iMessage
- يُفضّل استخدام
chat_id:<id>عند التوجيه أو الإدراج في قائمة السماح. - عرض المحادثات:
imsg chats --limit 20. - تعود ردود المجموعة دائمًا إلى
chat_idنفسه.