AI Agents · درس

الذاكرة العرضية (سجل كل جلسة)

سجلات لكل محادثة عمّا حدث، مفهرسة حسب الوقت ومعرّف الجلسة.

الدرس 1 من 415 خطوة

الذاكرة العرضية (سجل كل جلسة) درس مجاني في AI Agents على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Agents، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Agents 4 دروس في المجموع.

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

ثلاثة أنواع من الذاكرة

تُقسَّم ذاكرة الوكيل عادةً، استلهامًا من العلوم المعرفية، إلى ثلاثة أنواع:

  • الحدثية — ما حدث (هذه المحادثة، جلسة الأسبوع الماضي)
  • الدلالية — حقائق عن العالم / المستخدم
  • الإجرائية — المهارات (تسلسلات الإجراءات الناجحة)

يتناول هذا الدرس الذاكرة الحدثية.

ما الذاكرة الحدثية؟

تخزّن الذاكرة الحدثية أحداثًا محددة مع طوابع زمنية وسياق. وبالنسبة إلى الوكيل، يمثل ذلك سجل المحادثة الخاص بكل جلسة.

وهي أبسط أشكال الذاكرة وأسهلها بناءً.

نموذج البيانات

صف واحد لكل دور أو لكل جلسة:

CREATE TABLE episodes (
    id BIGSERIAL PRIMARY KEY,
    user_id TEXT NOT NULL,
    session_id TEXT NOT NULL,
    role TEXT NOT NULL,        -- system/user/assistant/tool
    content TEXT NOT NULL,
    created_at TIMESTAMPTZ DEFAULT NOW(),
    metadata JSONB
);

Saving Each Turn

def save_turn(user_id, session_id, role, content, metadata=None):
    conn.execute('''
        INSERT INTO episodes (user_id, session_id, role, content, metadata)
        VALUES (%s, %s, %s, %s, %s::jsonb)
    ''', (user_id, session_id, role, content, json.dumps(metadata or {})))

Loading a Session

def load_session(session_id):
    rows = conn.execute('SELECT role, content FROM episodes WHERE session_id = %s ORDER BY id', (session_id,))
    return [{'role': r[0], 'content': r[1]} for r in rows]

السجل عبر جلسات متعددة

قد تحتاج أحيانًا إلى سياق من جلسات سابقة للمستخدم نفسه — مثلًا: «ماذا سألت Alice أمس؟»:

def recent_sessions(user_id, n=5):
    rows = conn.execute('''
        SELECT DISTINCT session_id, MIN(created_at) AS started
        FROM episodes WHERE user_id = %s
        GROUP BY session_id ORDER BY started DESC LIMIT %s
    ''', (user_id, n))
    return [r[0] for r in rows]

تضمين الجلسات السابقة

لاسترجاع الأحداث القديمة حسب الموضوع، أنشئ تضمينًا لملخص كل جلسة:

def index_session(session_id):
    summary = summarise(load_session(session_id))
    vec = embed(summary)
    save_to_vector_db(session_id, vec, summary)

استرجاع الذاكرة الحدثية

عندما يسأل المستخدم «ما الذي ناقشناه عن الأسعار الأسبوع الماضي؟»، ابحث باستخدام التضمين:

def search_episodes(user_id, query):
    qvec = embed(query)
    candidates = vector_db.query(qvec, k=10, filter={'user_id': user_id})
    return [load_session(c.id) for c in candidates]

الخصوصية والاحتفاظ

تحتوي السجلات الحدثية على قدر كبير من PII. طبّق ما يلي:

  • التشفير أثناء التخزين
  • الحذف لكل مستخدم عند إغلاق الحساب
  • الحذف التلقائي بعد N يومًا
  • إخفاء الهوية أو استخدام أسماء مستعارة قبل إجراء أي تحليلات

ضغط الأحداث القديمة

احتفظ بالأدوار الحديثة حرفيًا، واضغط الأدوار الأقدم في ملخصات:

if session_age_days > 30:
    summary = summarise(load_session(sid))
    conn.execute('UPDATE episodes SET content = %s WHERE session_id = %s', (summary, sid))
    conn.execute('DELETE FROM episodes WHERE session_id = %s AND created_at < NOW() - INTERVAL \'1 day\'', (sid,))

الذاكرة الحدثية مقابل السياق قصير الأمد

قصير الأمد = قائمة الرسائل الحالية (ما يراه النموذج الآن). حدثي = قاعدة البيانات — قابلة للبحث، ومستديمة، وأكبر حجمًا.

ربط الذاكرة الحدثية بأنواع الذاكرة الأخرى

يمكنك استخراج ما يلي من حدث:

  • حقائق دلالية («يفضّل المستخدم مقياس Celsius»)
  • مهارات إجرائية (تسلسل استدعاءات الأدوات الذي نجح)

وتغذي هذه العناصر نوعَي الذاكرة الآخرين.

إعادة التشغيل للتقييم

احفظ الأحداث الخام حتى تتمكن من إعادة تشغيلها. وعندما تغيّر الوكيل، أعد تشغيل الأحداث القديمة وتحقق من أن المخرج الجديد لا يزال جيدًا.

ما المقصود بالذاكرة الحدثية؟

ماذا تخزّن الذاكرة الحدثية؟

مراجعة

الذاكرة الحدثية = سجلات جلسات ذات طوابع زمنية في DB. يمكن البحث فيها حسب المستخدم أو الجلسة أو التضمين. اضغط السجلات القديمة. ومرّرها إلى الذاكرة الدلالية والإجرائية.

البدء مجانًا

تعلم AI Agents مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
60
الدروس
239

الأسئلة الشائعة

هل درس «الذاكرة العرضية (سجل كل جلسة)» مجاني؟

نعم — نص درس «الذاكرة العرضية (سجل كل جلسة)» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Agents، انتقل إلى CoddyKit PRO. تتضمن دورة AI Agents 4 دروس في المجموع.

ماذا ستتعلم في «الذاكرة العرضية (سجل كل جلسة)»؟

سجلات لكل محادثة عمّا حدث، مفهرسة حسب الوقت ومعرّف الجلسة. تتمرن على AI Agents مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ AI Agents؟

لا تُشترط خبرة سابقة. AI Agents على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «الذاكرة العرضية (سجل كل جلسة)»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس AI Agents هذا؟

نعم. كل درس في AI Agents يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الذاكرة العرضية (سجل كل جلسة)
  2. الذاكرة الدلالية (حقائق متجهة)
  3. الذاكرة الإجرائية (مكتبة المهارات)
  4. اضمحلال الذاكرة وجمع القمامة
← العودة إلى AI Agents