الجلسات
الجلسة هي سياق محادثة محدود. تمتلك تاريخ الرسائل، والملف الشخصي المختار، وحالة مسار النموذج، والموافقات المحددة بالجلسة، وأي مؤشرات سطح نشطة. الجلسات ليست كتل سياق عالمية؛ هي معزولة لكل ملف شخصي ويجب ربطها صراحةً إذا كنت تريد أن تشاركها القنوات.
تشرح هذه الصفحة ما تملكه الجلسة، وكيفية الانتقال بين الجلسات، وما يحدث عند انحراف الجلسات.
ما تملكه الجلسة
| الحالة | المالك | الملاحظات |
|---|---|---|
| تاريخ المحادثة | الجلسة | مخزن في قاعدة بيانات الجلسة تحت الملف الشخصي النشط |
| الملف الشخصي المختار | الجلسة | الملف الشخصي النشط عند إنشاء الجلسة |
| تجاوز مسار النموذج | الجلسة | مُعيَّن عبر /model <provider>/<model> |
| الموافقات المحددة بالجلسة | الجلسة | الموافقات الممنوحة بنطاق session تنتهي عند انتهاء الجلسة |
| مؤشرات السطح | الجلسة | روابط من القنوات (Telegram، Discord، إلخ) إلى هذه الجلسة |
لا تمتلك الجلسات ملفات ذاكرة دائمة. USER.md، MEMORY.md، و SOUL.md تخص الملف الشخصي. لا تمتلك الجلسات ثقة مساحة العمل أو حالة cron. هذه أيضًا مخصصة للملف الشخصي.
عزل الجلسة
الجلسات منفصلة افتراضيًا. جلسة CLI وجلسة Telegram لنفس المستخدم لا تشاركان السياق تلقائيًا. إذا كنت تريد أن يستمر دردشة Telegram في جلسة CLI، يجب عليك ربطها صراحةً.
عزل الملف الشخصي صارم. جلسة تم إنشاؤها تحت الملف الشخصي work لا يمكنها رؤية الجلسات التي تم إنشاؤها تحت الملف الشخصي personal، حتى لو كانا على نفس الجهاز. تشترك الجلسات في ملف sessions.sqlite العام، لكن كل وصول محدد بواسطة profile_id.
الاستخدام والإنفاق
بعد كل دور ظاهر، تنسب واجهة CLI الإنفاق التقديري لدى موفر النموذج إلى الوكيل الرئيسي، والنماذج المساعدة، والعمل المفوض، وإجمالي الدور. إذا ظل العمال المفوضون نشطين، توسم القيم بأنها «حتى الآن» وتستمر في التحديث من سجلات الاستخدام الدائمة. يعرض شريط حالة الجلسة المبلغ المتراكم للجلسة، وعند ضبط حد للإنفاق يعرض الحد والسعة المحجوزة حاليًا.
حدود المهمة والجلسة ضوابط مالية؛ وتبقى أعداد الرموز تفاصيل استخدام للقراءة فقط. تشمل التكلفة التقديرية الإخفاقات المدفوعة، وإعادات المحاولة، والمسارات الاحتياطية، والتوليف، والاستدعاءات المساعدة، والمهام الفرعية. عندما تكون بيانات التسعير أو الاستخدام غير مكتملة، تعرض الواجهة المبلغ على أنه جزئي أو غير متاح بدل إظهار صفر غير موثوق.
تعني $0.00 دائمًا أن الصفر مسجل. تظهر القيمة التقديرية المكتملة مثل $0.42، ويظهر الحد الأدنى المعروف بصيغة «على الأقل $0.42» مع توضيح لتعذر بعض معلومات التسعير، وتعني «غير متاح» أن EstaCoda لا تستطيع عرض قيمة مالية موثوقة. تستخدم أشرطة الحالة المدمجة الصيغة ≥ $0.42 للحالة الجزئية نفسها.
أوامر الجلسة
# إدراج الجلسات الحديثة مع الأسطح المرتبطة
estacoda sessions list
# عرض تفاصيل الجلسة ومؤشرات السطح
estacoda sessions show <session-id>
# الجلسة الحالية لوقت التشغيل
estacoda sessions current
# ربط سطح بجلسة
estacoda sessions attach <surface> <id> <session-id>
# فصل سطح عن جلسة
estacoda sessions detach <surface> <id>
# تلخيص تطابقات الجلسة التاريخية
estacoda sessions recall <query>
# ضغط تاريخ الجلسة يدويًا
estacoda sessions compact <session-id> [--topic <topic>]
الأسطح الصالحة: cli، telegram، discord، whatsapp، email.
sessions recall هو استذكار تاريخي محدود. هو مخصص للملف الشخصي ولمساحة العمل عندما تكون بيانات تعريف مساحة العمل متوفرة. المحتوى المستذكر مسمى كسياق غير موثوق ولا يمكنه تجاوز التعليمات الحالية.
sessions compact هو ضغط دلالي للجلسة. يضغط التاريخ الأقدم للجلسة المستهدفة. هو غير دوار في هذا التنفيذ؛ لا ينشئ أو يتبنى جلسة فرعية مضغوطة. /compact في البوابة له منطق دوران منفصل.
ضوابط الجلسة التفاعلية
داخل جلسة CLI نشطة:
| الأمر | الغرض |
|---|---|
/sessions | إدراج الجلسات النشطة |
/switch <session-id> | الانتقال إلى جلسة أخرى |
/new | بدء جلسة جديدة |
/reset | بدء جلسة جديدة |
تدعم قنوات البوابة مجموعة فرعية من أوامر الجلسة:
| الأمر | الغرض |
|---|---|
/sessions | إدراج الجلسات الحديثة |
/switch <session-id> | الانتقال إلى جلسة مختلفة |
/attach <code> | الربط بجلسة CLI عبر رمز التسليم |
/detach | الفصل عن الجلسة الحالية وإنشاء جلسة جديدة |
/new | إنشاء جلسة جديدة |
/reset | إعادة تعيين الجلسة الحالية |
/attach <code> يستخدم رمز تسليم قصير العمر لمرة واحدة يتم إنشاؤه في CLI. الرمز هو Crockford base-32، 6 أحرف، TTL 10 دقائق. الفشل في الاسترداد يرجع رسالة عامة؛ لا يتم تسريب معرف الجلسة.
/detach ينشئ جلسة مستقلة جديدة لهذا السطح. لا يدمج التواريخ أو الرسائل.
الإنهاء في الخلفية
يجب أن يبدو بدء جلسة جديدة فوريًا. مع /new و/reset في CLI، تنشئ EstaCoda runtime جديدة أولًا، ثم تضيف الجلسة القديمة بشكل دائم إلى طابور تنظيم الذاكرة. تستخدم /exit وCtrl+C أثناء الخمول و/new أو /reset في القنوات المصرح بها وprompts أحادية التشغيل الناجحة الطابور نفسه. يلغي Ctrl+C أثناء دور نشط الدور الحالي فقط ولا ينهي الجلسة.
ينتظر المستخدم فقط تثبيت صف الطابور، لا استخراج النموذج أو كتابة الذاكرة. إذا فشلت الإضافة، يظهر تحذير محدود واحد من دون تأخير الجلسة الجديدة أو الخروج. تعالج خدمة بوابة مدارة للملف الشخصي المحدد المهمة في الخلفية، ويعرض الإعداد الأول تشغيل هذه الخدمة حتى عند عدم ضبط أي قناة. إذا لم تكن الخدمة قيد التشغيل، تبقى المهمة في ~/.estacoda/sessions.sqlite العامة حتى تعمل البوابة مرة أخرى.
يلتقط الإنهاء حدًا ثابتًا لآخر رسالة ويستخدم مساحة العمل المسجلة في الجلسة الأصلية. لا يمكن أن يشمل رسائل أضيفت لاحقًا إلى جلسة مستأنفة أو أن يرث مساحة عمل أخرى من خدمة البوابة، ولا تكرر بيانات الطابور نص المحادثة. افحص الأعداد عبر estacoda memory status أو estacoda gateway status، واستخدم أوامر estacoda memory finalization list وretry وprune للاسترداد المحلي.
الحالة والملفات
حفظ الجلسات عام لكنه محدد بالملف الشخصي:
~/.estacoda/
sessions.sqlite # جلسات ورسائل وأحداث وطابور إنهاء في SQLite
cli-sessions.json # مؤشرات جلسة CLI النشطة حسب مساحة العمل
قاعدة بيانات الجلسة هي SQLite. تحمل صفوف الجلسة والإنهاء نطاق profile_id؛ ولا يسمح الموقع العام بالقراءة بين الملفات الشخصية. تخزن الرسائل والأحداث وحالة الضغط وبيانات الإنهاء الخلفي الدائمة. تبقى مؤشرات السطح في حالة البوابة المحلية للملف الشخصي. إذا كانت قاعدة بيانات الجلسة مفقودة أو تالفة، لا يمكن إدراج الجلسات أو استذكارها أو استئنافها.
أوضاع الفشل
جلسة قديمة: جلسة مستأنفة من cli-sessions.json قد تشير إلى ملف شخصي أو مساحة عمل قديمة. إذا تغير الملف الشخصي، قد تحمل الجلسة سياقًا قديمًا. استخدم /reset أو estacoda sessions current للفحص.
ملف شخصي خاطئ: الجلسات مخصصة للملف الشخصي. إذا قمت بتبديل الملفات الشخصية باستخدام estacoda profile use <name>، لم تعد الجلسات الموجودة من الملف الشخصي السابق مرئية. لم يتم حذفها؛ هي تخص الملف الشخصي الآخر.
جلسة مفقودة: إذا كان معرف الجلسة غير موجود في قاعدة بيانات جلسة الملف الشخصي الحالي، ترجع الأوامر session not found. تحقق من estacoda sessions list وتحقق من الملف الشخصي النشط.
مشاكل قاعدة بيانات الجلسة: إذا كانت sessions.sqlite تالفة أو مقفلة، تفشل أوامر الجلسة. قد يتراجع CLI إلى جلسة في الذاكرة. في هذه الحالة، الاستمرارية والاستذكار والربط/الفصل والإنهاء الموجود في الطابور غير متاحة. أعد تشغيل CLI وتحقق من أذونات الملف.
عدم تطابق الربط/الفصل: ربط سطح بجلسة لا يدمج التواريخ. يعني فقط أن الرسائل المستقبلية من هذا السطح تذهب إلى هذه الجلسة. إذا كنت تتوقع سياقًا مدموجًا، لن تحصل عليه.
الفحص والاسترداد
# التحقق من الملف الشخصي النشط
estacoda profile show
# إدراج الجلسات لهذا الملف الشخصي
estacoda sessions list
# فحص الجلسة الحالية
estacoda sessions current
# الانتقال إلى جلسة معروفة جيدة
/switch <session-id>
# البدء من جديد إذا كان السياق تالفًا
/reset
مرتبطات
- CLI — حلقة الجلسة التفاعلية وأوامر الشرطة المائلة
- الملفات الشخصية — حدود الملف الشخصي والتبديل
- الذاكرة — ملفات الذاكرة الدائمة مقابل سياق الجلسة
- القنوات — تكوين القناة ومؤشرات السطح