تصور کنید برنامهنویسی هستید که برای ساعتها به دنبال علت یک کرش ناگهانی میگردد، اما هوش مصنوعیِ تحلیلگرش با اطمینان کامل، خطاهای بیاهمیت هفته پیش را به عنوان علت اصلی معرفی میکند. این دقیقاً همان تلهای است که در یک آزمایش ۴۸ ساعته روی مدلهای MonkeyCode رخ داد: توسعهدهنده متوجه شد که مدلها شروع به نادیده گرفتن شکستهای بحرانی و جدید سیستم کردهاند. مدلها به دلیل حجم بالای دادههای قدیمی، «به طور آماری متقاعد شده بودند» که الگوهای خطای تکراری و قدیمیتر مهمتر هستند. این موضوع ثابت کرد که وارد کردن هر خط از لاگهای سرور به یک مدل، به جای بهبود دقت، یک تله آماری ایجاد میکند. این چالش در واقع نسخهای پیچیدهتر از مدیریت دادههای حجیم است که پیشتر در ابزارهایی برای استخراج خطاهای حیاتی از حجم انبوه لاگها به آن پرداخته بودیم.
این پدیده که لنگر انداختن (Anchoring) نام دارد، زمانی رخ میدهد که مدل زبانی بزرگ (LLM) — مثل کتابخانهداری که میلیاردها صفحه را خوانده و حالا با همان لحن کتابها جواب میدهد — حجم زیاد دادههای تاریخی را به عنوان یک «پیشفرض» (Prior) پذیرفته که بر شواهد جدید میچربد. همانطور که در تحلیل قبلی ما دربارهی اینکه شرکتها چگونه برای کارهای پیشپاافتاده هوش مصنوعی مبالغ هنگفتی میپردازند اشاره کردیم، اینجا با یک ریسک معماری عمیقتر روبرو هستیم: این فرض غلط که «بستر متنی بیشتر، همیشه به معنای استدلال بهتر است». این تضاد بین حافظه خطی و نیاز به دقت، ما را به یاد نبرد میان ذخیرهسازهای معنایی و حافظه خطی برای حفظ دستورات اولیه AI میاندازد.
چیدمان آزمایش: تست MonkeyCode
بر اساس گزارش توسعهدهنده، هدف این بود که روشی رایگان و تکرارپذیر برای تبدیل لاگهای خام به خلاصههای یکپاراگرافی از «علت ریشهای» (Root-Cause) پیدا شود. برای دستیابی به این هدف، او از دسترسی رایگان به مدلهای MonkeyCode برای نقطه اتصال (Endpoint) و گزینه سرور رایگان آن برای میزبانی یک کرونجاب (Cron Job) استفاده کرد تا لاگها را هر ساعت بازبینی کند.
افشای رابطه: این مقاله به عنوان بخشی از برنامه معرفی محصولات MonkeyCode تهیه شده است.
برای درک بهتر، سیستمی را تصور کنید که در آن یک خطای 'TimeoutError' ۵۰ بار تکرار میشود و سپس یک خطای تک و فاجعهبار 'ConnectionResetError' رخ میدهد. اگر از یک هوش مصنوعی بخواهید لاگ را خلاصه کند، احتمالاً Timeout را به عنوان علت ریشهای گزارش میکند، صرفاً به این دلیل که این خطا توجه مدل را در پرامپت به شدت اشغال کرده است. در ۱۲ ساعت اول آزمایش، خلاصهها دقیق و تیز بودند؛ اما به محض اینکه ConnectionResetError باعث یک ریزش زنجیرهای در سیستم شد، مدل به جای گزارش آن، همچنان به تکرار الگوی رایجتر Timeout ادامه داد.
راهکار فنی: رژیم سختگیرانه برای بستر متنی
راه حل، جایگزینی تاریخچه کامل با یک «رژیم متنی» (Context Diet) محدود بود. توسعهدهنده متوجه شد درخواست «خلاصهسازی لاگ»، به طور ضمنی مدل را تشویق میکند تا تمام فایل را به یک اندازه مهم بداند. برای رفع این مشکل، تغییراتی در نحوه ورود دادهها و خودِ پرامپت اعمال شد:
- پنجره لغزان (Sliding Window): اسکریپت به گونهای محدود شد که دقیقاً ۵۰ خط از لاگها را بخواند. این کار مانع از آن شد که مدل توسط پیشفرضهای تاریخی غرق شود.
- حذف برچسبهای زمانی: برچسبهای زمانی ISO حذف شدند تا مدل تمایلی به ابداع روندهای زمانی جعلی و ساختگی نداشته باشد.
- پرامپت تفاضلی (Delta Prompting): دستور از «لاگ را خلاصه کن» به این عبارت تغییر یافت: «فقط خطاهای موجود در ۵۰ خط آخر را بگو. الگوهایی که در این خطوط نیستند را ذکر نکن. چه چیزی با یک سیستم سالم متفاوت است؟»
طبق اعلام توسعهدهنده، این تغییر مدل را از یک خلاصهساز غیرفعال به یک شناسای فعال ناهنجاری تبدیل کرد. مدل توانست خطای ConnectionReset را در همان ساعت اولِ پیکربندی جدید شناسایی کند، در حالی که در حالت تاریخچه کامل، این ناهنجاری کاملاً خفه شده بود.
نتایج و شکستهای مشاهدهشده
در این اجرای کنترلشده ۴۸ ساعته، توسعهدهنده سه الگوی رفتاری متمایز را مشاهده کرد:
- حالت تاریخچه کامل: سریعترین راه برای گمراه شدن؛ هر ناهنجاری جدید توسط خطای قدیمی و غالب خفه میشد.
- حالت پنجره لغزان: حساس اما پر سر و صدا؛ به دلیل نبود یک خط مبنا (Baseline)، گاهی هشدارهای بیضرر را به عنوان مشکلات جدید گزارش میکرد.
- رویکرد ترکیبی: انتخاب نهایی، ترکیب یک خلاصه غلتان (Rolling Summary) در هر ساعت، به همراه یک پنجره خام ۵۰ خطی برای هر دقیقه بود. این روش توانست هم مشکلات مستمر و هم غافلگیریهای لحظهای و تکموردی را شکار کند.
با این حال، همه چیز بینقص نبود. سرور رایگان در ساعت ۳ صبح یک بار ریاستارت شد و کرونجاب را متوقف کرد تا زمانی که یک سیستم نظارتی (Supervisor) برای آن اضافه شد. این نوع ناپایداری در سرورهای رایگان، اهمیت پیادهسازی الگوی نقطه بازرسی برای نجات پردازشهای طولانی AI از کرشهای ناگهانی را دوچندان میکند. علاوه بر این، مدل در مواجهه با ردپای پشته (Stack Traces) تو در تو دچار مشکل شد و اغلب اولین خط را تخت میکرد و علتهای عمیقتر را نادیده میگرفت؛ مشکلی که نویسنده معتقد است با ترفندهای بستر متنی حل نمیشود و نیاز به فرمتبندی بهتر لاگها دارد.
محدودیتها و کاربردهای عملی
فیلتر پنجره لغزان تنها زمانی مفید است که اولویت با «تغییرات اخیر» باشد. این روش برای تحلیلهای جنایی (Forensic) در بازههای چند ماهه مناسب نیست و برای آن کار، به یک سلسلهمراتب خلاصهسازی مناسب نیاز است. همچنین، اگر حجم لاگها هزاران خط در دقیقه باشد، پنجره ۵۰ خطی ممکن است منشأ حادثه را گم کند و فقط علائم نهایی را نشان دهد.
برای شما به عنوان کاربر، این یعنی پنجرهٔ زمینه (Context Window) — میزان متنی که مدل همزمان در ذهن نگه میدارد، شبیه میز کاری است که جا برای چند ورق دارد، نه کل کتابخانه — یک تیغ دو لبه است. اگر ابزارهای تریاژ میسازید، دادنِ همه چیز به مدل، در واقع دادنِ سوگیری (Bias) در یک سینی نقرهای است. همچنین این ساختار برای تیمهایی که به «بازیابی تضمینشده» (Guaranteed Recall) نیاز دارند مناسب نیست، زیرا نقاط اتصال مدلهای رایگان ممکن است با محدودیت نرخ (Rate-limit) مواجه شوند یا عملکردی ناهماهنگ داشته باشند.
این رویکرد نقش توسعهدهنده را از مهندسی پرامپت (Prompt Engineering) — هنر سؤال درست پرسیدن، مثل کسی که میداند چطور از یک مشاور باتجربه بهترین جواب را بگیرد — به «مهندسی بستر متنی» تغییر میدهد. با کنترل دقیق آنچه مدل میبیند و درخواست «تفاضل» به جای «خلاصه»، گرانش آماری خطاهای قدیمی را حذف میکنید. از این روش به عنوان یک لایه تریاژ در کنار ابزارهای قطعی (Deterministic) مانند grep یا آستانههای متریک (Metrics Thresholds) استفاده کنید. برای حل مشکل تاریخچه بلندمدت بدون بازگرداندن سوگیری، معماری «خلاصه از خلاصهها» را در نظر بگیرید که خلاصههای ساعتی را به خلاصههای روزانه فشرده میکند.
گام بعدی شما
- اگر از LLM برای تحلیل لاگ استفاده میکنید، ورودی را به آخرین ۵۰ تا ۱۰۰ خط محدود کنید.
- در پرامپت خود صراحتاً ذکر کنید: «فقط روی تغییرات نسبت به وضعیت نرمال تمرکز کن و الگوهای تکراری را نادیده بگیر».
- برای تحلیلهای بلندمدت، معماری «خلاصه از خلاصهها» را پیاده کنید تا دادهها بدون ایجاد لنگر، فشرده شوند.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو