التكوين

رسائل المجموعة

الهدف: السماح لـ Clawd بالتواجد في مجموعات واتساب، والاستيقاظ فقط عند الإشارة إليه، والحفاظ على سلسلة تلك المحادثة منفصلة عن جلسة المراسلة الشخصية المباشرة. ملاحظة: agents.list[].groupChat.mentionPatterns تُستخدم الآن أيضًا من قبل Telegram/Discord/Slack/iMessage؛ يركز هذا المستند على سلوك واتساب المحدد. للإعدادات متعددة الوكلاء، اضبط agents.list[].groupChat.mentionPatterns لكل وكيل (أو استخدم messages.groupChat.mentionPatterns كخيار احتياطي عام).

ما تم تنفيذه (2025-12-03)

  • أوضاع التفعيل: mention (الافتراضي) أو always. يتطلب mention إشارة (إشارات @-mentions حقيقية في واتساب عبر mentionedJids، أو أنماط regex، أو رقم E.164 الخاص بالبوت في أي مكان في النص). always يوقظ الوكيل عند كل رسالة ولكن يجب أن يرد فقط عندما يمكنه إضافة قيمة ذات معنى؛ وإلا فإنه يُرجع الرمز الصامت NO_REPLY. يمكن تعيين الإعدادات الافتراضية في التكوين (channels.whatsapp.groups) وتجاوزها لكل مجموعة عبر /activation. عند تعيين channels.whatsapp.groups، فإنه يعمل أيضًا كقائمة سماح للمجموعات (قم بتضمين "*" للسماح للجميع).
  • سياسة المجموعة: channels.whatsapp.groupPolicy تتحكم فيما إذا كانت رسائل المجموعة مقبولة (open|disabled|allowlist). يستخدم allowlist channels.whatsapp.groupAllowFrom (الخيار الاحتياطي: channels.whatsapp.allowFrom الصريح). الافتراضي هو allowlist (محظور حتى تقوم بإضافة مرسلين).
  • جلسات لكل مجموعة: تبدو مفاتيح الجلسة كالتالي agent:<agentId>:whatsapp:group:<jid> لذا فإن الأوامر مثل /verbose on أو /think high (المرسلة كرسائل منفردة) تكون محددة بتلك المجموعة؛ ولا تتأثر حالة المراسلة الشخصية المباشرة. يتم تخطي نبضات القلب لجلسات المجموعة.
  • حقن السياق: يتم إضافة رسائل المجموعة التي في انتظار المعالجة فقط (50 افتراضيًا) والتي لم تؤدي إلى تشغيل الوكيل كبادئة تحت [رسائل الدردشة منذ ردك الأخير - للسياق]، مع سطر التنبيه تحت [الرسالة الحالية - رد على هذا]. لا يتم إعادة حقن الرسائل الموجودة بالفعل في الجلسة.
  • عرض المرسل: كل دفعة من رسائل المجموعة تنتهي الآن بـ [من: اسم المرسل (+E164)] حتى يعرف Pi من يتحدث.
  • الرسائل العابرة/المشاهدة لمرة واحدة: نقوم بفك تغليفها قبل استخراج النص/الإشارات، لذا فإن الإشارات الموجودة داخلها لا تزال تُطلق التنبيه.
  • موجه النظام للمجموعة: في الدور الأول من جلسة المجموعة (وكلما قام /activation بتغيير الوضع) نقوم بحقن نبذة قصيرة في موجه النظام مثل أنت ترد داخل مجموعة واتساب "<subject>". أعضاء المجموعة: أليس (+44...)، بوب (+43...)، … التفعيل: عند التنبيه فقط … خاطب المرسل المحدد المذكور في سياق الرسالة. إذا لم تكن البيانات الوصفية متاحة، فإننا لا نزال نخبر الوكيل أنها دردشة جماعية.

مثال على التكوين (واتساب)

أضف كتلة groupChat إلى ~/.openclaw/openclaw.json حتى تعمل إشارات اسم العرض حتى عندما تقوم واتساب بإزالة الرمز المرئي @ في نص الرسالة:

{
  channels: {
    whatsapp: {
      groups: {
        "*": { requireMention: true },
      },
    },
  },
  agents: {
    list: [
      {
        id: "main",
        groupChat: {
          historyLimit: 50,
          mentionPatterns: ["@?openclaw", "\\+?15555550123"],
        },
      },
    ],
  },
}

ملاحظات:

  • أنماط regex لا تحترم حالة الأحرف؛ وهي تغطي إشارة اسم العرض مثل @openclaw والرقم الخام مع أو بدون +/مسافات.
  • لا تزال واتساب ترسل إشارات قياسية عبر mentionedJids عندما ينقر شخص ما على جهة الاتصال، لذا فإن استخدام الرقم كخيار احتياطي نادرًا ما يكون مطلوبًا ولكنه شبكة أمان مفيدة.

أمر التفعيل (للمالك فقط)

استخدم أمر دردشة المجموعة:

  • /activation mention
  • /activation always

يمكن فقط لرقم المالك (من channels.whatsapp.allowFrom، أو رقم E.164 الخاص بالبوت نفسه عندما لا يكون مضبوطًا) تغيير هذا. أرسل /status كرسالة منفردة في المجموعة لرؤية وضع التفعيل الحالي.

كيفية الاستخدام

  1. أضف حساب واتساب الخاص بك (الذي يعمل عليه OpenClaw) إلى المجموعة.
  2. قل @openclaw … (أو قم بتضمين الرقم). فقط المرسلون الموجودون في قائمة السماح يمكنهم تشغيله ما لم تقم بتعيين groupPolicy: "open".
  3. سيتضمن موجه الوكيل سياق المجموعة الحديث بالإضافة إلى علامة [من: …] في النهاية حتى يتمكن من مخاطبة الشخص الصحيح.
  4. توجيهات مستوى الجلسة (/verbose on, /think high, /new أو /reset, /compact) تنطبق فقط على جلسة تلك المجموعة؛ أرسلها كرسائل منفردة حتى يتم تسجيلها. تظل جلسة المراسلة الشخصية المباشرة الخاصة بك مستقلة.

الاختبار / التحقق

  • اختبار يدوي سريع:
    • أرسل إشارة @openclaw في المجموعة وتأكد من وجود رد يشير إلى اسم المرسل.
    • أرسل إشارة ثانية وتحقق من تضمين كتلة السجل ثم مسحها في الدور التالي.
  • تحقق من سجلات البوابة (شغّل بـ --verbose) لرؤية إدخالات inbound web message التي تظهر from: <groupJid> واللاحقة [من: …].

الاعتبارات المعروفة

  • يتم تخطي نبضات القلب عمدًا للمجموعات لتجنب البث الصاخب.
  • يستخدم قمع الصدى سلسلة الدفعة المجمعة؛ إذا أرسلت نصًا متطابقًا مرتين بدون إشارات، فسيحصل الأول فقط على رد.
  • ستظهر إدخالات مخزن الجلسات كـ agent:<agentId>:whatsapp:group:<jid> في مخزن الجلسات (~/.openclaw/agents/<agentId>/sessions/sessions.json افتراضيًا)؛ يعني الإدخال المفقود فقط أن المجموعة لم تؤد إلى تشغيل بعد.
  • تتبع مؤشرات الكتابة في المجموعات agents.defaults.typingMode (الافتراضي: message عندما لا يتم الإشارة إليه).

الاقترانالمجموعات