وقتی ریویو سریع شد، تستها گلوگاه شدن
خلاصهٔ کاملتر
آلن هاچیسون تو سومین پست از سریای که دربارهی ساخت Vycari مینویسه، سراغ سؤالی رفته که خیلی تیمهای ایجنتمحور دارن بهش میرسن: حالا که ریویو خودکار شده، PRها منتظر چی میمونن؟ به روایت خودش یه ایجنت PR رو باز میکنه، Greptile تو دو سه دقیقه ریویوش میکنه و تنها چیزی که هنوز داره میچرخه سوئیت تسته. سیزده دقیقه CI قبلاً عدد بیاهمیتی بود، حالا تنها فاصلهی بین تمومشدن کار یه ایجنت و شروع بعدیه.
ترفند قدیمی لایهلایه کردن تستها هم دیگه جواب نمیده. به گفتهی نویسنده اونها روی سبزبودن دیپلوی میکنن: هر مرج یه ایمیج میسازه و پروداکشن هر ۱۵ دقیقه آخرین ایمیج رو برمیداره. یعنی از مرج تا اجرا حدود نیم ساعته و سوئیت کندی که نصفهشب گزارش میده، داره از باگی خبر میده که صبح شیپ شده و چند صد PR ایجنتی روش سوار شدن. برای همین حتی تو یه پروژهی دونفره هم merge queue شده بخش استاندارد راهاندازی ریپو.
مشکل دوم سرعت نیست، فهمپذیریه. یه مهندس تازهوارد طی چند هفته میفهمه کدوم گوشههای کد ترسناکن، ولی ایجنت هر بار سرد شروع میکنه و بقیه رو از روی کدِ بغلدستی حدس میزنه. نویسنده میگه فایلهای context و skill کمک میکنن ولی مجانی نیستن و هر کدوم یه چیز دیگهست که باید بهروز نگهش داری. نتیجهگیریش اینه که مونورپو ذاتاً بد نیست، فقط برای تیمی که بیشتر کارش رو موجودی انجام میده که هر تسک دیوارها رو از نو یاد میگیره، الگوی بدیه.
اولین تکهای که بیرون کشید groups بود، بخشی از Pepper که context مشترک بین آدمها رو مدیریت میکنه. یه PR تو ریپوی groups حدود ۲ دقیقه CI میخواد، در برابر ۱۳ دقیقه برای همون کار تو مونورپو، و این عدد با بزرگتر شدن کد ثابت مونده. شرطش اینه که مرز واقعی باشه: هر سرویس یه اینترفیس مشخص داره و چیزی که سر ریویو سرش بحث میشه همون اینترفیسه، نه پیادهسازی پشتش.
نویسنده اشاره میکنه آنتروپیک از سمت دیگهای به همین مشکل خورده: مهندسهاش هشت برابر قبل کد شیپ میکنن، Claude هشتاد درصدش رو مینویسه و جابهای CI تو شش ماه ۲۵ برابر شدن. جواب اونها test impact analysis بوده، یعنی نگهداشتن کدبیس بزرگ و اجرای فقط تستهایی که یه تغییر میتونه روشون اثر بذاره. هاچیسون میگه تو یه تیم دونفره کسی رو نداره که همچین سیستمی رو بسازه و درست نگهش داره، برای همین شکستن ریپو براش ارزونتر تموم میشه.
برای کاری که چند ریپو رو همزمان درگیر میکنه، یه ایجنت به اسم UTL راه میندازه (از عنوان قدیمی Uber Tech Lead گوگل) که روی Fable 5.1 اجرا میشه و تو یه متا-ریپو میشینه که بقیهی ریپوها زیرش چکاوت میشن. عمداً کد نمینویسه؛ فقط طراحی میکنه و کار رو بین زیرایجنتها پخش میکنه. نویسنده چهار هزینهی این مسیر رو هم میشماره: باید قبل از شروع بدونی هر کار مال کدوم سرویسه، ریپوهایی که قبلاً با هم خراب میشدن حالا جدا خراب میشن، هماهنگی بین ریپوها تمومشدنی نیست، و معماری ریپو خودش فیچر نیست.
نکات کلیدی:
- سوئیت تست کامل مونورپو ۱۳ دقیقه طول میکشه، همون کار تو ریپوی جداشدهی groups حدود ۲ دقیقه.
- پروداکشن هر ۱۵ دقیقه ایمیج جدید رو برمیداره، پس از مرج تا اجرا حدود نیم ساعت فاصله هست.
- ریویوی خودکار با Greptile چند دقیقهای تمومه، برای همین ریویو دیگه گلوگاه نیست.
- به روایت آنتروپیک، جابهای CI اونها تو شش ماه ۲۵ برابر شده و Claude هشتاد درصد کد رو مینویسه.
- ایجنت UTL روی Fable 5.1 اجرا میشه و اجازهی نوشتن کد نداره، فقط کار رو واگذار میکنه.




