الانتقال إلى المحتوى الرئيسي

الرسائل

تربط هذه الصفحة بين كيفية تعامل OpenClaw مع الرسائل الواردة، والجلسات، والاصطفاف، والبثّ، وإتاحة عرض الاستدلال.

إخماد الرسائل الواردة (Debouncing)

Inbound message
  -> routing/bindings -> session key
  -> queue (if a run is active)
  -> agent run (streaming + tools)
  -> outbound replies (channel limits + chunking)
مقابض المفاتيح موجودة في التكوين:
  • messages.* للبادئات، والاصطفاف، وسلوك المجموعات.
  • agents.defaults.* لإعدادات بثّ الكتل والتجزئة الافتراضية.
  • تجاوزات القنوات (channels.whatsapp.*، channels.telegram.*، إلخ) للحدود القصوى ومفاتيح تشغيل/إيقاف البثّ. لأغطية و تبديل البث.
انظر التهيئة للاطلاع على المخطط الكامل.

تسليم داخلي

يمكن للقنوات إعادة تسليم الرسالة نفسها بعد إعادة الاتصال. يحتفظ OpenClaw بذاكرة مؤقتة قصيرة العمر مُفهرسة بحسب القناة/الحساب/النظير/الجلسة/معرّف الرسالة، بحيث لا تؤدي التسليمات المكررة إلى تشغيل وكيل آخر.

السحب الوارد

يمكن تجميع الرسائل المتتالية السريعة من المرسِل نفسه في دورة وكيل واحدة عبر messages.inbound. يُنطاق الإخماد لكل قناة + محادثة، ويستخدم أحدث رسالة لربط الردود/المعرّفات. التهيئة (افتراضي عام + تجاوزات لكل قناة):
{
  messages: {
    inbound: {
      debounceMs: 2000,
      byChannel: {
        whatsapp: 5000,
        slack: 1500,
        discord: 1500,
      },
    },
  },
}
ملاحظات:
  • ينطبق الإخماد على الرسائل النصية فقط؛ إذ تُفرَّغ الوسائط/المرفقات فورًا.
  • تتجاوز أوامر التحكم الإخماد لتبقى مستقلة.

الجلسات والأجهزة

الجلسات مملوكة للبوابة، وليس للعملاء.
  • المحادثات المباشرة تُدمَج ضمن مفتاح الجلسة الرئيسي للوكيل.
  • تحصل المجموعات/القنوات على مفاتيح جلسات خاصة بها.
  • مخزن الجلسات والنصوص التفريغية موجودان على مضيف Gateway.
يمكن لعدة أجهزة/قنوات أن تُطابِق الجلسة نفسها، لكن السجل لا يُزامَن بالكامل إلى كل عميل. التوصية: استخدام جهاز أساسي واحد للمحادثات الطويلة لتجنّب تباين السياق. تعرض واجهة التحكم وواجهة TUI دائمًا نص الجلسة المدعوم من Gateway، لذا فهما مصدر الحقيقة. التفاصيل: إدارة الجلسات.

الجثث الداخلة وسياق التاريخ

يفصل OpenClaw بين جسم المُطالبة وجسم الأمر:
  • Body: نص المُطالبة المُرسل إلى الوكيل. قد يتضمن أُطُر القناة وأغلفة سجل اختيارية.
  • CommandBody: نص المستخدم الخام لتحليل التوجيه/الأوامر.
  • RawBody: اسم مستعار قديم لـ CommandBody (مُحتفَظ به للتوافق).
عندما توفّر القناة سجلًا، تستخدم غلافًا مشتركًا:
  • [Chat messages since your last reply - for context]
  • [Current message - respond to this]
بالنسبة إلى المحادثات غير المباشرة (المجموعات/القنوات/الغرف)، يُسبَق جسم الرسالة الحالية بتسمية المرسِل (بالأسلوب نفسه المستخدم لإدخالات السجل). يحافظ ذلك على اتساق الرسائل الآنية والمصطفّة/التاريخية داخل مُطالبة الوكيل. مخازن السجل معلّقة فقط: فهي تتضمن رسائل المجموعات التي لم تُشغِّل دورة (على سبيل المثال، الرسائل المقيّدة بالمناداة)، وتستبعد الرسائل الموجودة بالفعل في نص الجلسة. يُطبَّق نزع التوجيهات على قسم الرسالة الحالية فقط بحيث يبقى السجل سليمًا. يجب على القنوات التي تُغلّف السجل ضبط CommandBody (أو RawBody) على نص الرسالة الأصلي، والإبقاء على Body كمُطالبة مُدمجة. يمكن تهيئة مخازن السجل عبر messages.groupChat.historyLimit (افتراضي عام) وتجاوزات لكل قناة مثل channels.slack.historyLimit أو channels.telegram.accounts.<id>.historyLimit (اضبط 0 للتعطيل).

الاصطفاف والمتابعات

إذا كانت دورة قيد التنفيذ بالفعل، يمكن اصطفاف الرسائل الواردة، أو توجيهها إلى الدورة الحالية، أو جمعها لدورة متابعة.
  • تُضبط عبر messages.queuemessages.queue.byChannel).
  • الأوضاع: interrupt، steer، followup، collect، إضافةً إلى متغيرات التراكم.
التفاصيل: الاصطفاف.

البث و التقطيع و الدفعي

يرسل بثّ الكتل ردودًا جزئية مع إنتاج النموذج لكتل النص. تحترم التجزئة حدود نص القناة وتتجنّب تقسيم الشيفرة المُسوَّرة. الإعدادات الأساسية:
  • agents.defaults.blockStreamingDefault (on|off، مُعطَّل افتراضيًا)
  • agents.defaults.blockStreamingBreak (text_end|message_end)
  • agents.defaults.blockStreamingChunk (minChars|maxChars|breakPreference)
  • agents.defaults.blockStreamingCoalesce (تجميع قائم على الخمول)
  • agents.defaults.humanDelay (توقّف شبيه بالبشر بين ردود الكتل)
  • تجاوزات القنوات: *.blockStreaming و *.blockStreamingCoalesce (تتطلب القنوات غير Telegram ضبط *.blockStreaming: true صراحةً)
التفاصيل: البثّ + التجزئة.

سبب الرؤية والرموز المميزة

يمكن لـ OpenClaw إظهار أو إخفاء استدلال النموذج:
  • يتحكم /reasoning on|off|stream في الإتاحة.
  • لا يزال محتوى الاستدلال يُحتسب ضمن استخدام الرموز عندما ينتجه النموذج.
  • يدعم Telegram بثّ الاستدلال إلى فقاعة المسودة.
التفاصيل: توجيهات التفكير + الاستدلال واستخدام الرموز.

البادئات، وترابط الردود، والردّ

تتم مركزة تنسيق الرسائل الصادرة في messages:
  • messages.responsePrefix، و channels.<channel>.responsePrefix، و channels.<channel>.accounts.<id>.responsePrefix (تتابع بادئات الصادر)، إضافةً إلى channels.whatsapp.messagePrefix (بادئة الوارد في WhatsApp)
  • ترابط الردود عبر replyToMode وافتراضات كل قناة
التفاصيل: التهيئة ووثائق القنوات.