في الدرس 3.1 قلنا إن Claude يستطيع قراءة أي شيء. لذا فإن أول حدس طبيعي هو طرح أكبر سؤال ممكن: «اشرح الـ codebase». يبدو ذلك فعّالًا. لكنه ليس كذلك.
كلما كنتَ أكثر تحديدًا لـأين ينظر، كانت إجابة Claude أحدّ. تسمية ملف هي أكبر ترقية مفردة يمكنك إدخالها على سؤال.
هذا الدرس عن تلك الخطوة الواحدة.
السؤال الغامض في مقابل السؤال الحادّ
تخيّل أنك فتحتَ للتوّ مشروعًا في Claude على سطح المكتب. نسختان من السؤال نفسه، كلاهما مكتوب في المحادثة:
غامض:
explain the codebase
حادّ:
explain server/index.js
السؤال الغامض يجعل Claude يقوم بالكثير — يَسرُد الملفات، ويأخذ عيّنة من بعضها، ويخمّن الشكل العام، ويلخّص بخطوط عريضة. ستكون الإجابة طويلة وضبابية بعض الشيء. وقد يكون بعضها خاطئًا أصلًا، لأن Claude اضطُرّ إلى التصفّح بدلًا من القراءة.
السؤال الحادّ يجعل Claude يقوم بشيء واحد على نحوٍ جيد: يفتح ملفًا واحدًا، ويقرؤه بعناية، ويخبرك بما يفعله. الإجابة قصيرة، ومحدّدة، ومستندة إلى أسطر فعلية.
النسخة الحادّة هي ما تريده في الغالب الأعمّ.
لماذا يساعد القيد Claude (ويساعدك أنت)
القراءة رخيصة حين تكون محدودة النطاق. والقراءة باهظة — وفيها ضياع — حين تكون متناثرة. التوجيه إلى ملف:
- يخبر Claude بأي الأسطر يقرؤها بالضبط.
- يُزيل لعبة التخمين («هل تُعالَج الـ contact form في
server/index.js، أمserver/messages.js، أم في مكان ما داخل الـ HTML؟»). - يمنحك إجابة تستطيع التحقق منها مقابل الملف الفعلي في ثوانٍ.
كما أنه يساعدك أنت. تبدأ بتقسيم codebase كبير ومخيف إلى أجزاء بمعدّل ملف واحد في كل مرة. هكذا يقرأ الجميع الكود في الواقع. حتى المهندسون الكبار لا يقرؤون codebases — بل يقرؤون الملفات، بالترتيب، وبهدف.
كيف تبدو «تسمية ملف» فعليًا
بضعة أشكال للخطوة نفسها — كل واحدة جملة تكتبها في المحادثة:
what does server/messages.js do?
walk me through server/index.js — what is it, and what does it call?
read README.md and tell me how to run this project locally
لاحظ كيف يكون الـ path حاضرًا دائمًا. لا path = Claude يخمّن. path = Claude يقرأ.
لستَ بحاجة إلى معرفة الـ path عن ظهر قلب. إن كنتَ تعرف اسم الملف فقط:
find the file called email.js and explain it
هذا ينجح أيضًا. الـ path أفضل، لكن اسم الملف يكفي لتثبيت السؤال.
النقطة التي تربك الناس
يقلق الوافدون الجدد من أن يكون التحديد يقيّد الإجابة. «ماذا لو فاتني شيء مهم لأني سألتُ عن ملف واحد فقط؟»
لن يفوتك. يخبرك Claude حين يشير ملف إلى أشياء أخرى — «هذا يستلزم ./messages، وهناك يجري الحفظ الفعلي» — ويمكنك المتابعة بسؤال حادّ آخر عن ذلك الملف. (سنعتمد على هذا النمط بقوة في الدرس 3.4.)
قراءة codebase قراءةً جيدة هي طرح سؤال حادّ واحد، ثم السؤال الحادّ التالي. لا سؤال عملاق ضبابي واحد.
جرّبها: اسأل، واقرأ الردّ
قراءة ملف مع Claude محادثة، لا أمرٌ تحفظه. تكتب سؤالًا يسمّي الملف؛ فيفتحه Claude، ويقرأ الأسطر، ويجيب بلغة بسيطة — ويطلب الإذن قبل أن يغيّر أي شيء.
تعرّف على إيقاع ذلك هنا تمامًا. أرسِل prompt وراقب الردّ يعود:
هذه هي الحلقة كلها وراء «اقرأ هذا الملف». في مشروع حقيقي ستبدّل الـ prompt بـ explain server/index.js فيفتح Claude ذلك الملف بالذات، ويقرؤه من أعلاه إلى أسفله، ويخبرك بما وجد — ثم يتتبّع لك الـ imports إن طلبتَ.
ما التالي
أحيانًا لا تعرف حتى أي ملف تشير إليه. لا تملك سوى اسم — handleContact، أو saveMessage، أو sendNotification — ولا فكرة عن مكانه. اتضح أنك لستَ بحاجة إلى ذلك. هذا هو الدرس التالي.