LM Studio سامانه‌ای به نام Shell Judge توسعه داده است تا فرمان‌های شِل تولیدشده توسط عامل‌های کدنویس مبتنی بر هوش مصنوعی را پیش از اجرا ارزیابی کند. با این حال تجربه نشان داده که این قاضی گاهی همان رفتارهای پرخطر را تأیید می‌کند که قرار بود جلویشان را بگیرد.

مثال ساده که به ریسک تبدیل شد

فرمانی مانند git diff $base اگر $base یک هش کامیت باشد بی‌خطر است، اما اگر مقدار آن به چیزی مثل --output=/some/file حل شود، Git خروجی را در فایل می‌نویسد و این رفتار می‌تواند به اجرای ناخواستهٔ عملیات منجر شود. برای مقابله با چنین مواردی، LM Studio لایه‌ای به‌نام Auto Review طراحی کرده که ابتدا تحلیل ساختاری انجام می‌دهد و تنها در حالت نامطمئن به مدل زبانی دیگری ارجاع می‌دهد.

تحلیل ساختاری به جای جست‌وجوی رشته‌ای

جست‌وجوی ساده برای رشته‌های خطرناک کافی نیست؛ فرمان‌های شِل با متغیرها، ریدایرکت‌ها و فرمان‌های تو در تو می‌توانند مقصد را تغییر دهند. Shell Judge فرمان را به یک درخت نحو انتزاعی (AST) تبدیل می‌کند و با دنبال کردن متغیرها و زیرفرمان‌ها مشخص می‌کند چه فایل‌ها یا منابعی ممکن است خوانده یا تغییر کنند. برای آشنایی بیشتر با AST نگاه کنید: Abstract syntax tree.

نمایی شماتیک از تحلیل فرمان‌های شل و درخت نحو (AST)

برای پارس کردن Bash، Zsh و sh از پارسر mvdan/sh استفاده می‌شود و برای PowerShell از پشتیبانی AST مخصوص آن بهره گرفته می‌شود. پس از پارس، قاضی اجزای قابل‌دسترس فرمان—یعنی آنچه ممکن است خوانده یا تغییر کند—را استخراج می‌کند.

ردگیری مقادیر و محدودیت‌های عملی

Shell Judge قادر است مقدارهایی که از یک فرمان تولید می‌شوند را تا نقطهٔ مصرف دنبال کند؛ برای مثال نتیجهٔ git merge-base که به git diff داده می‌شود، پیگیری می‌شود. اگر چندین مقدار محتمل وجود داشته باشد، سامانهٔ Bionic تا حداکثر 1,000 مقدار را دنبال می‌کند تا احتمال‌ها را پوشش دهد؛ فراتر از آن به‌خاطر محدودیت منابع و پیچیدگی تحلیل ادامه داده نمی‌شود.

آزمایش‌های گسترده برای رفتار متفاوت ابزارها

تحلیل نحو تنها بخشی از راهکار است؛ ابزارهای خط فرمان قواعد و رفتارهای ویژهٔ خود را دارند. برای مثال ls -la ممکن است -la را به‌عنوان فلگ‌های بسته‌شده تفسیر کند، در حالی که tsc -vh در تایپ‌اسکریپت ممکن است رفتاری متفاوت از اجرای جداگانهٔ -v و -h نشان دهد. به همین دلیل LM Studio مجموعهٔ 11,651 تست ایجاد کرده تا گوشه‌های نامتعارف و تفاوت‌های جزئی در تفسیر آرگومان‌ها پوشش داده شوند.

هنگامی که بازبین تحت‌تأثیر قرار می‌گیرد

فرمان‌هایی که Shell Judge نتواند به‌صورت قطعی پاک‌سازی کند، به عامل مجزایی به نام Shell Reviewer ارجاع داده می‌شوند. این بازبین مبتنی بر مدل زبانی، فرمان را در قالب گفتگو ارزیابی و از نظر ریسک، مجوز و درستی رتبه‌بندی می‌کند؛ اما خودِ بازبین تعیین‌کنندهٔ آستانهٔ عبور نیست. LM Studio مشاهده کرده که اگر به‌طور مستقیم از مدل پرسیده شود آیا فرمان اجرا شود یا نه، مدل گاهی به‌خاطر تلاش برای انجام خواستهٔ کاربر، اقدامات پرخطر را تأیید می‌کند.

نقاط کور اعتماد و تهدیدات زنجیره‌ای

Shell Reviewer برای تصمیم‌گیری نیاز به بخشی از متن مکالمه دارد و این، درهای تزریق پرامپت را باز می‌گذارد. LM Studio نتایج ابزارها (مثل محتوای فایل‌ها یا صفحات وب) را از دید بازبین مستثنی می‌کند تا دستورات پنهان در فایل یا صفحه مستقیماً منتقل نشوند، اما پیام‌های دستیار برای بازبین قابل‌مشاهده‌اند و در صورتی که Bionic یا مؤلفه‌های دیگر به‌خطر افتاده باشند، همین پیام‌ها می‌توانند حامل دستورالعمل‌های مخرب باشند.

علاوه بر این، Shell Judge فرض می‌کند اجرایی‌هایی مانند git دست‌نخورده و غیرمخرب هستند؛ در نتیجه تغییر پیکربندی یا وجود باینری‌های آلوده در مسیر بررسی لحاظ نمی‌شود. حملات زنجیرهٔ تأمین نشان داده‌اند چگونه بسته‌ها یا سیگنال‌های به‌ظاهر مشروع می‌توانند بارهای مخرب را پنهان کنند؛ برای مرور مفهوم حملات زنجیرهٔ تأمین مراجعه کنید: Supply chain attack.

پیامدها برای عامل‌های کدنویس و اتوماسیون

با گسترش عامل‌های کدنویس—از جمله نسخه‌های توانمندتر عامل‌های مبتنی بر مدل‌های بزرگ که فراتر از محیط IDE عمل می‌کنند—پیچیدگی و ریسک‌ها افزایش می‌یابد. وقتی عامل امکان اجرای مستقیم فرمان‌ها و اعمال تغییرات را داشته باشد، نیاز به چند لایه دفاعی، پایش اصالت باینری‌ها، بررسی یکپارچگی پیکربندی و استانداردسازی روش‌های امتیازدهی ریسک شدت می‌گیرد. بررسی‌های فنی و پوشش رسانه‌ای می‌تواند دید تکمیلی فراهم کند: TechCrunch.

پیشنهادات فنی برای کاهش ریسک

  • اجرای سیاست‌های حداقل امتیاز (least privilege) برای ابزارها و تفکیک مسیرهای خروجی.
  • ثبت و گزارش جامع (audit logging) از هر فرمانی که عامل قصد اجرا دارد.
  • اعتبارسنجی اصالت باینری‌ها و سالم‌بودن پیکربندی‌ها پیش از اجرا.
  • تعریف استانداردهای شفاف برای امتیازدهی ریسک و پروفایل‌های مجوز بازبین‌ها.
  • پوشش تست‌های گسترده و به‌روزرسانی مداوم فهرست رفتارهای خاص ابزارها.

Shell Judge پروژه‌ای امیدبخش است، اما نشان می‌دهد حتی تحلیل‌های ساختاری پیچیده وقتی با تعامل انسانی و پیش‌فرض‌های اعتماد همراه شوند، امکان خطا و دورزدن وجود دارد. مسیر به‌سمت امنیت پایدار برای عامل‌های کدنویس مستلزم ترکیب تحلیل ساختاری فرمان، کنترل‌های سیستمی و استانداردهای شفاف است.