الذاكرة في Claude Code معناها إن فيه context بيفضل موجود حتى بعد ما تقفل الجلسة وتفتح واحدة جديدة. يعني مش زي نافذة المحادثة العادية اللي بتتمسح — ملفات الذاكرة بتتحمّل تلقائيًا كل مرة تشغّل فيها Claude Code. الموديول ده بيشرح ترتيب ملفات الذاكرة، إزاي تعملها وتحدّثها، وإزاي الذاكرة التلقائية بتشتغل في الخلفية.
تسلسل الذاكرة
Claude Code عنده نظامين أساسيين للذاكرة: ملفات CLAUDE.md اللي بتكتبها أنت، والذاكرة التلقائية اللي Claude بيكتبها لنفسه. المواقع الرسمية لملفات CLAUDE.md هي: سياسة المنظمة (managed policy على مستوى المؤسسة)، تعليمات المستخدم (~/.claude/CLAUDE.md)، تعليمات المشروع (./CLAUDE.md أو ./.claude/CLAUDE.md — موقعان بديلان مدعومان لنفس نطاق المشروع، مش نفس الملف)، والتعليمات المحلية (./CLAUDE.local.md — تفضيلات شخصية للمشروع، بتُتجاهل بواسطة git). كل الملفات اللي تُكتشف بتتدمج في الـ context بدل ما تتغلب على بعض — سياسة المنظمة بتتحمّل الأول (أوسع نطاق)، وبعدها تعليمات المستخدم ثم المشروع ثم المحلية بالترتيب، والتعليمات الأقرب لمجلد العمل بتاعك بتُقرأ آخرًا.
ذاكرة المشروع هي اللي هتستخدمها أكتر حاجة. دي ملف markdown بيتعمل له commit في git وبيتشارك مع الفريق. حط فيها الـ tech stack، الـ naming conventions، الأوامر الشائعة، والحاجات الغير واضحة اللي ممكن تلخبط حد جديد. ذاكرة المستخدم هي للتفضيلات الشخصية اللي بتنطبق على كل مشاريعك — الـ patterns اللي بتفضّلها، إزاي تحب الكود يتشرح، الأدوات اللي بتستخدمها دايمًا.
عمليًا: استخدم ذاكرة المشروع لكل حاجة زميلك محتاج يفهمها عن الـ codebase — خطوات الـ setup، أوامر الـ testing، قرارات الـ architecture. استخدم ذاكرة المستخدم للي بتحب تشتغل بيها أنت شخصيًا، مش اللي المشروع بيعمله. لو أي entry في ذاكرة المشروع ليها علاقة بيك أنت بس (مثلًا، alias مخصص أو shortcut محلي)، حطها في CLAUDE.local.md بدلًا عشان تفضل خاصة.
للمشاريع الكبيرة، قسّم التعليمات في ملفات .claude/rules/*.md. الـ rules ممكن تكون عامة على المشروع كله أو مخصصة لمسارات معينة باستخدام الـ frontmatter. rule بـ paths: src/api/**/*.ts بيتفعّل بس لما Claude يشتغل على ملفات مطابقة:
---
paths: src/api/**/*.ts
---
All API endpoints must validate input with Zod. Return 400 with field-level errors on validation failure.
الـ rules المخصصة للمسارات بتتفعّل لما Claude يقرأ ملفات مطابقة للـ pattern، مش مع كل استخدام للأداة. الـ rules من غير حقل paths بيتحمّل عند بدء التشغيل بنفس أولوية .claude/CLAUDE.md. الـ circular symlinks بتتنشأ وتُدار بشكل آمن.
إنشاء وتحديث الذاكرة
أسرع طريقة تبدأ بيها هي /init. شغّله في مجلد المشروع بتاعك وClaude هيحلل الكود ويولّد ملف CLAUDE.md كبداية. اضبط CLAUDE_CODE_NEW_INIT=1 عشان تفعّل تجربة إعداد تفاعلية متعددة المراحل — /init بيسألك إيه الـ artifacts اللي لازم تتضبط (ملفات CLAUDE.md، والـ skills، والـ hooks)، وبعدين بيستكشف الكود بتاعك بـ subagent، وبيملأ الفجوات عن طريق أسئلة متابعة، وبيعرض proposal قابل للمراجعة قبل ما يكتب أي ملفات.
للتعديلات الأكبر، /memory بيفتح ملفات الذاكرة بتاعتك في الـ editor بتاعك. عدّل، احفظ، وClaude هيحمّلها تلقائيًا. لو عايز Claude يفتكر حاجة تلقائيًا، قوله بشكل طبيعي، زي “remember that the API tests require Redis”. لو عايز الحاجة تتكتب في CLAUDE.md، قول لـ Claude صراحة يضيفها هناك. الـ syntax بتاع @path/to/file بيوسّع الملفات المستوردة ويحمّلها في الـ context عند بدء التشغيل جنب CLAUDE.md اللي بيشير ليها — الملفات المستوردة لسه بتستهلك من الـ context tokens:
# Project Standards
@README.md
@docs/architecture.md
@package.json
الـ imports بتدعم أقصى عمق من أربعة hops. أول مرة تستورد ملف من مسار خارجي، هيظهر لك dialog للموافقة. لو رفضت، الـ imports بتفضل معطّلة والـ dialog مهيظهرش تاني.
الذاكرة التلقائية
الذاكرة التلقائية هي مجلد Claude بيكتب فيه ملاحظاته خلال الجلسات — patterns اكتشفها، سلوكيات خاصة بالمشروع، insights من الـ debugging. أول 200 سطر أو 25KB من ~/.claude/projects/<project>/memory/MEMORY.md، أيهما أقل، بيتحمّلوا تلقائيًا في بداية كل جلسة. ملفات المواضيع الإضافية (debugging.md، api-conventions.md) بتتحمّل عند الطلب.
الـ subagents كمان تقدر تحافظ على الذاكرة التلقائية الخاصة بيها. شوف إعدادات الـ subagents للتفاصيل.
مش محتاج تدير الذاكرة التلقائية يدويًا — Claude بيتولّى الكتابة بنفسه. تقدر تقرأ الملفات وتعدّلها لو حبيت تصحّح أو تضيف على ملاحظات Claude. تقدر تتحكم فيها من /memory، أو تعطّلها لجلسة واحدة بـ CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 claude، أو تظبط autoMemoryEnabled في الإعدادات. لو عايز تنقل المجلد لمكان متزامن أو مسار مخصص، اظبط autoMemoryDirectory في إعدادات المستخدم (مش إعدادات المشروع أو المحلية — إعدادات المشروع والمحلية ممكن توجّه الكتابة لمكان غير آمن ومش مقبولة):
{
"autoMemoryEnabled": true,
"autoMemoryDirectory": "/path/to/shared/memory"
}
في الـ monorepos الكبيرة اللي فيها ملفات CLAUDE.md كتير، استخدم claudeMdExcludes في الإعدادات عشان تتخطّى الملفات اللي مش محتاجها:
{
"claudeMdExcludes": ["packages/legacy-app/CLAUDE.md", "vendors/**/CLAUDE.md"]
}
ملفات CLAUDE.md وCLAUDE.local.md في التسلسل الهرمي للمجلدات فوق مجلد العمل بتتحمّل بالكامل عند بدء التشغيل. ملفات المجلدات الفرعية بتتحمّل عند الطلب لما Claude يقرأ ملفات في المجلدات دي. في الـ monorepos، claudeMdExcludes بيساعدك تبعد التعليمات اللي مش ليها علاقة من الـ context.
كتابة تعليمات فعّالة
الـ context window visualization بيعرض مكان تحميل الـ CLAUDE.md بالنسبة لباقي سياق بدء التشغيل. استخدمه عشان تفهم قد إيه المساحة اللي بتستهلكها تعليماتك. استهدف أقل من 200 سطر لكل ملف CLAUDE.md — الملفات الأطول بتاخد مساحة أكبر من الـ context وبتقلل الالتزام. لو التعليمات بتكبر، استخدم الـ path-scoped rules عشان التعليمات تتحمّل بس لما Claude يشتغل على ملفات مطابقة.