Fallow: أداة ذكاء الأكواد التي يحتاجها كل مستخدم لـ Claude

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00هذا هو Fallo، أداة ذكاء برمجية لـ TypeScript وJavaScript تحلل كامل الكود الخاص بك بحثاً عن الكود المهمل، والتكرار، والتعقيد غير الضروري، وغير ذلك الكثير.
00:00:10مما يعني أنه لا حاجة لاستخدام مزيج من NIP وJSC وPD وESLint فقط لمنع وكلائك من شحن كود سيء.
00:00:17لقد تم بناؤه بلغة Rust ويدعم أكثر من 90 إضافة، مما يعني أنه سيعمل مباشرة مع معظم أطر العمل والحزم الشهيرة.
00:00:23لكن حقيقة أنه يدعم JavaScript وTypeScript فقط تجعله أقل جاذبية للمبرمجين الذين يستعينون بالذكاء الاصطناعي.
00:00:29اضغط على زر الاشتراك ولنكتشف ذلك.
00:00:30إليكم مشروعاً أعمل عليه يضيف مظهراً سينمائياً للأفلام على الفيديوهات والصور.
00:00:39لقد تم بناؤه غالباً باستخدام Claude Code، لذا سيكون به مستوى معين من لمسات الذكاء الاصطناعي.
00:00:43هناك أيضاً طلب سحب (PR) هنا لميزة جديدة في ذلك المشروع، والتي سأتحدث عنها لاحقاً، طالما أن GitHub لم يخفِها بالخطأ.
00:00:51للبدء، سأقوم بتشغيل Fallo مع علامة الملخص (summary) باستخدام BunX، مما يعني أنني لست مضطراً لتثبيته.
00:00:56وهذا يعطي لقطة لمشروعي، تظهر ملخص الكود المهمل، والتكرار، وملخصاً لصحة التعقيد.
00:01:02وإذا تحققنا من حالة git، نجد أنه يضيف مجلداً جديداً باسم fallo. يحتوي على التخزين المؤقت.
00:01:07هذا يعني أن عمليات التشغيل اللاحقة لهذا الأمر ستكون أسرع وتحتوي على اللقطات وأي معلومات عن الإضافات.
00:01:12الآن، ربما لاحظتم هنا أن مستوى الصحة هو 41 فوق الحد المسموح به.
00:01:16ماذا يعني ذلك؟
00:01:17حسناً، يتم حساب درجة صحة Fallo عن طريق حساب التعقيد الدوري (cyclomatic) والتعقيد المعرفي.
00:01:24ويستخدم بعض المعادلات لحساب كثافة التعقيد.
00:01:27وهنا في الأسفل، يُستخدم كل هذا لمعرفة مؤشر قابلية الصيانة، وهي الدرجة التي نراها هنا.
00:01:33بناءً على هذه الدرجة، اكتشف أن 41 من ملفاتي تحتاج إلى إعادة صياغة (refactoring).
00:01:38من هنا، يمكننا تشغيل أي من هذه الأوامر للحصول على تقرير أكثر تفصيلاً حول منطقة محددة.
00:01:43لذا، إذا أردت التركيز على الصحة، يمكننا تشغيل هذا الأمر.
00:01:46وبعد فترة، يسرد جميع الملفات التي تعاني من مشكلات صحية مختلفة.
00:01:49ملاحظة، إذا كنت تريد معرفة ما يرمز إليه CRAP، فهو اختصار لـ "أنماط مضادة لمخاطر التغيير"،
00:01:55والتي يمكنك تعلم كل شيء عنها في التوثيق.
00:01:57لكن هذا المستوى من التفاصيل سهل جداً على الوكيل (agent) اتباعه ومعرفة ما يجب إصلاحه.
00:02:00في الواقع، أود أن أقول إن التكرار أسهل بكثير في المتابعة لأنه يعطي الملف الدقيق وأرقام الأسطر المحددة.
00:02:06لذا سنلتزم بذلك في الوقت الحالي.
00:02:07وإذا أردنا، يمكننا إضافة ملف تكوين fallo لتزويد الأداة بمعلومات حول أنماط معينة أو تبعيات تريد تجاهلها،
00:02:14بالإضافة إلى ضبط بعض إعدادات التكرار المخصصة، وإعدادات الصحة وإضافة الحدود،
00:02:18وهي طريقة رائعة جداً للتصريح بالمجلدات التي يمكنها الاستيراد من مجلدات أخرى.
00:02:23لكن كل هذا معقد للغاية بالنسبة لاحتياجاتي، لذا سنلتزم بالإعدادات الافتراضية حالياً.
00:02:27الآن من هنا، يمكننا تشغيل أمر fallo fix أو إضافة علامة التشغيل التجريبي (dry run) لرؤية ما سيفعله بالضبط،
00:02:32وهو محاولة معالجة جميع أنواع المشكلات القابلة للإصلاح.
00:02:35ويمكنكم أن تروا هنا أنه سيقوم بإزالة مجموعة من عمليات التصدير (exports).
00:02:38لكنني في الواقع لا أثق في fallo لتشغيل إصلاح تلقائي لأنه لا يملك سياقاً كبيراً عن الكود الخاص بي،
00:02:43وما تفعله كل وظيفة وكيف يعمل كل شيء معاً.
00:02:46لذا بدلاً من استخدام علامة الإصلاح، سأقوم بربط fallo بالوكيل الخاص بي،
00:02:49وهو ما يمكنك فعله باستخدام خادم MCP أو باستخدام إضافة VS code، والتي أعتقد أنها ستعمل مع cursor.
00:02:55لكنني سأبقي الأمور بسيطة وسأقوم فقط بتثبيت مهارة (skill) fallo، التي تحتوي على بعض الحواجز الوقائية وقواعد الوكيل وبعض الأخطاء الشائعة.
00:03:03بمجرد تثبيت المهارة، سأقوم بتشغيل Claude Code وسأعطيه أمراً بدراسة هذا المشروع لفهم كيفية عمل الكود،
00:03:10ثم تشغيل fallo للتعامل مع الكود المكرر، مع التأكد من أن إزالته لا تكسر الوظائف الأساسية.
00:03:16وعند الانتهاء، ضع التغييرات في فرع ميزات (feature branch) وقم بتشغيل الاختبارات للتأكد من أن التطبيق يعمل كما هو متوقع.
00:03:22يمكننا أن نرى هنا أنه يقوم بتحميل مهارة fallo.
00:03:24ثم يقوم بتشغيل أمر fallo dupes ويحصل على التنسيق لتصدير JSON، وهو تنسيق صديق للآلة.
00:03:29وبعد حوالي أربع دقائق، انتهى Claude من إصلاح ثلاثة ملفات بدلاً من جميع الملفات التي اقترحها fallo،
00:03:34بشكل أساسي لأن الملفات الأخرى هي ملفات اختبار، والتي يفترض أحياناً أن تحتوي على كود مكرر.
00:03:39طلبت منه أيضاً إنشاء طلب سحب (PR)، وإذا نظرنا إليه، فقد أضاف 54 سطراً من الكود وأزال 43 سطراً.
00:03:46ولكن هذا لأنني طلبت منه إضافة ملف تكوين fallo، وهو حوالي 20 سطراً لتجاهل جميع ملفات الاختبار في التقارير المستقبلية.
00:03:54وبالطبع، يجب أن نستمر في هذا النهج باستخدام Claude Code أو أي وكيل آخر لإصلاح مشكلات التعقيد أو أي كود مهمل.
00:04:00لكن fallo يمكنه أيضاً مراجعة طلبات السحب (PRs).
00:04:02لذا إذا نظرنا إلى طلب السحب هذا الذي عرضته لكم سابقاً، فإن تشغيل أمر fallo audit سيفحص أي مشكلات في هذا الفرع مقابل الفرع الرئيسي حتى نتمكن من إصلاح مشكلات محددة فقط.
00:04:12وإذا أردنا بناءه بناءً على فرع مختلف، يمكننا فقط استخدام علامة الأساس (base).
00:04:16ولكن إذا لم نرغب أيضاً في توجيه الأوامر لـ Claude مراراً وتكراراً في كل مرة لاستخدام fallo، فيمكننا تشغيل أمر إعداد الخطافات (hooks)، والذي سينشئ بعض خطافات Claude Code لـ fallo.
00:04:24يمكن لـ Fallo أيضاً العمل كإجراء GitHub (GitHub action) مع تعليقات توضيحية على طلب السحب.
00:04:28وهو يدعم مساحات العمل (workspaces).
00:04:30ويمكنه تصدير شارات الصحة ويدعم الخطوط الأساسية (baselines)، مما يعني إمكانية إصلاح المشكلات الحالية بمرور الوقت.
00:04:35ولا يلتقط CI إلا المشكلات الجديدة، وهو أمر رائع لإصلاح مشروع كبير به الكثير من المشكلات.
00:04:41إنه يحتوي أساساً على الكثير من الميزات، لكن جميعها تقريباً هي تحليل كود ثابت، مما يعني أنه لا ينفذ وظائفك فعلياً.
00:04:49إذا كنت تريد شيئاً يفعل ذلك، فإن fallo يدعم شيئاً يسمى ذكاء وقت التشغيل لإخبارك بالوظائف التي يتم تفعيلها عندما يواجه تطبيقك حركة مرور حقيقية في الإنتاج.
00:04:59يقوم بذلك باستخدام تغطية وقت تشغيل V8، ويدمج النتائج في تقرير صحي موجود من خلال تطبيق جانبي (sidecar) يمكن تشغيله محلياً أو نشره في أي مكان تريده.
00:05:08لكن هذه بالطبع ميزة مدفوعة، وهو أمر منطقي نوعاً ما.
00:05:11بشكل عام، fallo أداة رائعة سأستخدمها أكثر بكثير، على الرغم من أنني أعتقد أنها تحتوي على ميزات كثيرة وتدعم فقط بيئة JavaScript.
00:05:19رغم أن اللغات الأخرى لها أدواتها الخاصة، إلا أنني لست متأكداً من أنها تجمع كل شيء معاً كما يفعل fallo، وأعتقد أن منشئه Bart قام بعمل جيد في إنشاء هذه الأداة، التي تستخدم في الواقع OXC للتحليل الدلالي وحل الوحدات (module resolution) قبل بدء التحليل المستند إلى الرسم البياني.
00:05:36لذا أساساً، لن يترك لغة JavaScript أبداً، وأنا متأكد من أن هذا يسعد Evan You كثيراً، ليس بسبب جزء JavaScript، بل بسبب جزء OXC، لأنها أداة يمولها من خلال void zero.
00:05:46وبالحديث عن Evan You، إذا أردت سماعنا ونحن نستجوبه حول void zero وVite، وما إذا كانت مكونات خادم React فكرة جيدة وكل ما بينهما، فشاهد هذا الفيديو، وهو بودكاست مدته ساعة، وأعتقد أنه من المفضلات لدي من بين ما قدمناه.

Key Takeaway

تعمل أداة Fallo المبنية بلغة Rust على تحسين جودة كود JavaScript وTypeScript من خلال دمج التحليل الساكن للتعقيد والتكرار مع وكلاء الذكاء الاصطناعي مثل Claude Code لأتمتة عمليات الإصلاح.

Highlights

  • تعتمد أداة Fallo لغة Rust لزيادة الأداء وتدعم أكثر من 90 إضافة للتكامل مع أطر عمل JavaScript وTypeScript الشهيرة.

  • يتم حساب مؤشر قابلية الصيانة (Maintenance Index) عبر دمج قياسات التعقيد الدوري (Cyclomatic) والتعقيد المعرفي (Cognitive) وكثافة التعقيد.

  • يؤدي استخدام ذاكرة التخزين المؤقت في مجلد fallo. إلى تسريع عمليات فحص الكود اللاحقة وحفظ لقطات من حالة المشروع.

  • أصلح نموذج Claude Code ثلاثة ملفات برمجية في غضون أربع دقائق فقط باستخدام بيانات Fallo المصدرة بتنسيق JSON.

  • توفر ميزة ذكاء وقت التشغيل (Runtime Intelligence) المدفوعة بيانات حول الوظائف التي يتم تفعيلها فعلياً أثناء حركة المرور الحقيقية في بيئة الإنتاج.

  • تستخدم الأداة مشروع OXC للتحليل الدلالي وحل الوحدات قبل تنفيذ التحليل المستند إلى الرسم البياني للكود.

Timeline

تحليل جودة الكود وبنية الأداة

  • يحلل Fallo الكود المكتوب بلغة TypeScript وJavaScript للكشف عن الكود المهمل والتكرار والتعقيد.
  • تغني هذه الأداة عن استخدام مجموعة متنوعة من الأدوات التقليدية مثل ESLint لمنع شحن كود ضعيف المستوى.
  • توفر الأداة دعماً لأكثر من 90 إضافة مما يضمن توافقها مع معظم الحزم البرمجية الحديثة.

تعتمد الأداة في جوهرها على لغة Rust لضمان السرعة والكفاءة العالية في المعالجة. يركز التصميم على تبسيط بيئة التطوير من خلال دمج وظائف فحص متعددة في أداة واحدة. يقتصر دعم الأداة حالياً على منظومة JavaScript وTypeScript مما يجعلها متخصصة جداً في هذا النطاق.

مقاييس الصحة وعملية الفحص الأولية

  • يولد أمر الملخص (summary) لقطة فورية توضح حالة الكود المكرر والتعقيد وصحة المشروع الإجمالية.
  • تنتج درجة صحة الكود من معادلات رياضية تقيس التعقيد الدوري والمعرفي لتحديد الملفات التي تحتاج إلى إعادة صياغة.
  • يحدد تقرير التكرار أرقام الأسطر والملفات الدقيقة التي تحتوي على كود متطابق لتسهيل عملية المتابعة.

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

التخصيص والربط مع وكلاء الذكاء الاصطناعي

  • يسمح ملف تكوين fallo بتجاهل أنماط معينة أو مجلدات محددة وضبط حدود التعقيد المسموح بها.
  • يوفر أمر الإصلاح التلقائي (fix) إمكانية حذف عمليات التصدير غير المستخدمة ومعالجة المشكلات البسيطة.
  • يعزز ربط الأداة مع خادم MCP أو إضافات VS Code من قدرة الوكلاء على فهم سياق الكود الكامل.

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

التنفيذ العملي والميزات المتقدمة

  • يعالج Claude Code ملفات المشروع بناءً على تقارير Fallo المصدرة بتنسيق JSON الصديق للآلة.
  • يقارن أمر التدقيق (audit) بين فروع Git المختلفة لفحص المشكلات في طلبات السحب الجديدة فقط.
  • تدعم الأداة إنشاء خطوط أساسية (baselines) تتيح لفريق العمل تجاهل المشكلات القديمة والتركيز على منع ظهور مشكلات جديدة في CI.

خلال تجربة عملية، استطاع الذكاء الاصطناعي تمييز ملفات الاختبار التي تتطلب تكراراً طبيعياً للكود واستثنائها من الإصلاحات، مما أدى لنتائج أكثر دقة. توفر الأداة أيضاً خطافات (hooks) لـ Claude Code تعمل تلقائياً مع كل عملية تطوير. يمكن للأداة تصدير شارات صحة الكود لعرضها في ملفات التعريف الخاصة بالمشاريع على منصات مثل GitHub.

ذكاء وقت التشغيل والتقنيات الأساسية

  • يستخدم ذكاء وقت التشغيل تغطية V8 لتحديد الوظائف والمسارات البرمجية التي يتم تنفيذها فعلياً في الإنتاج.
  • تعتمد الأداة على محرك OXC للتحليل الدلالي، وهو محرك عالي الأداء ممول من مؤسسة void zero.
  • يتم دمج نتائج تحليل وقت التشغيل في التقارير الصحية القائمة عبر تطبيق جانبي (sidecar) مخصص.

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

Community Posts

View all posts