تریاژ خودکار ایشوها با تیمی از ایجنتها
خلاصهٔ کاملتر
تو این پست اومده که تیم Astro چند ماهه یه پایپلاین تریاژ خودکار روی مخزن خودش اجرا میکنه و نتیجهش کاهش ایشوهای باز از بالای ۲۰۰ به حدود ۳۰ بوده؛ انتظارشون اینه که تو یه ماه آینده به صفر برسن، اتفاقی که تو پنج سال عمر این مخزن سابقه نداشته. تأکید میکنن این عدد با اعلام ورشکستگی ایشو یا بستن خودکار تیکتهای قدیمی به دست نیومده.
شروع کار یه اسکیل ایجنت بوده که همون مراحل تریاژ دستی رو دنبال میکنه: بازتولید باگ با کلونکردن مخزن نمونه، ریشهیابی با لاگگذاری تو کدبیس، بررسی تستها و مستندات برای اینکه معلوم شه واقعاً باگه یا رفتار عمدی، و آخر تبدیل بازتولید به تست شکستخورده و اعمال فیکس. هر مرحله رو یه سابایجنت جدا اجرا میکنه تا مدل به زور دنبال راهحل نگرده، و یافتهها از طریق یه فایل report.md به مرحلهٔ بعد پاس داده میشه.
موقع خودکارسازی متوجه شدن کل پایپلاین در واقع یه ماشین حالته که با لیبلهای ایشو پیش میره. هر ایشوی جدید با لیبل triage needed شروع میشه و بعد از تأیید کاربر به fix verified میرسه؛ بیرون از این انتقالها هیچ حالت دیگهای نگه داشته نمیشه و پایپلاین با خوندن کامنتهای خود ایشو میفهمه کجای کاره. وقتی فیکس آماده شد، با pkg.pr.new یه نسخهٔ پیشنمایش منتشر میشه و اگه گزارشدهنده تأیید کنه، یه PR متصل به ایشو باز میشه.
نکتهٔ جالب مقاله برخوردشون با شکسته: به گفتهٔ تیم، وقتی ایجنت نمیتونه راهحل درست پیدا کنه، اون شکست رو نشونهٔ یه مشکل تو خود کدبیس میگیرن — انتزاعهای مبهم، مستندات ناقص یا پوشش تست کم. مثالشون یه سری باگ HMR بوده که بات مدام یه شرط if خاص رو عوض میکرد و جای دیگه رگرسیون میساخت؛ بعد از اضافهکردن یه کامنت توضیحی دربارهٔ منطق اون شرط، بات دست از اون تغییر برداشت.
منطق تریاژ اولش داخل مونوریپو بود، ولی برای اینکه ارتقا و تغییرش شبیه جراحی روی زیرساخت زنده نباشه، به یه مخزن مستقل و تستپذیر به اسم triagebot-action منتقل شده و الان چند تیم دیگه هم ازش استفاده یا فورکش میکنن. سیمکشی اکشن تو ورکفلو خیلی کوتاهه:
- uses: withastro/triagebot-action@v1
with:
triage-model: cloudflare-workers-ai/@cf/moonshotai/kimi-k2.7-code
triage-skill: .agents/skills/triageهمین ایدهٔ کلی — واکنش به یه رویداد، اجرای زنجیرهای از سابایجنتهای ایزوله و جداکردن استدلالشون از کاری که اجازه دارن انجام بدن — به جایی رسیده که تیم اسمشو Flue گذاشته: یه فریمورک متنباز و مستقل از پلتفرم برای ساخت ایجنتها و ورکفلوهای بادوام. نگرانی اولیهشون این بود که جوابهای رباتیک ارتباط با جامعهٔ کاربرها رو سرد کنه، ولی میگن برعکس شد و حالا وقت بیشتری برای گفتوگو تو دیسکورد و بحثهای RFC دارن.
نکات کلیدی:
- ایشوهای باز Astro با تریاژ خودکار از بالای ۲۰۰ به حدود ۳۰ رسیده
- پایپلاین یه ماشین حالت مبتنی بر لیبله و حالت اضافهای نگه نمیداره
- هر مرحله (بازتولید، ریشهیابی، تأیید، فیکس) رو یه سابایجنت جدا اجرا میکنه
- شکست ایجنت بهعنوان نشونهٔ ضعف مستندات، تست یا معماری خونده میشه
- کد تو مخزن triagebot-action آزاده و موتورش به فریمورک Flue تبدیل شده




