کوچ ۱۱ میلیون کاربر کلاین به هستهٔ جدید
خلاصهٔ کاملتر
تیم کلاین تو پستی که منتشر کرده توضیح میده افزونهٔ ویژوال استودیو کدش، با بیش از ۱۱ میلیون نصب، سالها روی یک هستهٔ اختصاصی حدود ۷۶ هزار خطی میچرخید؛ در حالی که بقیهٔ محصولاتشون یعنی پلاگین جتبرینز، CLI و SDK همه روی Cline SDK ساخته شده بودن. هر مدل جدید یعنی دستکاری دستی همون مونولیت و یک ریلیز تازه. به گفتهٔ تیم، تلاش اول برای این کوچ چند ماه طول کشید و بعد از انتشار اونقدر خراب شد که مجبور شدن فوری برش گردونن.
مشکل بعدی خود مارکتپلیس بود: فقط یک اهرم داره، publish، و بعدش صد درصد کاربرها نسخهٔ جدید رو میگیرن. شمارهٔ نسخهها هم فقط جلو میره و برگشت به نسخهٔ پایینتر ممکن نیست، پس تنها راه جبران یک ریلیز بالاتر و چند ساعت تا چند روز صبره. راهحلی که تیم پیدا کرد این بود که هر دو نسخه رو داخل یک بسته بذارن: یک لودر ۴۶ کیلوبایتی، بهعلاوهٔ پوشهٔ legacy یعنی نسخهٔ قدیمی و next یعنی نسخهٔ جدید.
لودر موقع باز شدن هر پنجره تصمیم میگیره کدوم بسته فعال بشه، و این تصمیم رو یک فیچرفلگ درصدی روی PostHog کنترل میکرد. کاربرهایی که فلگ براشون خاموش بود دقیقاً همون کد قبلی رو داشتن و عملاً گروه کنترل بودن. اگه نسخهٔ جدید موقع فعال شدن کرش میکرد، لودر خودکار legacy رو بالا میآورد و اون دستگاه رو روش پین میکرد. تنظیمات و تسکها بین دو بسته مشترک بود و تعویض هم فقط تو پنجرهٔ بعدی اتفاق میافتاد، تا وسط کار کسی موتورش عوض نشه.
برای اینکه بشه دو هسته رو با هم مقایسه کرد، هر رویداد تلهمتری یک فیلد extension_variant داشت. تیم توصیه میکنه قبل از شروع چنین مهاجرتی، سیستم قدیمی رو حسابی ابزارگذاری کنید تا مقایسه معنی داشته باشه؛ خودشون مجبور شدن متریک task.mistake_limit_reached رو با همون معنی به هستهٔ قدیمی هم اضافه کنن. این متریک یعنی ایجنت سه خطای پشتسرهم زده، مثل تولکال خراب یا ادیت ناموفق، و متوقف شده تا از آدم راهنمایی بگیره.
تو بازهٔ نزدیک به ۵۰/۵۰ که یک روز کامل ترافیک واقعی رو دیده، همین متریک از ۶.۳۴ درصد تسکها روی هستهٔ قدیم به ۰.۶۲ درصد روی هستهٔ جدید رسید، یعنی حدود ۱۰ برابر کمتر. بهبود روی مدلهای open weights بیشتر بود. تیم دلیلش رو این میدونه که هستهٔ قدیمی برای مدلهای ۲۰۲۴ طراحی شده بود و ابزارها رو با تگهای XML از دل متن مدل بیرون میکشید، ولی مدلهای امروزی خودشون نیتیو ابزار صدا میزنن و اون قالب قدیمی فقط هزینه اضافه میکرد.
نکات کلیدی:
- هستهٔ قدیمی افزونه یک مونولیت حدود ۷۶ هزار خطی بود که جدا از Cline SDK نگهداری میشد.
- بستهٔ نصبی شامل یک لودر ۴۶ کیلوبایتی و دو پوشهٔ کامل legacy و next بود.
- نرخ task.mistake_limit_reached از ۶.۳۴٪ به ۰.۶۲٪ رسید، حدود ۱۰ برابر کمتر.
- روی deepseek-v4-flash کاهش از ۱۳.۴٪ به ۱.۳٪ و روی claude-sonnet-5 از ۶.۷٪ به ۰.۶۳٪ بود.
- از ۲۳ اوت انتشار روی ۱۰۰ درصد تنظیم شده و در این مسیر چند قابلیت کماستفاده حذف شدن.




