message صراحةً.
للمحادثات الجماعية دائمة التشغيل، ادمج messages.groupChat.unmentionedInbound: "room_event" مع messages.groupChat.visibleReplies: "message_tool". يستمع الوكيل، ويقرر متى يكون الرد مفيدًا، ولا يحتاج أبدًا إلى نمط المطالبة القديم المتمثل في الإجابة بـ NO_REPLY.
المدعوم حاليًا: قنوات خوادم Discord، وقنوات Slack العامة والخاصة، والرسائل المباشرة متعددة الأشخاص في Slack، ومجموعات Telegram أو مجموعاته الفائقة. تحتفظ القنوات الجماعية الأخرى بسلوكها الجماعي الحالي ما لم تذكر صفحة القناة أنها تدعم أحداث الغرفة المحيطة.
الإعداد الموصى به
اضبط سلوك المحادثات الجماعية العام:groupPolicy المعتادة وقائمة الغرف المسموح بها وقائمة المرسلين المسموح بهم.
بعد حفظ الإعداد، يطبّق Gateway إعدادات messages فوريًا. أعد التشغيل فقط عند تعطيل مراقبة الملفات أو إعادة تحميل الإعداد (gateway.reload.mode: "off").
ما الذي يتغير
معmessages.groupChat.unmentionedInbound: "room_event":
- تصبح رسائل المجموعات أو القنوات المسموح بها التي لا تتضمن إشارة أحداثًا هادئة للغرفة
- تظل الرسائل التي تتضمن إشارة طلبات مستخدم
- تظل أوامر التحكم النصية والأوامر الأصلية طلبات مستخدم
- تظل طلبات الإلغاء أو الإيقاف طلبات مستخدم
- تظل الرسائل المباشرة طلبات مستخدم
message(action=send) للنشر في الغرفة.
تظل مؤشرات الكتابة وتفاعلات حالة دورة الحياة معطلة لأحداث الغرفة. والاستثناء الصريح الوحيد لإشعار الاستلام هو messages.ackReactionScope: "all"، الذي يرسل تفاعل الإقرار المضبوط؛ استخدم أي نطاق أضيق أو "off" عندما يجب أن تظل الغرفة صامتة تمامًا.
مثال Discord
groupPolicy: "allowlist"، إدراج القناة هو ما يسمح بها (enabled: false يعطّل إدخالًا):
مثال Slack
تعتمد قوائم قنوات Slack المسموح بها على المعرّفات أولًا. استخدم معرّفات القنوات مثلC12345678، وليس #channel-name. إدراج القناة ضمن channels.slack.channels هو ما يسمح بها (enabled: false يعطّل إدخالًا):
مثال Telegram
بالنسبة إلى مجموعات Telegram، يجب أن يتمكن الروبوت من رؤية رسائل المجموعة العادية. إذا كانrequireMention: false، فعطّل وضع الخصوصية في BotFather أو استخدم إعدادًا آخر لـ Telegram يسلّم حركة رسائل المجموعة كاملةً إلى الروبوت.
-1001234567890. اقرأ chat.id من openclaw logs --follow، أو أعد توجيه رسالة جماعية إلى روبوت مساعد للمعرّفات، أو افحص getUpdates في Bot API.
سياسة خاصة بالوكيل
استخدم تجاوزًا خاصًا بالوكيل عندما يتشارك عدة وكلاء الغرفة نفسها، ولكن ينبغي لوكيل واحد فقط معاملة الأحاديث التي لا تتضمن إشارة بوصفها سياقًا محيطًا:agents.list[].groupChat.unmentionedInbound الخاصة بالوكيل قيمة messages.groupChat.unmentionedInbound لذلك الوكيل.
أوضاع الرد المرئي
تكون القيمة الافتراضية لـmessages.groupChat.visibleReplies هي "automatic" لطلبات المستخدم العادية في المجموعات أو القنوات. احتفظ بهذه القيمة الافتراضية عندما ينبغي نشر النص النهائي للمساعد بصورة مرئية دون استدعاء صريح لأداة الرسائل.
بالنسبة إلى الغرف المحيطة دائمة التشغيل، يظل messages.groupChat.visibleReplies: "message_tool" موصى به، خصوصًا مع نماذج الجيل الأحدث الموثوقة في استخدام الأدوات مثل GPT-5.6 Sol. فهو يتيح للوكيل تحديد متى يتحدث من خلال استدعاء أداة الرسائل. إذا أعاد النموذج نصًا نهائيًا دون استدعاء الأداة، يحتفظ OpenClaw بذلك النص النهائي بصورة خاصة ويسجل بيانات وصفية للتسليم المحجوب.
تظل أحداث الغرفة صارمة حتى عندما تستخدم طلبات المجموعة الأخرى الردود التلقائية. تتطلب أحداث الغرفة المحيطة التي لا تتضمن إشارة دائمًا message(action=send) للحصول على مخرجات مرئية.
السجل
يضبطmessages.groupChat.historyLimit القيمة العامة الافتراضية لسجل المجموعة (50 عند عدم ضبطه؛ ويجب أن يكون عددًا صحيحًا موجبًا). يمكن للقنوات تجاوزها باستخدام channels.<channel>.historyLimit، كما تدعم بعض القنوات حدودًا للسجل خاصة بكل حساب. اضبط historyLimit: 0 على مستوى القناة لتعطيل سياق سجل المجموعة لتلك القناة.
تحتفظ القنوات التي تدعم أحداث الغرفة برسائل الغرفة المحيطة الحديثة بوصفها سياقًا. يحتفظ Telegram بنافذة متجددة دائمة التشغيل لكل مجموعة ومحدودة بـ historyLimit؛ تحدد دورات طلبات المستخدم الإدخالات اللاحقة لآخر رد مسجل للروبوت، بينما تتلقى دورات أحداث الغرفة النافذة الحديثة كاملةً كي يتمكن النموذج من رؤية منشوراته الحديثة. يزيل openclaw doctor --fix مفتاح الوضع المتقاعد includeGroupHistoryContext الخاص بـ Telegram.
استكشاف الأخطاء وإصلاحها
إذا أظهرت الغرفة مؤشر الكتابة أو استخدام الرموز المميزة من دون رسالة مرئية:- تأكد من أن قائمة القنوات المسموح بها وقائمة المرسلين المسموح بهم تسمحان بالغرفة.
- تأكد من ضبط
requireMention: falseعلى مستوى الغرفة المتوقع. - تحقق مما إذا كانت قيمة
messages.groupChat.unmentionedInboundأو تجاوز الوكيل هي"room_event". - افحص السجلات بحثًا عن البيانات الوصفية للحمولة النهائية المحجوبة أو
didSendViaMessagingTool: false. - بالنسبة إلى طلبات المجموعة العادية، احتفظ بـ
messages.groupChat.visibleReplies: "automatic"أو استعدها إذا أردت نشر الردود النهائية تلقائيًا. وبالنسبة إلى الغرف المحيطة التي تستخدمmessage_tool، استخدم نموذجًا أو بيئة تشغيل يستدعي الأدوات بموثوقية.
channels:history (عامة)، أو groups:history (خاصة)، أو mpim:history (رسائل مباشرة متعددة الأشخاص).