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

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

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

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

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,
      },
    },
  },
}
ملاحظات:
  • تنطبق التهدئة على الرسائل النصية فقط؛ أما الوسائط/المرفقات فتُرسل فورًا.
  • تتجاوز أوامر التحكم التهدئة لتبقى مستقلة. يمكن للقنوات التي تختار صراحةً تجميع الرسائل المباشرة من المرسل نفسه أن تُبقي أوامر الرسائل المباشرة داخل نافذة التهدئة حتى يتمكن payload المُرسل على دفعات من الانضمام إلى دور الوكيل نفسه.

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

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

بيانات نتائج الأدوات الوصفية

content في نتيجة الأداة هو النتيجة المرئية للنموذج. أما details في نتيجة الأداة فهي بيانات وصفية وقت التشغيل لعرض الواجهة، والتشخيصات، وتسليم الوسائط، وPlugins. يبقي OpenClaw هذا الحد فاصلًا بشكل صريح:
  • يُزال toolResult.details قبل إعادة تشغيل المزوّد وإدخال Compaction.
  • تحتفظ نصوص الجلسات المستمرة فقط ببيانات details محدودة؛ وتُستبدل البيانات الوصفية كبيرة الحجم بملخص مضغوط موسوم بـ persistedDetailsTruncated: true.
  • يجب على Plugins والأدوات وضع النص الذي يجب أن يقرأه النموذج في content، وليس فقط في details.

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

يفصل OpenClaw بين جسم الموجّه وجسم الأمر:
  • BodyForAgent: النص الأساسي الموجّه إلى النموذج للرسالة الحالية. يجب أن تبقي Plugins القنوات هذا النص مركّزًا على نص المرسل الحالي الحامل للموجّه.
  • Body: بديل قديم للموجّه. قد يتضمن أغلفة القناة وأغلفة سجل اختيارية، لكن يجب ألا تعتمد القنوات الحالية عليه كإدخال أساسي للنموذج عندما يكون BodyForAgent متاحًا.
  • 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).
  • الوضع الافتراضي هو steer، مع تهدئة متابعة قدرها 500ms عندما يعود التوجيه إلى تسليم متابعة موضوعة في قائمة الانتظار.
  • الأوضاع: steer وfollowup وcollect وsteer-backlog وinterrupt ووضع queue القديم الذي يعالج عنصرًا واحدًا في كل مرة.
التفاصيل: قائمة انتظار الأوامر وقائمة انتظار التوجيه.

ملكية تنفيذ القناة

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

البث، والتقسيم إلى أجزاء، والتجميع

يرسل بث الكتل ردودًا جزئية بينما ينتج النموذج كتلًا نصية. يحترم التقسيم إلى أجزاء حدود نص القناة ويتجنب تقسيم الشيفرات المسيّجة. الإعدادات الأساسية:
  • 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 بث الاستدلال إلى فقاعة مسودة مؤقتة تُحذف بعد التسليم النهائي؛ استخدم /reasoning on لإخراج استدلال دائم.
التفاصيل: توجيهات التفكير + الاستدلال واستخدام الرموز.

البادئات، وتسلسل الردود، والردود

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

الردود الصامتة

يعني رمز الصمت الدقيق NO_REPLY / no_reply: “لا تسلّم ردًا مرئيًا للمستخدم”. عندما يكون للدور أيضًا وسائط أدوات معلّقة، مثل صوت TTS مُولّد، يزيل OpenClaw النص الصامت لكنه يستمر في تسليم مرفق الوسائط. يحل OpenClaw هذا السلوك حسب نوع المحادثة:
  • تمنع المحادثات المباشرة الصمت افتراضيًا وتعيد كتابة الرد الصامت المجرّد إلى بديل قصير مرئي.
  • تسمح المجموعات/القنوات بالصمت افتراضيًا.
  • يسمح التنسيق الداخلي بالصمت افتراضيًا.
يستخدم OpenClaw أيضًا الردود الصامتة لإخفاقات المشغّل الداخلية التي تحدث قبل أي رد من المساعد في المحادثات غير المباشرة، حتى لا ترى المجموعات/القنوات نصوص أخطاء Gateway العامة. تعرض المحادثات المباشرة نص إخفاق موجزًا افتراضيًا؛ ولا تُعرض تفاصيل المشغّل الخام إلا عندما يكون /verbose مضبوطًا على on أو full. توجد الافتراضيات ضمن agents.defaults.silentReply وagents.defaults.silentReplyRewrite؛ ويمكن لـ surfaces.<id>.silentReply وsurfaces.<id>.silentReplyRewrite تجاوزها لكل سطح. عندما تكون للجلسة الأصلية عملية تشغيل واحدة أو أكثر لوكلاء فرعيين مولّدين معلّقة، تُسقط الردود الصامتة المجرّدة على جميع الأسطح بدلًا من إعادة كتابتها، حتى تبقى الجلسة الأصلية صامتة إلى أن يسلّم حدث اكتمال الطفل الرد الحقيقي.

ذات صلة