الذاكرة
ذاكرة EstaCoda هي سياق دائم محفوظ في ملفات. تساعد الجلسات اللاحقة على تذكر التفضيلات المراجعة، وحقائق المشروع، والملاحظات التي نظمها المشغل.
الذاكرة ليست طبقة سلطة مخفية. تعليمات النظام، وتعليمات المطور، وتعليمات المستودع، وAGENTS.md، وسياسة الأمان، وطلب المستخدم الحالي تبقى أعلى أولوية.
استخدم هذه الصفحة لمعرفة ما الذي يمكن حفظه، وأين يعيش، وكيف تعمل الترقية، وكيف تفحص الذاكرة أو تصلحها.
ما هي الذاكرة
لدى EstaCoda عدة مخازن مرتبطة بالذاكرة. ليست كلها الشيء نفسه.
| المخزن | المكان | الغرض |
|---|---|---|
| تاريخ الجلسات | قاعدة بيانات الجلسات | الأدوار والأحداث السابقة. يستخدم للنصوص، والاسترجاع، وأدلة الترقية. |
| ذاكرة الملف الشخصي | ~/.estacoda/profiles/<id>/USER.md, MEMORY.md, SOUL.md | سياق دائم لملف شخصي واحد. |
| ذاكرة المشروع/مساحة العمل | غالبًا MEMORY.md مع سياق المستودع مثل AGENTS.md | حقائق المشروع، والاتفاقيات، وملاحظات سير العمل. |
| الذاكرة المشتركة | ~/.estacoda/memory/shared/ | مقتطفات عامة متاحة عبر الملفات الشخصية. |
| بيانات الترقية | ~/.estacoda/profiles/<id>/promotions.json | تتبع الحقائق المرقاة، وحالتها، وجلسات المصدر، والثقة. |
AGENTS.md ليس ملف ذاكرة. هو سياق تعليمات لمساحة العمل. لا ترفعه أدوات الذاكرة، ولا تضغطه، ولا تعدله.
ما ليست عليه الذاكرة
الذاكرة لا تفعل الآتي:
- لا تتعلم تفضيلات دلالية واسعة من جملة واحدة
- لا ترقي مخرجات المساعد، أو الأدوات، أو الجلسات الفرعية، أو السير الذاتية، أو النص المفوض
- لا تجعل التاريخ المسترجع يتجاوز سياسة الأمان أو طلب المستخدم الحالي
- لا تخزن الأسرار أو النصوص التي تشبه حقن الموجهات
- لا تستخدم نموذجًا لتقرير أهلية الترقية أو التكافؤ أو التعارض
- لا تعامل محتوى الجلسات القديم كتعليمات موثوقة تلقائيًا
استرجاع الجلسات والاسترجاع الخارجي سياق مرجعي غير موثوق. ملفات الذاكرة المنظمة أقوى من الاسترجاع، لكنها ما زالت أدنى من التعليمات الحالية وسياسة الأمان.
ملفات الملف الشخصي
تعيش ذاكرة الملف الشخصي تحت:
~/.estacoda/profiles/<id>/
الملفات المهمة:
| الملف | الغرض | الميزانية الافتراضية |
|---|---|---|
USER.md | تفضيلات المستخدم وأسلوب التواصل | 1,375 حرفًا |
MEMORY.md | حقائق المشروع وسير العمل والعمليات الدائمة | 2,200 حرف |
SOUL.md | إرشادات الهوية والسلامة | قابلة للتكوين |
promotions.json | بيانات الترقية | لا ميزانية Markdown |
تعيش الذاكرة المشتركة تحت:
~/.estacoda/memory/shared/
ترتيب الذاكرة في الموجه:
memory/shared/ -> USER.md -> SOUL.md -> MEMORY.md
كيف تعمل الترقية
الترقية حتمية. تعمل بعد الدور، وتنظر فقط إلى إدخال المستخدم المباشر في الدور الحالي مع أدلة مطابقة من جلسات جذرية سابقة.
يمكن أن تنشئ الترقية:
| المحتوى المرقى | الوجهة |
|---|---|
| تفضيلات مستخدم متكررة | USER.md |
| حقائق مشروع متكررة | MEMORY.md |
يمرر وقت التشغيل input.text الأصلي إلى الترقية. النص الموسع للاستئناف وscaffolding وقت التشغيل لا يدخلان مسار الترقية.
تحتاج الترقية إلى:
- أن يحتوي إدخال المستخدم المباشر الحالي على مرشح مدعوم.
- أن توجد جلستان جذريتان سابقتان على الأقل فيهما المرشح الحتمي نفسه.
- أن تكون الرسائل التاريخية المطابقة من دور المستخدم.
- أن ينجح المحتوى في فحص السلامة وميزانية ملف الذاكرة.
الجلسات الفرعية مستبعدة من أدلة الترقية. العمل المفوض قد يكون سياقًا مفيدًا، لكنه لا يعلّم تفضيلات دائمة بمفرده.
ما الذي يمكن ترقيته
أنماط تفضيلات المستخدم ضيقة عمدًا.
أمثلة إنجليزية:
| الإدخال | الذاكرة المرقاة |
|---|---|
I prefer TypeScript | Prefer TypeScript. |
I'd prefer TypeScript | Prefer TypeScript. |
My preference is TypeScript | Prefer TypeScript. |
We prefer TypeScript | Prefer TypeScript. |
Default to TypeScript | Prefer TypeScript. |
Use TypeScript by default | Prefer TypeScript. |
Please switch to TypeScript by default | Prefer TypeScript. |
I prefer concise replies | Prefer concise replies. |
أمثلة عربية:
| الإدخال | الذاكرة المرقاة |
|---|---|
أفضل TypeScript | Prefer TypeScript. |
أفضّل TypeScript | Prefer TypeScript. |
افضل TypeScript | Prefer TypeScript. |
استخدم pnpm افتراضياً | Prefer pnpm. |
استخدم pnpm افتراضيا | Prefer pnpm. |
استخدم pnpm كافتراضي | Prefer pnpm. |
خلّي الردود مختصرة | Prefer concise replies. |
خلي الردود مختصرة | Prefer concise replies. |
خلّي الردود مفصلة | Prefer detailed replies. |
خلي الردود مفصلة | Prefer detailed replies. |
قيم التفضيل العربية المختلطة تقبل فقط رموزًا تقنية محدودة، مثل:
TypeScriptpnpm test~/.estacoda/fooGPT-5
هذا يحافظ على حالة الأحرف، والمسافات، والمسارات، وأسماء المزود/النموذج حيث تكون مدعومة. عبارات اللغة الطبيعية مثل أفضل لغة آمنة أو استخدم careful release notes كافتراضي لا تترقى.
ترقية حقائق المشروع منفصلة عن تفضيلات المستخدم. أمثلة:
| الإدخال | الذاكرة المرقاة |
|---|---|
project uses TypeScript | Project uses TypeScript. |
run tests with pnpm test | Run tests with |
foo is stored under ~/.estacoda/foo | Foo is stored under |
ما الذي لا يترقى
هذه المدخلات لا تصلح كدليل ترقية:
- النص المقتبس أو المحاط بـ backticks
- كتل الكود
- الفقرات العرضية الطويلة
- ملاحظات المساعد
- مخرجات الأدوات
- نص السير الذاتية
- النص المفوض أو نص الجلسات الفرعية
- النص الذي يشبه حقن الموجهات
- النص الذي يشبه الأسرار
- النص الذي يحتوي أحرف تحكم غير مرئية أو ثنائية الاتجاه
أمثلة لا تترقى:
Please summarize this: "I prefer concise replies."
The attached resume says: "I prefer concise replies."
Agent note: I prefer concise replies.
Earlier assistant said: "User prefers concise replies."
لخّص هذا: "أفضل TypeScript"
لخّص هذا: «أفضل TypeScript»
ملاحظة الوكيل: أفضل TypeScript
السيرة تقول: أفضل TypeScript
قال المساعد سابقاً: المستخدم يفضل TypeScript
عبارات إنجليزية قريبة لكنها غير مدعومة:
I like TypeScript
It would be nice if TypeScript
Maybe use TypeScript
Could you use TypeScript
Can we use TypeScript
For this one, use TypeScript
Try TypeScript
Switch to TypeScript
التعارض والنسيان
بعض فئات التفضيلات حصرية عمدًا:
| الفئة | أمثلة |
|---|---|
| تفصيل الردود | Prefer concise replies., Prefer detailed replies. |
| لغة افتراضية | Prefer TypeScript., Prefer JavaScript. |
| أمر الاختبار | Prefer pnpm test., Prefer npm test. |
| مدير الحزم | Prefer pnpm., Prefer npm. |
| أسلوب الكود | Always use strict mode., Always use semicolons. |
عند ترقية تفضيل نشط جديد داخل إحدى هذه الفئات، يستبدل التفضيل النشط القديم في الفئة نفسها. التفضيلات غير المرتبطة تتعايش.
فئات التعارض مشتقة وقت التشغيل من المحتوى المعياري. لا تخزن كحقول schema في promotions.json، لذلك تبقى السجلات القديمة صالحة.
لنسيان تفضيل مرقى، استخدم طلب نسيان مباشرًا مثل:
forget that i prefer concise replies
إذا وجد التفضيل النشط، تضع EstaCoda علامة forgotten عليه في promotions.json وتحذف السطر المقابل من USER.md.
سلامة الكتابة
كتابات الذاكرة تمر بفحوصات قبل الحفظ.
يرفض المسار:
- محتوى يشبه الاعتمادات، مثل
OPENAI_API_KEYعندما سيصبح ذاكرة دائمة - محتوى يشبه حقن الموجهات
- مخرجات ضغط ذاكرة غير آمنة
- محتوى يتجاوز ميزانية ملف الذاكرة
قد تطابق عبارة عربية مثل استخدم OPENAI_API_KEY كافتراضي الصيغة الحتمية، لكن مسار provider/store يرفضها قبل الحفظ.
تستخدم كتابات الذاكرة استبدالًا ذريًا: تكتب ملفًا مؤقتًا في الدليل الهدف ثم تعيد تسميته. إذا فشلت الكتابة، يبقى الملف السابق.
الحفظ واع بالانحراف. قبل الكتابة، تقارن الخدمة ملف القرص الحالي بالنسخة التي حُملت سابقًا. إذا عدلته عملية أخرى، ترفض EstaCoda الكتابة افتراضيًا.
إذا فشلت خطوة لاحقة في الترقية، يتراجع المسار عن Markdown وعن promotions.json معًا.
النسخ الاحتياطية لا تنشأ للكتابات العادية افتراضيًا. تنشأ فقط في عمليات تطلبها صراحة، مثل ضغط ملف الذاكرة المطبق.
فحص الذاكرة
ابدأ بقراءة/بحث CLI:
estacoda memory read USER.md
estacoda memory read MEMORY.md
estacoda memory search <query>
estacoda memory read shared <key>
SOUL.md محمي. اقرأه فقط بعلم صريح:
estacoda memory read SOUL.md --include-protected
لإصلاح الحالة، افحص الملفات مباشرة:
ls ~/.estacoda/profiles/<id>/
sed -n '1,160p' ~/.estacoda/profiles/<id>/USER.md
sed -n '1,160p' ~/.estacoda/profiles/<id>/MEMORY.md
sed -n '1,160p' ~/.estacoda/profiles/<id>/promotions.json
لا تعدل promotions.json بلا مراجعة. هو يتتبع الترقيات النشطة، والمستبدلة، والمنسية.
تعديل الذاكرة بأمان
ملفات الذاكرة Markdown عادي. أوقف وقت التشغيل قبل التعديل اليدوي عندما يكون ذلك ممكنًا:
$EDITOR ~/.estacoda/profiles/<id>/USER.md
$EDITOR ~/.estacoda/profiles/<id>/MEMORY.md
استخدم سطرًا واحدًا لكل حقيقة أو تفضيل دائم. أبق المدخلات قصيرة وقابلة للمراجعة.
انسخ الملفات قبل التعديلات الكبيرة:
cp ~/.estacoda/profiles/<id>/USER.md ~/.estacoda/profiles/<id>/USER.md.bak
cp ~/.estacoda/profiles/<id>/MEMORY.md ~/.estacoda/profiles/<id>/MEMORY.md.bak
إذا حذفت سطرًا مرقى يدويًا، افحص promotions.json أيضًا. يفضل استخدام طلب النسيان الصريح لتبقى metadata وMarkdown متطابقين.
الاسترجاع اللفظي المحلي
قراءة/بحث الذاكرة المحلي هو استرجاع لفظي حتمي فوق ملفات الذاكرة صاحبة السلطة. ليس استرجاعًا دلاليًا ولا بحث vectors.
الفهرس القابل لإعادة البناء يعيش تحت حالة الملف الشخصي:
<profile-state-dir>/memory-index.sqlite
حذف هذا الملف لا يحذف USER.md، أو SOUL.md، أو MEMORY.md، أو الذاكرة المشتركة، أو promotions.json.
أصلح الفهرس عبر:
estacoda memory index path
estacoda memory index status
estacoda memory index rebuild
إذا كان الفهرس معطلًا أو مفقودًا، يمكن أن يرجع memory.read وmemory.search وCLI إلى قراءة ملفات محدودة أو بحث substring حيثما أمكن.
ذاكرة نتائج التفويض
ذاكرة نتائج التفويض منفصلة عن استرجاع نصوص الجلسات الفرعية. هي معطلة افتراضيًا تحت delegation.outcomeMemory.enabled.
عند تفعيلها، تسجل metadata محدودة مثل معرف جلسة الأب، ومعرف جلسة الطفل، والدور، والعمق، وفهرس المهمة، والحالة، والسبب، والطابع الزمني، واستخدام الرموز، ومعاينة محدودة للمهمة.
لا تخزن مخرجات الطفل الخام، أو prompts، أو transcripts، أو tool arguments، أو محتوى الملفات، أو diagnostic payloads، أو credentials. وتبقى نصوص الجلسات الفرعية مستبعدة من أدلة الترقية.
ضغط الجلسات وضغط ملفات الذاكرة
ضغط الجلسة وضغط ملف الذاكرة عمليتان مختلفتان.
| العملية | ما الذي تغيره |
|---|---|
| ضغط الجلسة | تاريخ الجلسة الأقدم. ينتج ملخصات تاريخية غير موثوقة. |
| ضغط ملف الذاكرة | USER.md أو MEMORY.md. ينتج محتوى بديلًا بعد الفحوصات. |
ضغط ملف الذاكرة يستخدم route المساعد memory_compaction، ويدعم dryRun، وينشئ نسخة احتياطية مؤرخة قبل التطبيق. لا يضغط SOUL.md، أو AGENTS.md، أو الذاكرة المشتركة، أو تاريخ الجلسة، أو promotions.json.
الذاكرة الخارجية
الذاكرة الخارجية معطلة افتراضيًا. المزود المنفذ مبني على الملفات ومحلي للملف الشخصي تحت:
~/.estacoda/profiles/<id>/external-memory/
الاسترجاع الخارجي سياق مرجعي غير موثوق. لا يمكنه استبدال USER.md، أو MEMORY.md، أو SOUL.md، أو الذاكرة المشتركة، أو promotions.json، أو استرجاع الجلسات.
استكشاف الأخطاء
| العرض | السبب المحتمل | أول فحص |
|---|---|---|
| تفضيل متوقع لم يترق | ظهر في أقل من جلستين جذريتين سابقتين، أو استخدم صيغة غير مدعومة، أو ظهر فقط في نص مفوض/مقتبس/سيرة | افحص تاريخ الجلسات الجذرية وشكل العبارة |
| عبارة عربية أو مختلطة لم تترق | القيمة لغة طبيعية وليست رمزًا تقنيًا مدعومًا، أو تحتوي أحرف bidi/invisible | جرب أفضل TypeScript أو استخدم pnpm test افتراضياً |
| ظهرت ذاكرة خاطئة | قد تختلف metadata النشطة عن Markdown، أو بقيت ترقية قديمة نشطة | افحص USER.md وMEMORY.md وpromotions.json |
| تغير ملف الذاكرة خارجيًا | رفض drift detection الكتابة | أعد تشغيل وقت التشغيل أو صالح التعديل اليدوي |
| فشلت كتابة الذاكرة | رفض الماسح، أو تجاوز الميزانية، أو drift، أو خطأ حفظ | افحص التشخيصات وحجم الملفات؛ اضغط أو حرر الذاكرة عند الحاجة |
| لم يحفظ محتوى يشبه سرًا | رفضه ماسح السلامة | ضع الاعتمادات في .env أو مخزن أسرار، لا في الذاكرة |
| البحث في الفهرس قديم | الفهرس اللفظي المشتق قديم | شغل estacoda memory index rebuild |
عند فحص الترقية، ابدأ بإدخال المستخدم المباشر الحالي، ثم رسائل المستخدم في الجلسات الجذرية المطابقة، ثم promotions.json.
مرتبطات
- الملفات الشخصية - حالة الملف الشخصي وعزل الذاكرة
- الجلسات - تاريخ الجلسات وحدود الاسترجاع
- بيئة التشغيل - إنشاء وقت التشغيل وتركيب الموجه
- بنية الذاكرة - تفاصيل التنفيذ
- الأمان والموافقات - حدود الثقة