Sessions and memory

أدوات الجلسة

OpenClaw يمنح الوكلاء أدوات للعمل عبر الجلسات، وفحص الحالة، و تنسيق الوكلاء الفرعيين.

الأدوات المتاحة

الأداة ما تفعله
sessions_list سرد الجلسات مع مرشحات اختيارية (النوع، التصنيف، الوكيل، الحداثة، المعاينة)
sessions_history قراءة سجل المحادثة لجلسة محددة
sessions_send إرسال رسالة إلى جلسة أخرى والانتظار اختياريًا
sessions_spawn إنشاء جلسة وكيل فرعي معزولة للعمل في الخلفية
sessions_yield إنهاء الدور الحالي والانتظار لنتائج متابعة الوكيل الفرعي
subagents سرد الوكلاء الفرعيين المنشئين لهذه الجلسة أو توجيههم أو إيقافهم
session_status عرض بطاقة بأسلوب /status وتعيين تجاوز للنموذج لكل جلسة اختياريًا

تظل هذه الأدوات خاضعة لملف تعريف الأدوات النشط وسياسة السماح/المنع. يتضمن tools.profile: "coding" مجموعة تنسيق الجلسات الكاملة، بما في ذلك sessions_spawn وsessions_yield وsubagents. ويتضمن tools.profile: "messaging" أدوات المراسلة عبر الجلسات (sessions_list وsessions_history وsessions_send وsession_status) لكنه لا يتضمن إنشاء الوكلاء الفرعيين. للاحتفاظ بملف تعريف مراسلة مع الاستمرار في السماح بالتفويض الأصلي، أضف:

{
  tools: {
    profile: "messaging",
    alsoAllow: ["sessions_spawn", "sessions_yield", "subagents"],
  },
}

يمكن لسياسات المجموعة والمزوّد وبيئة العزل والسياسات لكل وكيل أن تزيل هذه الأدوات بعد مرحلة ملف التعريف. استخدم /tools من الجلسة المتأثرة لفحص قائمة الأدوات الفعالة.

سرد الجلسات وقراءتها

يعيد sessions_list الجلسات مع مفتاحها وagentId والنوع والقناة والنموذج وعدادات الرموز والطوابع الزمنية. رشّح حسب النوع (main وgroup وcron وhook وnode) أو label المطابق تمامًا أو agentId المطابق تمامًا أو نص البحث أو الحداثة (activeMinutes). عندما تحتاج إلى فرز بأسلوب صندوق البريد، يمكنه أيضًا طلب عنوان مشتق بنطاق رؤية محدد، أو مقتطف معاينة لآخر رسالة، أو رسائل حديثة محدودة في كل صف. لا تُنتج العناوين والمُعاينات المشتقة إلا للجلسات التي يستطيع المستدعي رؤيتها أصلًا بموجب سياسة رؤية أدوات الجلسة المكوّنة، لذلك تبقى الجلسات غير ذات الصلة مخفية.

يجلب sessions_history سجل المحادثة لجلسة محددة. بشكل افتراضي، تُستبعد نتائج الأدوات؛ مرّر includeTools: true لرؤيتها. العرض المعاد محدود ومصفّى للسلامة عمدًا:

  • يُطبَّع نص المساعد قبل الاستدعاء:
    • تُزال وسوم التفكير
    • تُزال كتل البنية التمهيدية <relevant-memories> / <relevant_memories>
    • تُزال كتل حمولات XML لاستدعاءات الأدوات كنص عادي مثل <tool_call>...</tool_call>، و<function_call>...</function_call>، و<tool_calls>...</tool_calls>، و <function_calls>...</function_calls>، بما في ذلك الحمولات المقتطعة التي لا تُغلق بشكل سليم
    • تُزال البنية التمهيدية المخفّضة لاستدعاء/نتيجة الأداة مثل [Tool Call: ...]، و[Tool Result ...]، و[Historical context ...]
    • تُزال رموز التحكم المسرّبة للنموذج مثل <|assistant|>، ورموز ASCII الأخرى بشكل <|...|>، ومتغيرات العرض الكامل <|...|>
    • تُزال XML غير السليمة لاستدعاء أدوات MiniMax مثل <invoke ...> / </minimax:tool_call>
  • يُحجب النص الشبيه ببيانات الاعتماد/الرموز قبل إرجاعه
  • تُقتطع كتل النص الطويلة
  • يمكن للسجلات الكبيرة جدًا إسقاط الصفوف الأقدم أو استبدال صف زائد الحجم بـ [sessions_history omitted: message too large]
  • تُبلغ الأداة عن أعلام ملخصة مثل truncated وdroppedMessages وcontentTruncated وcontentRedacted وbytes

تقبل كلتا الأداتين إما مفتاح جلسة (مثل "main") أو معرّف جلسة من استدعاء سرد سابق.

إذا كنت تحتاج إلى السجل المطابق بايتًا ببايت، فافحص ملف السجل على القرص بدلًا من التعامل مع sessions_history كتص dump خام.

إرسال الرسائل عبر الجلسات

يوصل sessions_send رسالة إلى جلسة أخرى وينتظر الاستجابة اختياريًا:

  • إرسال دون انتظار: عيّن timeoutSeconds: 0 للإدراج في الطابور والعودة فورًا.
  • انتظار الرد: عيّن مهلة واحصل على الاستجابة ضمنيًا.

جلسات الدردشة محددة النطاق بالمحادثة، مثل مفاتيح Slack أو Discord التي تنتهي بـ :thread:<id>، ليست أهدافًا صالحة لـ sessions_send. استخدم مفتاح جلسة القناة الأصلية للتنسيق بين الوكلاء بحيث لا تظهر الرسائل الموجّهة عبر الأدوات داخل محادثة نشطة موجهة إلى البشر.

تُوسم الرسائل وردود متابعة A2A كبيانات بين الجلسات في موجه الاستقبال ([Inter-session message ... isUser=false]) وفي مصدر السجل. ينبغي للوكيل المستقبِل التعامل معها كبيانات موجّهة عبر الأداة، لا كتعليمة مباشرة كتبها المستخدم النهائي.

بعد أن يستجيب الهدف، يستطيع OpenClaw تشغيل حلقة رد راجع حيث يتبادل الوكلاء الرسائل بالتناوب (حتى 5 أدوار). يستطيع الوكيل الهدف الرد بـ REPLY_SKIP للتوقف مبكرًا.

مساعدات الحالة والتنسيق

session_status هي الأداة الخفيفة المكافئة لـ /status للجلسة الحالية أو لجلسة أخرى مرئية. تُبلغ عن الاستخدام والوقت وحالة النموذج/وقت التشغيل وسياق مهام الخلفية المرتبط عند وجوده. ومثل /status، يمكنها ملء عدادات الرموز/التخزين المؤقت المتناثرة من أحدث إدخال استخدام في السجل، كما أن model=default يمسح تجاوزًا لكل جلسة. استخدم sessionKey="current" للجلسة الحالية للمستدعي؛ التصنيفات المرئية للعملاء مثل openclaw-tui ليست مفاتيح جلسات.

ينهي sessions_yield الدور الحالي عمدًا بحيث يمكن أن تكون الرسالة التالية هي حدث المتابعة الذي تنتظره. استخدمه بعد إنشاء وكلاء فرعيين عندما تريد أن تصل نتائج الاكتمال كرسالة تالية بدلًا من بناء حلقات استطلاع.

subagents هو مساعد مستوى التحكم للوكلاء الفرعيين المنشئين مسبقًا في OpenClaw. وهو يدعم:

  • action: "list" لفحص التشغيلات النشطة/الحديثة
  • action: "steer" لإرسال إرشادات متابعة إلى طفل قيد التشغيل
  • action: "kill" لإيقاف طفل واحد أو all

إنشاء الوكلاء الفرعيين

ينشئ sessions_spawn جلسة معزولة لمهمة خلفية افتراضيًا. وهو دائمًا غير حاظر؛ يعود فورًا مع runId و childSessionKey.

الخيارات الرئيسية:

  • runtime: "subagent" (افتراضي) أو "acp" لوكلاء أحزمة التشغيل الخارجية.
  • تجاوزات model وthinking لجلسة الطفل.
  • thread: true لربط الإنشاء بمحادثة دردشة (Discord وSlack وما إلى ذلك).
  • sandbox: "require" لفرض العزل على الطفل.
  • context: "fork" للوكلاء الفرعيين الأصليين عندما يحتاج الطفل إلى سجل المستدعي الحالي؛ احذفه أو استخدم context: "isolated" لطفل نظيف. الوكلاء الفرعيون الأصليون المرتبطون بمحادثة يستخدمون context: "fork" افتراضيًا ما لم ينص threadBindings.defaultSpawnContext على خلاف ذلك.

لا تحصل الوكلاء الفرعيون الطرفيون الافتراضيون على أدوات جلسة. عندما يكون maxSpawnDepth >= 2، يتلقى الوكلاء الفرعيون المنسقون عند العمق 1 بالإضافة إلى ذلك sessions_spawn وsubagents وsessions_list وsessions_history حتى يتمكنوا من إدارة أطفالهم. لا تزال التشغيلات الطرفية لا تحصل على أدوات تنسيق عودية.

بعد الاكتمال، تنشر خطوة إعلان النتيجة في قناة المستدعي. يحافظ تسليم الاكتمال على توجيه المحادثة/الموضوع المرتبط عند توفره، وإذا كان أصل الاكتمال يحدد قناة فقط، فلا يزال بإمكان OpenClaw إعادة استخدام المسار المخزن لجلسة المستدعي (lastChannel / lastTo) للتسليم المباشر.

للسلوك الخاص بـ ACP، راجع وكلاء ACP.

الرؤية

تُحدَّد أدوات الجلسة بنطاق يقيّد ما يستطيع الوكيل رؤيته:

المستوى النطاق
self الجلسة الحالية فقط
tree الجلسة الحالية + الوكلاء الفرعيون المنشؤون
agent كل الجلسات لهذا الوكيل
all كل الجلسات (عبر الوكلاء إذا كان مكوّنًا)

الافتراضي هو tree. تُثبَّت الجلسات المعزولة عند tree بغض النظر عن الإعداد.

قراءة إضافية

ذو صلة