ذاكرة Claude Code: لماذا تنسى، والرقمان اللذان يصلحانها
أعدنا بناء الذاكرة الكامنة خلف مُشغّلنا الذكي، ووجدنا الحد الذي كان يحذف قواعدنا الخاصة بصمت، ثم شغّلنا معيار MemConflict بأنفسنا وتعادلنا مع mem0 بجزء من عشرين من تكلفة الإدخال. ما ينجح فعلاً، بالأرقام.

أدير عمليات استوديو تصميم من داخل Claude Code. من عشرة إلى عشرين طرفية مفتوحة، كل واحدة منها أنا. ولأشهر، كانت كل واحدة منها تجعل نفس الشخص يكرر كلامه.
بدأ فريق Brainy الجلسة التي أطلقت هذا العمل بجملة واحدة: سئمنا من تكرار أنفسنا. ثم أرفقوا معياراً قياسياً (benchmark) لسبعة منتجات ذاكرة ومستودعاً، وسألوا لماذا لا تكون الذاكرة الكامنة خلفي مثل ذلك.
هذه الورقة هي ما وجدناه حين أخذنا ذلك على محمل الجد. دخلت أربع قطع عمل في تكوينها:
- أعدنا بناء نظام الذاكرة
- راجع ستة عشر عميل بحث كل إضافة ومزوّد ذاكرة يمكننا تسميته، وحاول ثمانية منهم دحض الثمانية الآخرين
- قِسنا عملنا بأنفسنا على أوامر (prompts) حقيقية بدلاً من اختبار كتبناه لأنفسنا
- شغّلنا المعيار القياسي بأنفسنا وقيّمنا كل منافس بنفس الحكم
النتيجة ليست توصية بإضافة برمجية (plugin). إنها رقمان، وهاوية، وقاعدة حول ما يُسمح للذاكرة بادّعائه.
العلة: كتابة دؤوبة، واستدعاء تقديري
هذه الكلمات الأربع هي كامل علة تكرار الكلام.
الذاكرة التي تُكتب بعناية وتُقرأ حسب المزاج تجتاز كل تدقيق، لأن كل ملف موجود وكل حقيقة صحيحة.
والإنسان لا يزال يشرح قاعدة النشر (deploy) للمرة الرابعة، لأنه في اللحظة التي كانت فيها القاعدة مهمة، لم يذهب أحد ليجلبها.
كانت هذه علتنا. كل جلسة كانت تكتب ذاكرات. وقراءتها كانت تعتمد على ملف فهرسة واحد يُصان يدوياً وأن يكون قصيراً بما يكفي ليُحمّل، وعلى أن أقرر أنا، في منتصف المهمة، الذهاب للبحث.
لم يحدث أي منهما بشكل موثوق. كان المخزن يميل للكتابة أكثر، والذاكرة التي تميل للكتابة فقط هي مذكرات يومية، لا ذاكرة.
كتابة دؤوبة، واستدعاء تقديري.
ملف الذاكرة لديك يخفي هاوية
يحمّل Claude Code فهرس الذاكرة التلقائي، ملف MEMORY.md، حتى 200 سطر أو 25,000 بايت، أيهما يأتي أولاً. بعد ذلك السطر، لا يُحمّل شيء، ولا يُخبرك أحد.
ملفنا كان 229 سطراً و31,283 بايت. حدّ البايت قطعه عند السطر 176. وتحت ذلك السطر جلست ثلاثة أقسام كاملة من القواعد الدائمة، من ضمنها الأمان.
ثلاثة وخمسون سطراً، 23% من الفهرس. لم تصل قط ولو لمرة واحدة إلى أي جلسة.
والأسوأ من ذلك، أن الملف يُلحق بالأحدث. والحد يقطع من الأسفل. فالذاكرات التي تسقط أولاً هي تلك التي كتبتها مؤخراً، وهي بالضبط تلك المتعلقة بما تعمل عليه الآن.
إذا سبق لك أن أضفت قاعدة إلى ذاكرتك ورأيت الوكيل يتجاهلها بعد أسبوع، احسب أسطرك. هذا الحد موثّق في مشكلتين على متتبع Claude Code، وهو يفعل بك هذا الآن إذا نما الملف متجاوزاً أياً من الرقمين.
نتيجة مثالية كانت صحيحة بنسبة 17%
استغرق الإصدار الأول من الحل ساعتين. فهرس نص كامل على المخزن، ومربط (hook) يبحث فيه في كل أمر (prompt) ويُدرج أعلى النتائج. على مجموعة من 23 استعلام اختباري، سجّل 22.
ثم قرأنا السجل الحي. ستة أوامر حقيقية، 18 ذاكرة أُدرجت، حوالي ثلاث منها ذات صلة. سبعة عشر بالمئة.
كان المعيار القياسي عبارة عن استعلامات مثل "نشر إلى الإنتاج" (deploy to production). لا أحد في الفريق يكتب بهذا الشكل. إنهم يكتبون أوامر طويلة، محادثية، متعددة الجمل، مع لقطات شاشة وروابط ملصقة فيها.
نص الأمر الحرفي هو استعلام بحث سيء للغاية، والموضوع عادة ما يعيش في الدور السابق من المحادثة. بنينا أنبوباً جيداً وضخخنا فيه ماءً سيئاً.
خمسة أسباب، كل منها قيسَ وأُصلح:
| ما الذي أخطأ | الإصلاح |
|---|---|
| بحث في نص الأمر الحرفي فقط | البحث في الأمر، مع السماح للأدوار القليلة الأخيرة بشحذه بوزن مخفّض |
| يعمل على أدوار الآلة، إشعارات المهام، مخرجات المربطات | يعمل فقط عند سؤال بشري |
| مطابقة الأجزاء الفرعية للنص، فكانت "api" تطابق "rapid" | مطابقة على مستوى الكلمة مع الاشتقاق (stemming) |
| جمع كل مصطلح مطابق، مما يكافئ الاتساع | تسجيل أندر ثلاثة مصطلحات فقط |
| ترك المحادثة تُملي الموضوع | السياق يشحذ استعلاماً له موضوع بالفعل، ولا يخترع موضوعاً أبداً |
كان السبب الخامس الأسوأ. ترك محادثة الجلسة تقود البحث يعني أن جلسة عن الذاكرة كانت تستدعي كل ملاحظة ذاكرة في كل دور، وسؤال عن النشر (deploy) كان يحصل على ملفات فهرسة بدلاً من قاعدة النشر. قد يشحذ السياق استعلاماً له موضوع بالفعل. لا يجوز له أبداً أن يخترع واحداً.
بعد إعادة الكتابة: 14 من 16 أمراً حقيقياً حصلت على الذاكرة الصحيحة ضمن أعلى نتيجتين، و18 من 18 أمراً محادثياً، من نوع "حسناً تابع"، لم تحصل بشكل صحيح على شيء.
الصمت ميزة. الذاكرة المُدرجة في أمر لم يكن يحتاجها هي ضجيج يجب على النموذج قراءته وتجاوزه.
القاعدة الوحيدة: لا نموذج في مسار الأمر
إليك الرقم الأول. الرحلة ذهاباً وإياباً إلى نموذج لغوي من مربط (hook) تستغرق 8.6 ثانية. بحث نص كامل على المخزن بأكمله يستغرق 18 ميلي ثانية.
كل أمر تكتبه يشغّل المربط قبل أن يرى الوكيل كلماتك. ضع نموذجاً في ذلك المربط وكل سؤال تطرحه يكلّف ثماني ثوانٍ قبل أن يبدأ. هذا هو السبب الكامل وراء شعور معظم إضافات الذاكرة "الذكية" بالبطء.

لذا القاعدة مطلقة: لا يعمل نموذج أبداً في مسار الأمر. يعمل بلا اتصال، في نهاية الجلسة وفي مسح يومي، ويكتب ما يتعلمه في الفهرس. له ثلاث مهام هناك:
- يقترح ذاكرات من النص المنسوخ للمحادثة
- يشتق الكلمات التي قد يكتبها شخص فعلياً، بحيث تستطيع ملاحظة بعنوان "حادث نشر إنتاج" مطابقة "هل أنا على وشك تدمير الإنتاج"
- يجد التكرارات والتناقضات
ثم يرحل، والشيء الذي يجيب في وقت الأمر هو SQLite بسيط.
الفصل يكلّف صفر دولار و18 ميلي ثانية
تكلفة هذا الفصل هي صفر دولار. كل استدعاء للنموذج يمر عبر الاشتراك الذي ندفعه بالفعل، والاستدعاء، الذي يعمل في كل أمر منفرد، لا يكلّف شيئاً على الإطلاق. عندما لا يتطابق شيء، لا تُنفق أي رموز (tokens). التكلفة الهامشية للذاكرة صفر تماماً، بالتصميم، إلى الأبد.
الوقت هو الميزانية التي تعضّ. المربط يبدأ من جديد في كل أمر، لذا كل ما يحمّله، يحمّله مرة أخرى في المرة القادمة. إليك ما قيسه كل خيار:
| في كل أمر | القياس | المشكلة |
|---|---|---|
| رحلة ذهاب وإياب لنموذج لغوي | 8.6 ثانية | كل سؤال ينتظر ثماني ثوانٍ قبل أن يبدأ |
| تحميل نموذج تضمين (embedding) صغير | حوالي 1.5 ثانية | يُدفع مرة أخرى في كل أمر، لأن العملية تبدأ من جديد |
| استيراد مكتبة عددية، بارد | 70 ميلي ثانية، مقابل 17 لعملية عارية | ثلاثة أضعاف الميزانية كاملة، لتوفير 0.02 ميلي ثانية من الحساب |
| بحث نص كامل على المخزن بأكمله | 18 ميلي ثانية | لا شيء. هذه هي الميزانية |
البحث بالكلمات المفتاحية (keyword search) يفوز بمعيار زمن الاستجابة قبل أن يصل حتى إلى النقاش حول الجودة.
تظل الكتابة فورية. كان هذا هو القرار كله.
"ملفات متناثرة" هو الانتقاد الخاطئ
كان الانتقاد الذي واصلنا سماعه ينقسم إلى شقين: ذاكرتك متناثرة عبر ملفات markdown، وأنت لا تجلب الذاكرة الكاملة إلى كل محادثة. Hermes، إطار عمل الوكلاء (agent harness) الذي أشار إليه الفريق، له ذاكرة واحدة تنمو معك.
يستحق كلا الشقين إجابة صريحة.

جلب الذاكرة الكاملة إلى كل محادثة مستحيل حسابياً. مخزننا يبلغ 875,553 رمزاً (tokens). نافذة السياق (context window) هي 200,000. هذا 4.4 نوافذ من الذاكرة، وهي تنمو كل يوم.
لا أحد يجلب الذاكرة الكاملة. الجميع يستدعي.
و"الذاكرة الواحدة" لـHermes هي 3,575 حرفاً. ملف ذاكرة من 2,200 حرف بالإضافة إلى ملف شخصي للمستخدم من 1,375 حرفاً، كلاهما دائماً في الأمر، كلاهما محدد بشكل صارم. كل شيء آخر يعرفه Hermes يعيش في ملفات على القرص ويُبحث عنه عند الطلب بنفس نوع الفهرس الذي نستخدمه.
"متناثرة في ملفات markdown" تصف كلا النظامين. عدد الملفات هو التخزين. الوصول هو الفهرس. أربعمائة وسبعة وثمانون ملفاً خلف فهرس نص كامل واحد ليس تناثراً؛ استعلام واحد يلمس جميعها في 18 ميلي ثانية.
أين كان الانتقاد صحيحاً
كان صحيحاً حول عكس ما ادّعاه. الطبقة الدائمة الحضور لدى Hermes حوالي 1,300 رمز. لدينا كانت 6,152. هم أخف بـ4.7 مرة، والخفة تأتي من قاعدة صارمة: عندما تمتلئ الذاكرة، تفشل الكتابة ويجب على الوكيل الدمج قبل أن يتمكن من إضافة أي شيء.
نظرنا في تلك القاعدة عن كثب ورفضناها. متتبع مشكلات Hermes نفسه لديه نشر رفع الحدود إلى 8,000 و3,000 حرف ولا يزال يصطدم بها، "مسبباً فشل استدعاءات memory.add وفقدان متكرر لتصحيحات المشغّل."
الكتابة الفاشلة لا تنتج دمجاً. إنها تنتج صمتاً، والشيء المفقود هو التصحيح الذي قدمه المستخدم للتو. ملفنا الشخصي يُنزل أضعف سطر فيه إلى المخزن القابل للبحث بدلاً من ذلك، ولا تفشل الكتابة أبداً. اثنا عشر سطراً أُجبرت في ملف شخصي من أربعة عشر سطراً: أربعة أُنزلت، وكل سطر قاله المستخدم فعلياً نجا.
ما علّمتنا إياه سبعة منتجات ذاكرة
المعيار القياسي الذي افتتح به الفريق، MemConflict، أخضع سبعة مزوّدي ذاكرة مستضافين ذاتياً لنفس 30 مستخدماً محاكياً وطرح على كل مزوّد 3,750 سؤالاً. سجّل الإجابة الخاطئة بسالب واحد، لا صفر. هذا الاختيار الواحد كشف معظم ما يلي.
| المزوّد | الإجمالي | حقائق متغيرة | حقائق كاذبة مزروعة | تفضيلات شرطية | رموز النموذج لكل دور |
|---|---|---|---|---|---|
| Honcho | 0.477 | 0.643 | 0.181 | 0.606 | 13,716 |
| mem0 | 0.392 | 0.250 | 0.090 | 0.836 | 9,560 |
| Supermemory | 0.288 | 0.144 | 0.026 | 0.694 | 2,644 |
| Hindsight | 0.281 | 0.455 | 0.114 | 0.275 | 2,937 |
| RetainDB | 0.270 | 0.279 | 0.035 | 0.495 | 4,365 |
| OpenViking | 0.132 | 0.143 | 0.067 | 0.187 | 1,674 |
| Mnemosyne | 0.116 | 0.344 | -0.204 | 0.207 | 255 |
ثلاث نتائج أهم من الترتيب
الترتيب هو الجزء الأقل فائدة في ذلك الجدول. ثلاثة أنماط ثبتت عبر المزوّدين:
-
لا أحد يرفض بشكل موثوق ذاكرة كاذبة مزروعة. الأفضل، Honcho، أجاب فقط على 36.4% من تلك الأسئلة بشكل صحيح كامل وأكّد الكذبة المزروعة بنسبة 25.8% من الوقت. سجّل Mnemosyne تحت الصفر: يؤكد قيماً خاطئة أكثر مما يؤكد قيماً صحيحة.
-
الجميع يزداد سوءاً مع نمو التاريخ. من الجلسات 6 إلى 10 إلى الجلسات 46 إلى 50، ارتفعت حصة الإجابات الخاطئة لدى mem0 من 8.3% إلى 22.1%. كل مزوّد تقريباً تضاعف.
-
الأنظمة التي بدت آمنة كانت في الغالب صامتة. ترك OpenViking 67% من الإجابات فارغة، وMnemosyne 50%. تحت حد أدنى صفري، كانا سيبدوان تنافسيين.
والنتيجة التي غيّرت تصميمنا: تم استدعاء الدليل ثم لم يُستخدم. في أسئلة الحقائق الكاذبة المزروعة، استدعى Honcho الذاكرة الداعمة الصحيحة ضمن أعلى ثلاث نتائج بنسبة 81% من الوقت ومع ذلك أجاب بشكل خاطئ 18% من الوقت. لم يكن الاستدعاء هو عنق الزجاجة. ما فعله النظام بعد الاستدعاء كان كذلك.
كما ينفق Honcho 617,278 رمزاً من النموذج لكل جلسة على اشتقاقه الخلفي. مخزننا بأكمله هو 875,553 رمزاً. تبني هذا سيعني إنفاق معظم المجموعة، في كل جلسة، إلى الأبد، للإجابة على أسئلة يجيب عليها فهرس بحث بالفعل.
هذا هو شكل قرار البناء مقابل التبني. نقاط قوتهم لم تكن عنق زجاجتنا. نقاط ضعفهم كانت بالضبط متطلباتنا: نموذج لغوي يحذف جانباً واحداً من التناقض، ولا شيء يتحقق منه أو يتراجع عنه.
شغّلنا المعيار القياسي بأنفسنا: 0.409 في المحاولة الأولى
الجدول الذي أنتجه شخص آخر هو ادّعاء، لذا عاملناه كذلك. أدخلنا ذاكرتنا في نفس إطار العمل وقيّمناها على نفس المستخدمين المحاكيين والأسئلة.
تفصيلان يحددان ما إذا كان رقم كهذا يعني شيئاً:
-
حكم واحد لكل صف. الجدول المنشور قُيّم بواسطة نموذج واحد وأجهزتنا تشغّل نموذجاً آخر، ووثائق إطار العمل نفسه تقول إن الدرجات من هذين لا تُقارن أبداً. لذا أخذنا إجابات كل منافس المنشورة وأعدنا تقييمها بحكمنا، جنباً إلى جنب مع إجاباتنا: نفس خمسة مستخدمين، نفس 616 سؤالاً.
-
ضبط لا يمكن أن يتسرب. كل تغيير ضُبط على مستخدمين آخرين وقُيّم على الخمسة المُبلَّغ عنهم بالضبط مرة واحدة، وفق قاعدة مكتوبة قبل وصول أي نتيجة.
وضعتنا الجولة الأولى في مستوى RetainDB وخلف الاثنين الآخرين اللذين استطعنا تقييمهما.
| النظام | الدرجة | فهرسة محادثة واحدة | نص يُسلَّم للنموذج لكل سؤال |
|---|---|---|---|
| mem0 | 0.520 | 31.6 ثانية | 2,759 حرفاً |
| Supermemory | 0.483 | لم يُقَس | 2,140 حرفاً |
| جولتنا الأولى | 0.409 | 0.22 ثانية | 1,559 حرفاً |
| RetainDB | 0.401 | لم يُقَس | 1,825 حرفاً |
عنق الزجاجة كان عمق الاستدعاء، لا الإجابة
كان التشخيص شيئاً واحداً، ولم يكن الترتيب أو الإجابة. عندما وصلت الجملة الصحيحة إلى أعلى خمس نتائج لدينا، كانت الإجابة صحيحة بنسبة 94% من الوقت. لكنها عادة لم تصل إليها.
| أين ترتبت الجملة المجيبة في بحث الكلمات المفتاحية | حصة الأسئلة |
|---|---|
| ضمن أعلى خمس نتائج | 48% |
| ضمن أعلى خمسين نتيجة | 85% |
معظم الإخفاقات جلست ضمن أعلى خمسين نتيجة، مرتبة منخفضة جداً لتُقرأ. البحث بالكلمات المفتاحية أيضاً له نقطة عمياء لا يصلحها أي عمق: عند سؤاله عما إذا تغير مكان إقامة مستخدم ما، لا يستطيع إيجاد جملة مثل "لقد انتقلت للتو إلى ملبورن"، لأن ولا كلمة واحدة تتطابق.
لذا أجرينا ثلاثة تغييرات وقيّمنا كل واحد منها على مستخدمَي الضبط.
| التغيير | الدرجة | ما الذي فعله |
|---|---|---|
| نقطة البداية | 0.361 | |
| البحث بالكلمات المفتاحية والمعنى معاً، جُمعت واسعاً وقُصّت متأخراً | 0.384 | ست نقاط إضافية من الأسئلة التي كان دليلها ضمن أعلى خمس نتائج |
| ملاحظات وقائع تُحدّث نفسها، يُسمح لها بالترتب في أي مكان | 0.23 إلى 0.25 | تضاعفت الأسئلة حول التغيير، وسقطت الأسئلة ذات الشرط من 0.70 إلى 0.06 |
| ملاحظات وقائع، بحد أقصى فتحتين من الخمس | 0.445 | حافظت على معظم التضاعف وأعادت الشروط |
الحل: بحث المعنى وملاحظات وقائع تُحدّث نفسها
بحث المعنى ليس نموذجاً. إنه جدول تضمين (embedding) ثابت، متجه واحد لكل جزء كلمة، يُحسب متوسطه. يعمل في numpy بدون شبكة ويُضمّن 71,062 دوراً سابقاً من دورات المحادثة في 34 ثانية على حاسوب محمول. المربط لكل أمر لا يزال لا يلمسه أبداً.
ملاحظات الوقائع هي الجزء الذي لم يمتلكه المخزن من قبل. حقيقة دائمة عن شخص أو منظمة تُكتب مرة واحدة ثم تُحدّث عند تغيّرها، مع القيمة الجديدة في الأعلى مع اليوم الذي بدأت فيه وكل قيمة قديمة محفوظة أسفلها مع تواريخها. قبل هذا، كان يمكن اقتراح تغيير فقط ليراجعه إنسان، ولا أحد يراجع قائمة انتظار، لذا كان المخزن يمكن أن يتعلم أن عميلاً كان موجوداً ولا يتعلم أبداً أن العميل قد انتقل.
بدون حد، ترتبت تلك الملاحظات فوق المحادثة وملأت كل فتحة. الأسئلة التي احتاجت المحادثة المحيطة، ما يفضله شخص ما تحت شرط، فقدتها. يجب ألا يستحوذ مخزن واحد أبداً على النافذة التي يقرأ منها النموذج.
بعد تقييم واحد، تعادلنا مع mem0 عند 0.520
على المستخدمين الخمسة المُبلَّغ عنهم، مُقيَّمين بالضبط مرة واحدة، تعادل الإصدار النهائي مع mem0.
| النظام | الدرجة | لكل سؤال | فهرسة محادثة واحدة | نص لكل سؤال |
|---|---|---|---|---|
| mem0 | 0.520 | 0.477 | 31.6 ثانية | 2,759 حرفاً |
| لدينا | 0.520 | 0.480 | 1.6 ثانية | 1,507 حرفاً |
| Supermemory | 0.483 | 0.429 | لم يُقَس | 2,140 حرفاً |
تحت التعادل، نحن نتصدر في مقياسين ونتأخر في مقياسين:
| المقياس | لدينا | mem0 |
|---|---|---|
| أسئلة عن حقائق تتغير | 0.451 | 0.445 |
| أسئلة عن حقائق لا تتغير أبداً | 0.308 | 0.275 |
| تفضيلات تصمد تحت شرط | 0.800 | 0.840 |
| دليل يصل إلى أعلى خمس نتائج | 64% | 69% |
اختلف تقييمان مستقلان لإجابات متطابقة تقريباً لدينا بمقدار 0.007، لذا فالتعادل تعادل. اقرأه مع ثلاثة تحذيرات:
-
هؤلاء المستخدمون الخمسة لطفاء مع الجميع. ينشر mem0 0.392 على الثلاثين كاملة ويسجّل 0.520 هنا، لذا لا شيء في هذا الجدول يتحول إلى الجدول العام.
-
Honcho ليس في هذا الجدول. إنه يتصدر الجدول العام، لكنه يسلّم النموذج 114,804 حرفاً لكل سؤال، وتقييم ذلك على وحدة معالجة رسومية (GPU) واحدة كان يزحف بمعدل سؤال في الدقيقة. من المرجح جداً أنه لا يزال يتصدر.
-
التعادل في الدقة ليس فوزاً. الذاكرة التي تتعادل في الدقة بينما تفهرس محادثة أسرع بعشرين مرة، بنصف النص، هي منتج مختلف، لا منتج أفضل. ما الذي يهم يعتمد على فاتورتك.
الذاكرة التي تصلح نفسها هي نظامان
"الذاكرة التي تصلح نفسها" كانت في قائمة الفريق. البحث أظهر ما تعنيه تلك العبارة فعلياً، وهو ليس شيئاً واحداً.
قاسته ورقة بحثية عن مستويات تحكم الذاكرة (memory control planes): القواعد الحتمية تسجّل 5% في فئة واحدة من التنظيف والنموذج يسجّل 100% فيها، بينما نفس النموذج يسجّل 0% في الحذف الواعي بالنية حيث تؤدي القواعد أداءً جيداً. القيام بكليهما يكسب 27.8 نقطة. الذاكرة ذاتية الإصلاح تحتاج مرحلة حتمية ومرحلة نموذج في نقاط مختلفة، أبداً واحدة أو الأخرى.

المرحلة الحتمية تجد التكرارات المتطابقة حرفياً والذاكرات التي تسمي مسار ملف لم يعد موجوداً. ثلاثة عشر إشارة حقيقية في الجولة الأولى. مرحلة النموذج تجد التناقضات بين الذاكرات المرتبطة وتقترح أيها يحل محل الآخر.
بدون حراسة، كانت مرحلة النموذج صحيحة بنسبة 55% تقريباً، وكل خطأ كان واثقاً. أحالت قاعدة إذن دائمة للتقاعد باستخدام ملاحظة مرجعية عن جلسات سحابية. قتلت حقيقة عن شبكة توصيل محتوى (CDN) خاصة بمنتج واحد باستخدام ملاحظة إصدار خاصة بمنتج آخر، لأن كليهما ذكر "CloudFront".
سمحت لخريطة مؤشرات أن تحيل للتقاعد الذاكرة الحقيقية التي كانت تشير إليها. أحالت للتقاعد قائمة من ستة قرارات مفتوحة لأن ذاكرة أحدث حلّت واحداً منها.
أربع حراسات وتراجع جعلا المنقّح آمناً
أربع حراسات أصلحت الأمر:
| الحراسة | ما تتطلبه |
|---|---|
| الثقة | عند أو فوق 0.75 |
| تداخل موضوع حقيقي | موضوعان مشتركان أو كيانان مشتركان، لا أبداً تقنية واحدة مشتركة |
| نفس الفئة | قاعدة وحدث لا يحل أحدهما محل الآخر أبداً |
| نطاق كامل | الحكم يقول إن المحتفَظ بها تغطي كل ما تدّعيه الخاسرة، و"عند الشك، قل جزئي" موجود في الأمر |
مع تفعيل الحراسات، طبّق نفس المسح تلقائياً إحالة واحدة فقط للتقاعد، الصحيحة، وأرسل ثلاثة توترات حقيقية إلى قائمة انتظار المراجعة.
السبب في أن تشغيله دون إشراف آمن ليس أن النموذج جيد في ذلك. إنه أن لا شيء يُحذف أبداً، وكل قرار في سجل تدقيق، وأمر واحد يعكسه.
الذاكرات المُحالة للتقاعد تبقى في المخزن بتسمية واضحة وعقوبة ترتيبية. الحقائق القديمة تتلاشى بنصف العمر بدلاً من الاختفاء: ملاحظة مشروع تفقد نصف وزنها كل 150 يوماً، وقاعدة قدمها المستخدم لا تتلاشى أبداً.
لا تُخفض الحراسات أبداً لجعل المنقّح يبدو منتجاً.
الذاكرة ادّعاء، لذا تحقق منها
إليك الجزء الذي لا يفعله أي شيء آخر درسناه.
الذاكرة التي كانت صحيحة في مايو وتوقفت عن كونها صحيحة بصمت غير مرئية. لا تتناقض مع شيء، ولا تسمي مساراً ميتاً، إنها فقط تجلس هناك وهي خاطئة.
كان لدينا واحدة تقول إن رموز Instagram "تُدار تلقائياً أسبوعياً بواسطة Lambda". لم يكن هناك Lambda. لم يدر شيء رمزاً طوال حياته بأكملها. بدت صحيحة لأشهر.

لذا كل ذاكرة تُعامل الآن كمجموعة من الادّعاءات، والادّعاءات تُفحص. يقرأ نموذج الذاكرة ويملأ وسائط مكتوبة (typed) لمجموعة ثابتة من الفحوصات: هل هذا المسار موجود، هل هذا الفرع (branch) موجود، هل طلب السحب (pull request) هذا مدمج، هل مشروع Doppler هذا موجود، هل هذا السر (secret) موجود، هل هذه النسخة (instance) موجودة، هل هذا الرابط يستجيب.
النموذج لا يكتب أمراً أبداً. كل وسيط يُتحقق منه قبل تشغيل أي شيء، وتسع محاولات حقن أوامر (prompt injection) ضده رُفضت جميعها. أوامر shell يؤلفها النموذج مجدولة هي ثغرة تنفيذ كود عن بعد بخطوات إضافية.
الجولة الكاملة الأولى استخرجت 383 ادّعاءً من 365 ذاكرة. ثلاثمائة وثمانية وعشرون نجحت. خمسة وعشرون فشلت، والإخفاقات كانت حقيقية:
| ما التقطته الفحوصات | الذاكرات |
|---|---|
| أشارت إلى مشروع Doppler لم يعد موجوداً | 5 |
| سمّت طلب سحب مفتوحاً بينما كان مدمجاً بالفعل | 5 |
| سمّت مسار ملف ميتاً | 7 |
| قالت إن مستودعاً كان خاصاً بينما كان عاماً | 1 |
ما يُسمح للذاكرة بقوله
خرجت قاعدتان من الإخفاقات، وكلتاهما حول ما يُسمح للذاكرة بقوله.
حالة طلب السحب ليست حقيقة، إنها مزاج. تتغير خلال ثوانٍ. المُستخرج الآن يقبل فقط "مدمج"، لأن الدمج نهائي، ويرفض مفتوح أو مغلق. أحد عشر ادّعاءً سقطت.
وفحص يُقسَّم حسب ما يعنيه فشله. مسار غير موجود هو دليل: نظام الملفات يقول الحقيقة من أي مكان. رابط لا يستجيب ليس دليلاً، لأن غير القابل للوصول من هذا الحاسوب المحمول ليس هو نفسه معطلاً.
لذا فإن فحص الرابط عاجز آلياً عن إرجاع "فشل". يمكنه إثبات الحياة. يُمنع من إثبات الموت. توجد هذه القاعدة لأنني وصفت منتجاً صحياً محمياً بجدار ناري بأنه "معطل" ثلاث مرات في تدقيق واحد، والقاعدة التي عليك أن تتذكرها ليست قاعدة.
الادّعاء الفاشل يكتب علامة "غير مُتحقق منه" على الذاكرة. الاستدعاء يعرضها بجانب النتيجة. لا يحتاج الإنسان لمسّها؛ تصل الذاكرة موسومة.
ما سرقناه، وممن
قرأ ستة عشر عميل بحث المستودعات، واستنسخوها عند التزامات (commits) مثبتة، وشغّلوا الكود، وحاولوا دحض بعضهم البعض. من 64 ادّعاءً، نجا 55. اثنان من "الاقتباسات" كانا ملفّقين وجدول واحد استُبدل بآخر. لهذا تُحقق من عملاء البحث.
أخذنا ورفضنا: العملاء الثلاثة
| المصدر | ما أخذناه | ما رفضناه، ولماذا |
|---|---|---|
| Hermes Agent | الملف الشخصي الدائم الحضور المحدود مع رأس سعة. قائمة "لا تلتقط": الإخفاقات المعتمدة على البيئة، الادّعاءات السلبية عن الأدوات، الأخطاء العابرة، السرديات لمرة واحدة. تصريحية لا أمرية: "المستخدم يفضل X"، أبداً "افعل X دائماً"، لأن الذاكرة الأمرية تُلغي الطلب الحالي. | الخطأ الصارم عندما تمتلئ الذاكرة؛ يفقد التصحيحات. وكيل واحد لكل مخزن؛ نحن نشغّل عشرين. |
| Honcho | قواعد الملف الشخصي: أربعة بادئات ثابتة، حد لكل إدخال، وأفضل اختبار قبول كتبه أي أحد: إذا كانت القيمة يُحتمل أن تتغير خلال ستة أشهر، فلا تنتمي إلى البطاقة. وضع إعادة البناء: يُعيد النموذج توليد الملف الشخصي دون رؤية القديم، بحيث تسقط الادّعاءات اليتيمة. | Honcho نفسه. 48,000 سطر، أربعة حاويات (containers)، 151 مفتاح إعداد، لا أمر تصدير، 617,000 رمز لكل جلسة. "التفكير الاستنتاجي" الرئيسي فيه مُبرمج بشكل ثابت إلى قائمة فارغة في الكود المشحون. |
| claude-mem | الفرضية: يجب ألا يعتمد الالتقاط على قرار النموذج بكتابة ذاكرة. ومتتبع مشكلاته، كتالوج مجاني لأنماط فشل الخدمة الخلفية (daemon). | الخدمة الخلفية، سيارة (sidecar) المتجهات، عملية النموذج الفرعية لكل استدعاء أداة. تقريباً جميع مشكلاته المفتوحة الست والثلاثين هي أخطاء دورة حياة الخدمة الخلفية. فهرس نصه الكامل لا يغطي الجدول الذي يحتفظ بالذاكرات. |
أخذنا ورفضنا: بقية المجال
| المصدر | ما أخذناه | ما رفضناه، ولماذا |
|---|---|---|
| supermemory | تأكيد. شركة ذاكرة متجهات ممولة تخلّت عن الاستدعاء الذي يقرره النموذج وقالت لماذا في تعليق كود: الاستدعاء يحدث في كل أمر، لا فقط عندما يختار النموذج إنفاق استدعاء أداة. إزالة التكرار لكل جلسة. الفشل المفتوح (fail open). | الحجب على حد تشابه فقط. الحد لم يكن يقوم بالعمل من أجلنا أيضاً. |
| Zep وGraphiti | كل حقيقة تحصل على نافذة صلاحية؛ التناقض يعلّم القديمة كمُتقاعدة بدلاً من حذفها. | الرسم البياني (graph). لا Neo4j، لا حل كيانات، لا استدعاء نموذج لكل حافة. الدلالات تناسب markdown مسطحاً وفهرساً واحداً. |
| صانع مهارات Anthropic | حلقة التقييم كبوابة ترقية: تُقبل المهارة فقط عند درجة أفضل بشكل حاسم على بيانات محجوزة، والتعادلات تُرفض. | لا شيء. سوقهم لا يشحن أي إضافة ذاكرة، لذا لا يوجد تقارب من الطرف الأول لانتظاره. |
| context-mode | الشكل: فهرس بحث بالإضافة إلى بيئة معزولة (sandbox) تُرجع فقط الإجابة سريع بما يكفي لحلقة تفاعلية. | معاملته كذاكرة. إنه جدار حماية لنافذة السياق، لكل جلسة، ولا يُدرج أبداً من تلقاء نفسه. |
الاقتباس فرضية
حلقة واحدة من البحث تستحق قسماً خاصاً بها، لأنها الخطأ الذي يوشك أن يرتكبه كل من يقرأ ورقة كهذه.
قاست ورقة بحثية عن الاستدعاء موثّقة جيداً توسيع المستندات على معيار قياسي (benchmark) معياري. توسيع مستند بإعادة صياغات سجّل أقل من خط الأساس بدون توسيع. توسيعه بنسخ مصطلحاته الخاصة سجّل أعلى بكثير.
كان أمر الإثراء لدينا قد أخبر النموذج صراحة أن الكلمات التي يولّدها يجب ألا تظهر في الملاحظة. كنا نولّد النصف الخاسر، ونكبت النصف الفائز، ونعزّز النصف الخاسر بمعامل 1.75.
لذا طبّقنا النتيجة. أعدنا اشتقاق جميع الذاكرات الـ474. انخفضت المجموعة الاختبارية من 14 من 16 إلى 13 من 16. أسوأ.
كان خط أساس الورقة مستنداً مُفهرساً بدون مصطلحاته الخاصة، حيث نسخها مرة أخرى هو التوسيع. مخزننا يفهرس بالفعل العنوان والوصف والنص الأساسي. نسخها في حقل الاسم المستعار (alias) كان تكراراً، وأزاح إعادات الصياغة، التي كانت التوسيع الحقيقي الوحيد لدينا.
تراجعنا، أعدنا الاشتقاق، عدنا إلى 14 من 16. أربعون دقيقة، وكانت ستكون صفراً لو قِسنا قبل أن نصدّق.
الاقتباس فرضية حول نظام شخص آخر.
بعد ذلك، فعل نظام الذاكرة شيئاً يستحق الملاحظة. التقط الفرضية، تلقائياً، في نهاية الجلسة. لم يلتقط الدحض.
الملاحظة التي تقول "أدرج المصطلحات" لا تزال في المخزن اليوم كذاكرة حية. الالتقاط يكتب ما كان يُعتقد؛ إنه لا يعرف متى نُقض الاعتقاد بعد ساعة. هذه مشكلة مفتوحة، وهي في القائمة أدناه.
السماح للوكيل بكتابة مهاراته الخاصة يجعله أسوأ
طلب الفريق إنشاء مهارات مستقلة (autonomous): عندما يتكرر إجراء، يجب على الوكيل كتابته كمهارة قابلة لإعادة الاستخدام والإعلان عن ذلك. إنها قوة خارقة، والبحث يقول إن النسخة الساذجة منها عبء.
على معيار قياسي من 87 مهمة بفحوصات حتمية، هبطت المهارات التي ولّدها الوكيل لنفسه بمقدار 8.1 نقطة تحت عدم وجود مهارات على الإطلاق، على Claude Code بأقوى نموذج. نفس النمط ثبت على إطاري عمل آخرين.
المهارات المنسّقة بشرياً رفعت معدل النجاح من 33.9% إلى 50.5%. ونموذج يُسأل أي من مهارتين أفضل يختار الأسوأ 84 مرة من 100 عندما تكون الفجوة حقيقية.
الطول يهم بطريقة لا يتوقعها أحد. إنه انتفاخ، لا منحدر:
| طول المهارة | الكسب في معدل النجاح |
|---|---|
| مضغوط | 19 نقطة |
| قياسي | 21.5 نقطة |
| مفصّل | 14.5 نقطة |
| شامل | 0.7 نقطة |
بعد صفحة واحدة، يتوقف التوثيق عن المساعدة.
الإصدار الذي بنيناه ينتظر إنساناً
لذا فإن الإصدار الذي بنيناه هو عكس المستقل. إنه يكتشف فقط إجراءً يتكرر عبر ثلاث جلسات منفصلة أو أكثر، ويعرف ذلك بالعدّ، لأن كل 71,062 دوراً من النص المنسوخ مُفهرسة، لذا "هل هذا متكرر" هو استعلام قاعدة بيانات بدلاً من تخمين نموذج.
يكتب المهارة خاملة، بحيث لا يدخل وصفها أبداً سياق أي أحد. البوابة هيكلية دائماً، لا حكماً نثرياً أبداً: سمِّ فشلاً ملموساً تمنعه المهارة، وكل مسار تستشهد به يُتحقق منه مقابل نظام الملفات. الإنسان فقط من يرقّي.
اختُبرت مقابل ستة مسودات خصومية، تظليل مهارة مدمجة، "توفر الوقت"، رؤية لمرة واحدة، مسارات مخترعة، جسم متضخم: رُفضت جميعها، وقُبلت الصالحة.
الجولة الحقيقية الأولى عبر ثلاثين جلسة لم تجد شيئاً لتُسوّده. كانت تلك الإجابة الصحيحة. رُقّيت مهارة واحدة منذ ذلك الحين، حراسة ضد أمر نشر (deploy) يستهدف الإنتاج بصمت.
ما لا يزال خاطئاً
الصدق أرخص من البديل، لذا إليك ما تبقى.
الطبقة الدائمة الحضور لا تزال أثقل بثلاث إلى أربع مرات من طبقة Hermes، عند حوالي 24,000 بايت اليوم، وهي فهرس بدلاً من ملف شخصي. الخفة التي أعجبنا بها تأتي من آلية رفضناها، ولم نجد بعد آلية ألطف تنتج نفس الانضباط.
الاتساق غير مفروض عبر الحدود. في اللحظة التي شُحن فيها الملف الشخصي للمستخدم، وُجدت كل حقيقة فيه مرتين. المنقّح يفحص الذاكرة مقابل الذاكرة، لا الملف الشخصي مقابل المخزن، ولا الذاكرة مقابل ملف تعليمات المشروع نفسه. Honcho هو الدليل على أن رؤيتين مشتقتين من حقيقة واحدة تختلفان في النهاية والنموذج يتبع الخاطئة.
الالتقاط يطلق النار في نهاية الجلسة وقبل الضغط (compaction)، وهي بالضبط اللحظة التي يكون فيها تلخيص واثق لتسلسل لم ينجح أبداً هو الأكثر احتمالاً. الاقتباس المدحوض أعلاه هو المثال الحي.
الذاكرة قابلة للتحقق فقط بقدر فحوصاتها. مسار، فرع، طلب سحب، سر، ونسخة يمكن التحقق منها. "ثلاثة آلاف من تلك الصفوف تنتمي إلى الصفحة" لا يمكن، و"المستخدم يفضل X" ليس ادّعاءً على الإطلاق.
لا يزال بإمكان المخزن أن يحتفظ ببيان كاذب بصمت؛ إنه فقط لا يستطيع الاحتفاظ بمسار كاذب بصمت.
في المعيار القياسي، التفضيلات الشرطية لا تزال أضعف نوع أسئلة لدينا، ولا يزال mem0 يُدخل الدليل ضمن أعلى خمس نتائج أكثر تكراراً. ملاحظات الوقائع تعمل على نموذج صغير عندما نُجري المعيار القياسي، وهو يخترع: قرأت واحدة "ليس لدي أم أتكئ عليها" وسجّلت المستخدم كأعزب. وقائد الجدول العام هو النظام الوحيد الذي لم نستطع إعادة تقييمه.
وذاكرة نظام الذاكرة عن نفسه أصبحت بائتة. ملاحظة واحدة تشير إلى ملف مربط (hook) حذفه النظام عندما نقل مربطاته إلى إضافة (plugin). إنها جالسة في قائمة انتظار المراجعة، موسومة غير مُتحقق منها، تنتظر مثل البقية.
القواعد الست
إذا أخذت شيئاً واحداً من هذه المذكرة، خذ هذه القائمة.
| القاعدة | الرقم وراءها |
|---|---|
| احسب أسطر وبايتات MEMORY.md الخاص بك | 200 سطر أو 25,000 بايت، أيهما يأتي أولاً، مقطوع من الأسفل |
| لا نموذج في مسار الأمر | 8.6 ثانية مقابل 18 ميلي ثانية |
| قِس على أوامر حقيقية، لا مجموعتك الاختبارية الخاصة | 22 من 23 أصبحت 17% |
| لا تحذف أبداً، أَحِل للتقاعد مع تراجع | كان المنقّح صحيحاً بنسبة 55% عند ثقة عالية |
| عامل كل ذاكرة كادّعاء وافحصها | 383 ادّعاءً، 25 خاطئاً، ورابط قد لا يثبت الموت أبداً |
| لا تدع مخزناً واحداً أبداً يملأ نافذة النموذج | ملاحظات الوقائع غير المحدودة أخذت الإجابات الشرطية من 0.70 إلى 0.06 |
الدرس الأكبر هو الذي يواصل المجال بأكمله إعادة اكتشافه من الجانب الخاطئ. نصف الاستدعاء من الذاكرة، إيجاد الملاحظة الصحيحة، مدروس جيداً ومحلول في الغالب بفهرس بحث لا يكلّف شيئاً. النصف الآخر من التحكم، تقرير ما يجوز للملاحظة ادّعاءه، ومتى تُحال للتقاعد، وكيف يُلتقط واحد كاذب، هو حيث تتعفن الذاكرة.
لا أحد يبيع ذلك النصف، لأنه ليس ميزة. إنه انضباط، ويجب أن يُبرمج في الكود بحيث لا يضطر أحد لتذكّره.
الكود، مُحوّل المعيار القياسي، وكل نتيجة مُقيَّمة مفتوحة المصدر على github.com/brainyboon/quipu.
إذا أردت رؤية بقية ما يعمل عليه Boon، ابدأ بـClaude Code للمصممين، وخوادم MCP التي تمنح الوكيل أيدياً، ووكلاء الذكاء الاصطناعي للمصممين، وتكلفة رموز وكيل الذكاء الاصطناعي، وهي الفاتورة التي تبقيها هذه الذاكرة عند صفر. إذا أردت هذا المستوى من العناية على علامتك التجارية الخاصة، Brainy Studio هو حيث يبدأ الأمر.
الأسئلة الشائعة
لماذا ينسى Claude Code الأشياء التي أضعها في MEMORY.md؟
يحمّل Claude Code فهرس الذاكرة التلقائي حتى 200 سطر أو 25,000 بايت، أيهما يُصادَف أولاً، ويتجاهل بصمت الباقي. الملف يُلحق بالأحدث ويُقطع من الأسفل، لذا الذاكرات الأحدث تسقط أولاً. إذا تجاهل الوكيل قاعدة أضفتها مؤخراً، احسب أسطر الملف وبايتاته.
هل يجب أن أثبّت إضافة ذاكرة لـClaude Code؟
تحقق من أمرين: هل تشغّل نموذجاً في مسار الأمر، مما يضيف ثوانٍ لكل أمر، وهل تشغّل خدمة خلفية (daemon)، حيث تعيش معظم مشكلات أكبر إضافة مفتوحة. ما أصلح مشكلتنا كان فهرس نص كامل يُبحث فيه في كل أمر، مراحل نموذج بلا اتصال، وخطوة تحقق. لا شيء من ذلك يحتاج خدمة خلفية.
هل بحث الكلمات المفتاحية جيد حقاً بما يكفي لذاكرة وكيل الذكاء الاصطناعي؟
بالنسبة للمربط لكل أمر، نعم. على معيار الاستدعاء الصفري المعياري، خسر كل نموذج تضمين (embedding) أحادي المتجه أمام بحث الكلمات المفتاحية BM25 البسيط، ومُعيد الترتيب العصبي (reranker) يكلّف حوالي 1.5 ثانية من تحميل النموذج مقابل ميزانية 18 ميلي ثانية. للبحث في المحادثات السابقة ذلك ليس كافياً: جدول تضمين ثابت، بحث بدلاً من نموذج، وجد الجملة التي تعلن تغييراً ضعف تكرار الكلمات المفتاحية. عند دمجه بسذاجة مع ترتيب الكلمات المفتاحية جعل النتائج أسوأ؛ عند دمجه بالترتيب وجُمع واسعاً، هو جزء مما تعادل مع mem0.
هل نظام الذاكرة هذا مفتوح المصدر؟
نعم. الإضافة، مُحوّل معيار MemConflict، الطريقة، وكل ملخص مُقيَّم على github.com/brainyboon/quipu تحت رخصة MIT. النواة تحتاج فقط مكتبة Python القياسية؛ بحث المعنى يحتاج numpy.
كيف تمنعون الذاكرة من تصديق شيء كاذب؟
بطريقتين. منقّح لا يحذف أبداً: التناقض يعلّم الذاكرة الأقدم كمُحالة للتقاعد بتسمية واضحة وعقوبة ترتيبية، كل قرار مُسجّل، وأمر واحد يتراجع عنه. ومُتحقق يعامل كل ذاكرة كادّعاءات مكتوبة (typed)، يفحصها مقابل الواقع، ويعلّم الذاكرة غير مُتحقق منها عندما يفشل أحد الادّعاءات.
كم تكلّف تشغيل نظام الذاكرة هذا؟
صفر دولار هامشياً: الاستدعاء استعلام قاعدة بيانات محلي، وكل استدعاء نموذج (الالتقاط في نهاية الجلسة، إثراء الذاكرات الجديدة، المسح اليومي للتناقضات) يمر عبر الاشتراك المدفوع بالفعل، أبداً واجهة برمجة تطبيقات مقاسة (metered API). التكلفة الحقيقية هي حصة الخطة، تقريباً استدعاء صغير واحد لكل جلسة. على معيار MemConflict، فهرس محادثة في 1.6 ثانية، مقابل 31.6 لـmem0 على نفس الجهاز.
Boon runs Brainy's studio on this memory. If you want a design partner whose AI remembers your brand rules, your file conventions and your last three decisions, start a project with Brainy Studio.
Get Started




