Configuration

المجموعات

يطبّق OpenClaw قواعد المجموعات نفسها عبر القنوات التي تدعم المجموعات، بما في ذلك Discord وiMessage وMatrix وMicrosoft Teams وQQBot وSignal وSlack وTelegram وWhatsApp وZalo.

للغرف دائمة التشغيل التي ينبغي أن توفّر سياقًا هادئًا ما لم يرسل الوكيل رسالة مرئية صراحةً، راجع أحداث الغرف المحيطة.

مقدمة للمبتدئين (دقيقتان)

يعمل OpenClaw ضمن حسابات المراسلة الخاصة بك. لا يوجد مستخدم بوت منفصل في WhatsApp: إذا كنت أنت عضوًا في مجموعة، فيمكن لـ OpenClaw رؤية تلك المجموعة والرد فيها.

السلوك الافتراضي:

  • المجموعات مقيّدة (groupPolicy: "allowlist")؛ ويُحظر مرسلو المجموعات حتى تُضاف أسماؤهم إلى قائمة السماح.
  • تتطلب الردود إشارة ما لم تعطّل تقييد الإشارات للمجموعة.
  • يُنشر نص الرد النهائي في الغرفة تلقائيًا (visibleReplies: "automatic").

بعبارة أخرى: يمكن للمرسلين المدرجين في قائمة السماح تشغيل OpenClaw من خلال الإشارة إليه.

المسار السريع (ما يحدث لرسالة مجموعة):

text
groupPolicy؟ disabled -> تجاهلgroupPolicy؟ allowlist -> هل المجموعة مسموح بها؟ لا -> تجاهلrequireMention؟ نعم -> هل جرت الإشارة؟ لا -> تخزين للسياق فقطإشارة/رد/أمر/رسالة مباشرة -> طلب مستخدمدردشة مجموعة دائمة التشغيل -> طلب مستخدم، أو حدث غرفة عند ضبطه

الردود المرئية

لطلبات المجموعات/القنوات العادية، يستخدم 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 للعودة إلى سلوك الرد النهائي فقط. تكون حالة الإسهاب خاصة بكل جلسة، وتعمل بالطريقة نفسها في المحادثات المباشرة والمجموعات والقنوات وموضوعات المنتديات.

لإرسال دردشة المجموعة دائمة التشغيل غير المتضمنة لإشارة بوصفها سياق غرفة هادئًا بدلًا من طلبات مستخدم، استخدم أحداث الغرف المحيطة:

json5
{  messages: {    groupChat: {      unmentionedInbound: "room_event",    },  },}

القيمة الافتراضية هي unmentionedInbound: "user_request". وتظل الرسائل المتضمنة لإشارات والأوامر وطلبات الإلغاء والرسائل المباشرة طلبات مستخدم.

لاشتراط مرور المخرجات المرئية عبر أداة الرسائل لطلبات المجموعات/القنوات:

json5
{  messages: {    groupChat: {      visibleReplies: "message_tool",    },  },}

لاشتراط ذلك لكل محادثة مصدر:

json5
{  messages: {    visibleReplies: "message_tool",  },}

يلتقط Gateway تغييرات إعداد messages دون إعادة تشغيل بعد حفظ الملف. أعد التشغيل فقط عند تعطيل إعادة تحميل الإعدادات (gateway.reload.mode: "off").

تتجاوز منعطفات الأوامر visibleReplies: "message_tool" وترد دائمًا بصورة مرئية: تنشر كل من أوامر الشرطة المائلة الأصلية (في Discord وTelegram والأسطح الأخرى التي تدعم الأوامر الأصلية) وأوامر /... النصية المصرح بها استجابتها في محادثة المصدر. وتظل منعطفات /... النصية غير المصرح بها في المجموعات مقصورة على أداة الرسائل؛ أما منعطفات المحادثة العادية فتتبع الإعداد الافتراضي المضبوط.

رؤية السياق وقوائم السماح

يتضمن أمان المجموعات عنصرَي تحكم مختلفين:

  • تفويض التشغيل: من يمكنه تشغيل الوكيل (groupPolicy وgroups وgroupAllowFrom وقوائم السماح الخاصة بكل قناة).
  • رؤية السياق: ما السياق الإضافي الذي يُحقن في النموذج (نص الرد/الاقتباس وسجل سلسلة المحادثة والبيانات الوصفية المعاد توجيهها).

يحافظ OpenClaw افتراضيًا على السياق كما استُلم: تحدد قوائم السماح من يمكنه تشغيل الإجراءات، لا المقتطفات المقتبسة أو التاريخية التي يراها النموذج. لتصفية السياق الإضافي أيضًا، اضبط contextVisibility:

الوضع السلوك
"all" (الافتراضي) الاحتفاظ بالسياق الإضافي كما استُلم.
"allowlist" حقن سياق السجل/سلسلة المحادثة/الاقتباس/إعادة التوجيه من المرسلين المدرجين في قائمة السماح فقط.
"allowlist_quote" allowlist، مع الاحتفاظ أيضًا بالرسالة المقتبسة أو المُجاب عنها صراحةً من أي مرسل.

اضبطه لكل قناة (channels.<channel>.contextVisibility) أو لكل حساب (channels.<channel>.accounts.<accountId>.contextVisibility) أو بصورة عامة (channels.defaults.contextVisibility). تطبّق القنوات التي تجلب سياقًا إضافيًا (Discord وFeishu وiMessage وMatrix وMicrosoft Teams وSignal وSlack وTelegram وWhatsApp) السياسة عند إنشاء السياق الوارد؛ وتفشل مجموعات السياسات غير المعروفة بصورة مغلقة وتحذف السياق.

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

إذا كان المطلوب...

الهدف ما يجب ضبطه
السماح بكل المجموعات مع الرد فقط عند إشارات @ groups: { "*": { requireMention: true } }
تعطيل جميع ردود المجموعات groupPolicy: "disabled"
مجموعات محددة فقط groups: { "<group-id>": { ... } } (من دون مفتاح "*")
قصر التشغيل داخل المجموعات عليك وحدك groupPolicy: "allowlist"، groupAllowFrom: ["+1555..."]
إعادة استخدام مجموعة واحدة من المرسلين الموثوقين عبر القنوات groupAllowFrom: ["accessGroup:operators"]

لقوائم سماح المرسلين القابلة لإعادة الاستخدام، راجع مجموعات الوصول.

مفاتيح الجلسات

  • تستخدم جلسات المجموعات مفاتيح جلسات 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 هو الواجهة الخلفية الافتراضية إذا لم تختر واحدة.

يمنحك هذا «عقل» وكيل واحدًا (مساحة عمل + ذاكرة مشتركتان)، لكن بوضعَي تنفيذ مختلفين:

  • الرسائل المباشرة: جميع الأدوات (المضيف)
  • المجموعات: عزل + أدوات مقيّدة

الرسائل المباشرة على المضيف، والمجموعات معزولة

json5
{  agents: {    defaults: {      sandbox: {        mode: "non-main", // المجموعات/القنوات غير رئيسية -> معزولة        scope: "session", // أقوى عزل (حاوية واحدة لكل مجموعة/قناة)        workspaceAccess: "none",      },    },  },  tools: {    sandbox: {      tools: {        // إذا لم تكن قائمة السماح فارغة، يُحظر كل ما عداها (وتظل الأولوية للمنع).        allow: ["group:messaging", "group:sessions"],        deny: ["group:runtime", "group:fs", "group:ui", "nodes", "cron", "gateway"],      },    },  },}

لا ترى المجموعات سوى مجلد مدرج في قائمة السماح

هل تريد أن «تتمكن المجموعات من رؤية المجلد X فقط» بدلًا من «عدم الوصول إلى المضيف»؟ احتفظ بـ workspaceAccess: "none" واربط المسارات المدرجة في قائمة السماح فقط داخل بيئة العزل:

json5
{  agents: {    defaults: {      sandbox: {        mode: "non-main",        scope: "session",        workspaceAccess: "none",        docker: {          binds: [            // hostPath:containerPath:mode            "/home/user/FriendsShared:/data:ro",          ],        },      },    },  },}

موضوعات ذات صلة:

تسميات العرض

  • تستخدم تسميات واجهة المستخدم displayName عند توفره، بالتنسيق <channel>:<token>.
  • #room محجوز للغرف/القنوات؛ وتستخدم محادثات المجموعات g-<slug> (أحرف صغيرة، والمسافات -> -، مع الاحتفاظ بـ #@+._-). تُختصر المعرّفات المبهمة شديدة الطول إلى رمز ثابت بدلًا من كشف معرّفات المسارات الكاملة في واجهة المستخدم.

سياسة المجموعات

تحكّم في كيفية معالجة رسائل المجموعات/الغرف لكل قناة:

json5
{  channels: {    whatsapp: {      groupPolicy: "disabled", // "open" | "disabled" | "allowlist"      groupAllowFrom: ["+15551234567"],    },    telegram: {      groupPolicy: "disabled",      groupAllowFrom: ["123456789"], // numeric Telegram user id (setup resolves @username)    },    signal: {      groupPolicy: "disabled",      groupAllowFrom: ["+15551234567"],    },    imessage: {      groupPolicy: "disabled",      groupAllowFrom: ["chat_id:123"],    },    msteams: {      groupPolicy: "disabled",      groupAllowFrom: ["user@org.com"],    },    discord: {      groupPolicy: "allowlist",      guilds: {        GUILD_ID: { channels: { help: { enabled: true } } },      },    },    slack: {      groupPolicy: "allowlist",      channels: { "#general": { enabled: true } },    },    matrix: {      groupPolicy: "allowlist",      groupAllowFrom: ["@owner:example.org"],      groups: {        "!roomId:example.org": { enabled: true },        "#alias:example.org": { enabled: true },      },    },  },}
السياسة السلوك
"open" تتجاوز المجموعات قوائم السماح؛ ويظل اشتراط الإشارة مطبقًا.
"disabled" حظر جميع رسائل المجموعات بالكامل.
"allowlist" السماح فقط بالمجموعات/الغرف التي تطابق قائمة السماح المُعدّة.
ملاحظات خاصة بكل قناة
  • 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 استخدام البديل الاحتياطي مرة واحدة لكل حساب.

نموذج ذهني سريع (ترتيب التقييم لرسائل المجموعات):

  • groupPolicy

    groupPolicy (مفتوحة/معطّلة/قائمة سماح).

  • قوائم سماح المجموعات

    قوائم سماح المجموعات (*.groups، *.groupAllowFrom، قائمة السماح الخاصة بالقناة).

  • اشتراط الإشارة

    اشتراط الإشارة (requireMention، /activation).

  • اشتراط الإشارة (افتراضيًا)

    تتطلب رسائل المجموعات إشارةً ما لم يُتجاوز ذلك لكل مجموعة. توجد القيم الافتراضية لكل نظام فرعي ضمن *.groups."*".

    يُحتسب الرد على رسالة بوت إشارةً ضمنيةً عندما تتيح القناة بيانات الرد الوصفية؛ كما يمكن أن يُحتسب اقتباس رسالة بوت إشارةً في القنوات التي تتيح بيانات الاقتباس الوصفية. الحالات المضمّنة حاليًا: Discord وMicrosoft Teams وQQBot وSlack وTelegram وWhatsApp وZalo الشخصي.

    json5
    {  channels: {    whatsapp: {      groups: {        "*": { requireMention: true },        "123@g.us": { requireMention: false },      },    },    telegram: {      groups: {        "*": { requireMention: true },        "123456789": { requireMention: false },      },    },    imessage: {      groups: {        "*": { requireMention: true },        "123": { requireMention: false },      },    },  },  agents: {    list: [      {        id: "main",        groupChat: {          mentionPatterns: ["@openclaw", "openclaw", "\\+15555550123"],          historyLimit: 50,        },      },    ],  },}

    تحديد نطاق أنماط الإشارة المُعدّة

    تُعد mentionPatterns المُعدّة محفزات احتياطية بتعبيرات نمطية. استخدمها عندما لا تتيح المنصة إشارة أصلية إلى البوت، أو عندما تريد احتساب نص عادي مثل openclaw: إشارةً. إشارات المنصة الأصلية منفصلة: عندما يتمكن Discord أو Slack أو Telegram أو Matrix أو Signal أو قناة أخرى من إثبات أن الرسالة أشارت صراحةً إلى البوت، تظل تلك الإشارة الأصلية محفزةً حتى إذا رُفضت أنماط التعبيرات النمطية المُعدّة.

    افتراضيًا، تُطبّق أنماط الإشارة المُعدّة في كل موضع تمرر فيه القناة معلومات المزوّد والمحادثة إلى اكتشاف الإشارات. لمنع الأنماط الواسعة من إيقاظ الوكيل في كل مجموعة، حدّد نطاقها لكل قناة باستخدام channels.<channel>.mentionPatterns.

    استخدم mode: "deny" عندما ينبغي تعطيل أنماط الإشارة بالتعبيرات النمطية افتراضيًا لقناة ما، ثم فعّلها في غرف محددة باستخدام allowIn:

    json5
    {  messages: {    groupChat: {      mentionPatterns: ["\\bopenclaw\\b", "\\bops bot\\b"],    },  },  channels: {    slack: {      mentionPatterns: {        mode: "deny",        allowIn: ["C0123OPS"],      },    },  },}

    استخدم القيمة الافتراضية mode: "allow" (أو احذف mode) عندما ينبغي تطبيق أنماط الإشارة بالتعبيرات النمطية على نطاق واسع، ثم عطّلها في الغرف الصاخبة باستخدام denyIn:

    json5
    {  messages: {    groupChat: {      mentionPatterns: ["\\bopenclaw\\b"],    },  },  channels: {    telegram: {      mentionPatterns: {        denyIn: ["-1001234567890", "-1001234567890:topic:42"],      },    },  },}

    حل السياسة:

    الحقل التأثير
    mode: "allow" تكون أنماط الإشارة بالتعبيرات النمطية مفعّلة ما لم يكن معرّف المحادثة في denyIn. وهذا هو الإعداد الافتراضي.
    mode: "deny" تكون أنماط الإشارة بالتعبيرات النمطية معطّلة ما لم يكن معرّف المحادثة في allowIn.
    allowIn معرّفات المحادثات التي تكون فيها أنماط الإشارة بالتعبيرات النمطية مفعّلة في وضع الرفض.
    denyIn معرّفات المحادثات التي تكون فيها أنماط الإشارة بالتعبيرات النمطية معطّلة. تتغلب denyIn على allowIn إذا تضمّنتا المعرّف نفسه.

    سياسة التعبيرات النمطية محددة النطاق المدعومة حاليًا:

    القناة المعرّفات المستخدمة في allowIn / denyIn
    Discord معرّفات قنوات Discord.
    Matrix معرّفات غرف Matrix.
    Slack معرّفات قنوات Slack.
    Telegram معرّفات محادثات المجموعات، أو chatId:topic:threadId لموضوعات المنتديات.
    WhatsApp معرّفات محادثات WhatsApp مثل 123@g.us.

    يمكن لإعدادات القناة على مستوى الحساب تعيين السياسة نفسها ضمن 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:، ويُسجَّل تحذير إيقاف استخدام.

    ترتيب الحل (الأكثر تحديدًا يتغلب):

  • أدوات المجموعة حسب المرسل

    تطابق toolsBySender للمجموعة/القناة.

  • أدوات المجموعة

    tools للمجموعة/القناة.

  • الأدوات الافتراضية حسب المرسل

    تطابق toolsBySender الافتراضي ("*").

  • الأدوات الافتراضية

    tools الافتراضية ("*").

  • مثال (Telegram):

    json5
    {  channels: {    telegram: {      groups: {        "*": { tools: { deny: ["exec"] } },        "-1001234567890": {          tools: { deny: ["exec", "read", "write"] },          toolsBySender: {            "id:123456789": { alsoAllow: ["exec"] },          },        },      },    },  },}

    قوائم السماح للمجموعات

    عند ضبط channels.whatsapp.groups أو channels.telegram.groups أو channels.imessage.groups، تعمل المفاتيح كقائمة سماح للمجموعات. استخدم "*" للسماح بجميع المجموعات مع الاستمرار في ضبط سلوك الإشارة الافتراضي.

    الأغراض الشائعة (نسخ/لصق):

    تعطيل جميع ردود المجموعات

    json5
    {  channels: { whatsapp: { groupPolicy: "disabled" } },}

    السماح بمجموعات محددة فقط (WhatsApp)

    json5
    {  channels: {    whatsapp: {      groups: {        "123@g.us": { requireMention: true },        "456@g.us": { requireMention: false },      },    },  },}

    السماح بجميع المجموعات مع اشتراط الإشارة

    json5
    {  channels: {    whatsapp: {      groups: { "*": { requireMention: true } },    },  },}

    المشغّلات الخاصة بالمالك فقط (WhatsApp)

    json5
    {  channels: {    whatsapp: {      groupPolicy: "allowlist",      groupAllowFrom: ["+15551234567"],      groups: { "*": { requireMention: true } },    },  },}

    التنشيط (للمالك فقط)

    يمكن لمالكي المجموعات تبديل التنشيط لكل مجموعة بواسطة رسالة مستقلة:

    • /activation mention
    • /activation always

    /activation هو أمر أساسي مقيّد بالمالك ولا ينطبق إلا في محادثات المجموعات. يُقصد بالمالك أن المرسل يطابق commands.ownerAllowFrom؛ ولا تتحكم قوائم allowFrom الخاصة بالقناة إلا في الوصول العادي إلى القناة والأوامر. يتجاوز الوضع المخزّن قيمة requireMention لتلك المجموعة في القنوات التي تستعلم عنه (Google Chat وQQBot وTelegram وWhatsApp)، وتعكس مقدمة موجه النظام الخاصة بالمجموعة الوضع النشط في كل مكان.

    حقول السياق

    تضبط حمولات المجموعات الواردة:

    • ChatType=group
    • GroupSubject (إذا كان معروفًا)
    • GroupMembers (إذا كان معروفًا)
    • WasMentioned (نتيجة تقييد الإشارة)
    • تتضمن موضوعات منتديات Telegram أيضًا MessageThreadId وIsForum.

    يتضمن موجه نظام الوكيل مقدمة للمجموعة في المنعطف الأول من جلسة مجموعة جديدة (وبعد تغيّر /activation). وهي تذكّر النموذج بالرد كإنسان، وتقليل الأسطر الفارغة واتباع تباعد المحادثة المعتاد، وتجنب كتابة تسلسلات \n حرفيًا. كما تثني القنوات التي لا يحافظ وضع الجداول المعلن فيها على الجداول الأصلية أو الخام عن استخدام جداول Markdown. تُعرض أسماء المجموعات وتسميات المشاركين الواردة من القناة كبيانات وصفية غير موثوقة داخل سياج، وليس كتعليمات نظام مضمنة.

    تفاصيل iMessage

    • يُفضّل استخدام chat_id:<id> عند التوجيه أو الإدراج في قائمة السماح.
    • عرض المحادثات: imsg chats --limit 20.
    • تعود ردود المجموعة دائمًا إلى chat_id نفسه.

    موجهات نظام WhatsApp

    راجع WhatsApp للاطلاع على قواعد موجه نظام WhatsApp المعتمدة، بما في ذلك تحديد موجهات المجموعات والمحادثات المباشرة، وسلوك حرف البدل، ودلالات تجاوز الحساب.

    تفاصيل WhatsApp

    راجع رسائل المجموعات للاطلاع على السلوك الخاص بـWhatsApp فقط (إدراج السجل وتفاصيل معالجة الإشارات).

    ذو صلة

    Was this useful?
    On this page

    On this page