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) لكنه لا يتضمن إنشاء الوكلاء الفرعيين. للاحتفاظ بملف تعريف مراسلة مع السماح بالتفويض الأصلي، أضف:

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

لا تزال سياسات المجموعة، والمزود، ووضع الحماية، والسياسات الخاصة بكل وكيل قادرة على إزالة تلك الأدوات بعد مرحلة ملف التعريف. استخدم /tools من الجلسة المتأثرة لفحص قائمة الأدوات الفعلية.

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

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

يجلب sessions_history نص المحادثة لجلسة محددة. افتراضيًا، تُستبعد نتائج الأدوات -- مرر includeTools: true لرؤيتها. استخدم limit للحصول على أحدث ذيل محدود. مرر offset: 0 عندما تحتاج إلى بيانات تعريف الترقيم، ثم مرر قيم nextOffset المعادة للتنقل للخلف عبر نوافذ نصوص OpenClaw الأقدم دون قراءة ملفات النص الخام. لا تدمج صفحات الإزاحة الصريحة واردات الرجوع الاحتياطية الخارجية لـ CLI؛ استخدم عرض أحدث ذيل الافتراضي عندما تحتاج إلى سجل العرض المدمج هذا. العرض المعاد محدود ومفلتر للسلامة عمدًا:

  • يتم تطبيع نص المساعد قبل الاستدعاء:
    • تزال وسوم التفكير
    • تزال كتل السقالة <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 كتفريغ خام.

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

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

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

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

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

بعد أن يرد الهدف، يستطيع OpenClaw تشغيل حلقة رد عكسي يتبادل فيها الوكلاء الرسائل (حتى session.agentToAgent.maxPingPongTurns، النطاق 0-20، الافتراضي 5). يمكن للوكيل الهدف الرد بـ REPLY_SKIP للإيقاف مبكرًا.

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

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

عندما تتوفر بيانات تعريف المسار، يتضمن session_status أيضًا كتلة JSON مرئية لـ Route context وحقول details منظمة مطابقة. تزيل هذه الحقول الالتباس بين مفتاح الجلسة والمسار الذي يعالج التشغيل الحي حاليًا:

  • origin هو المكان الذي أُنشئت فيه الجلسة، أو المزود المستنتج من بادئة مفتاح جلسة قابل للتسليم عندما تفتقر الحالة الأقدم إلى بيانات تعريف المصدر المخزنة.
  • active هو مسار التشغيل الحي الحالي. لا يُبلغ عنه إلا للجلسة الحية أو الحالية التي تُعالج الآن.
  • deliveryContext هو مسار التسليم المستمر المخزن في الجلسة، والذي يستطيع OpenClaw إعادة استخدامه للتسليم لاحقًا حتى عندما يختلف السطح النشط.

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

subagents هو مساعد الرؤية للوكلاء الفرعيين في OpenClaw الذين أُنشئوا بالفعل. يدعم action: "list" لفحص عمليات التشغيل النشطة/الحديثة.

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

ينشئ sessions_spawn افتراضيًا جلسة معزولة لمهمة في الخلفية. وهو دائمًا غير حاجب -- إذ يعود فورًا مع runId وchildSessionKey. تتلقى عمليات تشغيل الوكلاء الفرعيين الأصلية المهمة المفوضة في أول رسالة مرئية [Subagent Task] في الجلسة الفرعية، بينما تحمل مطالبة النظام قواعد وقت تشغيل الوكيل الفرعي وسياق التوجيه فقط.

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

  • 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 بغض النظر عن التكوين.

قراءة إضافية

ذو صلة

Was this useful?
On this page

On this page