المجموعات
يتعامل OpenClaw مع الدردشات الجماعية بشكل متّسق عبر الأسطح المختلفة: WhatsApp، Telegram، Discord، Slack، Signal، iMessage، Microsoft Teams.مقدّمة للمبتدئين (دقيقتان)
«يعيش» OpenClaw على حسابات المراسلة الخاصة بك. لا يوجد مستخدم بوت منفصل على WhatsApp. إذا كنت أنت ضمن مجموعة، يمكن لـ OpenClaw رؤية تلك المجموعة والرد فيها. السلوك الافتراضي:- المجموعات مقيّدة (
groupPolicy: "allowlist"). - تحتاج الردود إلى ذكر ما لم تقم بتعطيل صفحة الإشارة صراحة.
TL;DRالتدفّق السريع (ماذا يحدث لرسالة مجموعة):
- الوصول إلى الرسائل الخاصة (DM) يتحكّم به
*.allowFrom.- الوصول إلى المجموعات يتحكّم به
*.groupPolicy+ قوائم السماح (*.groups,*.groupAllowFrom).- تشغيل الرد يتحكّم به بوابة الإشارات (
requireMention,/activation).
| الهدف | ما يجب ضبطه |
|---|---|
| السماح بكل المجموعات لكن الرد فقط عند @mentions | groups: { "*": { requireMention: true } } |
| تعطيل جميع ردود المجموعات | groupPolicy: "disabled" |
| مجموعات محدّدة فقط | groups: { "<group-id>": { ... } } (بدون مفتاح "*") |
| أنت فقط من يمكنه التشغيل داخل المجموعات | groupPolicy: "allowlist", groupAllowFrom: ["+1555..."] |
مفاتيح الجلسة
- تستخدم جلسات المجموعات مفاتيح جلسة
agent:<agentId>:<channel>:group:<id>(تستخدم الغرف/القنواتagent:<agentId>:<channel>:channel:<id>). - تضيف مواضيع منتديات Telegram قيمة
:topic:<threadId>إلى معرّف المجموعة بحيث يكون لكل موضوع جلسته الخاصة. - تستخدم الدردشات المباشرة الجلسة الرئيسية (أو لكل مرسل إذا تم الضبط).
- يتم تخطّي نبضات القلب (heartbeats) لجلسات المجموعات.
نمط: رسائل خاصة شخصية + مجموعات عامة (وكيل واحد)
نعم — يعمل هذا بشكل ممتاز إذا كانت حركة «الشخصي» لديك هي DMs وحركة «العام» هي المجموعات. السبب: في وضع الوكيل الواحد، تصل DMs عادةً إلى مفتاح الجلسة الرئيسي (agent:main:main)، بينما تستخدم المجموعات دائمًا مفاتيح جلسة غير رئيسية (agent:main:<channel>:group:<id>). إذا فعّلت sandboxing باستخدام mode: "non-main"، تعمل جلسات المجموعات داخل Docker بينما تبقى جلسة DMs الرئيسية على المضيف.
يمنحك ذلك «عقل» وكيل واحد (مساحة عمل + ذاكرة مشتركة)، لكن بوضعَي تنفيذ:
- DMs: أدوات كاملة (المضيف)
- المجموعات: sandbox + أدوات مقيّدة (Docker)
إذا كنت بحاجة إلى مساحات عمل/شخصيات منفصلة تمامًا («الشخصي» و«العام» يجب ألا يختلطا)، استخدم وكيلاً ثانيًا + ربطًا. راجع التوجيه متعدد الوكلاء.مثال (DMs على المضيف، المجموعات داخل sandbox + أدوات مراسلة فقط):
workspaceAccess: "none" وقم بتركيب المسارات المُدرَجة في قائمة السماح فقط داخل sandbox: هل تريد «يمكن للمجموعات رؤية المجلد X فقط» بدلًا من «لا وصول للمضيف»؟ احتفِظ بـ workspaceAccess: "none" وقم بتركيب المسارات المُدرَجة في قائمة السماح فقط داخل sandbox:
- مفاتيح التهيئة والقيم الافتراضية: تهيئة Gateway
- تصحيح سبب حظر أداة: Sandbox مقابل سياسة الأدوات مقابل الرفع
- تفاصيل bind mounts: Sandboxing
تسميات العرض
- تستخدم تسميات واجهة المستخدم
displayNameعند توفرها، وتُنسّق كـ<channel>:<token>. #roomمحجوز للغرف/القنوات؛ تستخدم الدردشات الجماعيةg-<slug>(أحرف صغيرة، المسافات ->-، مع الإبقاء على#@+._-).
سياسة المجموعات
التحكّم في كيفية التعامل مع رسائل المجموعات/الغرف لكل قناة:| السياسة | السلوك |
|---|---|
"open" | تتجاوز المجموعات قوائم السماح؛ تبقى بوابة الإشارات مطبّقة. |
"disabled" | حظر جميع رسائل المجموعات بالكامل. |
"allowlist" | السماح فقط بالمجموعات/الغرف التي تطابق قائمة السماح المُهيّأة. |
groupPolicyمنفصلة عن بوابة الإشارات (التي تتطلّب @mentions).- WhatsApp/Telegram/Signal/iMessage/Microsoft Teams: استخدم
groupAllowFrom(بديل:allowFromالصريح). - Discord: تستخدم قائمة السماح
channels.discord.guilds.<id>.channels. - Slack: تستخدم قائمة السماح
channels.slack.channels. - Matrix: تستخدم قائمة السماح
channels.matrix.groups(معرّفات الغرف أو الأسماء المستعارة أو الأسماء). استخدمchannels.matrix.groupAllowFromلتقييد المرسلين؛ كما أن قوائم السماح لكل غرفةusersمدعومة أيضًا. - يتم التحكّم في DMs الجماعية بشكل منفصل (
channels.discord.dm.*,channels.slack.dm.*). - يمكن لقائمة السماح في Telegram مطابقة معرّفات المستخدمين (
"123456789","telegram:123456789","tg:123456789") أو أسماء المستخدمين ("@alice"أو"alice")؛ البوادئ غير حسّاسة لحالة الأحرف. - الافتراضي هو
groupPolicy: "allowlist"؛ إذا كانت قائمة السماح للمجموعات فارغة، يتم حظر رسائل المجموعات.
groupPolicy(مفتوح/معطّل/قائمة سماح)- قوائم السماح للمجموعات (
*.groups,*.groupAllowFrom, قائمة السماح الخاصة بالقناة) - بوابة الإشارات (
requireMention,/activation)
البوابة (افتراضي)
تتطلّب رسائل المجموعات إشارة ما لم يتم تجاوز ذلك لكل مجموعة. توجد القيم الافتراضية لكل نظام فرعي ضمن*.groups."*".
يُعدّ الرد على رسالة البوت إشارة ضمنية (عندما تدعم القناة بيانات الرد). ينطبق هذا على Telegram وWhatsApp وSlack وDiscord وMicrosoft Teams.
mentionPatternsهي تعبيرات منتظمة غير حسّاسة لحالة الأحرف.- الأسطح التي توفّر إشارات صريحة تمرّ دائمًا؛ الأنماط هي بديل احتياطي.
- تجاوز لكل وكيل:
agents.list[].groupChat.mentionPatterns(مفيد عند مشاركة عدة وكلاء لمجموعة واحدة). - تُطبَّق بوابة الإشارات فقط عندما يكون اكتشاف الإشارات ممكنًا (إشارات أصلية أو عند تهيئة
mentionPatterns). - توجد القيم الافتراضية لـ Discord ضمن
channels.discord.guilds."*"(قابلة للتجاوز لكل خادم/قناة). - يُغلَّف سياق سجل المجموعة بشكل موحّد عبر القنوات وهو معلّق فقط (الرسائل التي تم تخطيها بسبب بوابة الإشارات)؛ استخدم
messages.groupChat.historyLimitللإعداد الافتراضي العام وchannels.<channel>.historyLimit(أوchannels.<channel>.accounts.*.historyLimit) للتجاوزات. اضبط0للتعطيل.
قيود أدوات المجموعة/القناة (اختياري)
تدعم بعض إعدادات القنوات تقييد الأدوات المتاحة داخل مجموعة/غرفة/قناة محددة.tools: السماح/المنع للأدوات على مستوى المجموعة بالكامل.toolsBySender: تجاوزات لكل مرسل داخل المجموعة (المفاتيح هي معرّفات المرسلين/أسماء المستخدمين/عناوين البريد/أرقام الهواتف حسب القناة). استخدم"*"كرمز شامل.
- تطابق
toolsBySenderعلى مستوى المجموعة/القناة toolsعلى مستوى المجموعة/القناة- الافتراضي (
"*") تطابقtoolsBySender - الافتراضي (
"*")tools
- تُطبَّق قيود أدوات المجموعة/القناة بالإضافة إلى سياسة الأدوات العامة/الخاصة بالوكيل (المنع يظلّ غالبًا).
- تستخدم بعض القنوات تعشيشًا مختلفًا للغرف/القنوات (مثل Discord
guilds.*.channels.*، Slackchannels.*، MS Teamsteams.*.channels.*).
قوائم السماح للمجموعات
عند تهيئةchannels.whatsapp.groups أو channels.telegram.groups أو channels.imessage.groups، تعمل المفاتيح كقائمة سماح للمجموعات. استخدم "*" للسماح بكل المجموعات مع الاستمرار في ضبط سلوك الإشارات الافتراضي.
نوايا شائعة (نسخ/لصق):
- تعطيل جميع ردود المجموعات
- السماح بمجموعات محدّدة فقط (WhatsApp)
- السماح بكل المجموعات لكن اشتراط الإشارة (صريح)
- المالك فقط يمكنه التشغيل داخل المجموعات (WhatsApp)
التفعيل (للمالك فقط)
يمكن لمالكي المجموعات تبديل التفعيل لكل مجموعة:/activation mention/activation always
channels.whatsapp.allowFrom (أو رقم E.164 الذاتي للبوت عند عدم الضبط). أرسل الأمر كرسالة مستقلة. تتجاهل الأسطح الأخرى حاليًا /activation.
حقول السياق
مجموعة الحمولات الواردة إلى المجموعة:ChatType=groupGroupSubject(إن كان معروفًا)GroupMembers(إن كان معروفًا)WasMentioned(نتيجة بوابة الإشارات)- تضيف مواضيع منتديات Telegram أيضًا
MessageThreadIdوIsForum.
\n حرفيًا.
خصوصيات iMessage
- فضّل
chat_id:<id>عند التوجيه أو إعداد قوائم السماح. - عرض الدردشات:
imsg chats --limit 20. - تعود ردود المجموعات دائمًا إلى نفس
chat_id.