يوجّه OpenClaw كل رسالة واردة إلى جلسة بناءً على مصدرها:
الرسائل الخاصة، والمحادثات الجماعية، ومهام Cron، وما إلى ذلك. يمتلك
Gateway حالة الجلسة بالكامل؛ وتستعلم عملاء واجهة المستخدم من Gateway عن بيانات الجلسة.
كيفية توجيه الرسائل
عزل الرسائل الخاصة
افتراضيًا، تشترك جميع الرسائل الخاصة في جلسة واحدة لضمان الاستمرارية، وهو أمر مناسب
للإعدادات ذات المستخدم الواحد.
إذا كان بإمكان عدة أشخاص مراسلة وكيلك، ففعّل عزل الرسائل الخاصة. من دونه، يشترك جميع
المستخدمين في سياق المحادثة نفسه، وبالتالي ستكون رسائل أليس الخاصة
مرئية لبوب.
خيارات session.dmScope:
إذا تواصل معك الشخص نفسه عبر قنوات متعددة، فاستخدم
session.identityLinks لربط هوياته بمعرّف نظير أساسي واحد كي
يشترك في جلسة واحدة.
إرساء القنوات المرتبطة
تنقل أوامر الإرساء مسار رد جلسة المحادثة المباشرة الحالية إلى قناة
مرتبطة أخرى من دون بدء جلسة جديدة. راجع
إرساء القنوات للاطلاع على الأمثلة والإعداد
واستكشاف الأخطاء وإصلاحها.
تحقق من إعدادك باستخدام openclaw security audit.
دورة حياة الجلسة
يُعاد استخدام الجلسات حتى تنتهي صلاحيتها وفقًا لـ session.reset:
- إعادة الضبط اليومية (الافتراضي
mode: "daily") - جلسة جديدة عند ساعة محلية
مضبوطة (session.reset.atHour، الافتراضي 4، 0-23) على مضيف Gateway. تعتمد
الحداثة اليومية على وقت بدء sessionId الحالي، لا على عمليات كتابة
بيانات التعريف اللاحقة.
- إعادة الضبط عند الخمول (
mode: "idle") - جلسة جديدة بعد session.reset.idleMinutes
من عدم النشاط. تعتمد حداثة الخمول على آخر تفاعل فعلي للمستخدم/القناة،
ولذلك لا تُبقي أحداث نظام Heartbeat وCron والتنفيذ
الجلسة نشطة.
- إعادة الضبط اليدوية - اكتب
/new أو /reset في المحادثة. ويؤدي /new <model> أيضًا
إلى تبديل النموذج.
عند ضبط إعادة الضبط اليومية وإعادة الضبط عند الخمول معًا، تُطبّق التي تنتهي أولًا.
قد تكتب أدوار Heartbeat وCron والتنفيذ وأحداث النظام الأخرى بيانات تعريف الجلسة،
لكن عمليات الكتابة هذه لا تمدد حداثة إعادة الضبط اليومية أو عند الخمول. عندما تؤدي إعادة الضبط
إلى تدوير الجلسة، تُحذف إشعارات أحداث النظام الموضوعة في قائمة الانتظار للجلسة القديمة
حتى لا تُضاف تحديثات الخلفية القديمة في بداية الموجّه الأول في
الجلسة الجديدة.
لا تُقطع الجلسات التي تتضمن جلسة CLI نشطة مملوكة لمزوّد بواسطة الإعداد اليومي
الافتراضي الضمني. استخدم /reset أو اضبط session.reset صراحةً عندما ينبغي
أن تنتهي صلاحية تلك الجلسات وفق مؤقت.
تجاوز الإعداد الافتراضي حسب نوع المحادثة أو القناة:
يدعم resetByType القيم direct (الاسم البديل القديم dm) وgroup وthread.
لا يزال session.idleMinutes القديم في المستوى الأعلى يعمل بوصفه اسمًا بديلًا للتوافق لإعداد
افتراضي لوضع الخمول عندما لا تكون كتلة session.reset/resetByType مضبوطة.
مكان تخزين الحالة
- صفوف جلسات وقت التشغيل:
~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite
- ملفات نصوص المحادثات المؤرشفة:
~/.openclaw/agents/<agentId>/sessions/
- مصدر ترحيل الصفوف القديمة:
~/.openclaw/agents/<agentId>/sessions/sessions.json
تحتفظ صفوف الجلسات في قاعدة بيانات SQLite الخاصة بكل وكيل بطوابع زمنية منفصلة
لدورة الحياة:
sessionStartedAt: وقت بدء sessionId الحالي؛ تستخدمه إعادة الضبط اليومية.
lastInteractionAt: آخر تفاعل للمستخدم/القناة يمدد مدة الخمول.
updatedAt: آخر تعديل لصف المخزن؛ مفيد لإعداد القوائم والتنظيف، لكنه ليس
المرجع المعتمد لحداثة إعادة الضبط اليومية/عند الخمول.
أثناء الترحيل من التثبيتات الأقدم، يستورد بدء تشغيل Gateway وopenclaw doctor --fix صفوف sessions.json القديمة وسجل نصوص المحادثات النشط بتنسيق JSONL إلى
SQLite تلقائيًا. تُستخلص الصفوف التي لا تحتوي على sessionStartedAt من
ترويسة جلسة نص المحادثة القديم بتنسيق JSONL عند توفرها. وإذا كان صف أقدم
يفتقر أيضًا إلى lastInteractionAt، فتعود حداثة الخمول إلى وقت بدء تلك الجلسة،
لا إلى عمليات كتابة مسك الدفاتر اللاحقة. استخدم openclaw doctor --session-sqlite inspect --session-sqlite-all-agents وتسلسل ترحيل
Doctor عندما تريد فحصًا صريحًا
أو دليل تحقق.
صيانة الجلسات
يحدّ OpenClaw من تخزين الجلسات بمرور الوقت عبر session.maintenance، وتظهر
القيم الافتراضية أدناه:
بالنسبة إلى حدود maxEntries بحجم بيئات الإنتاج، تستخدم عمليات كتابة Gateway وقت التشغيل مخزنًا مؤقتًا صغيرًا
لعلامة الحد الأعلى، ثم تنظّف على دفعات وصولًا إلى الحد الأقصى المضبوط.
لا تنظّف قراءات مخزن الجلسات الإدخالات ولا تفرض حدًا أقصى عليها أثناء بدء تشغيل Gateway، ولذلك
لا تتحمل جلسات بدء التشغيل وجلسات Cron المعزولة كلفة تنظيف المخزن بالكامل.
يطبّق openclaw sessions cleanup --enforce الحد الأقصى فورًا.
جلسات فحص تشغيل النموذج في Gateway قصيرة العمر افتراضيًا. تستخدم الصفوف المطابقة
لـ agent:*:explicit:model-run-<uuid> مدة احتفاظ ثابتة قدرها 24h، لكن التنظيف
مشروط بالضغط: فلا يزيل صفوف الفحص القديمة إلا عند بلوغ ضغط
صيانة/حد إدخالات الجلسات، ويُشغّل قبل حد العمر الأوسع
للإدخالات القديمة وقبل حد الإدخالات. لا ترث جلسات الرسائل المباشرة والمجموعات والسلاسل وCron والخطافات وHeartbeat
وACP والوكلاء الفرعيين العادية مدة الاحتفاظ هذه البالغة 24h.
تحافظ الصيانة على مؤشرات المحادثات الخارجية الدائمة، بما في ذلك جلسات المجموعات
وجلسات المحادثة ذات نطاق السلسلة، مع السماح في الوقت نفسه لإدخالات Cron
والخطافات وHeartbeat وACP والوكلاء الفرعيين الاصطناعية بانتهاء عمرها.
إذا سبق أن استخدمت عزل الرسائل الخاصة ثم أعدت session.dmScope لاحقًا إلى
main، فعاين صفوف الرسائل الخاصة القديمة ذات المفاتيح المرتبطة بالنظير باستخدام
openclaw sessions cleanup --dry-run --fix-dm-scope. يؤدي تطبيق العلامة نفسها
إلى إيقاف صفوف الرسائل الخاصة المباشرة القديمة مع الاحتفاظ بنصوص محادثاتها كأرشيفات
محذوفة.
عاين أي عملية صيانة باستخدام openclaw sessions cleanup --dry-run.
فحص الجلسات
قراءة إضافية
ذو صلة