ذاكرة وكلاء الذكاء الاصطناعي هي ما يتيح للوكيل أن ينقل شيئًا من خطوة إلى التي تليها، أو من جلسة إلى أخرى. فنموذج اللغة وحده لا يتذكر شيئًا بين الاستدعاءات. وكل ما يبدو أنه يتذكره أعاده كودك إلى الموجّه. أما طريقة تخزين تلك المادة واسترجاعها فتحدد ما يستطيع الوكيل تذكّره، وبأي سرعة، وبأي تكلفة في كل دور.
باختصار. يحتاج الوكلاء إلى أربعة أنواع من الذاكرة: نافذة محادثة قصيرة، وحقائق طويلة الأمد تُوجَد بالمعنى، ومسودة للمهمة الجارية، وسجل لما حدث. ولكل نوع شكل ومدة بقاء وطريقة بحث مختلفة، فلا يلائم أيًّا منها جدول ذاكرة واحد. يخزّن HotKV الأنواع الأربعة كلها في محرك واحد في الذاكرة بأوامر
AMEM.*. وقد أجرينا اختبارات أداء للتخزين المؤقت والبحث المتجهي في HotKV، لا لذاكرة الوكلاء، لذا يشرح هذا المقال التصميم ولا يدّعي أي تسريع.
لماذا نافذة السياق ليست ذاكرة
نافذة السياق هي النص الذي ترسله مع كل طلب. لها حد للحجم، وتدفع رموز الإدخال عن كل ما فيها في كل دور، وتختفي بانتهاء الجلسة. ولا يمكن البحث فيها أيضًا. فإذا احتاج الوكيل إلى حقيقة واحدة من قبل ثلاثة أسابيع، فلصق السجل كله ليس جوابًا.
الذاكرة هي الطبقة التي تقرر ما يدخل النافذة بعد ذلك. تحتفظ بالأدوار الأخيرة وتجد الحقائق القديمة القليلة التي تهم. وتحمل حالة المهمة الجارية وتسجل ما فعله الوكيل. ويصف الباحثون الوكلاء بعبارات مشابهة. فـإطار CoALA لـ Sumers وYao وNarasimhan وGriffiths يفصل ذاكرة العمل عن الذاكرة العرضية والدلالية والإجرائية طويلة الأمد.
الأنواع الأربعة لذاكرة وكلاء الذكاء الاصطناعي
تغطي مخازن HotKV الأربعة معظم المساحة نفسها، مكيَّفةً مع ما يحتاج التطبيق إلى بنائه. أما الذاكرة الإجرائية، أي الخبرة العملية الموجودة في كود الوكيل وموجّهاته، فتعيش عادةً في مستودعك أو في سجل للموجّهات، وليست مخزنًا مستقلًا.
ذاكرة المحادثة
هذا هو السجل النصي القصير الأمد لجلسة واحدة. تحمل الرسائل دورًا (نظام أو مستخدم أو مساعد أو أداة). وتقيم في نافذة منزلقة محدودة، فتسقط الأدوار الأقدم عند بلوغ الحد. وتجيب عن سؤال واحد. ما الذي قيل مؤخرًا؟ وهي في HotKV AMEM.CONV.CREATE وAMEM.CONV.APPEND وAMEM.CONV.WINDOW.
الذاكرة الدلالية
الذاكرة الدلالية معرفة طويلة الأمد تُخزَّن حقائق مع متجه تضمين. ويستدعيها الوكيل بالمعنى لا بالمفتاح. ويدعمها فهرس متجهات HNSW، وهو النوع نفسه الذي يشغّل البحث المتجهي. يحفظ AMEM.SEM.STORE حقيقة، ويعيد AMEM.SEM.RECALL أفضل المطابقات مع درجة تشابه. وهنا مكان المستندات وتفضيلات المستخدم والتصحيحات المكتسبة.
ذاكرة العمل
ذاكرة العمل هي المسودة للمهمة الجارية، مجموعة مسطحة من المفاتيح والقيم ضمن نطاق جلسة. تحمل الخطوة الحالية أو التذكرة قيد المعالجة أو نتيجة جزئية. وينبغي أن تزول بانتهاء المهمة. ولهذا السبب بالضبط يقبل AMEM.WORK.SET مدة صلاحية (TTL).
الذاكرة العرضية
الذاكرة العرضية سجل أحداث موسومة بالوقت، يُضاف إليه فقط، مثل إجراء اتُّخذ أو ملاحظة سُجّلت أو قرار تقرر. وتتيح للوكيل، أو لمن يراجعه، أن يسأل ماذا حدث ومتى. يكتب AMEM.EPIS.LOG حدثًا، ويقرأ AMEM.EPIS.QUERY الأحداث بحسب النوع والنطاق الزمني.
ذاكرة الوكلاء في الممارسة
يهم في الممارسة أمران. كيف تكتب في الذاكرة، وماذا تقرأ منها في كل دور.
تخزين الذاكرة بالأوامر
هذا وكيل دعم يتعامل مع محادثة واحدة. نص السياسة الخيالي والمتجهات ذات الأرقام الثلاثة للتوضيح فقط. أما نموذج التضمين الحقيقي فينتج متجهات من 768 أو 1,536 رقمًا، وتنشئ مساحة الأسماء بذلك البُعد.
AMEM.CONV.CREATE session-42 WINDOW 50 TTL 86400
AMEM.CONV.APPEND session-42 user "My invoice shows the wrong VAT number."
AMEM.WORK.SET session-42 ticket "INV-1932" TTL 3600
AMEM.EPIS.LOG agent-support action "Looked up invoice INV-1932"
AMEM.SEM.CREATE support-kb 3
AMEM.SEM.STORE support-kb vat-policy "VAT details can be corrected within 30 days." 0.1 0.2 0.3
AMEM.SEM.RECALL support-kb 3 0.1 0.2 0.3
AMEM.CONV.WINDOW session-42 10
في كل دور يقرأ الوكيل النافذة الأخيرة ويستدعي الحقائق القليلة المطابقة للسؤال. ثم يفحص ملاحظة عمله ويبني الموجّه من هذه القطع. وبعد أن يتصرف يسجل الحدث. ولا شيء في هذه الحلقة يحتاج إلى السجل كاملًا.
قراءة الذاكرة في كل دور
تخزين الذاكرة هو النصف السهل. أما المهارة فهي في قرار ما تقرؤه، لأن كل ما تقرؤه يدخل الموجّه ويكلّف رموز إدخال. وتقرأ الحلقة المعقولة حفنة من الأشياء بترتيب ثابت. الأدوار الأخيرة أولًا، ثم الحقائق القليلة المطابقة للسؤال، ثم حالة المهمة. وهذه الحلقة بالعميل الرسمي لـ Python، مع دالة التضمين وقالب الموجّه الخاصين بك.
import hotkv
r = hotkv.from_url("hotkv://localhost:6379")
MIN_SIMILARITY = 0.8 # اضبطها على بياناتك أنت
def start_session(session: str) -> None:
r.amem_conv_create(session, window=50, ttl=86400) # أنشئها مرة واحدة، قبل أول إضافة
def build_context(session: str, question: str) -> str:
r.amem_conv_append(session, "user", question)
turns = r.amem_conv_window(session, 10)
facts = r.amem_sem_recall("support-kb", 3, embed(question))
facts = [f for f in facts if f["similarity"] >= MIN_SIMILARITY]
ticket = r.amem_work_get(session, "ticket")
return render(turns, facts, ticket) # قالب الموجّه الخاص بك
def finish_turn(session: str, agent: str, reply: str) -> None:
r.amem_conv_append(session, "assistant", reply)
r.amem_epis_log(agent, "action", "Answered a billing question")
r.amem_work_set(session, "last_step", "answered")
حد التشابه الأدنى أمر تضبطه أنت. فالقيمة التي تناسب نموذج تضمين ومجموعة حقائق ستكون خاطئة لغيرهما، فتحقق من الاستدعاء على أسئلة تعرف إجاباتها. وإسقاط المطابقات الضعيفة أهم مما يبدو، لأن حقيقة رديئة في الموجّه أسوأ من غياب الحقيقة.
والأجزاء الثابتة من هذا الموجّه، مثل تعليمات النظام، هي الجزء الذي يجعله التخزين المؤقت للموجّهات لدى المزوّد أرخص. ضع الذاكرة التي تقرؤها في النهاية، بعد النص الثابت، حتى لا يؤدي تغييرها إلى إبطال تلك الذاكرة المؤقتة.
الملخصات بدلًا من نوافذ تزداد طولًا
النافذة تُسقط الأدوار القديمة إسقاطًا كاملًا. وهذا مقبول في الأحاديث العابرة، وسيئ في المهمة الطويلة، حيث قد يظل الدور 3 مهمًا عند الدور 300. والملخص المتجدد هو الجواب المعتاد. فبعد كل مرحلة من المحادثة يكتب الوكيل، أو نموذج أرخص، ما تعلّمه، ويحل الملخص محل الأدوار القديمة في الموجّه.
يحتفظ HotKV بملخص واحد لكل وكيل عبر AMEM.SUMMARY.SET وAMEM.SUMMARY.APPEND وAMEM.SUMMARY.GET. يستبدل SET النص، ويضيف APPEND سطرًا. وكل تحديث يرفع رقم إصدار، فيستطيع مكوّن آخر أن يعرف بسهولة أن الملخص تغيّر ومتى.
والملخص يفقد شيئًا، وتلخيص ملخص يفقد أكثر في كل مرة. أبقِ القيم الدقيقة مثل المعرّفات والمبالغ والتواريخ خارج النثر، في ذاكرة العمل أو الحقائق الدلالية حيث تبقى سليمة. واستخدم الملخص لشكل العمل، مثل التفضيلات والقرارات المتخذة وما تبقى.
قواعد التصميم والاحتفاظ
تنمو الذاكرة بلا حد ما لم توقفها، فضع الحدود قبل أول كتابة.
قواعد تُبقي الذاكرة نافعة
- قيّد كل شيء. اضبط
WINDOWعلى المحادثات وTTLعلى الجلسات وقيم العمل. وفي المحادثات وقيم العمل والحقائق، يسجل HotKV وقت الانتهاء في ملف الإلحاق فقط وفي النسخ المتماثلة، فلا يعود مدخل انتهت صلاحيته حين يُعاد تنفيذ الملف بعد إعادة التشغيل. - خزّن الحقائق لا النصوص الكاملة. لخّص قبل الكتابة في الذاكرة الدلالية. فالحقيقة أسهل استدعاءً من صفحة حوار.
- افصل الوكلاء. استخدم معرّفًا أو مساحة أسماء منفصلة لكل وكيل ولكل مستأجر، كي لا تُستدعى ذاكرة عميل لعميل آخر.
- استدعِ القليل لا الكثير. خذ أفضل ثلاث إلى خمس مطابقات، واحذف الضعيف منها بدرجة التشابه قبل أن يدخل الموجّه.
- أبعد الأسرار. تُقرأ الذاكرة مجددًا في الموجّهات، فلا تخزّن كلمات مرور ولا مفاتيح ولا بيانات لا تريد أن تعرضها على النموذج.
كم تُحفظ الذاكرة من كل نوع
هذه المدد اقتراحات منا، وليست افتراضات. اختر مددك بحسب سرعة تغيّر الحقائق التي تقوم عليها، وما يُسمح لك بالاحتفاظ به.
| نوع الذاكرة | المدة المقترحة | أدوات التحكم في HotKV |
|---|---|---|
| المحادثة | الجلسة، أو مدة محددة مثل يوم | WINDOW وTTL في AMEM.CONV.CREATE |
| العمل | المهمة، ثم تُمسح | TTL في AMEM.WORK.SET، وAMEM.WORK.CLEAR |
| الدلالية | حتى تتوقف الحقيقة عن كونها صحيحة | TTL في AMEM.SEM.STORE، وAMEM.SEM.FORGET |
| العرضية | ما دامت احتياجات التدقيق أو الدعم لديك تتطلب ذلك | AMEM.EPIS.QUERY بحسب النطاق الزمني، وAMEM.EPIS.CLEAR (الأحداث ليس لها مدة صلاحية) |
الاحتفاظ مسألة خصوصية أيضًا. فإذا كانت الذاكرة تحتوي أي شيء عن شخص، فإن المدة التي تختارها جزء مما تعدهم به، فدوّنها.
كيف تفشل ذاكرة الوكلاء
معظم أخطاء الذاكرة بطيئة. يعمل الوكيل جيدًا أسبوعًا ثم يبدأ بالتراجع. هذه هي حالات الفشل التي ينبغي أن تصمم ضدها.
حالات الفشل الشائعة
- حقائق قديمة. حقيقة كانت صحيحة في مارس تُستدعى في أكتوبر. امنح الحقائق مدة صلاحية، أو خزّنها تحت مفتاح لكل كيان كي تحل القيمة الجديدة محل القديمة.
- تناقضات. حقيقتان مخزنتان تتعارضان، فيختار الوكيل إحداهما عشوائيًا. فضّل حقيقة واحدة لكل مفتاح على إضافة ملاحظات جديدة بجانب القديمة.
- الإفراط في الاستدعاء. كثرة المطابقات تملأ الموجّه بنص وثيق الصلة بالكاد. استدعِ القليل، واحذف المطابقات الضعيفة.
- تسرب بين المستخدمين. تُستدعى ذاكرة عميل لعميل آخر. استخدم معرّفات أو مساحات أسماء منفصلة لكل مستأجر، وتحقق منها في الكود قبل كل قراءة.
- نمو بلا حد. لا شيء ينتهي أبدًا، فتبطؤ عمليات البحث وتتسلل التكاليف إلى الأعلى. يحتاج كل نوع إلى مدة. وحيث لا توجد مدة صلاحية في HotKV، كما في السجل العرضي، فاجدول المسح أو التصدير بنفسك.
- انحراف الملخص. ملخص لملخص يتوقف ببطء عن مطابقة ما حدث. أبقِ سجل الأحداث مصدر الحقيقة وأعد توليد الملخصات منه.
عامل النص المخزن على أنه غير موثوق
النقطة الأخيرة تستحق اهتمامًا أكبر. فأي شيء يكتبه الوكيل في الذاكرة قد يُقرأ لاحقًا في موجّه. ويشمل ذلك نصًا جاء من صفحة ويب أو بريد إلكتروني أو مستخدم. وهذا هو الشكل غير المباشر لحقن الموجّه الذي تدرجه OWASP بوصفه LLM01. سجّل المصدر مع كل حقيقة. ثق أقل بالذاكرة المكتوبة من محتوى خارجي، ولا تدع ملاحظة مستدعاة تتجاوز موجّه النظام لديك.
ما قسناه وما لم نقسه
تغطي اختبارات الأداء المنشورة لـ HotKV إنتاجية الأوامر والبحث المتجهي وتوفير الرموز بالتخزين المؤقت للاستجابات. وليس لذاكرة الوكلاء اختبار أداء خاص بها بعد. لا ندّعي شيئًا عن زمن استجابتها ولا عن مقدار تحسينها لجودة الوكيل. وما نستطيع قوله معماري. فالمخازن الأربعة تعمل في العملية نفسها التي تعمل فيها الذاكرة المؤقتة وفهرس المتجهات. وبحث الذاكرة استدعاء واحد إلى نظام تشغّله أصلًا.
يعرض اختبار توفير الرموز والمقارنة بين التخزين المؤقت للموجّهات والتخزين المؤقت الدلالي الجانب المقيس. وتعرض حالة الاستخدام الخاصة بذاكرة الوكلاء الأوامر في سيناريو كامل.
استخدام ذاكرة الوكلاء من Claude Code أو Cursor
يمكن للمساعد الذي يدعم بروتوكول سياق النموذج (Model Context Protocol) أن يستخدم جزءًا من هذه الذاكرة دون كود مخصص. فخادم hotkv-mcp المفتوح المصدر يعرض ذاكرة المحادثة وملاحظات العمل وسجل الأحداث وملخصًا متجددًا بوصفها أدوات. وله وضع للقراءة فقط ومساحة أسماء تحصر الوكيل. ولا يعرض الذاكرة الدلالية، ولا تستطيع أدواته ضبط نافذة أو مدة صلاحية، فاستخدم مكتبة العميل لذلك. وتوضح المقالة التالية، خادم MCP لذاكرة الوكلاء، كيف تربطه وما الذي تغطيه ضماناته.
الأسئلة الشائعة
ما ذاكرة وكلاء الذكاء الاصطناعي؟
ذاكرة وكلاء الذكاء الاصطناعي هي طبقة التخزين والاسترجاع التي تتيح للوكيل الاحتفاظ بالمعلومات عبر الخطوات والجلسات. وتجمع عادةً بين نافذة محادثة حديثة، وحقائق طويلة الأمد تُوجَد بالمعنى، ومسودة للمهمة الحالية، وسجل أحداث.
ما الفرق بين ذاكرة الوكيل قصيرة الأمد وطويلة الأمد؟
تحمل الذاكرة قصيرة الأمد ما يجري الآن، مثل الأدوار الأخيرة وحالة المهمة، وهي محدودة ومؤقتة. وتحمل الذاكرة طويلة الأمد معرفة ينبغي أن تعيش أطول من الجلسة، مثل الحقائق والتفضيلات والأحداث الماضية، ويُبحث فيها عند الحاجة.
ما الملخص المتجدد في ذاكرة الوكيل؟
الملخص المتجدد وصف قصير جارٍ لما تعلّمه الوكيل أو قرره حتى الآن، يُحدَّث مع استمرار العمل. وهو يحل محل الأدوار القديمة في الموجّه حتى لا يظل الموجّه يطول. ويخزّن HotKV واحدًا لكل وكيل ويرفع رقم الإصدار مع كل تحديث.
هل أحتاج إلى قاعدة بيانات متجهات لذاكرة الوكلاء؟
للذاكرة الدلالية فقط، حيث تُوجَد الحقائق بالمعنى. أما نوافذ المحادثة وحالة العمل وسجلات الأحداث فلا تحتاج إلى متجهات. ويحتفظ HotKV بالأنواع الأربعة في محرك واحد، فلا يكون فهرس المتجهات والمخازن الأخرى أنظمة منفصلة.
كم ينبغي أن تُحفظ ذاكرة الوكيل؟
يعتمد ذلك على النوع. ينبغي أن تنتهي ذاكرة العمل بانتهاء المهمة، والمحادثات بعد الجلسة أو مدة محددة، والسجلات العرضية ما دامت احتياجات التدقيق لديك تتطلب ذلك. وينبغي مراجعة الحقائق في الذاكرة الدلالية وإزالتها حين تتوقف عن كونها صحيحة.
هل يمكن مهاجمة ذاكرة الوكيل؟
نعم. فالنص المكتوب في الذاكرة يُقرأ لاحقًا في الموجّهات، لذا يمكن لملاحظة مسمومة أن توجّه الوكيل. سجّل مصدر كل حقيقة، وثق أقل بالمحتوى الخارجي، وأبقِ الذاكرة المستدعاة دون موجّه النظام في السلطة.
هل يخزّن HotKV ذاكرة الوكلاء في RAM؟
HotKV محرك في الذاكرة، لذا تُخدَّم القراءات من الذاكرة. وتُسجَّل الكتابات إلى المخازن الأربعة لملف الإلحاق فقط وللنسخ المتماثلة، مع تمرير أوقات الانتهاء، بحسب وثائق المنتج.



تابع النقاش
التعليقات
لديك أسئلة عن المنهجية؟ حصلت على نتيجة مختلفة على عتادك؟ شارك ما توصلت إليه. تُراجَع التعليقات قبل ظهورها.