الذاكرة والمعرفة
ما غاية الذاكرة
قسم بعنوان “ما غاية الذاكرة”من غير الذاكرة تبدأ كل محادثة مع وكيل من الصفر: يُعاد شرح العُرف نفسه، ويُعاد الجدل في القرار نفسه، ويُعاد استكشاف الطريق المسدود نفسه. الذاكرة مخزن على نطاق مساحة العمل يبقى بعد التشغيلات، وغايتها أن يجد وكيل لاحق المعرفة التي أنتجها وكيل سبقه.
فيها ثلاث طبقات، وكل طبقة تجيب عن سؤال مختلف:
- الحقائق: ما هو صحيح (عُرف، أو نتيجة، أو قرار).
- السياسات: ما يجب أن يفعله الوكلاء بشأنه (قاعدة معيارية).
- الذاكرة العاملة: ما كان وكيل واحد في منتصفه.
والفرق مهم لأن كل طبقة تصل إلى الوكيل من طريق مختلف. الحقائق تُبحث. السياسات تُدفَع. الذاكرة العاملة خاصة.
الحقائق
قسم بعنوان “الحقائق”MemoryFact وحدة معرفة محصورة بمساحة عمل ونطاق.
| السمة | ما هي |
|---|---|
domain |
نطاق المعرفة (“conventions” و“decisions” و“codebase”) |
topic |
وسم قصير للموضوع |
content |
نص المعرفة |
confidence |
0.0–1.0، تُبذَر من المنشأ وترتفع مع إعادة الذكر |
memoryType |
نوع الحقيقة، وهو ما يحدّد منحنى اضمحلالها الزمني |
veracity |
كيف عُرفت. يبذر الثقة ويحدّد مقدار الرفع عند كل إعادة ذكر |
sourceObservationIds |
الملاحظات التي أدّت إليها |
supersededBy |
الحقيقة الأحدث التي حلّت محلها، إن وُجدت |
validUntil, recallCount, mentionCount |
إشارات انتهاء الصلاحية والاستخدام التي تُستعمل عند الاسترجاع |
الصفان الأخيران هما ما يفوته الناس، وهما ما يقرّر أي حقيقة تظهر. يحمل memoryType معاملات اضمحلال Weibull لكل نوع، فيخبو الالتزام المحدود بمدة سريعًا بينما لا تخبو حقيقة الملف المستقرة. يسجّل veracity المنشأ: تصريح إنسان (الوزن 1.0)، أو استنتاج وكيل (0.7)، أو ناتج أداة (0.5)، أو استيراد (0.6). وهذا الوزن يبذر الثقة التي تبدأ منها الحقيقة.
لا تُحرَّر الحقائق في موضعها حين تُناقَض. كتابة حقيقة تشغّل كشف التعارض على حقائق النطاق نفسه والموضوع نفسه، وتستبدل الخاسرة، وتسجّل صف تعارض. المقصود سجل التدقيق: تستطيع دائمًا أن ترى ما كان يُعتقَد من قبل، وما الذي حلّ محلّه.
السياسات
قسم بعنوان “السياسات”MemoryPolicy قاعدة معيارية مشتقة من الحقائق، محصورة بمساحة عمل ونطاق، ولها علامة نشاط وrequiredRole اختياري.
كل سياسة نشطة في مساحة العمل تُحقن في كل إرسال، بلا تصفية: لا بالنطاق، ولا بالدور، ولا بالمهمة، ولا بالمساحة. يجدر أن تعرف هذا قبل أن تكتب السياسة العشرين، لأن السياسات تزاحم المهمة على نافذة السياق نفسها. ولهذا يكون requiredRole على السياسة إرشاديًا: يصف من تُوجَّه إليه القاعدة، ولا يمنع وصولها إلى سائر الوكلاء.
النطاقات
قسم بعنوان “النطاقات”يجمع MemoryDomain الحقائق والسياسات داخل مساحة العمل. تمنح النطاقات المعرفة بنية تنظيمية، وهي الوحدة التي تُكتب أذونات الوصول في مقابلها. انظر التنبيه أدناه قبل أن تعامل النطاق حدًّا للسرية.
يكون النطاق إما على مستوى مساحة العمل كلها (architecture) أو محصورًا بمستودع واحد (repo:<slug>/architecture). الاسم نفسه في النطاقين مخزنان مستقلان: حقيقة تصح على قاعدة شفرة واحدة لا تكتب فوق الحقيقة التي على مستوى مساحة العمل. يرتّب search_memory وتمهيد الإرسال ذاكرة المستودع أولًا حين يعمل الوكيل في ذلك المستودع، ولا يستبعدان الباقي. مرّر repo إلى propose_fact أو propose_policy أو search_memory لتكتب في ذلك النطاق أو ترفع رتبته.
التحكم في الوصول مفتوح عند الفشل في القراءة
قسم بعنوان “التحكم في الوصول مفتوح عند الفشل في القراءة”يربط MemoryAccessGrant دور وكيل ونطاقًا بأحد مستويات الإذن الثلاثة:
| الإذن | المعنى |
|---|---|
none |
لا وصول |
read |
يمكن البحث عن الحقائق واسترجاعها |
write |
يشترطه propose_policy. كتابات الحقائق (propose_fact وsupersede_fact) لا تخضع لبوابة الإذن |
اللاتماثل مقصود: لين في القراءات، وصارم في كتابة السياسات. الذاكرة أنفع حين تتداول. رفض القراءة ينتج وكيلًا يعرف أقل ويصمت، لا وكيلًا يبلّغ عن مشكلة. رفض كتابة السياسة ظاهر ويمكن تصحيحه، ولهذا يقع الفرض هناك. النطاق الجديد يبذر write لكل دور، وتشديده بعد ذلك تعديل عبر RPC فقط، إذ لا واجهة للأذونات.
الذاكرة العاملة
قسم بعنوان “الذاكرة العاملة”لكل وكيل AgentWorkingMemory: مسودة نص حر مفتاحها مساحة العمل والوكيل. تبقى عبر التشغيلات، وهي خاصة بذلك الوكيل، وتُحقن في مطالبته عند كل إرسال. هنا يسكن «كنت في منتصف إعادة هيكلة المصادقة»، وهي حالة تستحق الحمل إلى التشغيل التالي ولا تستحق الترقية إلى حقيقة دائمة.
ما يصل فعلًا إلى مطالبة الوكيل
قسم بعنوان “ما يصل فعلًا إلى مطالبة الوكيل”عند الإرسال يُجمَّع تمهيد الذاكرة من ثلاثة أشياء بالضبط:
- كل سياسة نشطة في مساحة العمل، على هيئة أسطر
- [domain] rule. - الذاكرة العاملة الخاصة بالوكيل، حرفيًا.
- قائمة قصيرة من الحقائق مطابقة بالكلمات المفتاحية لهذه المهمة: خمس على الأكثر، ضمن ميزانية نحو 1200 حرف، وفقط حين يبلغ وصف المهمة 20 حرفًا على الأقل. المهام الأقصر لا تحصل على أي حقائق.
القائمة القصيرة بحث FTS وكلمات مفتاحية فقط، والسقف مقصود. تضمين الاستعلام بطيء، ومسار الإرسال هو الموضع الذي يظهر فيه زمن الاستجابة فورًا، فيُبقى المسار الدلالي البطيء خارجه عن قصد. يختم التمهيد بطلب التحقق مما يُعتمد عليه عبر search_memory، وهناك يعيش نموذج الاسترجاع الكامل.
لا تُستشار أذونات الوصول في هذا المسار. ما تجده القائمة القصيرة هو ما يراه الوكيل.
الاسترجاع: استعلام واحد وأربعة أصوات
قسم بعنوان “الاسترجاع: استعلام واحد وأربعة أصوات”لأداة search_memory المواجهة للوكيل ثلاثة أوضاع، وهي عمليات بحث مختلفة فعلًا:
keyword: FTS5 فقط.semantic: تُدمَج نتائج BM25 والمتجهات بمقلوب الرتبة.hybrid(الافتراضي): استرجاع متعدد الأصوات، أربعة أصوات مرتَّبة تُدمَج ثم تُنوَّع.
الأصوات الأربعة هي المعجمي (FTS)، والدلالي (KNN المتجهي)، والزمني (الحقائق النشطة الأحدث)، والبياني: سير بقفزتين على الحواف العرضية انطلاقًا من أقوى البذور المعجمية والدلالية. الصوت البياني هو سبب وجود الحواف العرضية أصلًا، إذ يُظهر الحقيقة المتصلة بجوابك من غير أن تطابق أي كلمة من كلماتك. تُوزَّن الأصوات حسب نية الاستعلام المصنَّفة (يحمل الدلالي الوزن الأكبر افتراضيًا، ثم البياني والمعجمي، ثم الحداثة)، ويُضرَب تقدير كل مرشح في اضمحلال Weibull الخاص به، وتُنوَّع النتائج بـ MMR حتى لا تزاحم خمس إعادات لصياغة حقيقة واحدة أربع حقائق مختلفة.
بحث الذاكرة على الحاسوب والويب مسار منفصل وأبسط: عملية RPC المسماة memory_fact.search تعمل بـ FTS5 فقط، لأن العميل الخفيف لا يستطيع إرسال تضمين مع الاستعلام، والمسار الهجين يبقى داخل المضيف. لذا فالترتيب الذي تراه في مستعرض الذاكرة ليس الترتيب الذي يحصل عليه الوكيل من search_memory. هذا متوقع وليس خللًا، غير أن «بحثت ولم أجده» في الواجهة ليس دليلًا على أن الوكيل لن يجده.
أين تعيش الذاكرة ومن يكتبها
قسم بعنوان “أين تعيش الذاكرة ومن يكتبها”مستعرض الذاكرة في الإعدادات ← مساحة العمل ← الذاكرة (/workspaces/<id>/settings/memory)، وفيه علامات تبويب الحقائق والسياسات وشبكة المعرفة.
هنا لاتماثل يفاجئ الناس: تستطيع تحرير الذاكرة وحذفها، ولا تستطيع إنشاءها. ليس في علامة تبويب الحقائق ولا في علامة تبويب السياسات زر إضافة. التأليف من جهة الوكيل، عبر propose_fact وpropose_policy (supersede_fact أو supersede_policy لاستبدالها). يكتب remember عنصرًا في الطبقة الساخنة محصورًا بالجلسة، وقد يرقّيه consolidate_memory لاحقًا إلى حقيقة. يكتب record_observation وupdate_my_notes المسودة الخاصة التي تُحقن عند الإرسال. المستعرض سطح للمراجعة والتصحيح. إذا أردت حقيقة في الذاكرة، فقل ذلك لوكيل.
عمليتا صيانة أخريان يُستدعيان من الوكيل كذلك، ولا تعملان على جدول: يدمج consolidate_memory الحقائق المتراكمة ويشذّبها، ويوفّق harmonize_memory المعتقدات التي تباعدت بين الوكلاء. يعرض list_memory_conflicts ما سجّله كشف التعارض من قبل. لا شيء يشغّلهما لك على مؤقّت. تُحصَد قرارات الاجتماع في نطاق decisions حين تسجّلها خطوة حفظ الاجتماع، وذلك ليس مؤقّتًا على تشغيلات الوكيل المكتملة.
مفاهيم ذات صلة
قسم بعنوان “مفاهيم ذات صلة”- نموذج الوكيل: الأدوار هي ما تُكتب الأذونات في مقابلها
- مساحات العمل والعزل: الذاكرة على نطاق مساحة العمل، وتعيش في ملف قاعدة بيانات تلك المساحة
- إدارة ذاكرة مساحة العمل: العمل بالذاكرة في الممارسة