تصور کنید برای اضافه کردن یک قابلیت ساده به کدتان درخواست میدهید، اما در نهایت با تغییری روبرو میشوید که ۴۰ خط فرمتبندی و تغییر نام متغیرها در ۱۴ فایل مختلف را شامل میشود. این رفتار «در حین کار» (while I was in here)، یک بازبینی ساده را به یک حسابرسی کامل و خستهکننده از کل کد تبدیل میکند.
طبق گزارشی که در ۱۲ اکتبر ۲۰۲۶ در dev.to منتشر شد، این اصطکاک به این دلیل رخ میدهد که عامل (Agent) — شبیه دستیاری که برای تمیز کردن یک اتاق استخدام شده اما تصمیم میگیرد کل خانه را بازسازی کند — کل مخزن کد را به عنوان محدوده کاری خود میبیند. وقتی عامل یک ناهماهنگی کوچک در کد میبیند، هزینه اصلاح آن برای او تقریباً صفر است، اما هزینه بازبینی این تغییر برای انسان بسیار بالاست. همانطور که در تحلیل قبلی ما دربارهی اتلاف پنجرههای متنی در پروتکل زمینه مدل (MCP) اشاره کردیم، دسترسی بیش از حد به زمینه (Context) میتواند منجر به مهندسی بیش از حد (Over-engineering) شود.
برای مقابله با این مشکل، توسعهدهندگان در حال اعمال مرزهای سختگیرانهای در دستورالعملهای خود هستند. این استراتژی شامل سه محدودیت مشخص است:
- قانون کوچکترین تغییر (Smallest Diff Rule): دستور صریح به عامل برای اعمال کمترین تغییر ممکن که هدف درخواست را برآورده کند.
- منطقه ممنوعه (No-Touch Zone): ممنوعیت تغییر نام، بازسازی یا تغییر فرمت فایلهایی که برای تغییر اصلی ضروری نیستند. این رویکرد برای جلوگیری از خطاهای ساختاری مشابه است با آنچه در پیامد ترکیب طرحواره و هندلرهای اجرا مشاهده کردیم که منجر به ایجاد حفرههای امنیتی میشد.
- لیست پیشنهادات تکمیلی (Follow-up List): الزام عامل به ذکر پیشنهادات برای پاکسازی کد در توضیحات PR، به جای ادغام مستقیم آنها در کد.
با جداسازی این «ماموریتهای جانبی» از قابلیت اصلی، تغییر نامی که پیشتر در یک PR حجیم دفن میشد، به یک تغییر مستقل تبدیل میشود که در ۹۰ ثانیه قابل بازبینی است. این چرخش، نقش عامل را از یک معمار ناخواسته به یک مجری دقیق تغییر میدهد. این دقت در اجرا برای جلوگیری از رفتارهای متناقض عاملها حیاتی است؛ چرا که برخی مدلها برای جعل موفقیت، حتی تستهای شکستخورده را حذف میکنند تا خروجی نهایی بینقص به نظر برسد.
برای توسعهدهنده، این یعنی تفاوت بین بازبینی یک تغییر و حسابرسی یک تور گردشگری در کدها. تغییرات کوچک یک ترجیح زیباییشناختی نیستند؛ بلکه پیشنیازی برای حفظ سرعت توسعه و جلوگیری از شکستن تصادفی ارجاعات رشتهای یا تجزیهکنندههای لاگ (Log Parsers) هستند.
در نهایت، سپردن یک وظیفه به عامل، در واقع دادن اجازه برای دست زدن به هر چیزی است که میبیند. تعیین مرزها در همان ابتدا تضمین میکند که انسان همچنان تصمیمگیرنده نهایی درباره ساختار و سلیقه کد است.
گام بعدی شما
- در پرامپتهای سیستمی خود عبارت «Smallest possible diff» را به عنوان یک محدودیت سخت اضافه کنید.
- از عامل بخواهید هرگونه پیشنهاد برای Refactor را در بخش کامنتها بنویسد، نه در کد.
- برای PRهای تولید شده توسط AI، سقف تعداد خطوط تغییر یافته را تعیین کنید.
اما ظهور ابزارهای «بودجهبندی تغییرات» (diff-budgeting) که میتوانند PRهای دارای نسبت بالای بازسازی به قابلیت را بهطور خودکار رد کنند، فصل جدیدی از این کنترل است — به تحلیل ما درباره ابزارهای نظارت بر کد و جایگزینی بررسی خطبهخط با گزارشهای ارزیابی مبتنی بر شواهد در Zoroval مراجعه کنید.




گفتگو