00:00:00تلقى “Claude Code” كمًا هائلاً
00:00:02من التحديثات مؤخرًا، بدءًا من دعم SSH في تطبيق Claude لسطح المكتب،
00:00:05ومعاينات التطبيقات، والتكامل مع GitHub،
00:00:07وصولاً إلى الوضع البسيط في واجهة الأوامر،
00:00:09الذي يتخلص من المهارات والإضافات والأدوات المخصصة،
00:00:11مما يجعله سهلاً للمهام الأساسية.
00:00:13لكن التحديث الأكبر على الإطلاق هو الدعم الأصلي لـ “work tree”،
00:00:16مما يعني أن وكلائك البرمجيين يمكنهم العمل على ميزات متعددة
00:00:18أو إصلاح أخطاء بشكل منفصل
00:00:20دون الحاجة لتهيئة أي شيء يدويًا.
00:00:23لكن هل تم إطلاق هذا التحديث قبل أوانه،
00:00:25في ظل مواجهة الكثير من المطورين لمشاكل أساسية؟
00:00:28اشترك في القناة، ودعنا نبدأ التفاصيل.
00:00:30استخدام ميزة “work trees” في Git مع الوكلاء البرمجيين ليس بالأمر الجديد.
00:00:33في الواقع، توفرت هذه الميزة في Claude Desktop منذ فترة،
00:00:35وهناك العديد من الإضافات أو الأدوات التي تدعمها،
00:00:37مثل “Claude Squad” الذي سبق وصنعنا فيديو عنه.
00:00:41لكن أحد الأسباب التي جعلتني لا أستخدمها شخصيًا
00:00:43هو أن القيام بذلك يدويًا قد يزيد من الجهد الذهني،
00:00:46وآمل أن تجعل هذه الميزة الجديدة في “Claude Code”
00:00:49الأمر أسهل بكثير بالنسبة لي.
00:00:50دعونا نجربها.
00:00:51لدينا هنا تطبيق مهام بسيط مبني بواسطة Claude باستخدام React.
00:00:54لأغراض الاختبار، لن أقوم ببناء هذا التطبيق
00:00:56لأي سبب آخر سوى التجربة.
00:00:58على أي حال، أود إضافة زر للوضع الليلي
00:01:01لأن هذا البياض يرهق عيني.
00:01:02كما أود إضافة ميزة حفظ المهام
00:01:04في التخزين المحلي (local storage) لأنها تضيع عند تحديث الصفحة.
00:01:07وأريد إضافة القدرة على تعديل المهام.
00:01:10عادةً، كنت سأضع كل هذه الميزات في طلب (prompt) واحد،
00:01:12أي الوضع الليلي، والتخزين المحلي،
00:01:14والقدرة على تعديل المهام.
00:01:16المشكلة في ذلك هي أنه إذا ظهر خطأ في إحدى الميزات،
00:01:20سأضطر للعمل على المشروع بالكامل،
00:01:22مما يؤخر إطلاق الميزات الأخرى
00:01:25لأن كل شيء موجود في نفس طلب السحب (PR) أو الفرع.
00:01:28لكن مع “work trees”،
00:01:28يمكنني العمل على هذه الميزات في فروع منفصلة
00:01:31في آن واحد على جهازي المحلي
00:01:33دون الحاجة لأي إعداد يدوي.
00:01:35وإذا حدثت مشكلة في إحدى هذه الميزات،
00:01:37يمكنني رفع الميزتين الأخريين
00:01:39والعمل على الميزة المتعثرة في فرعها الخاص.
00:01:41دعوني أريكم كيف نفعل ذلك.
00:01:42إذا قمت بتشغيل “Claude Code” مع علامة W،
00:01:45فسيفتح لي “work tree”
00:01:47باسم عشوائي يختاره Claude.
00:01:49مهلاً، “Lacan”؟
00:01:50حسنًا.
00:01:52لكن إذا أردت تسمية الـ “work tree” بنفسي،
00:01:54سأضع الاسم بعد علامة W،
00:01:56كما سأفعل هنا.
00:01:58هذا ينشئ لي “work tree” جديدًا هنا،
00:02:00ويقوم أيضًا بإنشاء فرع جديد،
00:02:02لكنه لا يحذف الـ “work tree” السابق الذي أنشأناه.
00:02:05لذا ضع ذلك في اعتبارك
00:02:06إذا انتهى بك الأمر بإنشاء الكثير من الـ “work trees” المؤقتة.
00:02:08وفي مجلد “.claude” الخاص بالمشروع تحت “worktrees”،
00:02:11يمكننا استعراض الـ “work tree” الخاص بنا
00:02:13ورؤية جميع ملفات الكود المرتبطة به.
00:02:15ملاحظة، ميزة “work trees” تعمل فقط
00:02:16إذا كان مشروعك يستخدم نظام Git
00:02:18وقمت بإجراء التزام (commit) واحد على الأقل.
00:02:20الآن يمكنني البدء بتنفيذ كل الميزات
00:02:22في هذا المشروع عبر “work trees” مختلفة.
00:02:24الآن انتهى العمل على الميزات الثلاث،
00:02:26ونرى هنا أن زر الوضع الليلي يعمل.
00:02:29في هذا الفرع، لا يوجد زر وضع ليلي،
00:02:31لكن يمكنني تعديل المهمة.
00:02:32سأضيف مهمة جديدة وأقوم بتغييرها هنا.
00:02:35وفي نسخة التخزين المحلي، يبدو أن هناك مشكلة،
00:02:38لكن هذه هي فائدة الـ “work trees”
00:02:40لأنني أرى أن الميزتين الأخريين تعملان جيدًا.
00:02:43لذا يمكنني اعتمادهما أو إنشاء طلب سحب لهما،
00:02:44بينما أركز على هذه الميزة
00:02:46وأستخدم جلسة “Claude Code” مخصصة
00:02:48لإصلاح هذا الخلل.
00:02:49وعندما أنتهي من الـ “work tree”،
00:02:51يمكنني إما الاحتفاظ به للعودة إليه لاحقًا
00:02:53أو حذفه من جهازي.
00:02:54إذا قررت الاحتفاظ به،
00:02:55يمكنني العودة إلى نفس الـ “work tree” تمامًا
00:02:58إذا حددت الاسم، كما ترون هنا.
00:03:00حتى أنه يمكنني استئناف الجلسات من الـ “work tree” الحالي
00:03:03أو الضغط على Control + W لرؤية جميع الجلسات في هذا المشروع.
00:03:06رغم أنني لست متأكدًا تمامًا
00:03:07كيف يحدد الجلسة الحالية،
00:03:08بما أنني الآن على الفرع الرئيسي (main).
00:03:11وبالحديث عن الجلسة الحالية،
00:03:12إذا أردت العمل من داخل مجلد الـ “work tree”،
00:03:15يمكنك إما الانتقال إليه مباشرة
00:03:16باستخدام الأمر cd .claude/worktrees وما إلى ذلك،
00:03:19أو تشغيل “worktrees” مع علامة tmux،
00:03:21والتي ستنقلك مباشرة إلى ذلك المجلد.
00:03:23وإذا فتحت نافذة منقسمة جديدة،
00:03:26سترون أنني داخل هذا الـ “work tree”
00:03:27ويمكنني تصفح الملفات الخاصة به.
00:03:30لكن أروع شيء في الـ “work trees”
00:03:31هو دعمها للوكلاء الفرعيين (sub-agents)،
00:03:33مما يعني أنه يمكنني تكليف وكلاء فرعيين مختلفين
00:03:35بالعمل على ميزات متعددة في فروع مختلفة
00:03:38ضمن نفس جلسة “Claude Code”.
00:03:40وإذا أردت دعم الـ “work tree” في الوكلاء الفرعيين المخصصين،
00:03:42ليقوم الوكيل المخصص بإنشاء “work tree” تلقائيًا،
00:03:45كل ما عليك فعله هو إضافة خيار “isolation work tree”
00:03:48في البيانات الوصفية (front matter) وسيتولى Claude الباقي.
00:03:50بشكل عام، أنا معجب حقًا بهذه الميزة
00:03:52وهي شيء سأستخدمه بالتأكيد
00:03:54بشكل مكثف،
00:03:55خاصة مع خطافات (hooks) الـ “work tree” الجديدة
00:03:57التي تتيح لك استخدامها بدون Git،
00:04:00مثل SVN أو Jujutsu وغيرها،
00:04:02وأيضًا تشغيل السكربتات تلقائيًا
00:04:04عند إنشاء “work tree” جديد.
00:04:05لكن لسوء الحظ، يبدو أن الكثير من الناس
00:04:08واجهوا مشاكل مع الـ “work trees”
00:04:09منذ تحديثات “Claude Code” الأخيرة
00:04:11بسبب ما يبدو أنه خلل في علامة الميزة (feature flag).
00:04:13لحسن الحظ، يمكنك جعل “Claude Code” يصلح ملفه التنفيذي الخاص
00:04:17كإجراء مؤقت،
00:04:18لكن نأمل أن يقدم الفريق حلاً جذريًا لاحقًا
00:04:21ليتمكن المزيد من الناس من تجربة هذه الميزة الرائعة.
00:04:24وبالحديث عن الميزات الرائعة،
00:04:25إذا كنت مطور React وتريد أداة سطر أوامر
00:04:28لاكتشاف الأنماط البرمجية السيئة في React تلقائيًا،
00:04:31فشاهد هذا الفيديو من Andris
00:04:33الذي يشرح فيه أداة “React Doctor”.