پرش به محتوای اصلی
پرش به محتوای مقاله

دو باگ سیستمی عامل هوش مصنوعی را ۱۹ روز در حلقهٔ تکرار انداخت

·۱۳ مهر ۱۴۰۵۵ دقیقه مطالعه
راهنما
عامل من ۱۹ روز موفقیت ثبت کرد، در حالی که دائماً همان وظیفه را تکرار می‌کرد.
عامل من ۱۹ روز موفقیت ثبت کرد، در حالی که دائماً همان وظیفه را تکرار می‌کرد.
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

افشای یک شکست سیستمی در یک عامل دترمینستیک (غیرتصادفی) که نشان می‌دهد حتی بدون وجود توهم در LLM، تداخلات سادهٔ فایل‌سیستم می‌تواند منجر به حلقه‌های تکرار ۱۹ روزه شود.

۴۵۳ اجرای موفق، اما تنها ۳۹ خط پیشرفت واقعی. این واقعیت تلخی بود که تیم پژوهشی آزمایشگاه هوش مصنوعی پالو آلت (Palo Alto AI Research Lab) در ۲۳ اوت ۲۰۲۶ کشف کردند؛ جایی که یک عامل (Agent) — شبیه به کارمندی که هر روز صبح می‌آید و ادعا می‌کند کارها را انجام داده اما در واقع فقط کاغذها را جابه‌جا کرده است — ۱۹ روز تمام داده‌های تکراری را پردازش می‌کرد در حالی که گزارش‌هایش با خوش‌بینی کامل، وضعیت را «موفق» اعلام می‌کرد.

این شکست در یک «روتین محدود» رخ داد که برای مدیریت کارهای حجیم طراحی شده بود. هدف این بود که کارهای بزرگ، مثل تبدیل یک سال تاریخچه یا انتقال هزاران یادداشت، به تکه‌های کوچک و متوالی تقسیم شوند. سیستم از یک درایور ساده پایتون استفاده می‌کرد تا تسک‌ها را از صف بگیرد، پردازش کند و پیشرفت را در یک دفترچه ثبت کند و سپس از برنامه خارج شود.

ساختار سیستم

این الگو برای کارهای «فیل‌مانند» طراحی شده که باید در ۱۰۰ تا ۱۰۰۰ جلسه کوچک تکه‌تکه شوند. درایور سیستم عمداً ساده است: حدود ۳۰۰ خط کد پایتون بدون هیچ فراخوانی از مدل زبانی بزرگ (LLM). این سیستم بر دستورات پایه‌ای مثل new ،feed ،next ،mark و tick تکیه دارد تا کاملاً پیش‌بینی‌پذیر باشد. هدف اصلی، ایجاد یک رفتار قطعی (Deterministic) بود، و به همین دلیل است که این شکست تکان‌دهنده است؛ هیچ توهم (Hallucination) — یعنی وقتی مدل با اطمینان چیزی می‌گوید که وجود ندارد، مثل دوستی که خاطره‌ای را اشتباه تعریف می‌کند — رخ نداد، بلکه هر بخش دقیقاً همان کاری را کرد که به او دستور داده شده بود.

همان‌طور که در بحث‌های گذشته‌ی ما درباره‌ی امنیت مدل‌های بازمتن اشاره کردیم، سادگی لزوماً به معنای ایمنی نیست. به نقل از تونی دزی (Tony Dzi)، این شکست نتیجه دو دسته باگ مجزا بود، نه یک اتفاق تصادفی. اولین مورد یک خطای مدیریت وضعیت بود: دفترچه پیشرفت در یک دایرکتوری ترانزیت ذخیره می‌شد که بین ماشین‌های ناوگان همگام‌سازی (Sync) می‌شد، چون این مسیر راحت‌تر بود و سایر فایل‌های روتین نیز در آنجا قرار داشتند.

باگ اول: وضعیت در پوشه همگام‌سازی شده

همگام‌سازی فایل و فایل‌های وضعیت (State files) که فقط باید به آن‌ها داده اضافه شود (Append-only)، دشمنان طبیعی یکدیگرند. وقتی دو ماشین هم‌زمان یک فایل را تغییر می‌دهند، موتور همگام‌سازی برای حل تداخل، یکی از نسخه‌ها را نگه می‌دارد و تغییرات دیگر را بی‌صدا حذف می‌کند.

  • اتلاف خاموش: عملیات نوشتن در سطح محلی موفق بود، اما در واقعیتِ ادغام‌شده، داده‌ها حذف شدند.
  • نسبت خطا: از ۴۵۳ اجرا، تنها ۳۹ خط باقی ماند؛ یعنی نرخ حذف ۱۱ به ۱.
  • نتیجه: یک خط حذف‌شده در دفترچه، شبیه کاری است که هرگز انجام نشده است.

این وضعیت یک «اثر سیزیفوس» ایجاد کرد؛ عامل هر بار با وضعیتی قدیمی بیدار می‌شد، فکر می‌کرد کارها انجام نشده و دوباره آن‌ها را تکرار می‌کرد. سیستم این اتلاف را در سکوت مطلق تحمل کرد و در نتیجه، داشبورد سیستم سبز بود و نبودِ پیشرفت را می‌پوشاند. این چالش با مشکلات رایج در پیاده‌سازی صف‌های پردازش LLM که پیش‌تر بررسی کردیم، شباهت زیادی دارد، جایی که نقص در لوله‌کشی داده‌ها می‌تواند منجر به فروپاشی کل سیستم شود.

باگ دوم: تلهٔ نظارت

دومین باگ مربوط به نحوه اندازه‌گیری بود. هر اجرا پیامی با متن «تکه N پردازش شد، اوکی» ثبت می‌کرد. این پیام توسط خودِ اجرا و در لحظه خروج نوشته می‌شد. در واقع، این یک «شمارندهٔ فراخوانی» بود که لباس «شمارندهٔ موفقیت» پوشیده بود.

چون عامل باور داشت تسک را تمام کرده، داشبورد سبز می‌ماند. تیم متوجه شد که گزارش موفقیتِ خود-اظهاری، دقیقاً در لحظه‌ای که به آن نیاز دارید بی‌ارزش است: یعنی زمانی که سیستم فکر می‌کند کار کرده اما نکرده است. تنها مدرکی که اعتبار دارد، برچسب زمانی یا کد هش (Checksum) در خروجی نهایی است که توسط چیزی غیر از نویسنده خوانده شود. این نوع عدم تطابق بین ادعای عامل و واقعیت، دقیقاً همان چیزی است که در تلاش‌های Hugging Face برای کاهش شکاف قابلیت‌سنجی عامل‌ها مورد هدف قرار گرفته است تا قابلیت اطمینان سیستم‌ها افزایش یابد.

راهکار چهارگانه برای اصلاح

برای جلوگیری از تکرار، آزمایشگاه یک ماشین وضعیت سخت‌گیرانه پیاده کرد. مهم‌ترین بخش، دستور tick است که توسط زمان‌بند (Scheduler) بعد از هر اجرا فراخوانی می‌شود تا این قوانین را اجرا کند:

  • وضعیت محلی: فایل‌های دفترچه اکنون روی دیسک‌های محلی و خارج از هرگونه مسیر همگام‌سازی یا ترانزیت مشترک هستند. فقط یک نویسنده وجود دارد. اگر ماشین دیگری نیاز به مشاهده پیشرفت داشته باشد، یک نسخه فقط-خواندنی (Read-only) دریافت می‌کند.
  • تأیید خروجی: ناظر (Watchdog) اکنون تازگی خروجی را از طریق برچسب‌های زمانی یا کد هش چک می‌کند، نه کد خروجِ عامل را. «اجرای تسک» و «رسیدن خروجی» دو ادعای متفاوت هستند.
  • تشخیص اتمام: وقتی صف خالی شد، دستور tick تسک زمان‌بندی شده‌ی خودش را غیرفعال می‌کند و یک گزارش تکمیل ارسال می‌کند. این کار مانع از آن می‌شود که یک روتین محدود به یک روتین ابدی تبدیل شود که سهمیه پردازشی را برای تأیید هیچ‌چیز هدر می‌دهد.
  • تشخیص گیر کردن و اخراج: اگر ۵ اجرای متوالی هیچ خروجی جدیدی تولید نکند، سیستم متوقف شده و یک مسدودشدگی (Block) را گزارش می‌کند. همچنین هر تکه‌ای که ۳ بار شکست بخورد، از صف اخراج می‌شود تا یک دادهٔ «مسموم»، کل فرآیند را ابدی نکند.

چه زمانی از این الگو استفاده نکنیم؟

این معماری برای کارهای «سنگین و متوالی» است که بیش از حد بزرگ هستند که در یک جلسه تمام شوند، اما در میانه مسیر نیاز به قضاوت انسانی ندارند. طبق مستندات، این روش برای موارد زیر توصیه نمی‌شود:

  • کارهای کوچک: تسک‌هایی که در یک جلسه (مثلاً ۲۰ دقیقه) تمام می‌شوند نیازی به پیچیدگی صف، درایور و زمان‌بند ندارند.
  • کارهای مبتنی بر قضاوت: هر جا نیاز به تصمیم انسانی است، خط تولید باید متوقف شود، نه اینکه ۳ بار تکرار و سپس اخراج شود.
  • محیط‌های سازمانی: تیم‌هایی که از صف‌های پیام واقعی با قابلیت تایید (Acknowledgment) و مدیریت پیام‌های شکست‌خورده (Dead-letter handling) استفاده می‌کنند، باید همان ابزارها را به کار ببرند؛ این سیستم در واقع «صفِ پیام‌های شکست‌خورده برای مهندسان فقیر» توصیف شده است. در واقع، استفاده نادرست از این ساختارها می‌تواند منجر به تله‌های توالی و کاهش شدید سرعت استنتاج شود که در تحلیل‌های قبلی به آن پرداختیم.

این تجربه هشداری است برای توسعه‌دهندگان: اگر یک کرون‌جاب (Cron job) می‌تواند دو هفته هیچ کاری نکند و هیچ چراغ قرمزی روشن نشود، شما دارید «محرک» را نظارت می‌کنید، نه «نتیجه» را.

این ماشین وضعیت اکنون مدیریت کارهای طولانی را در ناوگانی از جلسات عامل روی پنج ماشین در آزمایشگاه هوش مصنوعی پالو آلت بر عهده دارد. دقت کنید که چگونه این الگوها در چارچوب‌های بزرگتر عاملی ادغام می‌شوند تا مشکل «حلقه بی‌نهایت» در جریان‌های کاری خودمختار حل شود.

گام بعدی شما

  • در سیستم‌های عامل‌محور، هرگز به کد خروج (Exit Code) برای تأیید موفقیت تکیه نکنید و خروجی را مستقلاً اعتبارسنجی کنید.
  • فایل‌های وضعیت (State) را از پوشه‌های همگام‌سازی شده (مثل Dropbox یا Sync-folders) دور نگه دارید.
  • مکانیزم «حذف داده‌های مسموم» (Poison Pill) را برای تسک‌هایی که مکرراً شکست می‌خورند پیاده کنید.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است — به تحلیل ما درباره‌ی تراشه‌های Blackwell مراجعه کنید.

چرا این موضوع مهم است؟

این تجربه بر اساس تجربه عملی در مقیاس صنعتی نشان می‌دهد که اعتماد به گزارش‌های داخلی عامل‌ها بدون تأیید خارجی (External Verification) منجر به اتلاف شدید منابع می‌شود. اعتبار سیستم‌های خودکار باید بر اساس اثرات ملموس در خروجی سنجیده شود، نه وضعیت داخلی کد.

تأثیر برای ایران

این خبر برای توسعه‌دهندگان ایرانی که در حال ساخت سیستم‌های اتوماسیون و عامل‌محور هستند، یک درس معماری مهم در مورد مدیریت State و نظارت بر خروجی است.

·نگاه ما
تحریریه دات‌هوش

این مورد ثابت می‌کند که در سیستم‌های عامل‌محور، خطرناک‌ترین نقطه نه توهم مدل، بلکه شکست در لایه‌های زیرساختی ساده است. وقتی نظارت بر «فراخوانی» جایگزین نظارت بر «نتیجه» شود، سیستم به جای حل مسئله، به تولید گزارش‌های موفقیت کاذب تبدیل می‌شود. این یک درس سخت در مورد تفاوت بین Execution و Delivery در اتوماسیون است.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.