كيف أعاد Claude Code كتابة Bun بلغة Rust: دليل من ست خطوات لترحيل الشيفرات على نطاق واسع

في الماضي، كانت عمليات نقل لغات البرمجة الكبيرة من نوع المشاريع التي تؤجلها فرق الهندسة لسنوات. هذه النقل مكلفة، مدمرة، ومحفوفة بمخاطر كبيرة. قد تقضي الشركة عدة أرباع عمل في صيانة نسختين من التطبيق في وقت واحد، لتحصل في النهاية على بديل لا يتوافق سلوكه مع الأصل. Claude Code يغير هذه المعادلة. كشفت Anthropic مؤخرًا عن عمليتها لاستخدام وكلاء الذكاء الاصطناعي في نقل الشيفرات على نطاق واسع. الحالة الأكثر بروزًا هي قيام جاريد سومنر، مبتكر Bun، بنقل جوهر Bun من Zig إلى Rust. في أقل من أسبوعين، أنتج سير عمل Claude Code أكثر من مليون سطر من الشيفرات، بينما اجتازت حزمة اختبارات Bun الحالية اختبارات التكامل المستمر قبل الدمج. لم يكتمل هذا المشروع بمجرد جعل النموذج "يعيد كتابة Bun باستخدام Rust" وانتظار إجابة مثالية. بل اعتمد على نظام مصمم بعناية يتضمن كتيب قواعد، ورسم خرائط للتبعيات، وقائمة مهام آلية، ومراجعين معاديين، ومترجمين، واختبارات دخانية، وفحوصات اتساق السلوك. الدرس الأساسي واضح: بالنسبة لنقل بهذا الحجم، لا يجب على المطورين قضاء معظم وقتهم في إصلاح الملفات الفردية. بل يجب عليهم تحسين عمل

发布于 2026年7月19日generalGEO 评分: 06 次阅读
الصورة هي غلاف "دليل ترحيل Claude Code"، مع خلفية زرقاء داكنة وتأثيرات توهج برتقالية وزرقاء. على اليسار توجد كلمة "Claude"، وعلى اليمين نص "دليل ترحيل Claude Code" حيث كلمة "الترحيل" باللون البرتقالي. أسفل الشاشة توجد أيقونات لواجهة محرر الشيفرات، وسهم برتقالي يشير إلى اليمين. هذه الصورة مرتبطة بمحتوى الدليل الذي يوضح كيف ساعد Claude Code في ترحيل Bun من Zig إلى Rust، وتُستخدم كصورة غلاف لتقديم الموضوع بشكل مرئي.

كيف أعاد Claude Code كتابة Bun بلغة Rust: دليل من ست خطوات لترحيل الشيفرات على نطاق واسع

مقدمة

في الماضي، كانت عمليات نقل لغات البرمجة الكبيرة من نوع المشاريع التي تؤجلها فرق الهندسة لسنوات. هذه النقل مكلفة، مدمرة، ومحفوفة بمخاطر كبيرة. قد تقضي الشركة عدة أرباع عمل في صيانة نسختين من التطبيق في وقت واحد، لتحصل في النهاية على بديل لا يتوافق سلوكه مع الأصل.

Claude Code يغير هذه المعادلة.

كشفت Anthropic مؤخرًا عن عمليتها لاستخدام وكلاء الذكاء الاصطناعي في نقل الشيفرات على نطاق واسع. الحالة الأكثر بروزًا هي قيام جاريد سومنر، مبتكر Bun، بنقل جوهر Bun من Zig إلى Rust. في أقل من أسبوعين، أنتج سير عمل Claude Code أكثر من مليون سطر من الشيفرات، بينما اجتازت حزمة اختبارات Bun الحالية اختبارات التكامل المستمر قبل الدمج.

لم يكتمل هذا المشروع بمجرد جعل النموذج "يعيد كتابة Bun باستخدام Rust" وانتظار إجابة مثالية. بل اعتمد على نظام مصمم بعناية يتضمن كتيب قواعد، ورسم خرائط للتبعيات، وقائمة مهام آلية، ومراجعين معاديين، ومترجمين، واختبارات دخانية، وفحوصات اتساق السلوك.

الدرس الأساسي واضح: بالنسبة لنقل بهذا الحجم، لا يجب على المطورين قضاء معظم وقتهم في إصلاح الملفات الفردية. بل يجب عليهم تحسين عملية توليد تلك الملفات ومراجعتها والتحقق من صحتها.

مبتكر Bun يستخدم الذكاء الاصطناعي لإعادة كتابة أكثر من مليون سطر من الشيفرات

بنى جاريد سومنر في البداية Bun باستخدام Zig. هذه اللغة تتيح للمطور المستقل الحصول على تحكم منخفض المستوى وأداء مشابه للغة C، دون مواجهة كل تعقيدات بيئة لغات الأنظمة الكبيرة.

ساعد هذا الاختيار Bun على النمو بسرعة في مراحله المبكرة. ذكر سومنر أنه كتب النسخة الأولى في شقة صغيرة في أوكلاند خلال حوالي عام، وذلك قبل ظهور نماذج الترميز الحديثة.

بحلول عام 2026، أصبح Bun وقت تشغيل JavaScript وTypeScript مستخدمًا على نطاق واسع، ومدير حزم، ومشغل اختبارات، وأداة تجميع. أدوات سطر الأوامر الخاصة به تحصل على عشرات الملايين من التنزيلات شهريًا، وتعتمد منتجات مثل Claude Code بشكل كبير على Bun.

النمو جعل أيضًا المقايضات الهندسية القديمة صعبة التجاهل.

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

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

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

جعل Claude Code النقل الميكانيكي الكامل ممكنًا.

11 يومًا من Zig إلى Rust

استخدم سومنر إصدارًا ما قبل الإصدار من Claude Fable 5 وسير عمل Claude Code الديناميكي لتنفيذ النقل.

الكتابة والمراجعة الرئيسية

استمرت العملية لمدة 11 يومًا. تعامل حوالي 50 سير عمل ديناميكي مع مراحل مختلفة، بما في ذلك:

  • إنشاء دليل نقل من Zig إلى Rust
  • رسم دورة حياة الذاكرة
  • تحويل ملفات .zig إلى ملفات .rs
  • مراجعة كل ملف تم إنشاؤه
  • إصلاح أخطاء المترجم
  • استعادة أوامر Bun الفردية
  • تشغيل حزمة الاختبارات الكاملة
  • إعادة الهيكلة وتنظيف الشيفرات المولدة

في ذروة الإنتاجية، أنتج سير العمل حوالي 1300 سطر من الشيفرات في الدقيقة. تم فحص كل وحدة شيفرات مولدة بواسطة مراجعَين معاديين مستقلين، ثم قام المصلح بتطبيق التغييرات المؤكدة.

أضاف طلب السحب النهائي أكثر من مليون سطر من الشيفرات في أكثر من 2000 ملف تم تغييرها.

الصورة توضح واجهة طلب سحب إعادة كتابة شيفرات Bun بلغة Rust. في الأعلى يظهر "Rewrite Bun in Rust #30412" ومعلومات المرسل ووقت الإرسال. في الأسفل تفاصيل إرسال الشيفرات بما في ذلك المرسل ووقت الإرسال وتغييرات الملفات. الجزء الأوسط يبرز تعديلات الشيفرات في ملف test/js/bun/spawn/spawn.Test.ts، مثل إضافة "await Bun.sleep(1)" في السطر 518، وإضافة أسطر جديدة "const out = await proc.stdout.text(); expect(out).not.toBe("");" في الأسطر 519-521. توضح الصورة بشكل مرئي محتوى تعديل الشيفرات المحدد أثناء عملية إعادة كتابة الشيفرات.

قبل الدمج، اجتازت حزمة اختبارات Bun الحالية اختبارات CI. بعد الدمج، ظهرت 19 مشكلة تراجعية، أفادت Anthropic أنه تم إصلاحها جميعًا لاحقًا. تم إصدار نسخة Rust مع Claude Code في يونيو 2026.

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

تكلفة النقل حوالي 165,000 دولار (حسب أسعار API)

استهلك نقل Bun حوالي:

  • 5.9 مليار رمز إدخال غير مخبأ
  • 690 مليون رمز إخراج
  • حوالي 165,000 دولار حسب تسعير API

هذا مبلغ ليس بالقليل، لكنه لا يزال أقل بكثير من تكلفة النقل التقليدية التي تتطلب عدة مهندسين بدوام كامل لسنوات.

تقدر Anthropic أن نقلًا بحجم مليون سطر كان قد يستغرق أربع سنوات، ويكلف حوالي 3-4 ملايين دولار من الموارد الهندسية. الذكاء الاصطناعي غير المنطق التجاري، لأن النقل لم يعد يتطلب أزمة بقاء لتبرير تكلفته.

أخطاء الذاكرة المستمرة، أو بيئات اللغات القديمة، أو عمليات البناء المكلفة، أو اختناقات الصيانة المتكررة، كلها الآن قد تكون كافية لجعل النقل يستحق التقييم.

ومع ذلك، لا تزال المقارنات تحتاج إلى حذر. تكلفة الرموز ليست التكلفة الإجمالية للمشروع. يحتاج الفريق أيضًا إلى تخطيط بشري، وبنية تحتية، واختبارات، ومراجعة شيفرات، وعمل أمني، وصيانة بعد الدمج.

لماذا انتقل Bun من Zig إلى Rust

كان هذا النقل بدافع من الموثوقية بشكل أساسي، وليس السرعة الأولية.

كان أداء Bun في Zig ممتازًا بالفعل. المشكلة كانت في كيفية تنسيق الذاكرة المحلية المدارة يدويًا مع وقت تشغيل JavaScript الذي يدير جمع القمامة بأمان.

فئات الأخطاء الشائعة تشمل:

  • أخطاء الاستخدام بعد التحرير
  • أخطاء التحرير المزدوج
  • تسرب الذاكرة في مسارات الاستثناء
  • مؤشرات غير صالحة بسبب إعادة الدخول
  • شيفرات تنظيف تم تخطيها
  • افتراضات دورة حياة يصعب تطبيقها باستمرار

في Rust الآمن، العديد من هذه الأخطاء لا يمكن أن تمر عبر الترجمة. للقيم ملكية واضحة، وتنظيف الموارد مرتبط بدورة حياة الكائنات، والمترجم يفحص المراجع قبل تشغيل البرنامج.

كان هدف هذا النقل الحفاظ على بنية Bun الحالية، وهياكل بياناته، وسلوكه، وأدائه. كان أقصدًا أقرب إلى النقل الميكانيكي منه إلى إعادة التصميم الكامل.

هذا القرار كان حاسمًا. إذا تم إعادة تصميم النظام وتغيير اللغة في نفس الوقت، ستصبح مقارنة السلوك صعبة للغاية.

الحالة الثانية: نقل 165,000 سطر من كود Python إلى TypeScript

جاريد سومنر لم يكن المهندس الوحيد في Anthropic الذي استخدم Claude Code لنقل كبير.

شارك في الإدارة المشتركة لمختبرات Anthropic، ومايك كريغر، المؤسس المشارك لـ Instagram، في عطلة نهاية أسبوع واحدة بنقل قاعدة شيفرات Python داخلية إلى حوالي 165,000 سطر من كود TypeScript.

استهلك النقل الرئيسي حوالي 27 مليون رمز، وشمل:

  • مئات الوكلاء الأذكياء
  • ثماني مراحل
  • ثلاث جولات من المراجعة المعادية
  • فحص الاتساق النهائي
  • مقارنة المخرجات أمرًا بأمر مع نسخة Python
  • اختبارات من البداية إلى النهاية مولدة بالذكاء الاصطناعي

كانت الأداة الأصلية تحتاج إلى التسليم كملف ثنائي واحد. باستخدام سلسلة أدوات Python، كان التجميع لكل منصة يستغرق حوالي ثماني دقائق، وكانت مصفوفة البناء الكاملة تؤخر كل إصدار بحوالي 30 دقيقة.

بعد النقل إلى TypeScript:

  • انخفض وقت التجميع إلى حوالي ثانيتين
  • زادت سرعة بدء تشغيل الملف الثنائي حوالي ستة أضعاف
  • أمكن التخلص من خطوط النشر المستقلة

لم يعتمد كريغر على حزمة اختبارات شاملة عبر اللغات موجودة مسبقًا. بدلاً من ذلك، استخدم Claude

تم إنشاء إطار اختبار توافق يغطي سبعة سيناريوهات حقيقية، ثم مقارنة نتائج المخرجات بين التنفيذ القديم والجديد.

كما صمم كلود اختبارات شاملة إضافية، وأجراها على مدى أربع ليالٍ متتالية، ليقوم بإصلاح الحالات الفاشلة ثم يعيد الكرة. وقد كشف هذا عن اختلافات دقيقة في السلوك لم تكن متوقعة في السيناريوهات الأصلية.

لماذا تُعدّ عمليات نقل التعليمات البرمجية الضخمة مناسبةً للوكلاء الذكاء الاصطناعي؟

تثير عمليات النقل الضخمة الرهبة؛ لأنها تنطوي على عدد هائل من التغييرات المتكررة. وهذه الخصائص تحديدًا تجعلها مناسبةً لاستخدام سير العمل القائم على الوكلاء الأذكياء.

إمكانية توازي العمل

عادةً ما يمكن تقسيم قاعدة التعليمات البرمجية الكبيرة إلى ملفات، وحزم، وصناديق (crates)، ووحدات، أو مجموعات تبعيات. يمكن لوكلاء مستقلين معالجة الوحدات المستقلة في وقت واحد.

يحدد رسم بياني التبعيات أي الوحدات يمكن أن تتقدم بالتوازي، وأيها يجب أن تنتظر.

التعليمات البرمجية الحالية تمثل المواصفات

يحتوي التنفيذ الأصلي بالفعل على السلوك المطلوب، وحالات الحافة، وهياكل البيانات، وتفاصيل التكامل.

لا يحتاج النموذج إلى ابتكار ميزات المنتج، بل مهمته هي الحفاظ على النظام الحالي بلغة أو إطار عمل جديدين.

تقدم الاختبارات حكمًا موضوعيًا

يكون أداء الوكيل الذكي أفضل عندما يستطيع تقييم مخرجاته بشكل آلي.

يوفر المترجم، ومجموعات الاختبار، ومقارنة الفروقات في المخرجات، واختبارات الأداء أو إطار اختبار التوافق إشارات ملموسة للنظام. ويمكن للوكيل الذكي التحسين باستمرار بناءً عليها، دون حاجة إلى حكم بشري على كل محاولة وسيطة.

يمكن إنشاء قائمة المهام تلقائيًا

يُصبح خطأ الترجمة المهمة التالية، واختبار فاشل هو المهمة التالية، وتعطل البرنامج هو المهمة التالية.

وهذا يحوّل مهام النقل الضخمة إلى قائمة انتظار يمكن تقليصها تدريجيًا.

الفشل المتكرر يحفز تحسين القواعد

عندما يكتشف المراجع نفس المشكلة في ملفات متعددة، فإن الحل الأمثل ليس إصلاح كل ملف يدويًا على حدة.

بل يجب تحديث دليل القواعد وإعادة إنشاء الدفعات المتأثرة. هذا يمنع ظهور نفس الأخطاء مرة أخرى في العمل اللاحق.

المبدأ الأساسي: إصلاح العملية، وليس الملفات الفردية

المفهوم الأهم في سير عمل أنثروبيك هو: اعتبار التعليمات البرمجية المُنشأة نتاجًا لنظام الإخراج.

لنفترض أن 200 ملف تمت ترجمتها تحتوي على نفس الخطأ المتعلق بالملكية (ownership). قد يؤدي إصلاح هذه الملفات يدويًا إلى حل الأخطاء الظاهرة، لكن سير العمل قد يُنتج نفس الخطأ مرة أخرى.

الطريقة الأكثر فعالية هي:

  1. تحديد نمط الفشل المتكرر.
  2. تحديد قاعدة النقل التي تسببت فيه.
  3. تحديث دليل القواعد.
  4. إعادة إنشاء الملفات المتأثرة فقط.
  5. إعادة تشغيل دورة المراجعة والتحقق.

تتحسن التعليمات البرمجية لأنه تم تحسين عملية الإنتاج.

يشبه هذا هندسة البرمجيات العادية. يجب أن يؤدي عيب إنتاجي متكرر إلى تحسين الاختبارات، أو قواعد الأنواع، أو الفحوصات الثابتة، أو العملية - وليس فقط وضع تصحيح آخر منفرد.

المتطلبات الأساسية: بناء آلية تقييم موثوقة

قبل البدء في النقل على نطاق واسع، يجب تحديد كيف سيثبت الفريق صحة التنفيذ الجديد.

بدون آلية تقييم، لا يمكن تحديد شرط إنجاز موثوق.

يجب على آلية التقييم تقييم كل من التنفيذ الأصلي والتنفيذ المستهدف تحت نفس الظروف. قد تعتمد الاختبارات الحالية على دوال خاصة أو آليات داخلية خاصة باللغة، والتي ستختفي أثناء عملية النقل.

توصي أنثروبيك بثلاثة إجراءات تحضيرية:

  1. تصنيف الاختبارات الحالية. فصل الاختبارات التي تختبر السلوك العام عن تلك التي تعتمد على التنفيذ الداخلي.
  2. إعادة كتابة الاختبارات لضمان قابلية النقل. تحويل السلوكيات القابلة للملاحظة خارجيًا إلى تأكيدات (assertions) يمكن تشغيلها على كلا النظامين.
  3. التحقق من آلية التقييم. التأكد من أن التنفيذ الأصلي يجتاز الاختبارات، ثم تعطيل البرنامج عمدًا والتأكد من فشل آلية التقييم.

مجموعة اختبار لا تستطيع اكتشاف الأعطال المعروفة لا يمكن استخدامها كآلية تقييم صالحة للنقل.

يتمتع Bun بميزة كبيرة: معظم مجموعة اختباراته مكتوبة بلغة TypeScript وليس Zig، لذلك يمكن استخدام نفس مجموعة الاختبارات لاختبار تنفيذ Rust.

للمشاريع التي لا تتمتع بهذه الميزة، يمكن استخدام أدوات اختبار نظيرة (peer testing tools) لمقارنة المدخلات والمخرجات الفعلية بين الإصدارين.

إطار أنثروبيك ذو الخطوات الست لنقل التعليمات البرمجية

لخصت أنثروبيك الدروس المستفادة من هذه المشاريع في سير العمل التالي المكون من ست خطوات.

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

الخطوة الأولى: إنشاء دليل القواعد، رسم بياني التبعيات، وقائمة الفجوات

تخلق المرحلة الأولى المستندات المشتركة التي ستتبعها جميع الوكلاء اللاحقين.

بناء دليل القواعد

يحدد دليل القواعد كيفية تعيين المفاهيم من لغة المصدر إلى اللغة الهدف.

بالنسبة للنقل الذي يحافظ على الهيكل، قد يحتوي دليل القواعد على:

  • تعيين الأنواع (type mappings)
  • معالجة الأخطاء

اصطلاحات القواعد

  • قواعد التسمية
  • قواعد الذاكرة والملكية
  • مواصفات استبدال المكتبة القياسية
  • أنماط التزامن
  • تخطيط الملفات والوحدات
  • قواعد واجهة الوظائف الخارجية (FFI)
  • الأنماط التي تتطلب مراجعة بشرية

في إعادة التصميم الهيكلي، يكون دليل القواعد أقرب إلى وثيقة البنية المعمارية.

قام جاريد سومنر، من خلال الحوار مع كلود والمراجعة البشرية، بوضع دليل نقل Bun. كان المنتج النهائي مئات الأسطر.

إنشاء رسم بياني للتبعيات

يجب تقسيم المستودع وفقًا لترتيب التبعيات.

يمكن لبرنامج نصي حتمي إنشاء رسم بياني للتبعيات عن طريق فحص الواردات، والملفات التوجيهية (manifests)، وملفات البناء، وعلاقات الرموز. تساعد هذه النتيجة المنسق في تحديد الملفات التي يمكن تحويلها بشكل مستقل وأيها تتطلب معالجة مشتركة.

كتابة قائمة الفجوات

تتبع لغة المصدر واللغة الهدف قواعد مختلفة.

بالنسبة للنقل من Zig إلى Rust، كانت فجوة الذاكرة والملكية هي الرئيسية. بالنسبة للنقل من Python إلى TypeScript، يجب تحويل أشكال وواجهات الكائنات الضمنية إلى عقود صريحة.

تحتاج قائمة الفجوات إلى تسجيل العناصر التي لا تستطيع الترجمة البسيطة حلها، وتحديدًا:

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

يجب إنشاء دليل القواعد قبل قائمة الفجوات، لأن قائمة الفجوات تعتمد جزئيًا على ما لا يمكن للقواعد العادية معالجته.

الخطوة الثانية: اختبار القواعد تحت الضغط

لا تترجم آلاف الملفات فورًا.

قم أولاً بتشغيل تجربة لمرة واحدة على عدد قليل من الملفات المعقدة والممثلة. الهدف هو كشف عيوب القواعد قبل أن تنتشر في جميع أنحاء المستودع.

في تجربة Bun:

  1. قام الوكيل الأول بترجمة ثلاثة ملفات وفقًا لدليل القواعد.
  2. وكيل آخر قام بترجمة نفس الملفات من منظور مهندس Rust كبير.
  3. قام وكيل مقارن بفحص الاختلافات.
  4. حدد المراجعون قواعد النقل المفقودة أو الخاطئة.
  5. تم التخلص من الملفات المترجمة.

مخرجات هذه المرحلة هي دليل قواعد محسّن - وليس كود إنتاج.

بالنسبة للنقل القائم على إعادة التصميم، فإن الاختبار المكافئ هو جعل مراجع عدائي يهاجم وثيقة التصميم، ثم تنفيذ تشغيل لمرة واحدة من البداية إلى النهاية.

الخطوة الثالثة: الترجمة الشاملة

بمجرد التحقق من صحة القواعد من خلال التجربة، يمكن معالجة المستودع من خلال قائمة انتظار متوازية.

يتضمن تكوين الوحدة النموذجية:

  • منفذ واحد
  • مراجعان عدائيان مستقلان
  • مصلح واحد
  • قائمة انتظار ميكانيكية
  • دليل قواعد مشترك
  • قائمة فجوات مشتركة

يجب أن تدعم قائمة الانتظار الاستئناف بعد الانقطاع. يجب أن يكون من الممكن تحديد حالة اكتمال العمل عن طريق فحص الملفات أو تسجيل المنتجات (وليس الاعتماد على ذاكرة وكيل واحد).

يجب على الوكلاء دائمًا وضع علامة متسقة على العمل غير المكتمل، مثل:
نص عادي TODO(النقل): شرح لماذا لا يمكن ترجمة هذا الجزء بأمان

ليس من الضروري استخدام أغلى نموذج لكل وحدة. يمكن للنماذج الأقل تكلفة التعامل مع الترجمة عالية الحجم، بينما يمكن الاحتفاظ بالنماذج الأقوى للمراجعين، وقرارات البنية، وتعديلات القواعد.

الخطوة الرابعة: الترجمة (Compilation)

يقوم أول بناء كامل بتحويل أخطاء المترجم إلى قائمة عمل منظمة.

اعتمادًا على تكلفة البناء، يمكن تشغيل المترجم داخل حلقة كل وكيل، أو من خلال منسق منفصل.

بالنسبة لمشروع Bun، كانت تكلفة بناء مساحة العمل بأكملها عالية، لذلك، أثناء عملية ترجمة الملفات، لم يكن وكيل Claude ينفذ أوامر cargo بشكل عشوائي. وبدلاً من ذلك، كان سير العمل:
يكلف المترجم، ثم يُرسل أخطاءه إلى قائمة مشتركة، ثم يُصنفها، ثم تصبح مهامًا لوكلاء الإصلاح، ثم يُعيد المنسق البناء. هذا يمنع عشرات الوكلاء من بدء بناءات باهظة الثمن في نفس الوقت.

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

الخطوة الخامسة: تشغيل البرنامج

النجاح في التجميع يثبت فقط أن اللغة الهدف قادرة على قبول الكود.

المرحلة التالية تكتشف الأعطال وفشل التهيئة وفقدان الموارد والافتراضات غير الصالحة وأعطال التكامل من خلال التنفيذ الأساسي واختبارات الدخان.

يجب تصنيف حالات الفشل حسب السبب.

إذا فشلت 40 اختبار دخان بسبب نفس نمط التهيئة الخاطئ، يجب إصلاح قواعد الترحيل وإعادة إنشاء الكود المتأثر بدلاً من تخصيص 40 حلاً مستقلاً.

الخطوة السادسة: مطابقة السلوك الأصلي

المستوى النهائي هو الاتساق السلوكي.

تشغيل مجموعات الاختبار المحمولة وأدوات التحقق من الاتساق ومقارنات المخرجات والمعايير المرجعية ذات الصلة لقاعدتي الكود معًا.

لكل حالة فشل:

  1. تقديم دليل الفشل مع حلين محتملين لوكيل الإصلاح.
  2. مطالبة وكيل الإصلاح بتحديد الاختلافات السلوكية.
  3. فحص التعديلات المقترحة من قبل مدقق خصمي.
  4. معالجة عمليات البناء عالية التكلفة دفعة واحدة عبر عملية بناء واحدة.
  5. إعادة تشغيل الاختبارات المتأثرة.
  6. ترقية حالات الفشل المتكررة إلى تغييرات في القواعد.

قاعدة الكود الأصلية هي المرجع الأساسي دائمًا، ما لم يكن الهدف الواضح للمشروع هو تغيير السلوك.

عدم وجود مجموعة اختبار لا يعني تخطي هذه الخطوة. يمكن للفريق بمساعدة Claude إنشاء أدوات تحقق خارجية بناءً على سيناريوهات حقيقية، والتحقق من صحة أدوات التحقق عبر سلوكيات مكسورة عن قصد.

البدء السريع مع مجموعة أدوات الترحيل من Anthropic

أصدرت Anthropic مجموعة أدوات عامة للبدء، تشمل التعليمات والقوالب والبرامج النصية المستندة إلى عملية الترحيل.

هذا المستودع هو مادة مرجعية وليس منتج ترحيل كامل الاستضافة. التعليمات هي قوالب إعادة هيكلة، وليست سجلًا دقيقًا لعملية مشروع Bun.

1. تثبيت Claude Code

على أنظمة macOS أو Linux:

curl -fsSL https://claude.ai/install.sh | bash

على نظام Windows PowerShell:

irm https://claude.ai/install.ps1 | iex

قبل تنفيذ نصوص التثبيت عن بُعد، يرجى مراجعة محتوى النص وسياسات الأمان الخاصة بمؤسستك.

2. استنساخ مجموعة أدوات الترحيل

في المستودع المراد ترحيله، نفذ:

git clone https://github.com/anthropics/code-migration-kit-with-claude-code.git ./migration-kit

3. إضافة مهارة الترحيل

هذه الخطوة الاختيارية تنسخ مهارة الترحيل إلى دليل مهارات Claude Code المحلي:

cp -r migration-kit/skill ~/.claude/skills/code-migration

اتبع التعليمات لتحديث مسار مجموعة الأدوات في ملف SKILL.md المثبت.

المستودع.

4. تشغيل تقييم الجدوى

أولاً استخدم تعليمات الجدوى للقراءة فقط من مجموعة الأدوات:

prompts/00-feasibility.md

يجب أن تجيب النتائج على ثلاثة أسئلة:

  • هل يجب ترحيل هذا المشروع؟
  • هل الترحيل يحافظ على الهيكل أم يعيد التصميم؟
  • هل يمكن الحكم على التنفيذ الأصلي والتنفيذ الهدف بشكل عادل؟

"عدم الترحيل" هو نتيجة صالحة.

5. إعداد أدوات التحكيم وقواعد الأمان

قبل البدء في الترجمة:

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

ثم تشغيل تعليمات الترحيل بالتسلسل، بدلاً من القفز مباشرة إلى الترجمة الواسعة النطاق.

المشكلات التي ظهرت في المحاولات المبكرة لترحيل Bun

لم يكن ترحيل Bun ناجحًا منذ البداية.

عندما بدأ العديد من الوكلاء العمل في مستودع واحد، تداخلت عمليات Git الخاصة بهم. قام أحد الوكلاء بتشغيل git stash، واستخدم آخر git stash pop، وأعاد ثالث تعيين شجرة العمل.

غير Sumner سير العمل لمنع الوكلاء من تشغيل أوامر Git التدميرية بحرية. لاحقًا قسم العمل إلى أربعة أجزاء عمل، يستخدم كل منها شجرة عمل مستقلة، وينسق وكلاء متعددين.

يسلط هذا المثال الضوء على نقطة رئيسية: يجب أن تتطابق صلاحيات الوكلاء مع تصميم سير العمل.

قد يقوم وكيل برمجي بصلاحيات وصول واسعة للغلاف بما يلي:

  • حذف أو استبدال العمل
  • إعادة تعيين التغييرات غير الملتزمة
  • تشغيل عمليات بناء عالية التكلفة بشكل متكرر
  • تعديل ملفات غير ذات صلة
  • تسريب الأسرار عبر الأوامر أو السجلات
  • إعاقة الوكلاء الآخرين

يجب على طبقة التنسيق تقييد الأوامر وتحديد ملكية الملفات وتسلسل العمليات عالية التكلفة وجعل الاسترداد بسيطًا.

أفضل الممارسات لترحيل الكود بمساعدة الذكاء الاصطناعي

يمكن تلخيص الدروس المستفادة من Anthropic في بعض القواعد العملية.

لا تتبع الإرشادات العامة بشكل أعمى

لكل قاعدة كود نظام بناء مختلف وتغطية اختبارات وسلوك تشغيل وقيود نشر وتحمل مخاطر مختلف.

استخدم إطار العمل المكون من ست خطوات كنقطة بداية، ثم دع Claude يعدل وفقًا للمستودع الفعلي.

ركز على الأنماط، وليس حالات الفشل الفردية

يمكن لوكيل الإصلاح التعامل مع حالات الفشل الفردية. قيمة الاهتمام البشري تكون أكبر عندما يستخدم لتحديد الأنماط المتكررة والقواعد المفقودة والافتراضات غير الآمنة والمشكلات المعمارية.

اجعل المراجعة خصمية

لا ينبغي أن يكون وكيل التنفيذ هو المراجع الوحيد له.

قدم لجهاز المراجعة سياقًا مستقلاً وأخبره بافتراض أن الكود المُنشأ خاطئ. مهمتهم هي العثور على سبب فشل الكود أو انحرافه أو مخالفته لدليل القواعد.

اجعل التحقق آليًا

استخدم المحولات البرمجية والاختبارات وأدوات فحص الكود وفرق المخرجات والمعايير المرجعية والبرامج النصية الحتمية كأدوات تحكيم.

المراجعة الذاتية القائلة "يبدو صحيحًا" لا يمكنها التحقق بأمان من تغييرات بملايين الأسطر.

استخدم نماذج مختلفة لأدوار مختلفة

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

استثمر الجهد البشري مبكرًا

يجب تنفيذ أعمال الجهد البشري الأعلى قيمة قبل التوليد الواسع النطاق:

تحديد حالة العمل التجارية

  • بناء آليات المراجعة
  • وضع دليل القواعد
  • رسم خريطة التبعيات
  • تدقيق المشاريع التجريبية
  • تعيين الصلاحيات والحدود

بمجرد أن تكون هذه الأسس متينة وموثوقة، يتحول معظم العمل المتبقي إلى مهام طابور ميكانيكية.

حافظ على قابلية استرداد الطابور

يجب أن تتحمل مهام الترحيل التي تستغرق أيامًا للتشغيل الأعطال وإعادة التشغيل وأعطال النماذج وانقطاع البنية التحتية وغيرها من الطوارئ.

يجب تحديد حالة الإكمال بناءً على القطع الأثرية المستمرة على القرص وسجلات الالتزام ونتائج الاختبارات وحالة الطابور، وليس على محادثة طويلة واحدة.

النتائج بعد ترحيل Bun

أبلغت Anthropic أن كود Bun المكتوب بلغة Rust دخل مرحلة الإنتاج.

لم يقم هذا الترحيل بإزالة جميع المقايضات. حوالي 4% من كود Rust لا يزال موجودًا داخل كتل unsafe، تتركز بشكل أساسي في عمليات المؤشرات الصغيرة عند حدود C و C++.

ومع ذلك، حقق التنفيذ الجديد تحسينات ملحوظة:

  • إصلاح مشاكل تسرب الذاكرة القابلة للكشف
  • انخفاض استخدام الذاكرة في معيار بناء متكرر من 6,745 ميجابايت إلى 609 ميجابايت
  • تقليل حجم الملفات الثنائية بنسبة 19% على منصتي Linux و Windows
  • تحسين أداء أعباء عمل محددة بنسبة تتراوح بين 2% و 5% تقريبًا بفضل التحسينات عبر اللغات

توضح هذه النتائج أهمية الترحيل تمامًا. الهدف ليس إنتاج كميات كبيرة من كود AI، بل بناء نظام أكثر أمانًا وأصغر حجمًا وأسهل في الصيانة مع الحفاظ على السلوك الأصلي.

حالات استخدام الترحيل بالذكاء الاصطناعي

يكون الترحيل الواسع النطاق مناسبًا لسير العمل الذكي عندما:

  • قاعدة الكود الأصلية متاحة كمواصفات كاملة
  • يمكن فحص السلوك عبر وسائل خارجية
  • يمكن إنشاء اختبارات أو سيناريوهات مكافئة
  • يمكن تقسيم العمل إلى وحدات قابلة للتكرار
  • اللغة الهدف لها مزايا واضحة
  • المؤسسة قادرة على تحمل الفروع التجريبية الكبيرة
  • يمكن للخبراء البشريين مراجعة الهندسة المعمارية وحالات الحافة
  • يمكن تقييد بيئات الأدوات وتدقيقها

بينما قد لا يكون الترحيل مناسبًا عندما:

  • الفهم غير كافٍ للسلوك الأصلي
  • لا يمكن التحقق من الصحة
  • المشروع يخلط بين الترحيل وإعادة التصميم الكامل للمنتج
  • الموافقات التنظيمية تتطلب تحققًا بشريًا من كل تغيير
  • الكود يحتوي على أسرار أو أنظمة لا يمكن كشفها بأمان
  • يفتقر الفريق إلى الملكية بعد دمج كود AI

القدرة على توليد ملايين الأسطر من الكود بسرعة لا تجعل الترحيل مبررًا تلقائيًا.

الأسئلة الشائعة

هل Claude Code قام بالفعل بترحيل Bun من Zig

هل تمت إعادة الكتابة بلغة Rust؟

نعم. استخدم Jarred Sumner سير العمل الديناميكي لـ Claude Code ونموذج Claude في مرحلة ما قبل الإصدار لترحيل نواة Bun من Zig إلى Rust. أنتجت هذه العملية أكثر من مليون سطر من الأكواد في أقل من أسبوعين، تلاها التجميع والاختبار والمراجعة وإصلاحات ما بعد الدمج.

كم كلف ترحيل Bun؟

أفادت Anthropic أن الاستهلاك بلغ حوالي 5.9 مليار رمز إدخال غير مخزّن مؤقتًا و690 مليون رمز إخراج. وبحسب تسعير واجهة API، تُقدّر تكلفة النموذج بحوالي 165 ألف دولار أمريكي، دون احتساب تكاليف العمالة والبنية التحتية.

هل اجتاز الترحيل جميع الاختبارات قبل الدمج؟

ذكرت Anthropic أن مجموعة اختبارات Bun الحالية اجتازت الاختبارات في بيئة التكامل المستمر قبل الدمج. بعد الدمج، تم اكتشاف 19 مشكلة تراجعية تم إصلاحها لاحقًا.

لماذا انتقلت Bun من Zig إلى Rust؟

الهدف الرئيسي هو تحسين أمان الذاكرة وتقليل مشاكل دورة الحياة المتكررة، مثل التحرير غير الصحيح والاستخدام بعد التحرير والتحرير المزدوج وتسريبات الذاكرة. يمكن لنظام الملكية والأنواع في Rust اكتشاف العديد من هذه المشاكل أثناء وقت التجميع.

هل يمكن لـ Claude Code ترحيل أي قاعدة أكواد تلقائيًا؟

لا. يتطلب الترحيل الناجح مُقيّمين دقيقين وقواعد واضحة وتحليل التبعيات وصلاحيات محكومة وقوائم انتظار قابلة للتكرار ومراجعة مواجهة وإشراف بشري. بعض المشاريع لا ينبغي ترحيلها أبدًا.

ما هي مراجعة الأكواد المواجهة؟

يتلقى المراجع المُواجه التغييرات المُنتجة في بيئة مستقلة، وتكون مهمته اكتشاف العيوب بدلاً من الموافقة على التغييرات. تختلف أدوار المنفذ والمراجع، مما يقلل من خطر تأييد المؤلف لمخرجاته الخاصة.

هل أحتاج إلى مجموعة اختبارات حالية؟

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

هل حزمة أدوات الترحيل من Anthropic هي سير العمل الكامل الذي استخدمته Bun؟

لا. تصف Anthropic المستودع بأنه حزمة بداية عامة ومعاد هيكلتها. استخدم ترحيل Bun الفعلي مكونات أكثر تحديدًا، بما في ذلك كتيب قواعد المشروع الطويل وسير عمل ديناميكي مخصص.

الأدوات ذات الصلة

  • Claude Code: أداة البرمجة الذكية من Anthropic لإدارة المستودعات والطرفيات والاختبارات وسير عمل التطوير.
  • Bun: بيئة تشغيل JavaScript وTypeScript ومدير حزم وأداة تجميع واختبار.
  • Rust: لغة برمجة أنظمة تركز على الأداء وسلامة الأنواع وسلامة الذاكرة.
  • Zig: لغة برمجة منخفضة المستوى تؤكد على التحكم الصريح ودلالات اللغة البسيطة.
  • GitHub: منصة التحكم في المصادر والتعاون لإدارة طلبات سحب ترحيل Bun وحزمة أدوات ترحيل Anthropic.
  • إضافة Claude Code للتحديث: الإضافة الرسمية من Anthropic لتقييم وتحديث الأنظمة القديمة.

الروابط ذات الصلة

اختبار التكافؤ السلوكي.

  • الدليل الرسمي لـ Rust: الوثائق الرسمية التي تغطي الملكية والاقتراض والأنواع والتزامن وتطوير التطبيقات بلغة Rust.

الخلاصة

لم ينجح ترحيل Bun باستخدام Claude Code لأنه أنتج مليون سطر من إعادة الكتابة المثالية دفعة واحدة. يكمن مفتاح نجاح المشروع في قيام الفريق ببناء نظام إنتاج صارم حول النموذج: كتيب القواعد، خريطة التبعيات، قائمة الثغرات، المشروع التجريبي، قوائم الترجمة المتوازية، المراجعة المواجهة، دورة التجميع، اختبارات الدخان، وفحوصات اتساق السلوك.

ساعدت نفس المنهجية Anthropic في ترحيل قاعدة أكواد Python كبيرة إلى TypeScript خلال عطلة نهاية الأسبوع. في كلتا الحالتين، كانت أهمية التحقق الموضوعي تفوق بكثير سرعة التوليد الأولية.

يمكن للذكاء الاصطناعي أن يقلل بشكل كبير من تكلفة ومدة الترحيلات الواسعة، ولكن بشرط أن تكون العملية قابلة للاستئناف والاسترداد، وأن تكون الصلاحيات محكومة، وأن تستمر العيوب المتكررة في تحسين قواعد إنشاء الأكواد.

الاختراق الحقيقي ليس في قدرة الذكاء الاصطناعي على كتابة مليون سطر من الأكواد - بل في قدرة الحلقات المصممة بعناية على توليد هذه الأكواد والتشكيك فيها واختبارها وتصحيحها بشكل متكرر، حتى يتطابق سلوك النظام الجديد تمامًا مع سلوك النظام القديم.