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

الرسائل

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

تدفق الرسائل (على مستوى عالٍ)

الرسالة الواردة
  -> التوجيه/الارتباطات -> مفتاح الجلسة
  -> الطابور (إذا كان هناك تشغيل نشط)
  -> تشغيل الوكيل (بث متدفق + أدوات)
  -> الردود الصادرة (حدود القناة + التقطيع)
توجد عناصر التحكم الرئيسية في الإعدادات:
  • messages.* للبادئات، ووضع الرسائل في الطابور، وسلوك المجموعات.
  • agents.defaults.* للإعدادات الافتراضية لبث الكتل والتقطيع.
  • تجاوزات القنوات (channels.whatsapp.* وchannels.telegram.* وغيرها) للحدود ومفاتيح تبديل البث المتدفق.
راجع Configuration للحصول على المخطط الكامل.

إزالة تكرار الرسائل الواردة

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

إزالة الاهتزاز للرسائل الواردة

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

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

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

أجسام الرسائل الواردة وسياق السجل

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

وضع الرسائل في الطابور والمتابعات

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

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

يرسل بث الكتل المتدفق ردودًا جزئية بينما ينتج النموذج كتل النص. ويحترم التقطيع حدود نص القناة ويتجنب تقسيم الكود المسيّج. الإعدادات الرئيسية:
  • agents.defaults.blockStreamingDefault ‏(on|off، والافتراضي 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 والإعدادات الافتراضية لكل قناة
التفاصيل: Configuration ووثائق القنوات.

ذو صلة