السؤال عن ملف
في الدرس 4.1 قلنا إن Claude يستطيع قراءة أي شيء. لذا فإن أول حدس طبيعي هو طرح أكبر سؤال ممكن: «اشرح الـ codebase». يبدو فعّالًا. لكنه ليس كذلك.
كلما كنتَ أكثر تحديدًا حول أين ينظر، كانت إجابة Claude أحدّ. تسمية ملف هي أكبر ترقية مفردة يمكنك إدخالها على سؤالك.
هذا الدرس يدور حول تلك الخطوة الواحدة.
السؤال الغامض مقابل السؤال الحادّ
تخيّل أنك فتحتَ Claude للتوّ في مجلد مشروع. نسختان من السؤال نفسه:
غامض:
explain the codebase
حادّ:
explain src/auth.ts
السؤال الغامض يجعل Claude يفعل الكثير — يَسرُد الملفات، ويعاين بعضها، ويخمّن الشكل العام، ويلخّص بخطوط عريضة. ستكون الإجابة طويلة وضبابية بعض الشيء. بل قد يكون بعضها خاطئًا، لأن Claude اضطُرّ إلى التصفّح السريع بدلًا من القراءة.
أما السؤال الحادّ فيجعل Claude يفعل شيئًا واحدًا بإتقان: يفتح ملفًا واحدًا، ويقرؤه بعناية، ويخبرك بما يفعله. الإجابة قصيرة ومحددة ومستندة إلى أسطر فعلية.
النسخة الحادّة هي ما تريده في الغالب الأعمّ.
لماذا يساعد التقييد Claude (ويساعدك أنت)
القراءة رخيصة حين تكون محدودة النطاق. والقراءة مُكلفة — وفيها ضياع — حين تكون متناثرة. التوجيه إلى ملف:
- يخبر Claude بأي الأسطر يقرؤها بالضبط.
- يُزيل لعبة التخمين («هل الـ auth في
auth.tsأمlogin.jsأمsession/index.ts؟»). - يمنحك إجابة تستطيع التحقق منها مقابل الملف الفعلي في ثوانٍ.
كما أنه يساعدك أنت. تبدأ بتقسيم codebase كبير ومخيف إلى أجزاء بمعدّل ملف واحد في كل مرة. هكذا يقرأ الجميع الكود في الواقع. حتى المهندسون الكبار لا يقرؤون codebases — بل يقرؤون الملفات، بالترتيب، وبهدف.
كيف تبدو «تسمية ملف» فعليًا
بضعة أشكال للخطوة نفسها:
ماذا يفعل src/lib/progress.ts؟
what does src/lib/progress.ts do?
اشرح لي src/components/Quiz.tsx خطوة بخطوة — ما هو، وما شكل الـ props الخاصة به؟
walk me through src/components/Quiz.tsx — what is it, and what's the shape of its props?
اقرأ README.md وأخبرني كيف أشغّل هذا المشروع محليًا
read README.md and tell me how to run this project locally
لاحظ كيف يكون الـ path حاضرًا دائمًا. لا path = Claude يخمّن. path = Claude يقرأ.
لستَ بحاجة إلى معرفة الـ path عن ظهر قلب. إن كنتَ تعرف اسم الملف فقط:
ابحث عن الملف المسمّى Quiz.tsx واشرحه
find the file called Quiz.tsx and explain it
هذا ينجح أيضًا. الـ path أفضل، لكن اسم الملف يكفي لتثبيت السؤال.
النقطة التي تربك الناس
يقلق المبتدئون من أن التحديد يقيّد الإجابة. «ماذا لو فاتني شيء مهم لأني سألتُ عن ملف واحد فقط؟»
لن يفوتك. يخبرك Claude حين يشير ملف إلى أشياء أخرى — «هذا الملف يستورد من ./session، وهناك تجري المعالجة الفعلية للـ cookies» — ويمكنك المتابعة بسؤال حادّ آخر عن ذلك الملف. (سنعتمد على هذا النمط بقوة في الدرس 4.4.)
قراءة الـ codebase جيدًا هي طرح سؤال حادّ واحد، ثم السؤال الحادّ التالي. لا سؤال عملاق ضبابي واحد.
ما هي «قراءة ملف» فعليًا
حين تطلب من Claude أن «يشرح src/auth.ts»، فإن أول شيء يفعله هو فتح ذلك الملف وقراءة الأسطر. هذه ليست استعارة — إنه command واحد، ابن عمّ القراءة للـ ls وcd اللذين تعلّمتهما في المستوى الأول. الـ cat يطبع ملفًا كاملًا على الشاشة. الـ head يطبع رأسه فقط — وهو مفيد حين يكون الملف طويلًا وكل ما تريده هو شكله.
جرّبه في الـ terminal التدريبي. لقد وُضعت في مشروع صغير اسمه taskly، نفس نوع المجلد الذي قد تفتح Claude فيه. اقرأ ملف الـ auth، من أوله إلى آخره:
cat src/auth.ts
هذه هي الأسطر التي يقرؤها Claude بالضبط قبل أن ينطق بكلمة عن كيفية عمل تسجيل الدخول. والآن ألقِ نظرة على رأس ملف آخر فقط:
head src/users.ts
هذا هو كل السرّ وراء «اقرأ هذا الملف». Claude يشغّل هذا، ثم يشرح ما وجده ويتتبّع الـ imports نيابةً عنك — لكن الشيء الكامن تحت السحر هو command تعرفه الآن. في المرة القادمة التي تكون فيها في مشروع حقيقي، اطلب من Claude explain README.md وراقبه يفعل هذا بالضبط، لكن أسرع.
ما التالي
أحيانًا لا تعرف حتى أي ملف تشير إليه. لا تملك سوى اسم — handleLogin، أو User.save، أو useAuth — ولا فكرة عن مكانه. اتضح أنك لستَ بحاجة إلى ذلك. هذا هو الدرس التالي.