کدنویسی با ایجنتها داشت CI آنتروپیک رو میترکوند
خلاصهٔ کاملتر
به گفتهی ساچین مالهوترا، نویسندهی این پست، مهندسای آنتروپیک الان بهطور میانگین ۸ برابر بیشتر از دورهی ۲۰۲۱ تا ۲۰۲۵ کد تولید میکنن، اونم درحالی که ۸۰ درصد این کدها رو خود Claude مینویسه و تو ریویو و تایید PRها هم نقش داره. همزمان تعداد تستهای کدبیسشون ۱۰ برابر شده، ولی تعداد مهندسا فقط کمی زیاد شده. نتیجهش این شد که حجم جابهای CI تو ۶ ماه، ۲۵ برابر شد.
آنتروپیک یه سرویس تحلیل تاثیر تست (test impact analysis) داره که مشخص میکنه هر PR باید کدوم تستها رو اجرا کنه، نه همهی تستها رو. این سرویس از دو بخش تشکیل شده: یه «listener» که نتیجهی هر اجرای CI رو ثبت میکنه، و یه «selector» که از رو این تاریخچه تصمیم میگیره کدوم تستها رو هر PR جدید اجرا بشه. مشکل اینجا بود که کل سیستم رو یه پردازش تکی اجرا میشد، چون فقط یه writer میتونست تاریخچهی هر تست رو درست ثبت کنه؛ همین نمیذاشت سرویس رو افقی (رو چند ماشین) گسترش بدن.
وقتی listener عقب میافتاد، selector از رو دادهی قدیمی تصمیم میگرفت؛ یعنی یه تغییر بد که merge میشد یا یه تست جدید، ممکن بود مدتی دیده نشه. تیم سه راهحل سریع امتحان کرد: بزرگتر کردن ماشین سرویس (۷۰ روز دووم آورد)، شارد کردن سرویس بر اساس پکیجهای کدبیس که Claude کدشو تولید کرد (۲۹ روز جواب داد)، و ریاستارت روزانه چون سرویس تا بعدازظهر به سقف حافظه میرسید (کمتر از یه روز دووم آورد و نتیجهی خیلی از تستها اصلا ثبت نمیشد).
راهحل نهایی این بود که به سرویس یه دیتابیس درونحافظهای بدن. حالا هر worker میتونه نتیجهی هر تستی رو مستقیم تو یه journal (دفترچهی ثبت رویداد) بنویسه و بره سراغ بعدی، بدون اینکه چیزی تو حافظهی خودش نگه داره؛ یعنی سرویس کاملا بیحالت (stateless) و قابل گسترش افقی شد. یه پردازش جدا هم هر چند ثانیه یه بار این journal رو جمع میکنه و تاریخچهی هر تست رو بهروز میکنه. طبق گفتهی نویسنده، این بازطراحی رو یه مهندس تو ۳ هفته انجام داد؛ کاری که یه سال پیش نزدیک به یه فصل طول میکشید.
درس اصلی که نویسنده ازش میگیره اینه که با رشد استفاده از ایجنتها، حجم کار CI هم نمایی (exponential) زیاد میشه، پس باید از همون طراحی اولیه برای ۱۰ تا ۲۰ برابر ظرفیت فعلی برنامهریزی کرد. توصیهش اینه که از همون اول state رو از پردازشهای اصلی بیرون نگه دارین و از اجرای سرویسهای حیاتی بهصورت یه پردازش تکی که قابل مانیتور نباشه پرهیز کنین.
نکات کلیدی:
- حجم جابهای CI آنتروپیک تو ۶ ماه ۲۵ برابر شده، همزمان با رشد ۱۰ برابری تعداد تستها.
- سه وصلهی اول به ترتیب ۷۰ روز، ۲۹ روز و کمتر از یه روز دووم آوردن.
- راهحل نهایی یعنی دادن یه دیتابیس درونحافظهای و بیحالت کردن workerها، رو یه مهندس تو ۳ هفته پیاده کرد.
- نویسنده توصیه میکنه از همون طراحی اولیه برای ۱۰ تا ۲۰ برابر مقیاس فعلی برنامهریزی بشه.




