یک درخواست مبهم برای افزودن قابلیت به نرمافزار میتواند زنجیرهای از اشتباهات کدنویسی گرانقیمت ایجاد کند، بهخصوص اگر جزئیات اجرا بر اساس اولین پاسخ احتمالی مدل تعیین شود. grill-me — یک مهارت تخصصی برای عامل (Agent) — این چرخه را میشکند و مانند یک مصاحبهگر سختگیر، طرح شما را پیش از نوشتن حتی یک خط کد، فشارآزمون میکند.
بیشتر شکستهای نرمافزاری از تصمیماتی شروع میشوند که هیچکس بهطور صریح آنها را اتخاذ نکرده است. در یک گردشکار معمولی با کمک هوش مصنوعی، برنامهنویس از مدل میخواهد «نقشهای کاربری را اضافه کن»، «این نقطه انتهایی را کش کنید» یا «قابلیت همکاری را پشتیبانی کن» و مدل بلافاصله کدنویسی را آغاز میکند. این روند باعث میشود انتخابهای مرتبط با محصول، داده و امنیت بهجای قصد آگاهانه، بهصورت تصادفی و در حین کدنویسی رخ دهند. هدف از گردشکار «گریل کردن» (Grilling) این است که یک پیشنهاد را مجبور کند در حالی که تغییر آن هنوز ارزان است، از زیر ذرهبین پرسشهای انتقادی عبور کند و زنده بماند.
برخلاف دستیارهای عمومی که تمایل دارند با اولین چارچوب ذهنی کاربر موافقت کنند، grill-me برای مقاومت طراحی شده است. این ابزار شناسایی میکند که چه چیزی مبهم است، کدام محدودیتها فراموش شدهاند، کدام تصمیم بهطور تصادفی به تعویق افتاده و چه شواهدی باید در مخزن کد بررسی شوند. همانطور که در تحلیلهای قبلی ما دربارهی امنیت مدلهای بازمتن اشاره کردیم، دقت در تعریف مرزها کلید جلوگیری از توهمات مدل است. این فرآیند بهطور عمدی محدود است: جایگزین مستندات فنی (Specification)، تجزیه وظایف (Issue Breakdown)، تستها یا بازبینی کد (Code Review) نیست، بلکه یک تست استرس هدفمند برای مسیرهایی است که هنوز تثبیت نشدهاند.
مکانیزم مصاحبه متوالی
قدرت اصلی این ابزار در رویکرد «هر بار یک سؤال» است. پرسشنامههای طولانی شاید به نظر کارآمد برسند، اما معمولاً نیستند؛ زیرا جزئیاتی را میپرسند که هنوز پیشفرضهایشان تثبیت نشده و منجر به پاسخهای متناقض میشوند. یک مصاحبه متوالی اجازه میدهد وابستگیها بهترتیب و به صورت زنجیرهای حل شوند.
بهعنوان مثال، هنگام افزودن نقشهای سازمانی، عامل ابتدا تعیین میکند که آیا نقشها سراسری هستند یا محدود به هر سازمان. این پاسخ تعیین میکند که آیا عضویت باید یک موجودیت مجزا در دامنه باشد یا خیر. سپس سؤال بعدی ممکن است به این بپردازد که آیا مجوزها بستههای ایستا هستند یا قابل تنظیم. تنها پس از تثبیت این موارد است که مدل به سراغ شکل API، مهاجرت دادهها (Migration)، رابط کاربری مدیریت یا الزامات حسابرسی (Audit) میرود. این روند، یک ویژگی مبهم را به زنجیرهای از تعهدات صریح تبدیل میکند.
شروع با یک پیشنهاد
برای اثرگذاری، یک جلسه گریلینگ نباید با صفحه خالی شروع شود. طبق مستندات این متد، مدل به زمینهای نیاز دارد تا بتواند آن را به چالش بکشد. یک پیشنهاد قوی باید شامل نتیجه مطلوب، کاربران متأثر، محدودیتهای شناختهشده، مصنوعات موجود و تصمیم خاصی باشد که نیاز به کمک دارد.
مثلاً در پیشنهادی برای اجازه دادن به مالکان سازمان جهت دعوت اعضا از طریق ایمیل، باید محدودیتهایی مثل مدل فعلی کنترل دسترسی مبتنی بر نقش (RBAC)، الزام به اینکه دعوتنامهها قابل لغو باشند و قانون عدم افشای فضای کاری عمومی (Public Workspace Enumeration) ذکر شود. با دادن یک وظیفه مشخص به عامل — یعنی بازجویی از طرح با استفاده از شواهد — از ابداع محصول از صفر توسط مدل جلوگیری میشود.
بازجویی مبتنی بر شواهد
یکی از حیاتیترین قوانین grill-me این است که باید حقایق کدبیس را کشف کند، نه اینکه به حافظه کاربر تکیه کند. عامل دستور میگیرد پیش از آنکه از کاربر بخواهد حقایق را از یادش به خاطر آورد، مخزن کد (Repository) را بررسی کند.
- بررسی نقاط انتهایی موجود برای تشخیص اینکه آیا پروژه از کنوانسیونهای REST یا RPC پیروی میکند.
- بازرسی سیستم احراز هویت فعلی پیش از پیشنهاد جدول نقشهای جدید.
- بررسی کنوانسیونهای پایگاهداده و ابزارهای استقرار پیش از توصیه به مهاجرت دادهها.

این رویکرد تضمین میکند که عامل تفاوت بین یک «انحراف آگاهانه از الگوهای موجود» (مثلاً وقتی میگوییم باید عمداً مسیر متفاوتی برویم) و «ناآگاهی ساده از وضعیت فعلی کدبیس» (مثلاً وقتی نمیدانستیم چنین کنوانسیونی وجود دارد) را تشخیص دهد.
حوزههای کلیدی پرسش
برای اطمینان از کامل بودن طرح، این گردشکار بر پنج حوزه تمرکز دارد:
۱. نتیجه و محدوده:
- چه رفتاری در کاربر تغییر میکند؟
- چه کسی میتواند اقدام را اجرا کند و چه کسی میتواند آن را مشاهده کند؟
- چه مواردی صراحتاً خارج از محدوده (Out of Scope) هستند؟
این سؤالات مانع از آن میشوند که یک ویژگی کوچک بهطور پنهانی به بازطراحی کل پلتفرم تبدیل شود.
۲. مدل دامنه:
- چه موجودیتهایی وجود دارند و مالک آنها کیست؟
- موجودیتها در چه وضعیتهایی میتوانند باشند و چه انتقالاتی بین وضعیتها مجاز است؟
- برای دعوتنامهها، این شامل وضعیتهایی مثل «در انتظار»، «پذیرفتهشده»، «لغو شده»، «منقضیشده» یا «ارسال مجدد» است.
- این بخش قوانین محصولی را که پیامدهای ذخیرهسازی دارند تثبیت میکند؛ مثلاً اینکه آیا ارسال مجدد دعوتنامه یک توکن جدید میسازد یا فقط تاریخ انقضا را تمدید میکند.
۳. مجوزها:
- چه کسی مجاز به ایجاد، مشاهده، لغو، پذیرش یا ارسال مجدد منبع است؟
- آیا مجوزها در مرز سازمان، مرز پروژه یا هر دو بررسی میشوند؟
- در صورت عدم دسترسی، چه اطلاعاتی باید در پاسخ خطا فاش شود؟
در اینجا مجوزها به عنوان یک نیاز برنامهریزی دیده میشوند، نه یک جزئیات فنی نهایی در لایه Middleware.
۴. شکست و بازیابی:
- اگر ایمیلی از قبل با یک عضو مرتبط باشد چه اتفاقی میافتد؟
- شکست در تحویل ایمیل چگونه مدیریت میشود؟
- اگر دو مدیر بهطور همزمان اقدام کنند یا کلاینت درخواست را تکرار (Retry) کند چه رخ میدهد؟
طرحی که فقط «مسیر خوشبینانه» (Happy Path) را توصیف کند، ناقص تلقی میشود.
۵. سازگاری و عرضه:
- آیا تغییرات، دادههای ذخیرهشده، APIهای عمومی، مجوزها یا پیشفرضهای کلاینت را تغییر میدهد؟
- دادهها چگونه مهاجرت میکنند؟
- رفتار سیستم پس از انتشار چگونه مانیتور میشود؟
حتی اگر پاسخ «نیازی به عرضه خاص نیست» باشد، این باید یک انتخاب آگاهانه باشد.
ادغام با گردشکارهای گستردهتر
مت پوکاک (Matt Pocock) پیشنهاد میکند که اگرچه grill-me برای فشارآزمونهای هدفمند عالی است، اما باید در یک توالی برنامهریزی بزرگتر قرار گیرد. او برای همراستاسازی عمیق با واژگان اپلیکیشن، فایل CONTEXT.md و سوابق تصمیمات معماری (ADR)، جریانی شامل «مدل دامنه $ \rightarrow $ PRD $ \rightarrow $ تبدیل به Issue $ \rightarrow $ TDD» را توصیه میکند.
grill-me ابزاری سبکتر و هدفمندتر است. وقتی طرحی دارید که نیاز به بازجویی دارد از آن استفاده کنید؛ اما وقتی تسک نیاز به همراستاسازی عمیق با واژگان موجود در اپلیکیشن دارد، به سراغ گردشکار مدل دامنه بروید.
اجتناب از شکستهای رایج
جلسات موفق باید از چند تله دوری کنند:
- حلقههای فرضی: سؤالات باید به سمت یک تصمیم همگرا شوند. اگر سناریویی احتمال یا تأثیر کمی دارد، باید به عنوان یک ریسک ثبت شود، نه اینکه مانع تصمیمات دیگر شود.
- انحراف در توصیه: عامل میتواند توصیه کند، اما انسان مسئول نهایی است. هر توصیه پذیرفته، تغییر یافته یا به تعویق افتاده باید ثبت شود.
- نادیده گرفتن شواهد: مصاحبهای که بر اساس فرضهای غلط باشد، اتلاف وقت است. عامل باید ابتدا کد، مستندات و Diffهای اخیر را بازرسی کند.
- فقدان خروجی: جلسهای که بدون نتیجه باشد، بیفایده است. هر جلسه باید یک سوابق تصمیمات (Decision Record) مختصر تولید کند.
سوابق نهایی تصمیمات
خروجی یک جلسه موفق باید یک سند ماندگار شامل موارد زیر باشد:
- نتیجه تأییدشده و اهدافی که دنبال نمیشوند (Non-goals).
- تصمیمات کلیدی و منطق (Rationale) پشت آنها.
- جایگزینهایی که بررسی و رد شدند.
- فرضهایی که نیاز به اعتبارسنجی دارند و ریسکهای باز به همراه مسئولین آنها.
- سند بعدی توصیه شده (مثلاً مدل دامنه، PRD، مشخصات فنی یا طرح اجرا).
این سوابق به عاملهای بعدی اجازه میدهد مسیر مستقیمی را دنبال کنند و به بازبینهای انسانی نشان میدهد که کد دقیقاً قرار است چه چیزی را پیاده کند. این رویکرد در واقع مکمل روشهای پیشرفتهتر مدیریت حافظه عاملهاست؛ برای مثال، ما در بررسی تاریخچه جلسات در برابر Diffها دیدیم که چگونه حفظ بافتار (Context) در طول جلسات میتواند از انحراف قصد مدل در بازبینی کد جلوگیری کند.
یک آیین تکرارپذیر
تیمها میتوانند این روند را به یک عادت تبدیل کنند: نوشتن یک پیشنهاد تکپاراگرافی، لینک کردن فایلهای مرتبط و ADRها، بازرسی کد توسط عامل، اجرای مصاحبه تکسوالی و ثبت تصمیمات. تنها پس از این مراحل است که کدنویسی باید آغاز شود.
این چرخش، عدم قطعیت را از کد به گفتگو منتقل میکند. با تبدیل کد به «نتیجه یک تصمیم» بهجای «جایی برای کشف تصمیم»، تیمها بدهی فنی و انحراف معماری را کاهش میدهند.
گام بعدی شما
- در اولین تسک پیچیده هفته آینده، بهجای دستور مستقیم به AI، یک «پیشنهاد» بنویسید و از مدل بخواهید شما را گریل کند.
- یک قالب ساده برای «سوابق تصمیمات» (Decision Record) ایجاد کنید تا خروجی جلسات گریلینگ را در آن ذخیره کنید.
- از مدل بخواهید پیش از هر سؤال، ابتدا فایلهای مربوط به کنترل دسترسی (Auth) و دیتابیس شما را بخواند تا شواهد را استخراج کند.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو