اگر امروز برای نوشتن تستهای واحد (Unit Test) زمان زیادی صرف میکنید، احتمالاً متوجه شدهاید که دستیارهای کدنویسی اغلب در درک ساختار کلی پروژه شکست میخورند. نرخ تکمیل وظایف در مدل جدید مایکروسافت به ۹۲.۱٪ رسیده است که در مقایسه با ۷۸.۹٪ در GitHub Copilot، یک جهش خیرهکننده محسوب میشود. به گزارش وبسایت marktechpost.com، این تفاوت عملکرد زمانی به اوج میرسد که برنامهنویسان پرامپتهای مبهمی ارائه میدهند؛ جایی که این عامل توانسته است تعداد شکستها را از ۳۰ مورد به ۱۰ مورد کاهش دهد.
بسیاری از دستیارهای کدنویسی چون نمیدانند از کدام فریمورک یا مسیر فایل استفاده کنند، نیاز به دستورات دقیق دارند. تصور کنید توسعهدهندهای درخواست «تستهای واحد» را بدهد بدون اینکه محیط را مشخص کند؛ یک مدل زبانی بزرگ (LLM) استاندارد — مثل کتابخانهداری که میلیاردها صفحه را خوانده و حالا با همان لحن کتابها جواب میدهد — معمولاً در نبود جزئیات، شروع به حدس زدن میکند و همینجا خطا رخ میدهد. ابزار جدید مایکروسافت که در مخزن dotnet/skills با مجوز MIT منتشر شده، با خواندن کامل مخزن کد پیش از نوشتن اولین خط، این مشکل را حل کرده است. این رویکرد یادآوری میکند که مدلهای کدنویسی مدرن، مانند مدل GLM-5.2 که به دلیل قابلیتهای جایگزینی برای توسعهدهندگان مورد توجه قرار گرفت، به دنبال درک عمیقتر از بافتار پروژه هستند.

زمینه و استقرار
این ابزار یک عامل چندزبانه (Polyglot Agent) است که برای پر کردن شکافهای موجود در دستیارهای کدنویسی استاندارد طراحی شده است. نکته کلیدی این است که این ابزار یک سرویس میزبانی شده (Hosted Service) نیست، بلکه یک تعریف از «عامل» به همراه مجموعهای از مهارتهاست. این بدان معناست که ابزار درون عامل کدنویسی موجودِ کاربر اجرا میشود و تضمین میکند که تمام کدها بهصورت محلی باقی بمانند و به سرورهای خارجی ارسال نشوند.
این رویکرد برای همه، از توسعهدهندگان مستقل و نگهدارندگان تکنفره تا سازمانهای بزرگ، کاربردی است. استارتاپها و تیمهای بازار متوسط بیشترین سود را میبرند، زیرا این عامل پژوهشهای مربوط به مخزن کد را اتوماتیک میکند؛ کاری که تیمهای کوچک معمولاً زمان کافی برای کدگذاری و مستندسازی آن را ندارند. سازمانهای بزرگ نیز میتوانند برای همراستاسازی ابزار با فریمورکهای داخلی خود، بخش راهنمای زبانی (Language Guidance) را فورک کرده و شخصیسازی کنند. برای مدیریت بهینه این حافظه و بافتار در پروژههای بزرگ، راهکارهایی مانند استفاده از فایلهای Git برای حل مشکل فراموشی عاملهای کدنویس توسعه یافتهاند تا تداوم یادگیری عامل حفظ شود.
صنایع هدف و کاربردها
این عامل بهویژه برای محیطهای نرمافزاری که تحت نظارت شدید هستند یا نیاز به ممیزی (Audit) بالایی دارند، حیاتی است. این حوزهها شامل موارد زیر است:
- خدمات مالی، بیمه و بهداشت و درمان.
- بخشهای دولتی و عمومی.
- تیمهای پلتفرم که در تلاشاند «بدهی تستهای قدیمی» (Legacy Test Debt) را تسویه کنند.
کاربردهای رایج این ابزار شامل بازسازی تستها برای ماژولهایی است که هرگز تست نشدهاند، تولید تست برای تغییرات یک Pull Request (Diff)، افزایش پوشش تستها پیش از عبور از گیتهای انتشار (Release Gate) و استانداردسازی قراردادهای کدنویسی در مخازن عظیم چندزبانه (Polyglot Monorepos) است.
خط لوله RPI
بر اساس مستندات فنی، این ابزار از یک خط لوله به نام RPI (پژوهش-برنامهریزی-اجرا) استفاده میکند. در مرحله اول، عامل در کل کدبیس جستجو میکند تا زبان برنامهنویسی و فریمورک تست را شناسایی کند. سپس، تستهای موجود را میخواند تا قراردادهای محلی و سبک کدنویسی پروژه را بیاموزد. در نهایت، دستورات واقعی ساخت (Build) و تست را شناسایی میکند تا اطمینان حاصل شود که تستها نه تنها روی ماشین محلی، بلکه در خط لولههای CI/CD نیز اجرا میشوند. این فرآیند از شکستهای رایجی جلوگیری میکند که در آن پروژه بهصورت محلی ساخته میشود اما در CI شکست میخورد، چون تست جدید هرگز ثبت نشده بود. در این راستا، ایجاد محیطهای اثباتی به عنوان جایگزینی برای سندباکسهای ساده میتواند امنیت و دقت اجرای این خط لولهها را دوچندان کند.
اجرا و تایید فنی
این عامل بسته به دامنه وظیفه، از سه استراتژی متمایز استفاده میکند:
- نوشتار مستقیم (Direct writes): اعتبارسنجی فوری برای تستهای ساده.
- گذر تکمرحلهای (Single pass): یک چرخه کامل از تولید و بررسی.
- تکرار شونده (Iterative): چرخههای مکرر برای دامنههای گسترده یا اهداف پوشش تست بسیار بالا.
برای حفظ ایمنی، این ابزار هرگز کد تولیدی (Production) را تغییر نمیدهد. همچنین از ایجاد تستهایی که پورتها را اشغال میکنند، URLهای خارجی را فراخوانی میکنند یا به زمانبندی (Timing) وابسته هستند، خودداری میکند.
پیش از اعلام اتمام کار، عامل پنج بررسی سختگیرانه را اجرا میکند:
- استدلال درباره تغییرات کوچک در کد که باید باعث شکست تست شود (تست جهش سبک).
- جستجو برای یافتن Assertهای ضعیف یا مفقود.
- تطبیق هر سناریوی درخواستی با یک تست مشخص.
- ساخت کامل فضای کاری (Workspace) و اجرای کل مجموعه تستها.
- تایید اینکه دستور تستِ خودِ مخزن، تستهای جدید را شناسایی و اجرا میکند.
عملکرد در بنچمارکها
در یک محک داخلی روی ۱۵۲ وظیفه، این عامل ۱۴۰ مورد را با موفقیت به پایان رساند، در حالی که Copilot استاندارد تنها ۱۲۰ مورد را مدیریت کرد. هر دو تنظیمات از مدل و پرامپتهای یکسانی استفاده میکردند. دستاوردهای عملکردی در بخشهای پیچیده متمرکز است:
- پرامپتهای مبهم: موفقیت ۸۸.۸٪ (۷۹ از ۸۹ مورد) در برابر ۶۶.۳٪ (۵۹ از ۸۹ مورد) برای Copilot.
- وظایف هدفمند بر اساس Diff: موفقیت ۱۰۰٪ (۱۵ از ۱۵ مورد) در برابر ۰٪ (۰ از ۱۵ مورد) برای Copilot.
- کارایی: عامل ۲.۳٪ تست کمتر تولید کرد (۶,۹۶۳ در برابر ۷,۱۲۹ مورد) در حالی که پوشش خطی تقریباً یکسانی را حفظ کرد (۷۲.۴٪ در برابر ۷۲.۲٪).
میانگین زمان هر وظیفه ۳۵۹ ثانیه بود در حالی که برای Copilot این رقم ۳۸۰ ثانیه بود، هرچند مصرف توکن به ازای هر وظیفه تکمیل شده ۳.۲٪ بیشتر بود.
در بررسی ۴۵ وظیفه .NET، مدل Claude Opus با استفاده از این عامل به ۴۳ مورد موفقیت رسید و GPT-5.5 توانست ۴۱ مورد را تکمیل کند. همچنین در محک خارجی SWE Atlas، این ابزار ۱۶ مورد از ۴۴ وظیفه را حل کرد، در حالی که سهم Copilot تنها ۱۲ مورد بود.
این تغییر، صنعت را از تولید «تکشات» (One-shot) به سمت برنامهریزی آگاه از مخزن کد سوق میدهد. برای توسعهدهندگان در صنایع حساس مانند بهداشت و درمان یا امور مالی، این یعنی هوش مصنوعی بالاخره میتواند کارهای خستهکننده تکمیل تستهای قدیمی را بدون راهنمایی دستی انجام دهد.
شما اکنون میتوانید این عامل را از طریق پلاگین dotnet-test در گردش کار کدنویسی خود ادغام کنید تا کاهش بدهی تستها را اتوماتیک کنید.
گام بعدی شما
- پلاگین dotnet-test را برای ادغام این عامل در گردش کار خود نصب کنید.
- برای کاهش بدهی فنی، ابتدا روی ماژولهای قدیمی و بدون تست تمرکز کنید.
- عملکرد مدلهای مختلف (مانند Claude Opus) را در محیط خود مقایسه کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو