اگر برنامهنویس هستید و از کدهای تولیدشده توسط هوش مصنوعی استفاده میکنید، میدانید که گاهی مدل با اطمینان کامل نام کتابخانهای را مینویسد که اصلاً وجود ندارد. حالا ابزاری به نام BrassCoders آمده است تا این «توهمات متقاعدکننده» را قبل از اینکه کد را اجرا کنید، شکار کند. این ابزار یک اسکنر قطعی (Deterministic Scanner) است که بهطور خودکار خطاهای ساختاری را از کدهای پایتون تولیدشده توسط AI، پیش از رسیدن به محیط عملیاتی (Production)، پاک میکند.
BrassCoders با نقشهبرداری از خطاهای کد در یک تاکسونومی یا طبقهبندی مشخص، الگوهای شناساییپذیر را از باگهای پیچیدهای که هنوز به تفکر و استدلال انسانی برای حل نیاز دارند، جدا میکند. این تحول در حالی رخ میدهد که توسعهدهندگان با پیشبینیناپذیری مدلهای زبانی بزرگ (LLM) — که مثل کتابخانهداری هستند که میلیاردها صفحه خوانده و حالا با همان لحن جواب میدهد — دستوپنجه نرم میکنند. در حالی که دستیارهای هوش مصنوعی نحو (Syntax) بسیار تمیزی تولید میکنند، اما مکرراً کتابخانهها یا توابعی را اختراع میکنند که در واقعیت وجود ندارند. این شکستهای «متقاعدکننده» یکی از منابع اصلی ایجاد بدهی فنی (Technical Debt) در گردشکارهای مدرن مبتنی بر AI هستند. همانطور که در تحلیلهای پیشین ما دربارهی امنیت مدلهای بازمتن اشاره کردیم، اعتماد کورکورانه به خروجی مدلها میتواند ریسکهای امنیتی جبرانناپذیری ایجاد کند. این چالشها تأییدی بر این دیدگاه است که بهتر است با دستیاران هوش مصنوعی به عنوان مهندسان جونیور رفتار کنیم تا نظارت دقیقی بر خروجیهای آنها داشته باشیم.
تاکسونومی باگهای هوش مصنوعی
بر اساس مستندات پژوهشی، در سال ۲۰۲۵ مطالعهای توسط گائو (Gao) و همکارانش با عنوان «بررسی باگها در کدهای تولیدشده توسط هوش مصنوعی» منتشر شد. این مطالعه باگها در کدهای تولیدشده توسط AI را به ۸ دسته متمایز تقسیم کرد:
- باگهای عملکردی (Functional)
- باگهای قابلیت اطمینان (Reliability)
- باگهای نحو (Syntax)
- مشکلات استایل و استانداردهای کدنویسی
- توهم (Hallucination): کدی که منطقی به نظر میرسد و اجرا میشود اما از نظر واقعی و فکتی غلط است
- باگهای سیستمی
- باگهای مربوط به تست
- یک دستهبندی کلی برای موارد نامشخص
علاوه بر این، یک مطالعه تجربی مجزا با عنوان «باگها در کدهای تولیدشده توسط مدلهای زبانی بزرگ»، روی ۳۳۳ باگ واقعی در دنیای واقعی تمرکز کرد تا ۱۰ الگوی تکرارشونده را شناسایی کند. این الگوها مواردی چون تفسیرهای اشتباه، اشیاء توهمزده و نادیده گرفتن حالتهای خاص (Corner Cases) را شامل میشدند. این دو چارچوب در کنار هم، چشمانداز کامل شکستهای AI را توصیف میکنند و نیاز به سیستمهای شفافسازی خطا را برجسته میکنند؛ هدفی که در پروژههایی مانند پلتفرم FLARE-AI برای ردیابی شکستهای هوش مصنوعی دنبال شده است.
BrassCoders برای مقابله با این وضعیت، ۱۲ اسکنر تخصصی را به کار میگیرد تا نشانگرهای ساختاری را شناسایی کند. تمرکز این ابزار بر تشخیصهایی با اطمینان بالا است، از جمله:
نشانگرهای ساختاری و بررسیهای قطعی
- واردات توهمزده (Hallucinated Imports): شناسایی بستههایی که در ایندکس وجود ندارند یا متغیرهایی که در محدوده (Scope) تعریف نشدهاند.
- ضدالگوهای عملکردی (Performance Anti-patterns): شناسایی حلقههای ناکارآمد، مانند یک حلقه
csv +=که در هر تکرار، رشته را از نو بازسازی میکند و باعث افت شدید سرعت میشود. - ریسکهای امنیتی: شناسایی رمزهای سختافزاری (Hardcoded Secrets) مانند رشتههای با آنتروپی بالا که شبیه کلیدهای AWS هستند و همچنین شناسایی فراخوانیهای
subprocessکه ازshell=Trueاستفاده میکنند. این دسته از بررسیها در پاسخ به بحرانهای امنیتی گستردهتر است، چرا که برخی گزارشها نشان میدهند تا ۴۵٪ کدهای تولیدشده توسط AI دارای آسیبپذیریهای امنیتی هستند. - خطاهای نحو: تشخیص شکستهای ساختاری پایه و اثرات زنجیرهای یا آلودگیهای متقاطع (Cross-file taint) بین فایلهای مختلف که در بررسیهای تکفایلی نادیده گرفته میشوند.
این ۱۲ اسکنر با الگوها تطبیق مییابند، نه با «قصد» نویسنده. چون این نشانگرها هر بار به یک شکل فعال میشوند، برای علامتگذاری آنها نیازی به قضاوت درباره هدفِ کد نیست. این دقیقاً همان کاری است که یک «دروازه قطعی» (Deterministic Gate) باید بر عهده داشته باشد.
دادههای یک مطالعه در USENIX شدت این مشکل را برجسته میکند؛ این تحقیق دریافت که ۱۹.۷٪ از بستههای پیشنهادی توسط AI اصلاً وجود ندارند. همچنین، مطالعهای روی گفتگوهای توسعهدهندگان با مدلهای LLM نشان داد که متغیرهای تعریفنشده در ۸۳.۴٪ از تکههای کد پایتون ظاهر شدهاند.
BrassCoders با شناسایی این نشانگرها، بخشی از دسته «توهم» را به یک بررسی قطعی تبدیل میکند. در حالی که توهم بهطور کلی سخت شناسایی میشود (زیرا کد غلط لزوماً نشانگر جهانی ندارد)، اما زیرمجموعه «Importها» به صورت باینری است: یک بسته یا در ایندکس هست یا نیست. این رویکرد ریسکهای زنجیره تأمین را پیش از آنکه دستور pip install اجرا شود، حذف میکند.
نقش استدلال انسانی
با این حال، این ابزار بهطور صریح در برابر باگهای «وابسته به قصد» (Intent-dependent) متوقف میشود. خطاهای منطق عملکردی و حالتهای خاصِ فراموششده، هیچ نشانگر ساختاری جهانی ندارند. وقتی نحو کد درست است اما منطق آن بهطور ظریفی غلط است، هیچ قانونی برای تطبیق وجود ندارد.
این موارد دقیقاً با «باگهای عملکردی» در پیمایش گائو و «تفسیرهای اشتباه» در مطالعه تجربی مطابقت دارند. شناسایی آنها نیازمند دانستن این است که کد قرار بود چه کاری انجام دهد. از آنجایی که استخراج بافت (Context) جایی است که اسکنرها شروع به اشتباه کردن میکنند، BrassCoders الگو و بستر متن را در قالب فایل YAML گزارش میدهد. این کار به یک بازبین انسانی یا یک مدل استدلالی مانند Claude Code اجازه میدهد تا تصمیم بگیرد که آیا منطق کد درست است یا خیر.
این رویکرد، گردش کار توسعهدهنده را از یک بررسی دستی جامع و خستهکننده به یک «تقسیم کار» تبدیل میکند. شما دیگر انرژی ذهنی خود را برای یافتن یک Import گمشده یا یک متغیر تعریفنشده تلف نمیکنید؛ بلکه تنها زمانی دخالت میکنید که منطق کد بهطور ظریفی اشتباه باشد اما از نظر نحوی correct باشد.
برای توسعهدهندگان حرفهای، این به معنای ایجاد یک «دروازه قطعی» است. با اتوماسیون ۱۲ اسکن ساختاری، تیمها مطمئن میشوند هیچ کدی با نشانگرهای شکست شناختهشده به مرحله نصب نمیرسد. در واقع، این متدولوژی با کدهای تولیدشده توسط AI به عنوان ورودیهای غیرقابل اعتماد برخورد میکند که باید از یک سری فیلترهای ساختاری عبور کنند تا شایستگی توجه انسان را داشته باشند. این امر، تاکسونومی باگهای AI را از یک لیست مطالعه تئوریک به یک استراتژی اتوماسیون عملی تبدیل میکند.
گام بعدی شما
- ابزار را از طریق دستور
pip install brasscodersنصب کنید. - پروژههای خود را با دستور
brasscoders --offline scan /path/to/your/projectدر دایرکتوری پروژه بررسی کنید تا توهمات ساختاری شناسایی شوند. - خروجیهای YAML را به مدلهای استدلالی مانند Claude برای بررسی منطق نهایی ارسال کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو