Configuration
المجموعات
يطبّق OpenClaw قواعد المجموعات نفسها عبر القنوات التي تدعم المجموعات، بما في ذلك Discord وiMessage وMatrix وMicrosoft Teams وQQBot وSignal وSlack وTelegram وWhatsApp وZalo.
بالنسبة إلى الغرف الدائمة التشغيل التي ينبغي أن توفّر سياقًا هادئًا ما لم يرسل الوكيل رسالة مرئية صراحةً، راجع أحداث الغرف المحيطة.
مقدمة للمبتدئين (دقيقتان)
«يعيش» OpenClaw على حسابات المراسلة الخاصة بك. لا يوجد مستخدم بوت منفصل في WhatsApp: إذا كنت أنت عضوًا في مجموعة، فيمكن لـ OpenClaw رؤية تلك المجموعة والرد فيها.
السلوك الافتراضي:
- المجموعات مقيّدة (
groupPolicy: "allowlist")؛ ويُحظر مرسلو المجموعات إلى أن يُضافوا إلى قائمة السماح. - تتطلب الردود إشارةً ما لم تعطّل بوابة الإشارات لمجموعة.
- يُنشر نص الرد النهائي تلقائيًا في الغرفة (
visibleReplies: "automatic").
بعبارة أخرى: يمكن للمرسلين المدرجين في قائمة السماح تشغيل OpenClaw عبر الإشارة إليه.
المسار السريع (ما يحدث لرسالة مجموعة):
groupPolicy? disabled -> dropgroupPolicy? allowlist -> group allowed? no -> droprequireMention? yes -> mentioned? no -> store for context onlymention/reply/command/DM -> user requestalways-on group chatter -> user request, or room event when configuredالردود المرئية
بالنسبة إلى طلبات المجموعات/القنوات العادية، يستخدم 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 للعودة إلى سلوك الرد النهائي فقط. تكون حالة الإسهاب خاصة بكل جلسة، وتعمل بالطريقة نفسها في المحادثات المباشرة والمجموعات والقنوات وموضوعات المنتديات.
لإرسال أحاديث المجموعات الدائمة التشغيل التي لا تتضمن إشارة بوصفها سياقًا هادئًا للغرفة بدلًا من طلبات مستخدم، استخدم أحداث الغرف المحيطة:
{ messages: { groupChat: { unmentionedInbound: "room_event", }, },}القيمة الافتراضية هي unmentionedInbound: "user_request". وتظل الرسائل المتضمنة إشارات والأوامر وطلبات الإيقاف والرسائل المباشرة طلبات مستخدم.
لاشتراط مرور المخرجات المرئية عبر أداة الرسائل في طلبات المجموعات/القنوات:
{ messages: { groupChat: { visibleReplies: "message_tool", }, },}لاشتراط ذلك في كل محادثة مصدر:
{ 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 الواجهة الخلفية الافتراضية إذا لم تختر واجهة أخرى.
يمنحك هذا «عقل» وكيل واحدًا (مساحة عمل + ذاكرة مشتركتان)، ولكن بوضعَي تنفيذ مختلفين:
- الرسائل المباشرة: جميع الأدوات (المضيف)
- المجموعات: عزل + أدوات مقيّدة
الرسائل المباشرة على المضيف، والمجموعات معزولة
{ agents: { defaults: { sandbox: { mode: "non-main", // groups/channels are non-main -> sandboxed scope: "session", // strongest isolation (one container per group/channel) workspaceAccess: "none", }, }, }, tools: { sandbox: { tools: { // If allow is non-empty, everything else is blocked (deny still wins). allow: ["group:messaging", "group:sessions"], deny: ["group:runtime", "group:fs", "group:ui", "nodes", "cron", "gateway"], }, }, },}لا ترى المجموعات سوى مجلد مدرج في قائمة السماح
هل تريد «ألا ترى المجموعات سوى المجلد X» بدلًا من «عدم الوصول إلى المضيف»؟ أبقِ workspaceAccess: "none" ووصّل فقط المسارات المدرجة في قائمة السماح إلى بيئة العزل:
{ agents: { defaults: { sandbox: { mode: "non-main", scope: "session", workspaceAccess: "none", docker: { binds: [ // hostPath:containerPath:mode "/home/user/FriendsShared:/data:ro", ], }, }, }, },}مواضيع ذات صلة:
- مفاتيح الإعداد والقيم الافتراضية: إعداد Gateway
- تصحيح سبب حظر أداة: العزل مقابل سياسة الأدوات مقابل الصلاحيات المرتفعة
- تفاصيل عمليات وصل المجلدات: العزل
تسميات العرض
- تستخدم تسميات واجهة المستخدم
displayNameعند توفره، بالتنسيق<channel>:<token>. - يُحجز
#roomللغرف/القنوات؛ وتستخدم محادثات المجموعاتg-<slug>(أحرف صغيرة، وتتحول المسافات إلى-، مع الاحتفاظ بـ#@+._-). تُختصر المعرّفات المبهمة الطويلة جدًا إلى رمز ثابت بدلًا من كشف معرّفات المسارات الكاملة في واجهة المستخدم.
سياسة المجموعات
تحكّم في كيفية معالجة رسائل المجموعات/الغرف لكل قناة:
{ 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 (open/disabled/allowlist).
قوائم سماح المجموعات
قوائم سماح المجموعات (*.groups و*.groupAllowFrom وقائمة السماح الخاصة بالقناة).
اشتراط الإشارة
اشتراط الإشارة (requireMention و/activation).
اشتراط الإشارة (افتراضيًا)
تتطلب رسائل المجموعات إشارة ما لم يُتجاوز ذلك لكل مجموعة. توجد القيم الافتراضية لكل نظام فرعي ضمن *.groups."*".
يُعد الرد على رسالة البوت إشارة ضمنية عندما تعرض القناة بيانات الرد الوصفية؛ ويمكن أيضًا أن يُعد اقتباس رسالة البوت إشارة في القنوات التي تعرض بيانات الاقتباس الوصفية. الحالات المضمنة حاليًا: Discord وMicrosoft Teams وQQBot وSlack وTelegram وWhatsApp وZalo الشخصي.
{ 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 أو قناة أخرى إثبات أن الرسالة أشارت صراحةً إلى البوت، تظل تلك الإشارة الأصلية محفزة حتى في المواضع التي تُرفض فيها أنماط التعابير النمطية المضبوطة.
افتراضيًا، تنطبق أنماط الإشارة المضبوطة في كل موضع تمرر فيه القناة حقائق المزوّد والمحادثة إلى اكتشاف الإشارة. لمنع الأنماط الواسعة من تنشيط الوكيل في كل مجموعة، حدّد نطاقها لكل قناة باستخدام channels.<channel>.mentionPatterns.
استخدم mode: "deny" عندما يجب تعطيل أنماط الإشارة بالتعابير النمطية افتراضيًا لقناة، ثم فعّلها في غرف محددة باستخدام allowIn:
{ messages: { groupChat: { mentionPatterns: ["\\bopenclaw\\b", "\\bops bot\\b"], }, }, channels: { slack: { mentionPatterns: { mode: "deny", allowIn: ["C0123OPS"], }, }, },}استخدم القيمة الافتراضية mode: "allow" (أو احذف mode) عندما يجب تطبيق أنماط الإشارة بالتعابير النمطية على نطاق واسع، ثم عطّلها في الغرف كثيرة الضوضاء باستخدام denyIn:
{ 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 مثل 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 للمجموعة
تطابق toolsBySender للمجموعة/القناة.
tools للمجموعة
tools للمجموعة/القناة.
toolsBySender الافتراضية
تطابق toolsBySender الافتراضية ("*").
tools الافتراضية
tools الافتراضية ("*").
مثال (Telegram):
{ 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، تعمل المفاتيح بوصفها قائمة سماح للمجموعات. استخدم "*" للسماح بجميع المجموعات مع الاستمرار في ضبط سلوك الإشارة الافتراضي.
الأغراض الشائعة (للنسخ واللصق):
تعطيل جميع ردود المجموعات
{ channels: { whatsapp: { groupPolicy: "disabled" } },}السماح لمجموعات محددة فقط (WhatsApp)
{ channels: { whatsapp: { groups: { "123@g.us": { requireMention: true }, "456@g.us": { requireMention: false }, }, }, },}السماح لجميع المجموعات مع اشتراط الإشارة
{ channels: { whatsapp: { groups: { "*": { requireMention: true } }, }, },}المشغّلات الخاصة بالمالك فقط (WhatsApp)
{ channels: { whatsapp: { groupPolicy: "allowlist", groupAllowFrom: ["+15551234567"], groups: { "*": { requireMention: true } }, }, },}التفعيل (للمالك فقط)
يمكن لمالكي المجموعات تبديل وضع التفعيل لكل مجموعة عبر رسالة مستقلة:
/activation mention/activation always
الأمر /activation هو أمر أساسي مقصور على المالك، ولا ينطبق إلا في محادثات المجموعات. يُقصد بالمالك أن يطابق المرسل allowFrom / commands.ownerAllowFrom الخاص بالقناة (عند عدم إعداد قائمة سماح، يُعد معرّف الحساب نفسه مالكًا). يتجاوز الوضع المخزّن إعداد requireMention الخاص بتلك المجموعة في القنوات التي تستخدمه (Google Chat وQQBot وTelegram وWhatsApp)، وتعكس مقدمة موجّه النظام للمجموعة الوضع النشط في كل القنوات.
حقول السياق
تعيّن حمولات المجموعات الواردة ما يلي:
ChatType=groupGroupSubject(إذا كان معروفًا)GroupMembers(إذا كانوا معروفين)WasMentioned(نتيجة شرط الإشارة)- تتضمن موضوعات منتديات Telegram أيضًا
MessageThreadIdوIsForum.
يتضمن موجّه نظام الوكيل مقدمةً للمجموعة في أول دور من جلسة مجموعة جديدة (وبعد تغييرات /activation). وتذكّر النموذج بالرد بأسلوب بشري، وتقليل الأسطر الفارغة واتباع التباعد المعتاد في المحادثات، وتجنب كتابة تسلسلات \n حرفيًا. كما لا يُنصح باستخدام جداول Markdown في المجموعات غير التابعة لـTelegram؛ أما إرشادات النص المنسّق في Telegram فتأتي من موجّه قناة Telegram. تُعرض أسماء المجموعات وتسميات المشاركين الواردة من القناة كبيانات وصفية غير موثوقة داخل كتل مسيّجة، وليس كتعليمات نظام مضمنة.
تفاصيل iMessage
- يُفضّل استخدام
chat_id:<id>عند التوجيه أو الإضافة إلى قائمة السماح. - سرد المحادثات:
imsg chats --limit 20. - تعود ردود المجموعة دائمًا إلى
chat_idنفسه.
موجّهات نظام WhatsApp
راجع WhatsApp للاطلاع على القواعد المعتمدة لموجّه نظام WhatsApp، بما في ذلك آلية تحديد موجّهات المجموعات والمحادثات المباشرة، وسلوك حرف البدل، ودلالات تجاوزات الحساب.
تفاصيل WhatsApp
راجع رسائل المجموعات للاطلاع على السلوك الخاص بـWhatsApp (حقن السجل وتفاصيل معالجة الإشارات).