Jarred Sumner یک گردشکار بازبینی تقابلی (adversarial-review) مبتنی بر Claude را برای بازنویسی زماناجرای Bun از Zig به Rust به کار گرفت. او بیش از یک میلیون خط کد را از طریق ۶۷۷۸ کامیت ارسال کرد و ۱۶۰۰۰ خطای کامپایلر را برطرف نمود. این تلاش شامل اجرای ۵۰ گردشکار Claude Code بود، در اوج خود به ۶۴ عامل Claude همزمان رسید و یک دستورالعمل (playbook) قابل بازتولید برای مهاجرتهای عظیم زبانی به جای گذاشت.
چرا بازنویسی اهمیت دارد
برای هر پروژهای که با کدهای قدیمی (legacy code) دستوپنجه نرم میکند یا قصد تغییر استراتژیک زبان را دارد، «روش Sumner» به جای یک وعدهی مبهم، یک الگوی ملموس ارائه میدهد.
گردشکاری که هوش مصنوعی را به یک شریک تبدیل کرد، نه یک جایگزین
فرآیند Sumner به صورت چرخهای و دقیق عمل میکند:
- تخصیص وظیفه – یک عامل (agent) وظیفهی مشخصی برای مهاجرت دریافت میکند.
- پیادهسازی – عامل دوم کد Rust را مینویسد.
- بازبینی تقابلی – عامل سوم فرض میکند کد اشتباه است، تغییرات (diff) را بررسی میکند و سعی میکند با استفاده از فایلهای منبع و تستها، هر ادعایی را رد کند.
- اصلاحات – عامل پیادهساز، یافتههای بازبین را اعمال میکند.
- دروازههای خودکار – کامپایلر، مجموعهی تست و بررسیهای تحلیل استاتیک (static-analysis)، تغییرات را تأیید میکنند.
قاعدهی حیاتی، جداسازی است. نویسنده هرگز استدلال بازبین را نمیبیند و بازبین نیز هرگز قصد نویسنده را نمیداند. با حذف سوگیری، سیستم بازبین را مجبور میکند تا به جای یک تأیید سطحیِ «خوب به نظر میرسد»، به دنبال باگهای پنهان بگردد.
بازخوردهای قابل بررسی توسط ماشین در Rust، هزاران خطای بالقوهی قابل خواندن توسط انسان را به یک صف قابل مدیریت تبدیل میکند. هر خطای کامپایلر، شکست در borrow-checker یا هشدار Clippy به یک آیتم کاری تبدیل میشود که بازبین تقابلی میتواند مستقیماً آن را هدف قرار دهد.
دستورالعمل هشت مرحلهای
Sumner این گردشکار را به هشت مرحلهی متوالی خلاصه کرده است که هر کدام دارای صف وظایف، تعریفِ «انجامشده»، پرامپتهای بازبینی و دروازههای خودکار مخصوص به خود هستند:
- مرحله A – استخراج حقایق و تدوین راهنما – جمعآوری حقایق معماری و تولید یک راهنمای مهاجرت.
- مرحله B – ترجمهی مکانیکی فایلها – تبدیل فایلهای Zig به اسکلتهای Rust.
- مرحله C – رفع خطاهای کامپایلر – حل ۱۶۰۰۰ خطای کامپایلری که در طول ترجمه ثبت شدهاند.
- مرحله D – مطابقت رفتار زماناجرا – تأیید اینکه خروجی Rust دقیقاً مشابه رفتار Zig باشد.
- مرحله E – تکمیل مجموعهی تست – گذراندن تمام تستهای موجود.
- مرحله F – بازیابی عملکرد – حذف هرگونه کندی که در اثر بازنویسی ایجاد شده است.
- مرحله G – صیقل دادن کیفیت کد – اعمال الگوهای اصولی (idiomatic) Rust و بازنویسی (refactor) برای خوانایی بیشتر.
- مرحله H – مقاومسازی امنیتی – اجرای ممیزیهای بخش unsafe و رسیدگی به آسیبپذیریهای کشفشده.
هر مرحله به مرحلهی بعد تغذیه میکند و تضمین میکند که هیچ مرحلهای نادیده گرفته نشود و عقبگردها (regressions) در همان ابتدا شناسایی شوند.
کجا میتوان دستورالعمل را یافت
Sumner مجموعهی کامل قالبها، پرامپتها و تعاریف مراحل را در https://github.com/Lumafy/sumner-method به صورت متنباز منتشر کرده است. یک مقالهی مکمل نیز جزئیات مهاجرت Bun را بررسی میکند: https://dev.to/lumafy/the-sumner-method-what-buns-ai-assisted-zig-rust-rewrite-teaches-about-large-migrations-2gpo. یک انجمن تلگرامی برای بحثهای مستمر نیز در https://t.me/GyaanSetuAi فعال است.
