تصور کنید مدیر فنی تیمی هستید که کاهش شدید نرخ مسدودسازی برنامههای خطرناک را در داشبورد میبیند و آن را پیروزی در بهینهسازی میپندارد، در حالی که در واقعیت، سیستم ایمنی بهطور کامل خاموش شده است. این پارادوکس خطرناک — که یک حالت شکست خاموش است — به این معناست که وقتی یک حفاظ قطعی از کار میافتد، هیچ زنگ خطری به صدا در نمیآید و فقط هوش مصنوعی شما «ایمنتر» به نظر میرسد.
در دنیای ارکستراسیون مدلهای زبانی بزرگ (LLM) — که شبیه کتابخانهداری است که میلیاردها صفحه را خوانده و حالا با همان لحن جواب میدهد — توسعهدهندگان برای پایداری بیشتر، قراردادهای ایمنی را از منتقدهای احتمالی LLM به حفاظهای قطعی (Deterministic Gates) منتقل میکنند. این حفاظها قوانین سختافزاری و کدنویسیشدهای هستند که برنامههای ناایمن را مسدود میکنند. این رویکرد در واقع تکامل همان گیتهای کیفی است که پیشتر برای توقف پسروندهای فنی در عاملهای هوش مصنوعی معرفی شده بودند. طبق گزارش آرتجومز استوکانز (Artjoms Stukans)، توسعهدهنده PlannerCritic، مشکل اینجاست که برخلاف مدلهای احتمالی که با تغییر برچسبها ناپایداری خود را لو میدهند، یک حفاظ قطعی خرابشده صرفاً سکوت میکند. چون اجراهای مکرر بر سر این سکوت توافق دارند، نتیجه بهصورت «اطمینان» تفسیر میشود و شما سیگنال تغییرات را دقیقاً در جایی که قرارداد ایمنی قرار دارد، از دست میدهید.

مشکلی که در دل راهکار پنهان شده است
بر اساس گزارشی که در ۳۱ اوت ۲۰۲۶ منتشر شد، سیستم PlannerCritic نسخه 0.2.2 در ابتدا تعداد بالایی از مسدودکنندهها را در دستههای ساختاری نشان میداد. این اعداد در ابتدا گواه این بود که لایه قطعی بهدرستی عمل میکند:
- توالی ناایمن (unsafe_sequencing): ۲۲۶ مورد مسدود شده
- وابستگیهای تأییدنشده (unverified_dependencies): ۱۸۵ مورد مسدود شده
- بازگشت ضعیف (weak_rollback): ۸۶ مورد مسدود شده
اما استوکانز به یک حالت شکست اشاره کرد که پیشتر مدلسازی نشده بود: اگر یک بازنویسی کد (Refactor) باعث شود یک کلاس مسدودکننده دیگر فعال نشود، اعداد فقط بهتر به نظر میرسند. اگر ۲۲۶ مورد مسدود شده به ۴۰ مورد برسد، چنین برداشت میشود که برنامهها ایمنتر شدهاند. همانطور که در تحلیل قبلی ما دربارهی امنیت مدلهای بازمتن اشاره کردیم، اعتماد کورکورانه به خروجیهای عددی بدون بررسی زیرساخت میتواند فاجعهبار باشد. استوکانز این وضعیت را با یک حادثه در کوبرنتیز مقایسه کرد که در آن چهار نسخه متوالی هرگز اجرا نشدند چون یک ReplicaSet قدیمی یک پاد را در حالت Running نگه داشته بود؛ تمام تستهای سلامت سبز بودند، اما سیستم در سکوت شکست خورده بود.
شکاف در دفاعهای موجود
خط لولههای استاندارد CI/CD اغلب این «مرگ خاموش» را تشخیص نمیدهند چون حضور ویژگیها را تست میکنند، نه تداوم حضور خطاها را. تحلیل PlannerCritic نشان میدهد چرا ابزارهای رایج در اینجا شکست میخورند:
- معیار تأییدهای کمتر از حد (underclaim_approvals): این معیار تست میکند که آیا منتقد LLM در مسدود کردن یک برنامه بد شکست خورده است یا خیر، اما منتقد را تست میکند، نه حفاظهای قطعی را. این موضوع دقیقاً همان جایی است که باید پرسید آیا تاییدیه های متوالی در کدنویسی AI واقعاً نشانه کیفیت هستند یا صرفاً یک نقطه کور در سیستم پایش.
- تستهای واحد (Unit Tests) حفاظهای قطعی: اینها تأیید میکنند که یک حفاظ در زمان ساخت (Build time) روی یک نمونه خاص فعال میشود، اما سلامت زمان اجرا (Runtime) را پس از بازنویسی کد در محیط عملیاتی رصد نمیکنند.
- ردیابهای رگرسیون (Regression detectors): اینها ظهور مسدودکنندههای جدید را رصد میکنند، اما مسدودکنندههایی که ناپدید میشوند را نادیده میگیرند.
- هشدارهای انحراف (Drift alerts): اینها جهشهای Z-score در شدت خطا را میبینند، نه حذف کامل یک کلاس ایمنی را.
راهکار قناری گیت (Gate Canary)
برای رفع این مشکل، توسعهدهنده یک «قناری گیت» پیاده کرد؛ یک بررسی سلامت قطعی و بدون هزینه استنتاج که قبل از هر ارزیابی اجرا میشود. این سیستم تأیید میکند که هر حفاظ هنوز روی «برنامه بدِ قناری» مخصوص به خود فعال میشود.
به هر کلاس حفاظ، یک جفت (برنامه خوب، برنامه بد) اختصاص داده شده تا سلامت مستمر تضمین شود:
- ترتیب: خوب (t1 ← t2) در برابر بد (t2 ← t1)
- اعتبار بازگشت: خوب (ریسک بالا + بازگشت در دسترس) در برابر بد (ریسک بالا + بازگشت غیرقابل دسترس)
- ترتیب تأیید: خوب (تأیید قبل از مصرف) در برابر بد (مصرف قبل از تأیید)
- پیشنیازها: خوب (ارجاع به حقیقت تثبیتشده) در برابر بد (ارجاع به هیچ)
این قناری در سه سطح ادغام شده است: به عنوان یک گیت پیش از کامیت (Pre-commit) که در صورت سکوت هر حفاظ، CI را متوقف میکند؛ به عنوان بخشی از خروجی هر تست میدانی؛ و به صورت یک معیار سبز/قرمز ساده در داشبورد. اگر باگی باعث سکوت حفاظ ترتیب شود، قناری فوراً قرمز میشود. در این حالت، کاهش تعداد مسدودکنندهها از ۲۲۶ به ۴۰ دیگر به عنوان بهبود دیده نمیشود، بلکه یک رگرسیون است که باید توضیح داده شود.
درس سخت درباره مدلهای اعتماد
این تغییر، مدل بنیادی اعتماد در ایمنی هوش مصنوعی را دگرگون میکند. پیش از این، ایمنی در دو لایه دیده میشد: یک منتقد LLM منعطف اما ناپایدار (لایه ۱) و حفاظهای قطعی پایدار و مقتدر (لایه ۲).
این چارچوب ناقص است چون حفاظها تنها زمانی پایدارند که کسی آنها را زیر نظر داشته باشد. اعتماد به یک لایه قطعی صرفاً به دلیل «قطعی بودن» آن، همان اشتباهی است که وقتی تستها پاس میشوند، به کل مجموعه تست اعتماد میکنیم. پرسش این نیست که آیا حفاظها ذاتاً قابل اعتمادند، بلکه این است که آیا شما لحظه دقیق از کار افتادن آنها را میفهمید یا خیر. یک لایه ایمنی قطعی، مشکل پایش را حذف نمیکند؛ بلکه آن را از پایش «ناپایداری» (نرخ تغییر برچسب) به پایش «توانایی تداوم در فعال شدن» منتقل میکند.
برای کسانی که گردشکارهای عاملمحور میسازند، درس روشن است: هر لایه ایمنی قطعی به یک قناری مستقل نیاز دارد. باید بپرسید: کدام جزء اگر از کار بیفتد، معیارهای زیباتری تولید میکند؟ قناری باید از ورودیهای شناختهشدهی «بد» استفاده کند تا سکوت را نتوان اشتباه تفسیر کرد و وضعیت آن باید در داشبورد اصلی باشد، نه دفنشده در لاگهای CI. این تفاوت بین لایه ایمنی است که به آن اعتماد دارید و لایهای است که هنوز ندیدهاید چگونه میشکند.
گام بعدی شما
- تمام حفاظهای سختافزاری (Hard-coded) سیستم خود را شناسایی کنید و برای هر کدام یک «ورودی بد» ثابت تعریف کنید که حتماً باید مسدود شود.
- بررسی سلامت حفاظها را از مرحله تست واحد به مرحله پایش زمان اجرا (Runtime Monitoring) منتقل کنید.
- داشبورد معیارهای ایمنی خود را بازبینی کنید تا مطمئن شوید کاهش نرخ خطاها لزوماً به معنای بهبود کیفیت نیست.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو