المدونة

Claude Code لا يرى ملفات المشروع: لماذا وما العمل في عام 2026

Markdown

لماذا لا يستطيع Claude Code العثور على ملفات المشروع: ربما شُغّل من مجلد غير صحيح، أو كان الملف في مجلد فرعي، أو أدرجه .gitignore. كيفية منح الوصول باستخدام add-dir وcd والإعدادات.

قراءة المقال كاملًا

موقف مألوف: تطلب من Claude Code إصلاح ملف، فيرد بأن هذا الملف غير موجود. أو يغيّر بصمت شيئًا مختلفًا تمامًا عما قصدته. تفتح المجلد، فتجد الملف هناك، في مكانه الصحيح تمامًا. لكن يبدو أن Claude لا يلاحظه.

في الغالب، هناك سبب واحد، ولا يوجد أي عطل. لا يرى Claude الملفات الموجودة على الكمبيوتر بأكمله. لا يمكنه الوصول إلا إلى المجلد الذي شغّلته منه. قد يجعل التشغيل من مجلد مجاور أو أدنى من جذر المشروع الملفات المطلوبة خارج شجرة العمل. أما التشغيل من أصل مثل المجلد الرئيسي فيمنح نطاقًا أوسع؛ ولا يجعل المشروع المتفرع منه غير متاح. سأشرح خطوة بخطوة سبب عمله بهذه الطريقة وكيفية إتاحة الملفات التي يحتاج إليها لـ Claude. أقتبس الأوامر والإعدادات مباشرةً من وثائق Claude Code الرسمية، التي راجعتها في أوائل سبتمبر 2026.

تتوفر مواد إضافية حول إعداد الأدوات في وثائق Ailoot.

لماذا لا يستطيع Claude Code رؤية بعض ملفات المشروع؟

الخلاصة الرئيسية

لا يقرأ Claude Code الملفات من محرك الأقراص بأكمله، بل من المجلد الذي شغّلته منه فقط. يُسمّى هذا المجلد دليل العمل. يستطيع Claude رؤية كل ما بداخله وداخل مجلداته الفرعية وقراءته من دون أن يطلب الإذن. أما كل ما هو خارجه، سواء في مجلد مجاور أو أعلى منه بمستوى واحد أو على محرك أقراص آخر، فيظل محظورًا إلى أن تمنحه الإذن بنفسك. لذلك فإن السبب الأكثر شيوعًا لكون ملف ما «غير ظاهر» بسيط: شغّلت Claude من مجلد مختلف. تحقّق أولًا من المجلد الذي فتحته منه بالضبط.

يعمل Claude Code افتراضيًا مع مجلد واحد: المجلد الذي أدخلت فيه الأمر claude وبدأت منه الجلسة. وتذكر الوثائق ذلك صراحةً.

يستطيع Claude افتراضيًا الوصول إلى الملفات الموجودة في المجلد الذي شغّلته منه.

— مستندات Claude Code، تهيئة الأذونات، الوثائق الرسمية

هذا هو دليل العمل الخاص به. يقرأ Claude أي ملف داخله من دون أسئلة إضافية: تعديل موجه، أو البحث في الشيفرة، أو قراءة ملف محدد، كل ذلك يعمل فورًا. لكن كل ما يقع خارج هذا المجلد محظور افتراضيًا. لن يبحث Claude في مجلد مجاور، أو مجلد أعلى منه بمستوى واحد، أو محرك أقراص آخر إلى أن تسمح له بذلك.

هنا قد يؤثر اختلاف مجلد العمل. لنفترض أن مشروعك /Users/you/my-shop لكنك شغلت Claude من /Users/you/other-project المجاور. يقع index.html في my-shop خارج شجرة العمل تلك. التشغيل من /Users/you حالة أخرى: فـ my-shop مجلد متفرع وليس غير متاح لمجرد البدء من المجلد الرئيسي، رغم اتساع السياق أكثر مما قصدت. ولا يعني الوصول إلى مجلد قراءة كل ملف فيه مسبقًا.

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

كيف يمكنك التحقق من المجلد الذي شُغّل منه Claude Code؟

الخلاصة الرئيسية

اسأل Claude عن المجلد الموجود فيه، أو اطلب منه عرض الدليل الحالي باستخدام الأمر pwd؛ فهذا الأمر يتحقق فقط ولا يغيّر شيئًا. قارن المسار الذي يعرضه بالموقع الفعلي لمشروعك. إذا اختلف المساران، فهذا هو السبب: شُغّل Claude من المجلد الخطأ. ولحل أكثر موثوقية، أغلق الجلسة وأعد تشغيل Claude مباشرةً من مجلد المشروع: انتقل إليه في الطرفية وأدخل claude هناك.

قبل إصلاح أي شيء، تأكد من أن المجلد هو المشكلة فعلًا. يسهل التحقق من ذلك. اطلب من Claude في المحادثة عرض الدليل الموجود فيه حاليًا؛ وسيشغّل pwd، وهو أمر آمن لأنه يعرض المسار فقط ولا يمس أي شيء.

pwd

يعرض الرد مجلد العمل الفعلي. قارنه بمسار المشروع الكامل: /Users/you/other-project مجاور لـ /Users/you/my-shop، بينما /Users/you أصله. تضع حالة المجاورة my-shop خارج شجرة العمل؛ أما الأصل فيشمله لكنه لا يختار ذلك المشروع تحديدًا جذرًا.

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

# استبدل المسار التوضيحي بجذر مشروعك الحقيقي.
cd /Users/you/my-shop
claude

سيصبح my-shop الآن مجلد العمل، وستكون ملفات المشروع كلها مرئية. تنطبق القاعدة نفسها في محرر مثل VS Code: افتح المجلد الذي يحتوي على المشروع. لا تفتح المجلد الأعلى منه بمستوى واحد ولا محرك الأقراص بأكمله. فالمجلد الذي تفتحه هو ما يحدّد دليل العمل الذي يعتمده Claude.

إذا كانت إعادة التشغيل غير ملائمة، كأن تكون قد زوّدت Claude بالسياق في هذه الجلسة ولا تريد فقدانه، فيمكنك إضافة المجلدات أو التبديل بينها أثناء الجلسة. يشرح القسمان التاليان كيفية ذلك.

كيف يمكنك إظهار ملف في مجلد مجاور لـ Claude Code؟

الخلاصة الرئيسية

من دون إعادة تشغيل الجلسة، أضف المجلد الذي تحتاج إليه باستخدام الأمر /add-dir مباشرةً في المحادثة: أدخل /add-dir ومسار المجلد، وستصبح ملفاته متاحة على قدم المساواة مع ملفات المجلد الرئيسي. ولإتاحة الوصول عند بدء Claude مباشرةً، أضف العلامة --add-dir مع مسار إلى الأمر claude. وإذا أردت فتح مجلد تلقائيًا في كل مرة، فأضفه ضمن المفتاح additionalDirectories في الإعدادات. في الحالات الثلاث، يمكن قراءة الملفات في المجلد المضاف من دون تأكيد منفصل.

أحيانًا لا يكون المشروع محفوظًا في مجلد واحد فقط. فقد تكون الشيفرة في مكان، والصور أو النصوص في مجلد مجاور، والمكونات المشتركة في مكان قريب آخر. من غير الملائم إعادة تشغيل Claude في كل مجلد على حدة. الأفضل أن تتيح له الوصول إلى المجلد الذي يحتاج إليه مع إبقاء المجلد الرئيسي دليلًا للعمل.

أبسط طريقة هي إجراء ذلك مباشرةً في الجلسة النشطة باستخدام الأمر:

/add-dir ../assets

أدخل /add-dir ومسار المجلد، وسيتمكن Claude فورًا من الوصول إلى ملفاته على قدم المساواة مع الملفات الموجودة في المجلد الرئيسي. لن يطلب الإذن مرة أخرى؛ فالمجلد المضاف يخضع للقواعد نفسها التي يخضع لها دليل العمل.

تتبع الملفات الموجودة في الدلائل الإضافية قواعد الوصول نفسها المطبقة على دليل العمل الرئيسي: تُقرأ من دون مطالبة.

— مستندات Claude Code، تهيئة الأذونات، الوثائق الرسمية

إذا كنت تعرف مسبقًا أنك ستعمل مع مجلدات متعددة، فأتح الوصول بمجرد بدء Claude، باستخدام المسار نفسه ولكن مع علامة:

claude --add-dir ../assets

وعندما تحتاج دائمًا إلى المجلد المجاور نفسه في المشروع، فلا داعي لإضافته يدويًا في كل مرة. يحتوي ملف الإعدادات settings.json على المفتاح additionalDirectories. أدرج المسارات هناك، وستُفتح تلقائيًا في كل مرة يبدأ فيها Claude:

{
  "permissions": {
    "additionalDirectories": ["../assets", "../shared"]
  }
}

هناك تنبيه لمستخدمي Windows: لا يمكنك إضافة مجلد شبكة باستخدام مسار مثل \\server\shared؛ فـ Claude لا يقبل مثل هذه المسارات. أرفق المجلد كمحرك أقراص منفصل بحرف محرك، ثم مرّر ذلك الحرف باستخدام --add-dir. لا تواجه المجلدات المحلية العادية هذه المشكلة.

ماذا لو لم تكفِ إضافة مجلد مجاور واحتجت إلى الانتقال إلى مجلد آخر بالكامل؟ هناك أمر منفصل لذلك، وسنتناوله أدناه.

كيف يمكنك نقل Claude Code إلى مجلد آخر أثناء الجلسة؟

الخلاصة الرئيسية

يغيّر الأمر /cd مجلد العمل الرئيسي من دون إغلاق الجلسة: أدخل /cd ومسارًا، وسينتقل Claude إلى هناك مع الإبقاء على سجل المحادثة. أثناء الانتقال، سيحمّل ملف التعليمات CLAUDE.md من المجلد الجديد، وإذا لم يسبق لك العمل فيه، فسيطلب منك تأكيد أنك تثق به. يكمن الفرق عن /add-dir في أن /add-dir يفتح مجلدًا مجاورًا إلى جانب المجلد الرئيسي، بينما ينقل /cd دليل العمل بأكمله إلى موقع جديد. يتوفر الأمر بدءًا من الإصدار 2.1.169.

أحيانًا لا تكفي إضافة مجلد مجاور، بل تحتاج إلى تغيير المجلد الرئيسي والانتقال إلى مشروع آخر من دون فقدان السياق الذي بنيته. استخدم الأمر /cd:

/cd ../another-project

بعد ذلك، يتعامل Claude مع المجلد الجديد بوصفه دليل العمل. يظل سجل المحادثة بأكمله محفوظًا، لكن الموقع الذي يعتمد عليه Claude مرجعًا للملفات يتغير إلى الموقع الجديد. ويحمّل Claude أيضًا ملف التعليمات CLAUDE.md من المجلد الجديد، إن وُجد؛ أي إنه يتكيف مع قواعد المشروع الجديد.

هناك أمر ينبغي معرفته بشأن الثقة: إذا لم يسبق لك العمل في هذا المجلد، فسيسألك Claude عند الانتقال إليه ما إذا كنت تثق به. هذا إجراء وقائي؛ فقد يحتوي ملف تعليمات في مجلد غير مألوف على أي شيء، لذا يتحقق Claude أولًا من أن هذا مشروعك. أكّد ذلك ثم تابع.

الفرق بين الأمرين بسيط. يُبقي /add-dir المجلد الرئيسي دليلًا للعمل ويفتح مجلدًا مجاورًا إلى جانبه؛ وهذا مفيد عندما تكون أجزاء المشروع موزعة في أماكن مختلفة. أما /cd فينقل دليل العمل بأكمله إلى موقع جديد؛ وهذا مفيد عند التبديل إلى مشروع آخر. أُضيف الأمر /cd في الإصدار 2.1.169، لذا حدّث Claude Code إذا لم تجده. لدي دليل منفصل حول كيفية تحديث Claude Code.

رؤية Claude Code للملفات ليست سوى الأساس. فالنتائج المستقرة لا تأتي من الوصول إلى الملفات وحده، بل من محتوى تلك الملفات وكيفية بناء السياق حول المشروع.

لماذا لا يستطيع Claude Code رؤية ملف في مجلد فرعي؟

الخلاصة الرئيسية

تختلف المجلدات الفرعية عن المجلدات المجاورة: يستطيع Claude الوصول إليها، لكن محتوياتها لا تدخل سياقه فورًا. يحمّل Claude ملفات التعليمات ومحتويات المجلدات الفرعية عند الطلب، عندما يبحث فيها. ولا يحمّلها عند بدء التشغيل. لذلك قد يبدو ملف في مجلد فرعي عميق «غير مرئي» إلى أن تزود Claude بمساره مباشرةً. والحل بسيط: أعطِ Claude المسار الدقيق للملف أو اطلب منه قراءته أولًا، وسيظهر عندئذٍ.

من المهم عدم الخلط بين حالتين مختلفتين. فالمجلد المجاور الموجود خارج المشروع محظور تمامًا حتى تضيفه. أما المجلد الفرعي داخل المشروع فيختلف عنه: يستطيع Claude الوصول إليه، لكنه لا يحتفظ بمحتوياته في ذهنه منذ البداية.

إليك كيفية عمل ذلك. عند بدء Claude، يحمّل ما هو موجود في المستويات العليا من المشروع. ويحمّل الملفات من المجلدات الفرعية عند الطلب، عندما ينتقل إليها لقراءة شيء ما. تشرح الوثائق هذا السلوك بالنسبة إلى ملفات التعليمات، وينطبق المنطق نفسه على السياق عمومًا.

يعثر Claude على الملفات الموجودة في المجلدات الفرعية لدليل العمل. وبدلًا من تحميلها عند بدء التشغيل، يجلبها عندما يقرأ ملفات في تلك المجلدات الفرعية.

— مستندات Claude Code، إدارة ذاكرة Claude، الوثائق الرسمية

بعبارة بسيطة: الملف الموجود في مجلد فرعي عميق لم يختفِ، ويمكن الوصول إليه بالكامل. لم يتذكره Claude بعد لأنه لم يبحث عنه؛ وهذا يفسر لماذا قد يبدو أن Claude «لا يرى» ملفًا رغم وجوده وإمكانية الوصول إليه.

يمكنك إصلاح ذلك في سطر واحد. أعطِ Claude مسار الملف مباشرةً، مثل src/components/header.jsx، أو اطلب منه ببساطة قراءة الملف أولًا. ما إن يبحث هناك، حتى يدخل الملف في السياق ويمكنك العمل معه كالمعتاد. لا حاجة إلى تغيير أي إعدادات.

أين تختفي الملفات من قائمة @ وما علاقة .gitignore بذلك؟

الخلاصة الرئيسية

عندما تكتب الرمز @، يعرض Claude Code قائمة بالملفات التي يمكنك اختيارها. تخفي هذه القائمة افتراضيًا كل ما أُدرج في .gitignore، مثل مجلدات الخدمات وملفات البيئة ومخرجات البناء. لذلك قد يكون الملف في مكانه الصحيح، لكنه لا يظهر في قائمة @. يتحكم إعداد respectGitignore في ذلك: يكون مفعّلًا افتراضيًا ويخفي تلك الملفات. اضبطه على false، وستعرض القائمة أيضًا الملفات المدرجة في .gitignore. ويمكنك دائمًا إدخال مسار هذا الملف يدويًا.

ومن الأسباب الشائعة الأخرى للاعتقاد بأن Claude «فقد» ملفًا منتقي الملفات. فعندما تكتب @، تظهر قائمة تسهّل اختيار ملف من دون كتابة مساره الكامل. لكن القائمة لا تعرض كل شيء.

تخفي قائمة @ افتراضيًا الملفات المدرجة في .gitignore. يحدد هذا الملف ما لا ينبغي إضافته إلى المستودع المشترك، مثل مجلدات الخدمات والملفات التي تحتوي على كلمات مرور وإعدادات البيئة ومخرجات البناء المكتملة. والمنطق واضح: لا تحتاج عادةً إلى التعامل يدويًا مع هذه الملفات، لذا لن تؤدي إلا إلى ازدحام القائمة. لكنك قد تحتاج أحيانًا إلى أحد هذه الملفات ولا تجده في القائمة.

يتحكم إعداد respectGitignore في ذلك. وهو مفعّل افتراضيًا، لذلك لا تظهر الملفات المدرجة في .gitignore في القائمة. إذا أردت رؤيتها، فغيّر الإعداد إلى false:

{
  "respectGitignore": false
}

يمكنك فعل الأمر نفسه من دون تعديل الملف، باستخدام الأمر /config داخل Claude Code. يُسمّى المفتاح هناك “Respect .gitignore in file picker.” أزل علامة الاختيار، وستعود الملفات المخفية إلى القائمة.

هناك تنبيه مهم: ينطبق respectGitignore على قائمة @ فقط، ولا علاقة له بإمكانية الوصول إلى الملفات. حتى عندما يكون الملف مخفيًا من القائمة، يمكنك دائمًا إدخال مساره يدويًا وسيقرأه Claude. القائمة ميزة لتسهيل الاستخدام، ولا تحدد حدود الوصول.

ماذا ينبغي أن تفعل إذا لم يستطع Claude Code قراءة ملف محدد؟

الخلاصة الرئيسية

أحيانًا يكون المجلد صحيحًا، لكن Claude يرفض مع ذلك قراءة ملف محدد. والسبب عادةً هو وجود قيد في الإعدادات. قد يحتوي ملف settings.json على قواعد deny تمنع قراءة ملفات معينة، وغالبًا ما تكون ملفات .env التي تحتوي على مفاتيح وكلمات مرور. وهناك أيضًا إعداد يمنع قراءة أي شيء خارج مجلدات العمل. تحقّق من الموضعين في settings.json. وتذكّر أن قيد .env إجراء وقائي افتراضي؛ فلا ينبغي إزالته من دون سبب وجيه.

إذا كان المجلد صحيحًا بالتأكيد والوصول متاحًا، لكن Claude لا يزال يرفض قراءة ملف بعينه، فمن المرجح أن يكون الملف خاضعًا لقيد. توجد القيود في ملف الإعدادات settings.json، وهي نوعان.

النوع الأول قيد يستهدف ملفات معينة. وتُسمّى هذه القواعد deny في الإعدادات، وغالبًا ما تنطبق على ملف .env الذي تُخزَّن فيه المفاتيح وكلمات المرور:

{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)"
    ]
  }
}

تمنع هذه القاعدة Claude من قراءة الملفات المحددة، وهذا مقصود. يجب ألا ينتهي الأمر بالمفاتيح وكلمات المرور في محادثة مع النموذج، لذا يكون .env محميًا افتراضيًا. إذا لاحظت أن Claude لا يقرأ .env أو ملفًا مشابهًا يحتوي على أسرار، فهذا مقصود، ولا ينبغي إزالة هذا القيد من دون سبب قوي.

النوع الثاني قيد عام على كل ما يقع خارج مجلدات العمل. يتحكم إعداد blockReadsOutsideWorkingDirectories في ذلك. عند تفعيله، يرفض Claude قراءة أي ملف خارج دليل العمل، حتى إن حاولت فتحه مباشرةً. إذا كان مضبوطًا على true وكنت تحتاج إلى ملف خارجي، فأضف مجلده باستخدام /add-dir أو عطّل القيد:

{
  "permissions": {
    "blockReadsOutsideWorkingDirectories": false
  }
}

أُضيف هذا الإعداد في الإصدار 2.1.257. إذا جرّبت كل شيء آخر لكن الملف لا يزال محظورًا، فمن المفيد التحقق من كلٍّ من deny وblockReadsOutsideWorkingDirectories.

من أين ينبغي أن تبدأ إذا لم يستطع Claude Code رؤية الملفات؟

الخلاصة الرئيسية

ابدأ بالتحقق من المجلد: اطلب من Claude عرض الدليل الحالي باستخدام pwd وقارنه بموقع المشروع. إذا لم يتطابقا، فأعد تشغيل Claude من مجلد المشروع أو انتقل إليه باستخدام /cd. هل تحتاج إلى ملفات من مجلد مجاور؟ افتحه باستخدام /add-dir. هل لا تستطيع رؤية ملف في مجلد فرعي؟ أعطِ Claude مساره مباشرةً. هل الملف غائب عن قائمة @؟ فالمشكلة متعلقة بـ .gitignore؛ غيّر respectGitignore. هل هناك ملف مقفل؟ ابحث عن قيد deny في settings.json.

إليك خطة قصيرة يمكنك اتباعها من البداية إلى النهاية.

  1. تحقّق من مجلد العمل: اطلب من Claude عرض الدليل الحالي باستخدام pwd وقارنه بموقع المشروع.
  2. إذا اختلف المجلدان، فأعد تشغيل Claude من المجلد الصحيح (cd project ثم claude) أو انتقل إليه باستخدام الأمر /cd.
  3. هل تحتاج إلى ملفات من مجلد مجاور؟ أضفه باستخدام /add-dir أو العلامة --add-dir عند تشغيل Claude.
  4. هل ملف في مجلد فرعي غير موجود في السياق؟ أعطِ Claude مساره مباشرةً أو اطلب منه قراءة الملف.
  5. هل الملف غائب عن قائمة @؟ السبب هو .gitignore. اضبط respectGitignore على false أو أزل علامة الاختيار في /config.
  6. هل يوجد ملف محدد مقفل؟ تحقّق من قاعدتي deny وblockReadsOutsideWorkingDirectories في settings.json.

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

المصادر

اعثر على مواد إضافية حول العمل باستخدام الأدوات في وثائق Ailoot.

المزيد من التفاصيل

أسئلة شائعة

لماذا يختلف التشغيل من المجلد الرئيسي عن مشروع مجاور؟

المشروع تحت مجلدك الرئيسي متفرع منه؛ فالتشغيل منه لا يضعه خارج شجرة العمل، بل يمنح سياقًا أوسع من المقصود. أما مجلد مجاور لمجلد العمل فخارجه. قارن المسارات كاملة قبل تشخيص غياب الوصول.

هل يعني الوصول إلى مجلد فرعي أن ملفاته في السياق بالفعل؟

لا. أعط الوكيل مسار الملف واطلب قراءته. إذا رُفضت القراءة، فافحص الأذونات المنطبقة؛ فغياب ملف عن قائمة الاختيار ورفض قراءته مشكلتان مختلفتان.

جميع المقالات