في الدرس الماضي، اقترح Claude تغييرًا فأضاءت لوحة المعاينة بأسطر خضراء وحمراء. تلك اللوحة هي أهم شيء على شاشتك.
الـ diff هو الصورة سطرًا بسطر لما هو على وشك التغيّر. الأسطر الخضراء تُضاف. الأسطر الحمراء تُحذف. الأسطر العادية حولها هي context — تُريك أين في الملف يقع التغيير. اقرأه، ثم انقر قبول أو رفض.
هذا هو التنسيق كلّه. يرسمه لك Claude Code Desktop بصيغة diff مرئي جنبًا إلى جنب، وهو التنسيق نفسه الذي يستخدمه git وGitHub وكل code review tool على وجه الأرض. تعلّم قراءة واحد مرّة، وستستطيع قراءتها جميعًا.
شاهده بنفسك
عدّل النص أدناه وراقب الـ diff يظهر، سطرًا بسطر، كما يفعل في لوحة معاينة Claude. الأخضر هو ما أضفته؛ والأحمر هو ما أزلته.
لاحظ القاعدة: لا شيء في الأصل يُعدّ «تغيّر» حتى يصبح سطر مختلفًا فعلًا. الأسطر التي تركتها على حالها تبقى عادية — تلك هي الـ context. والأسطر التي مسستها تصير خضراء وحمراء. تلك هي المفردات كلّها.
مثال محلول
إليك نوع الـ diff الذي يُريك إيّاه Claude حين يقترح تغييرًا في الكود:
function greet(name) {
- return "hi " + name;
+ return `Hello, ${name}!`;
}
ثلاثة أسطر تهمّ. سطر function greet(name) هو context — عادي، يُظهر فقط أين أنت. السطر الأحمر (الذي يبدأ بـ −) يُحذف. والسطر الأخضر (الذي يبدأ بـ +) يُضاف.
إذًا التغيير هو: استبدال عبارة الإرجاع القديمة بأخرى جديدة. اسم الـ function وتوقيعها لا يتغيّران — فهذان context. في التطبيق، هذا بالضبط ما ستتصفّحه في لوحة المعاينة قبل أن تنقر قبول.
الفخّ: التصفّح في مقابل القراءة
معظم الناس يُلقون نظرة عابرة على الـ diff. يرون بضعة أسطر خضراء، وبضعة أسطر حمراء، وتبدو الأسماء تقريبًا صحيحة، فيضغطون قبول.
تلك ليست قراءة. تلك إيماءة بالرأس.
قد يكون Claude مخطئًا بثقة. قد يعيد تسمية متغيّر بشكل صحيح في خمسة مواضع وينسى السادس. قد يضيف السطر الذي طلبته ويحذف أيضًا سطرًا لم تطلبه. الـ diff يُريك ذلك. الـ diff هو الحقيقة. الـ diff هو ما سيحدث فعلًا لحظة أن تنقر قبول.
عندما يتجاوز الـ diff عشرة أو خمسة عشر سطرًا، تمهّل. اقرأ كل سطر أخضر وكل سطر أحمر. اسأل نفسك: هل طلبتُ هذا؟ إن كانت الإجابة لا، فتلك هي المشكلة — ورفض أمامك تمامًا.
لا تقرأ الملخّص، اقرأ الـ diff
غالبًا ما يلخّص Claude التغيير بلغة بسيطة في المحادثة، فوق الـ diff. شيء مثل:
لقد حدّثتُ العنوان في
index.html.
تلك الجملة تفسير. الـ diff هو الواقع. أحيانًا يتطابقان. وأحيانًا يكون الـ diff قد نقل سطرًا أيضًا، أو حذف شيئًا لم تذكره، أو أصلح خطأً مطبعيًا لاحظه Claude في طريقه. لن يقول الملخّص ذلك دائمًا.
اقرأ الـ diff. دائمًا. رسالة المحادثة تلميح؛ والـ diff هو العقد — والعقد لا يُوقَّع حتى تنقر قبول.
جرّب واحدًا
إليك diff صغيرًا. اقرأه قبل أن تنزل إلى الاختبار القصير.
const total = items.reduce((sum, item) => {
- return sum + item.price;
+ return sum + item.price * item.quantity;
}, 0);
ما التالي
تستطيع الآن قراءة ما يقترحه Claude في لوحة المعاينة وتقرّر قبول أو رفض. الدرس التالي هو ماذا تفعل عندما يكون ما يقترحه Claude تقريبًا صحيحًا لكن ليس تمامًا. المهارة هي إبقاء المحادثة مستمرّة بدلًا من البدء من جديد.