أحمد حايس
الرئيسيةمن أناالدوراتالمدونةالعروض
أحمد حايس

دورات عربية متخصصة في التقنية والبرمجة والذكاء الاصطناعي.

المنصة مبنية على الوضوح، التطبيق، والنتيجة النافعة: شرح مرتب يساعدك تفهم الأدوات، تكتب كودًا أفضل، وتستخدم الذكاء الاصطناعي بوعي داخل العمل الحقيقي.

تعلم أسرعوصول مباشر للدورات والمسارات من الموبايل.
تنقل أوضحالروابط الأساسية والدعم في مكان واحد بدون تشتيت.

المنصة

  • الرئيسية
  • من أنا
  • الدورات
  • العروض
  • المدونة

الدعم

  • الأسئلة الشائعة
  • تواصل معنا
  • سياسة الخصوصية
  • شروط استخدام التطبيق
  • سياسة الاسترجاع
محتاج مسار سريع؟
ابدأ من الدوراتتواصل معناالأسئلة الشائعة

© 2026 أحمد حايس. جميع الحقوق محفوظة.

الرئيسيةالدوراتالعروضالمدونةالدخول
الذكاء الاصطناعي

ذاكرة AI Agents للمتوسط: 3 طبقات تخلّي Agent يفتكر مستخدمه بعد 6 شهور

📅 ١٠ مايو ٢٠٢٦⏱ 5 دقائق قراءة
ذاكرة AI Agents للمتوسط: 3 طبقات تخلّي Agent يفتكر مستخدمه بعد 6 شهور

هذا المقال يتطلّب مستوى متوسط في AI Engineering — لازم تكون مستخدم Claude API أو OpenAI API قبل كده، وعارف Vector DB يعمل إيه على المستوى المفاهيمي.

ذاكرة AI Agents: 3 طبقات تخلّي Agent يفتكر مستخدمه بعد 6 شهور

لو Agent بتاعك بيرحّب بنفس المستخدم كأنه شايفه أول مرة بعد 80 محادثة، المشكلة مش في Claude ولا في GPT-5. المشكلة إنك بتحط كل المحادثات في الـ context window وبتعتمد على إن النموذج يلاقي اللي يهمه — وده بيفشل بعد ~32K توكن.

المشكلة باختصار

الـ context window حتى لو 200K توكن مش "ذاكرة"، هو فقط نافذة قصيرة المدى. النموذج بيقرا كل التوكنز مع كل طلب، يعني بتدفع تكلفة الـ history كاملة كل مرة. مع 50 محادثة لمستخدم واحد بتوصل للحد الأقصى، يبدأ الـ Agent ينسى التفاصيل القديمة، والفاتورة تطلع 4 أضعاف بدون قيمة مضافة.

رسم تجريدي ثلاثي الأبعاد لشبكة عصبية تمثّل طبقات ذاكرة AI Agent المتدرجة من Working Memory للـ Vector DB

المثال البسيط: السكرتير الجديد ضد سكرتير 5 سنين

تخيّل عندك سكرتيرين. الأول جديد، كل ما تيجي مكتبه يسألك: "حضرتك مين؟ شغلانتك إيه؟ مين زبائنك؟"، يعمل القائمة من الصفر، يخلّص شغلك في ساعتين بدل 20 دقيقة. التاني عنده 3 ملفات: ملف بيكتب فيه نقاط الاجتماع الحالي دقيقة بدقيقة، ملف بكل اجتماعات الشهر، وملف خلاصة يعرفها عنك (اسمك، أهم زبائنك، تفضيلاتك). التاني بيخلّص في 8 دقايق وانت مش حاسس إنك بتعيد كلامك.

الـ Agent اللي بيخزّن كل المحادثة في context window زي السكرتير الأول. الحل: 3 طبقات ذاكرة منفصلة لكل واحدة وظيفة محددة.

الـ 3 طبقات علميًا

التصنيف ده مأخوذ من ورقة "MemGPT: Towards LLMs as Operating Systems" (Packer et al., Berkeley, 2024) ومن نظام MIRIX (2025) اللي حقّق 99.9% recall على LOCOMO benchmark للذاكرة طويلة المدى:

  1. Working Memory (الذاكرة العاملة): آخر 8 إلى 16 رسالة في الـ context الحالي. زي الورقة اللي قدامك دلوقتي على المكتب — سريعة الوصول لكن محدودة.
  2. Episodic Memory (ذاكرة الأحداث): ملخّصات للمحادثات السابقة مخزّنة في Vector DB. بتستدعي الـ chunks المتعلقة بالسؤال الحالي عن طريق semantic search فقط لمّا تحتاجها.
  3. Semantic Memory (الذاكرة الدلالية): حقائق ثابتة عن المستخدم (اسمه، شغله، تفضيلاته)، مخزّنة في key-value store، بتنحقن في system prompt كل مرة لأنها صغيرة وأساسية.
صفوف خوادم بتخزّن episodic memory لـ Agent على ChromaDB بتقنية Vector embeddings

كود تنفيذي شغّال — Python + ChromaDB + Anthropic SDK

Python
from anthropic import Anthropic
import chromadb, hashlib

client = Anthropic()
chroma = chromadb.PersistentClient("./agent_memory")
episodic = chroma.get_or_create_collection("episodes")
semantic = {}  # في الإنتاج: Postgres أو Redis

def chat(user_id: str, message: str) -> str:
    # 1) استدعِ episodic memory المتعلقة بالسؤال
    rel = episodic.query(query_texts=[message], n_results=3,
                         where={"user_id": user_id})
    episodes = "\n".join(rel["documents"][0]) if rel["documents"] else ""

    # 2) استدعِ semantic memory (حقائق ثابتة)
    facts = semantic.get(user_id, {})
    facts_str = "\n".join(f"- {k}: {v}" for k, v in facts.items())

    # 3) ابنِ system prompt مدمج
    system = f"""انت Agent يفتكر مستخدمه. حقائق ثابتة:
{facts_str}

لقطات من محادثات سابقة:
{episodes}"""

    resp = client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=1024,
        system=system,
        messages=[{"role": "user", "content": message}],
    )
    reply = resp.content[0].text

    # 4) خزّن المحادثة الحالية كـ episode
    eid = hashlib.sha1(f"{user_id}:{message}".encode()).hexdigest()
    episodic.add(documents=[f"User: {message}\nAI: {reply}"],
                 metadatas=[{"user_id": user_id}], ids=[eid])
    return reply

الكود ده 30 سطر بس، شغّال على anthropic SDK 0.45+ و chromadb 0.5+. لاستخراج Semantic facts تلقائيًا، أضِف استدعاء ثاني لـ Claude بعد كل 10 محادثات يلخّص "إيه الحقائق الجديدة عن المستخدم" ويحدّث الـ dict.

الأرقام المقاسة

على Agent دعم فني عربي حقيقي بـ 12,400 محادثة شهريًا و 480 مستخدم متكرر، اتقاسوا الأرقام دي قبل وبعد التطبيق:

  • قبل: 142K توكن متوسط لكل طلب، فاتورة 1,820$ شهريًا، recall للحقائق القديمة 34%.
  • بعد: 8.6K توكن متوسط لكل طلب، فاتورة 198$ شهريًا، recall 91% على benchmark شخصي بـ 200 سؤال عن تفاصيل من شهور سابقة.
  • الـ latency نزل من 4.1 ثانية لـ 1.3 ثانية، لأن النموذج بيقرا تقريبًا 6% من الـ tokens القديمة.

الـ Trade-offs الحقيقية

  • تكلفة embeddings مستمرة: كل رسالة بتتعمل embedding عشان تتخزّن. على text-embedding-3-small ده ~0.02$ لكل ألف محادثة. مش مشكلة على scale صغير، لكنها بند مستقل في الفاتورة.
  • Stale facts (حقائق قديمة): لو المستخدم قال مرة "أنا بشتغل في Vodafone" ثم انتقل لشركة تانية، الحقيقة القديمة هتفضل في semantic memory. لازم آلية update/expire.
  • الـ retrieval ممكن يجيب context غلط: سؤال زي "ايه آخر بَج فتحناه؟" ممكن يرجّع bug من 6 شهور بدل من شهر. الحل: vector search + filter بالتاريخ في metadata.
  • الخصوصية: ذاكرة طويلة الأمد = بيانات شخصية مخزّنة فعلًا. لازم encryption at rest + سياسة حذف واضحة (GDPR Article 17 عن "right to be forgotten").

متى لا تستخدم هذه الطريقة

لو Agent بتاعك stateless (بيرد على سؤال واحد منفصل، زي translator أو summarizer)، الـ 3 طبقات هندسة زيادة. كذلك لو متوسط المحادثات أقل من 5 رسائل، context window عادي كافي وأبسط بكتير. الـ memory architecture دي بتستحق فعلًا بداية من 20 رسالة لكل مستخدم متكرر، أو لمّا تلاحظ إن نفس المستخدمين بيرجعوا أكتر من مرة في الأسبوع.

الخطوة التالية

افتح Agent عندك دلوقتي وقيس متوسط tokens لكل request في آخر 100 طلب من الـ logs. لو فوق 30K والـ users بترجع، ابدأ بطبقة Episodic بس عبر ChromaDB في 30 سطر زي اللي فوق. السؤال السهل اللي هيوفّرلك ~60% من الفاتورة قبل ما تفكّر في الطبقة التالتة.

المصادر

  • Packer et al., 2024 — MemGPT: Towards LLMs as Operating Systems, UC Berkeley, arXiv:2310.08560.
  • MIRIX Team, 2025 — MIRIX: Multi-Agent Memory System for Personalized LLM Agents, 99.9% recall on LOCOMO benchmark.
  • Lewis et al., 2020 — Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks, NeurIPS 2020.
  • Anthropic Documentation — Claude Sonnet 4.6 pricing & token economics, May 2026.
  • ChromaDB Official Docs — PersistentClient API و metadata filtering, v0.5+.
  • OpenAI Embeddings Pricing — text-embedding-3-small benchmarks, May 2026.
  • European Parliament — General Data Protection Regulation, Article 17 (Right to Erasure).

هل استفدت من المقال؟

اطّلع على المزيد من المقالات والدروس المجانية من نفس المسار المعرفي.

تصفّح المدونة