Sessions and memory
إدارة الجلسات
تنظم OpenClaw المحادثات في جلسات. تُوجَّه كل رسالة إلى جلسة بناءً على مصدرها -- الرسائل المباشرة، دردشات المجموعات، مهام Cron، وما إلى ذلك.
كيفية توجيه الرسائل
| المصدر | السلوك |
|---|---|
| الرسائل المباشرة | جلسة مشتركة افتراضيًا |
| دردشات المجموعات | معزولة لكل مجموعة |
| الغرف/القنوات | معزولة لكل غرفة |
| مهام Cron | جلسة جديدة لكل تشغيل |
| Webhooks | معزولة لكل Hook |
عزل الرسائل المباشرة
افتراضيًا، تشترك كل الرسائل المباشرة في جلسة واحدة للحفاظ على الاستمرارية. هذا مناسب لإعدادات المستخدم الواحد.
الإصلاح:
{
session: {
dmScope: "per-channel-peer", // isolate by channel + sender
},
}
خيارات أخرى:
main(افتراضي) -- تشترك كل الرسائل المباشرة في جلسة واحدة.per-peer-- عزل حسب المرسل (عبر القنوات).per-channel-peer-- عزل حسب القناة + المرسل (موصى به).per-account-channel-peer-- عزل حسب الحساب + القناة + المرسل.
إرساء القنوات المرتبطة
تتيح أوامر الإرساء للمستخدم نقل مسار الرد لجلسة الدردشة المباشرة الحالية إلى قناة مرتبطة أخرى دون بدء جلسة جديدة. راجع إرساء القنوات للاطلاع على الأمثلة والتكوين واستكشاف الأخطاء وإصلاحها.
تحقق من إعدادك باستخدام openclaw security audit.
دورة حياة الجلسة
تُعاد استخدام الجلسات إلى أن تنتهي صلاحيتها:
- إعادة تعيين يومية (افتراضي) -- جلسة جديدة عند الساعة 4:00 صباحًا بالتوقيت المحلي على مضيف Gateway. تستند حداثة اليوم إلى وقت بدء
sessionIdالحالي، وليس إلى عمليات كتابة البيانات الوصفية اللاحقة. - إعادة تعيين عند الخمول (اختياري) -- جلسة جديدة بعد فترة من عدم النشاط. اضبط
session.reset.idleMinutes. تستند حداثة الخمول إلى آخر تفاعل حقيقي من المستخدم/القناة، لذلك لا تُبقي أحداث نظام Heartbeat وCron وexec الجلسة نشطة. - إعادة تعيين يدوية -- اكتب
/newأو/resetفي الدردشة. كما أن/new <model>يبدّل النموذج.
عند تكوين كل من إعادة التعيين اليومية وإعادة التعيين عند الخمول، فإن أيهما تنتهي صلاحيته أولًا هو الذي يسري. قد تكتب دورات أحداث Heartbeat وCron وexec وغيرها من أحداث النظام بيانات وصفية للجلسة، لكن عمليات الكتابة هذه لا تمدد حداثة إعادة التعيين اليومية أو إعادة التعيين عند الخمول. عندما تؤدي إعادة التعيين إلى تدوير الجلسة، تُتجاهل إشعارات أحداث النظام في قائمة الانتظار للجلسة القديمة حتى لا تُضاف تحديثات الخلفية القديمة في بداية أول مطالبة في الجلسة الجديدة.
لا تُقطع الجلسات التي لديها جلسة CLI نشطة مملوكة للمزوّد بواسطة الإعداد الافتراضي اليومي
الضمني. استخدم /reset أو كوّن session.reset صراحةً عندما ينبغي أن
تنتهي صلاحية هذه الجلسات وفق مؤقت.
مكان تخزين الحالة
كل حالة الجلسة مملوكة لـ Gateway. تستعلم عملاء الواجهة عن Gateway للحصول على بيانات الجلسة.
- المخزن:
~/.openclaw/agents/<agentId>/sessions/sessions.json - النصوص:
~/.openclaw/agents/<agentId>/sessions/<sessionId>.jsonl
يحتفظ sessions.json بطوابع زمنية منفصلة لدورة الحياة:
sessionStartedAt: وقت بدءsessionIdالحالي؛ تستخدم إعادة التعيين اليومية هذا.lastInteractionAt: آخر تفاعل مستخدم/قناة يمدد مدة الخمول.updatedAt: آخر تعديل لصف المخزن؛ مفيد للإدراج والتنظيف، لكنه ليس مرجعًا حاسمًا لحداثة إعادة التعيين اليومية/عند الخمول.
تُحل الصفوف الأقدم التي لا تحتوي على sessionStartedAt من ترويسة جلسة JSONL
في النص عندما تكون متاحة. إذا كان صف أقدم يفتقر أيضًا إلى lastInteractionAt،
فإن حداثة الخمول تعود إلى وقت بدء تلك الجلسة، وليس إلى عمليات كتابة
مسك الدفاتر اللاحقة.
صيانة الجلسات
تحد OpenClaw تلقائيًا من تخزين الجلسات بمرور الوقت. افتراضيًا، تعمل
في وضع warn (تبلغ عمّا كان سيُنظف). اضبط session.maintenance.mode
على "enforce" للتنظيف التلقائي:
{
session: {
maintenance: {
mode: "enforce",
pruneAfter: "30d",
maxEntries: 500,
},
},
}
بالنسبة إلى حدود maxEntries بحجم الإنتاج، تستخدم عمليات كتابة وقت تشغيل Gateway مخزنًا مؤقتًا صغيرًا للحد الأعلى وتنظف نزولًا إلى السقف المكوّن على دفعات. لا تُنظف قراءات مخزن الجلسات الإدخالات أو تحدها أثناء بدء تشغيل Gateway. يتجنب هذا تشغيل تنظيف كامل للمخزن عند كل بدء تشغيل أو جلسة Cron معزولة. يطبق openclaw sessions cleanup --enforce السقف فورًا.
تحافظ الصيانة على مؤشرات المحادثات الخارجية الدائمة، بما في ذلك جلسات المجموعات وجلسات الدردشة ذات نطاق السلسلة، مع السماح في الوقت نفسه لإدخالات Cron وHook وHeartbeat وACP والوكلاء الفرعيين الاصطناعية بأن تتقادم وتُزال.
إذا كنت قد استخدمت سابقًا عزل الرسائل المباشرة ثم أعدت
session.dmScope إلى main، فاستعرض صفوف الرسائل المباشرة القديمة ذات مفاتيح الأقران باستخدام
openclaw sessions cleanup --dry-run --fix-dm-scope. يؤدي تطبيق العلامة نفسها
إلى تقاعد صفوف الرسائل المباشرة القديمة هذه والاحتفاظ بنصوصها كأرشيفات
محذوفة.
استعرض باستخدام openclaw sessions cleanup --dry-run.
فحص الجلسات
openclaw status-- مسار مخزن الجلسات والنشاط الأخير.openclaw sessions --json-- كل الجلسات (رشّح باستخدام--active <minutes>)./statusفي الدردشة -- استخدام السياق، والنموذج، ومفاتيح التبديل./context list-- ما يوجد في مطالبة النظام.
قراءة إضافية
- تنظيف الجلسات -- تقليم نتائج الأدوات
- Compaction -- تلخيص المحادثات الطويلة
- أدوات الجلسات -- أدوات الوكيل للعمل عبر الجلسات
- نظرة معمقة على إدارة الجلسات -- مخطط المخزن، والنصوص، وسياسة الإرسال، وبيانات المصدر الوصفية، والتكوين المتقدم
- تعدد الوكلاء — التوجيه وعزل الجلسات عبر الوكلاء
- مهام الخلفية — كيف يُنشئ العمل المنفصل سجلات مهام مع مراجع جلسات
- توجيه القنوات — كيف تُوجَّه الرسائل الواردة إلى الجلسات