دوز مباشرة للمحتوى الرئيسي
دروس فالذكاء الاصطناعي

بني ذاكرة متينة ومهيكلة لوكلاء الذكاء الاصطناعي باستعمال loci

تعلّم كيفاش تثبّت loci، وتخزّن وترجّع معطيات دائمة على المستخدمين، وتدخّل الذكريات المرتّبة فالمطالبات، وتختار بين تكاملات MCP وHermes وPython المباشرة.

بني ذاكرة متينة ومهيكلة لوكلاء الذكاء الاصطناعي باستعمال loci

شنو هو loci؟

loci هو طبقة ذاكرة طويلة المدى ومكتوبة الأنواع لوكلاء الذكاء الاصطناعي. كيستخرج الحقائق اللي كتدوم من المحادثات، كيخزنها فـ SQLite، كيرتّبها باش يرجّعها من بعد، وكيحيد المعلومات اللي ما بقاتش مفيدة.

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

loci تدار ليه port من نظام الذاكرة اللي مستعمل فالإنتاج من طرف Lima، وتعاودات كتابتو باش يكون مستقل على أي تطبيق مضيف معيّن.

كيفاش كيخدم نظام الذاكرة

ذكريات مَصنّفة حسب النوع

كل ذكرى كتدخل فواحد من تمانية ديال الفئات:

  • routine
  • study
  • preferences
  • finance
  • goals
  • relationships
  • constraints
  • ephemeral

الذكريات عندها حتى هي أربعة ديال مستويات الأهمية ودورة حياة ديال الحالة. هاد البنية كتخلي النظام يتعامل مع تفضيل دائم بطريقة مختلفة على أجل مؤقت ولا حقيقة قصيرة المدة.

جوج طرق للاستخراج

الاستخراج كيجمع بين جوج آليات. مستخرج مبني على نموذج كيقرأ التبادل باش يفهم المعنى، بينما heuristics باستعمال regular expressions كيتعرفو على الصياغات المدعومة بشكل صريح. النتائج كتندمج، وكيكون خرج النموذج هو الغالب.

مسار regex يقدر يبقى خدام ملي يكون مزوّد النموذج غير متاح. استدعاءات النماذج، وSDKs ديال المزوّدين، ومفاتيح API، كاملين متروكين للتطبيق المضيف، اللي يقدر يحقن ModelExtractor.

التصفية والترتيب والتلاشي

فلتر الكتابة كيمنع الحالات العابرة والمعلومات المشابهة قصيرة المدة من أنها تولّي بيانات دائمة فالبروفايل. مثلاً، تصريح بحال “Tired today” يقدر يكون صحيح لبضع ساعات، ولكن يقدر يضلّل من بعد شهور.

ملي كتزاد الذكريات لسياق النموذج، loci كيحدّ النتيجة فـ اثناش حقيقة. كيرتّبهم حسب الأهمية، ومن بعد كياخذ بعين الاعتبار القرب ديال الأجل وحداثة المعلومة. هاد الحد كيمنع الـ prompt من أنه يكبر بلا حدود.

التجميع والتلاشي اليوميين كيبقاو المخزن مفيد:

  • النسخ المطابقة كتندمج.
  • التخمينات اللي ما تأكداتش كتنتهي الصلاحية ديالها مع الوقت.
  • الحقائق المؤقتة عندها مدة صلاحية ديال 24 ساعة.
  • الأهداف المكتملة كتنتهي الصلاحية ديالها من بعد 90 يوم.

اختار طريقة الدمج

loci كيوفّر نواة مشتركة وجوج ديال المكيّفات.

خادم MCP

مكيّف MCP كيخدم مع أي عميل MCP متوافق. وكيعرّض ثلاثة ديال الأدوات: remember وrecall وforget.

MCP مبني على الطلب والجواب، وبالتالي ما عندوش hook أوتوماتيكي فآخر الدورة. الوكيل خاصو يعيط لـ remember عن قصد. ويمكن استرجاع الذاكرة وحقنها فالسياق عند الطلب.

إضافة Hermes

مكيّف Hermes كيوفّر نفس الأدوات الثلاثة، ولكن كيدعم حتى الاستخراج الأوتوماتيكي وكيحقن السياق قبل كل استدعاء. هاد الشي ممكن حيث Hermes كيوفّر hook سميتو post_llm_call، واللي يقدر يفحص التبادل من بعد ما كيجيب النموذج الجواب.

الدمج المباشر مع Python

استعمل المكتبة الأساسية مباشرة ملي تكون كتحكم فحلقة الوكيل وباغي تقرر فوقاش يوقع الاستخراج، والتخزين، والاسترجاع، وحقن السياق.

التثبيت والإعداد

ثبّت الحزمة الأساسية

pip install mowave-loci

ثبّت دعم MCP

pip install mowave-loci[mcp]

من بعد ما تثبّت إضافة MCP، زِد loci لإعدادات عميل MCP ديالك:

{
  "mcpServers": {
    "loci": {
      "command": "python",
      "args": ["-m", "loci.adapters.mcp_server.server"]
    }
  }
}

عاود شغّل العميل ولا دير ليه reload باش يكتاشف أدوات remember وrecall وforget.

ثبّت إضافة Hermes

hermes plugins install <you>/loci
hermes plugins enable loci

عوّض <you>/loci بمستودع الإضافة المناسب ولا بالمصدر المناسب للتثبيت ديالك.

إعداد التخزين

افتراضياً، loci كيخزن الذكريات فقاعدة بيانات SQLite فـ ~/.loci/memory.db. عيّن متغير البيئة LOCI_DB باش تستعمل ملف مختلف.

export LOCI_DB=/path/to/memory.db

ما كايناش حاجة لخادم قاعدة بيانات مستقل.

الاستعمال الأساسي فـ Python

سير العمل الأساسي هو تنشئ مخزن، وتستخرج الذكريات المحتملة، وتصفيها، وتحفظ الذكريات المقبولة، وتزيد الذكريات النشيطة للـ system prompt.

from loci import Store, extract, should_persist, context_block

store = Store()

for memory in extract(
    "eu prefiro respostas curtas",
    assistant_text=reply,
):
    if should_persist(memory):
        store.upsert(memory)

system_prompt += "\n\n" + context_block(store.active())

فهاد المثال، reply كيمثّل نص المساعد المرتبط بالتبادل. الرسالة البرتغالية ديال المستخدم كتعني أن المستخدم كيفضّل الأجوبة القصيرة.

  1. Store() كيفتح مخزن الذاكرة المهيّأ ديال SQLite.
  2. extract(...) كينتج ذكريات محتملة من التبادل.
  3. should_persist(memory) كيطبّق فلتر الكتابة.
  4. store.upsert(memory) كيدخل ذكرى مقبولة ولا كيحدّثها.
  5. store.active() كيجيب الذكريات النشيطة.
  6. context_block(...) كينسّق هاد الذكريات باش يحقنها فـ prompt.

استعمال أدوات MCP

منين كيتضبط خادم MCP، الوكيل المرتابط يقدر يستعمل ثلاثة ديال العمليات:

  • remember: خزّن عن قصد معلومة خاصها تبقى محفوظة.
  • recall: رجّع المعلومات المخزّنة ملي كتكون مرتبطة بالسياق.
  • forget: حيّد المعلومات اللي ما بقاتش خاصها تبقى محفوظة.

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

نصائح متقدمة للتكامل

خلّي منطق المزوّد برا النواة

نواة loci كتستعمل غير المكتبة القياسية ديال Python. التطبيق ديالك هو اللي كيتكلف باستدعاءات النماذج، ومفاتيح API، وحزم SDK ديال المزوّدين. إلا كان الاستخراج الدلالي محتاج نموذج، مرّر ModelExtractor من المضيف بلا ما تزيد تبعيات المزوّدين للنواة.

شغّل مهام دورة الحياة من المضيف

loci كتحدّد شكل الذاكرة، والدمج، وسلوك التلاشي، ولكن ما كتجدولش الخدمة اليومية. استعمل cron أو s6 أو systemd ديال المضيف، ولا أي مجدول مكافئ، باش تشغّل المهام اليومية.

حافظ على سقف السياق

تجنّب تجاوز كتلة السياق المرتّبة بإضافة قاعدة البيانات كاملة لكل prompt. سقف الاثناش معلومة كاين باش يتحكّم فنمو السياق، مع تفضيل المعلومات المهمة، والمرتبطة بالوقت، والحديثة.

استعمل الأداة المناسبة

  • اختار MCP ملي كتهمّك قابلية النقل بين عملاء MCP وكتقبل عمليات الذاكرة الصريحة.
  • اختار Hermes ملي بغيتي استخراجاً أوتوماتيكياً من بعد استدعاءات النموذج وحقن الذاكرة قبل كل استدعاء.
  • اختار واجهة Python المباشرة ملي التطبيق ديالك هو اللي كيتكلف بدورة الوكيل وباغي تحكّماً دقيقاً فالتخزين وبناء prompt.

خلّي المضيف يتكلف بالنقل والجلسات

دورة الوكيل، وتوزيع الأدوات، والجلسات، والنقل، والمصادقة ماشي من مسؤولية النواة. مضيفون بحال Hermes وOpenClaw وClaude Code كيدبّرو بيئة التشغيل المحيطة، بينما الأدوات الوسيطة كتتكلف بالنقل والمصادقة الخاصين بكل مضيف.

شغّل حزمة الاختبارات

pytest -q

المشروع فيه 92 اختبار كيتشغلو على مخزن SQLite حقيقي فملف مؤقت. المخزن براسو ماشي محاكى، وهاد الشي كيساعد يتأكد من السلوك باستعمال نفس تقنية التخزين اللي كتستعمل فعمليات النشر الفعلية.

الخلاصة

loci كتوفّر لوكلاء الذكاء الاصطناعي طبقة ذاكرة مدمجة، ومهيكلة، ودائمة، بلا ما تحتاج لخادم منفصل. النواة المشتركة كتتكلف ببنية الذاكرة ودورة حياتها، بينما MCP أو Hermes أو وكيل Python ديالك كيوفّر بيئة التشغيل المحيطة. بدا بالأداة الوسيطة اللي مناسبة للمضيف ديالك، وخلّي مسؤوليات الاستخراج والجدولة واضحة، واستعمل حقن السياق المرتّب باش ما تطغاش الذاكرة على prompt.