Sessions and memory

إدارة الجلسات

ينظّم OpenClaw المحادثات في جلسات. تُوجَّه كل رسالة إلى جلسة بناءً على مصدرها -- الرسائل المباشرة، محادثات المجموعات، مهام Cron، وما إلى ذلك.

كيفية توجيه الرسائل

المصدر السلوك
الرسائل المباشرة جلسة مشتركة افتراضيًا
محادثات المجموعات معزولة لكل مجموعة
الغرف/القنوات معزولة لكل غرفة
مهام Cron جلسة جديدة لكل تشغيل
Webhooks معزولة لكل Hook

عزل الرسائل المباشرة

افتراضيًا، تشارك كل الرسائل المباشرة جلسة واحدة للحفاظ على الاستمرارية. هذا مناسب لإعدادات المستخدم الواحد.

الإصلاح:

json5
{  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 حدود تخزين الجلسات تلقائيًا بمرور الوقت. افتراضيًا، يعمل بوضع enforce ويطبّق التنظيف أثناء الصيانة. اضبط session.maintenance.mode على "warn" للإبلاغ عما كان سيُنظَّف من دون تعديل المخزن/الملفات:

json5
{  session: {    maintenance: {      mode: "enforce",      pruneAfter: "30d",      maxEntries: 500,    },  },}

بالنسبة لحدود maxEntries بحجم الإنتاج، تستخدم كتابات وقت تشغيل Gateway مخزنًا مؤقتًا صغيرًا للحد الأعلى وتنظف على دفعات حتى تعود إلى الحد المضبوط. لا تقلّم قراءات مخزن الجلسات الإدخالات أو تحدّها أثناء بدء تشغيل Gateway. يتجنب هذا تشغيل تنظيف كامل للمخزن عند كل بدء تشغيل أو جلسة Cron معزولة. يطبّق openclaw sessions cleanup --enforce الحد فورًا.

تكون جلسات فحص تشغيل نموذج Gateway قصيرة العمر افتراضيًا. تستخدم الصفوف المطابقة ذات المفاتيح الصريحة الصارمة مثل agent:*:explicit:model-run-<uuid> احتفاظًا ثابتًا لمدة 24h، لكن التنظيف مشروط بالضغط: لا يزيل صفوف الفحص القديمة إلا عندما يُبلَغ ضغط صيانة/حد إدخالات الجلسة. عند تشغيل تنظيف تشغيل النموذج، يعمل قبل حد عمر الإدخالات القديمة الأوسع وحد الإدخالات. لا ترث جلسات direct وgroup وthread وcron وhook وheartbeat وACP والوكلاء الفرعيين العادية هذا الاحتفاظ لمدة 24 ساعة.

تحافظ الصيانة على مؤشرات المحادثات الخارجية الدائمة، بما في ذلك جلسات المجموعات وجلسات الدردشة المحصورة بالخيط، مع استمرار السماح لإدخالات 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 -- ما يوجد في موجه النظام.

قراءة إضافية

ذو صلة

Was this useful?
On this page

On this page