در سالهای اخیر بنچمارکهای کدنویسی خودکار جهشهای چشمگیری را ثبت کردهاند، اما تفاوت رفتار یک مدل در دو فریمورک مختلف نشان میدهد که خود مدل زبانی تنها نیمی از معادله است. آنچه یک ایجنت را در محیط پروداکشن قابل اعتماد میکند، داربست (Scaffold) پیادهسازیشده در اطراف آن است؛ سازوکاری که وظیفهی بازیابی کدهای مرتبط، اجرای آزمونها و اصلاح خطاها را بر عهده دارد.
برای مهندسان نرمافزار، انتخاب میان ابزارهایی مثل OpenHands، Cline یا Aider صرفاً مقایسهی اعداد تبلیغاتی بنچمارکها نیست. بنچمارکهایی مانند SWE-bench Verified بخش عمدهای از امتیاز خود را از خطاهای بسیار ساده (یک یا دو خط تغییر) به دست میآورند، در حالی که در پروژههای واقعی با چالشهای چندفایلی و تغییرات عمیقتر روبرو هستیم.
درک معماریهای اجرایی مثل CodeAct در برابر فراخوانی ابزار با JSON و شناخت مکانیزمهای مهار خطا به شما کمک میکند تا پیش از استقرار یک ایجنت در مخازن کد، بازدهی و ریسکهای امنیتی آن را بهدرستی بسنجید.
امتیاز بنچمارک SWE-bench Verified در کمتر از 3 سال از 4% به 80.9% رسید. مدل یکسان Claude Sonnet 4.5 روی داربست SWE-agent v1 امتیاز 43.2% و روی داربست خودکار Cline امتیاز 59.8% گرفت؛ یعنی داربست (Scaffolding) اطراف مدل اکنون به اندازهی خود مدل اهمیت دارد. پلتفرم OpenHands (که قبلاً OpenDevin نام داشت) فعالترین پلتفرم با مجوز MIT است و حلقهی CodeAct آن بهجای فراخوانی ابزار (Tool call) مبتنی بر JSON، اکشنهای پایتون را مستقیماً درون یک ساندباکس (محیط ایزوله) اجرا میکند. اعداد پر سر و صدا یک مشکل روششناختی را پنهان میکنند: 161 وظیفه (Task) از 500 وظیفهی SWE-bench Verified فقط به 1 تا 2 خط تغییر کد نیاز دارند، و امتیاز همین مدلهای پیشرو در SWE-bench Pro (وظایفی با بیش از 10 خط تغییر) بین 23% تا 59% است.
صورت مسئله
«کدام ایجنت کدنویسی از همه بهتر است؟» پرسش اشتباهی است. پرسش درست این است: روی توزیعی از وظایف که با کار واقعی من همخوانی دارد، و با داربستی که قرار است در محیط عملیاتی (پروداکشن) اجرا کنم، به چه میزان پایایی سرتاسری (End-to-end) دست پیدا میکنم؟
بین سالهای 2022 تا 2026، فعالان این حوزه متوجه شدند که داربست بار اصلی سیستم را به دوش میکشد؛ لایهی بازیابی (Retrieval)، برنامهریز (Planner)، ساندباکس، حلقهی ویرایش-اعتبارسنجی و قالب ارائهی بازخورد همگی نقشی حیاتی دارند. مدل Claude Sonnet 4.5 روی SWE-agent v1 به امتیاز 43.2% در SWE-bench Verified دست یافت؛ همین مدل داخل داربست خودکار Cline امتیاز 59.8% گرفت. 16.6 واحد درصد اختلاف مطلق، آن هم با وزنهای کاملاً یکسان مدل. مدل پایه صرفاً یک جزء است؛ محصول نهایی همان حلقهی ایجنت (Agent loop) است.
مشکل مکمل این است که اشباع (Saturation) بنچمارک، پسرفتها را پنهان میکند. بنچمارک SWE-bench Verified تقریباً اشباع شده است، و دنبالهی وظایف ساده (161 وظیفه از 500 وظیفه که به 2 خط تغییر یا کمتر نیاز دارند) امتیازهای بالا را تقویت میکند. کیفیت در دنیای واقعی را بهتر میتوان روی توزیعهایی مانند SWE-bench Pro (تغییرات بالای 10 خط) سنجید، جایی که همان مدلهای پیشرو هنوز در محدودهی 23% تا 59% قرار دارند.
مفاهیم کلیدی
بنچمارک SWE-bench در یک پاراگراف
بنچمارک SWE-bench (کاری از Jimenez و همکاران) ایشوهای واقعی گیتهاب را همراه با تکه (Patch) کدهای مرجع دریافت میکند و از ایجنت میخواهد پچی تولید کند که مجموعهی آزمونها (Test suite) با موفقیت پاس شوند. نسخهی SWE-bench Verified (ارائهشده توسط OpenAI در سال 2024) زیرمجموعهای شامل 500 وظیفه است که توسط انسان بازبینی شده و وظایف مبهم و خراب از آن حذف شدهاند. بنچمارک SWE-bench Pro جانشین سختتر این مجموعه است؛ وظایفی که به بیش از 10 خط تغییر کد نیاز دارند و ایجنتهای پیشروی فعلی در آن امتیازی بین 23% تا 59% کسب میکنند.
نمودار رشد 2022 تا 2026 در واقعیت چه چیزی را نشان میدهد
- 2022: مدلهای پژوهشی روی نسخهی اولیهی SWE-bench به امتیاز حدود 4% رسیدند.
- 2024: ترکیب GPT-4 و داربستهایی مشابه Devin به حدود 14% رسیدند؛ SWE-agent به حدود 12% رسید.
- 2025: مدلهای Claude 3.5 و 3.7 Sonnet داخل داربستهای Aider و SWE-agent امتیاز را به محدودهی 40% تا 55% رساندند (push کردند).
- 2026: مدل Claude Sonnet 4.5 و رقبای پیشرو به امتیازهای 70% تا 80%+ در SWE-bench Verified رسیدند. لیدربورد Epoch AI این روند را بهصورت زنده ثبت میکند.
شیب تند این رشد از سه منبع همافزا حاصل شد: مدلهای پایهی قویتر، داربستهای بهتر (CodeAct، بازتاب و حلقههای مدل اعتبارسنج (Verifier))، و بنچمارکهای پالایششدهتر (نسخهی Verified با حذف نویزها).
مقایسهی CodeAct و فراخوانی ابزار با JSON
پلتفرم OpenHands (کاری از All-Hands-AI، مقالهی arXiv:2407.16741، که قبلاً OpenDevin نام داشت) روی یک تصمیم معماری مشخص قمار کرد: بهجای اینکه مدل فراخوانی ابزار را در قالب JSON تولید کند تا میزبان آن را رمزگشایی (Decode) و اجرا کند، مدل کد پایتون صادر میکند و یک کرنل (Kernel) شبیه به Jupyter آن را درون ساندباکس به اجرا درمیآورد. ایجنت میتواند روی فایلها حلقه بزند، ابزارها را زنجیرهوار اجرا کند و خطاهای رخداده را درون همان یک اکشن مدیریت کند.
این مصالحه (Trade-off) به این صورت است:
- فراخوانی ابزار با JSON: هر اکشن یک نوبت گفتوگو (Turn) محسوب میشود؛ بررسی و نظارت بر آن ساده است؛ قابلیت ترکیبپذیری محدودی دارد؛ بهصورت پیشفرض امن است، چون هر فراخوانی از یک اعتبارسنج مشخص عبور میکند.
- معماری CodeAct: یک اکشن میتواند یک برنامهی کامل باشد؛ ترکیبپذیر است؛ به یک ساندباکس کاملاً ایمنسازیشده نیاز دارد (OpenHands از ایزولهسازی Docker استفاده میکند)؛ حالتهای شکست (Failure modes) شامل هر چیزی میشود که محیط اجرای (Runtime) ساندباکس اجازه دهد.
هر دو معماری در محیط عملیاتی به کار گرفته میشوند. CodeAct بر پلتفرمهای متنباز (مانند OpenHands و smolagents) مسلط است. فراخوانی ابزار بر پایهی JSON در سرویسهای مدیریتشده (مانند Anthropic Managed Agents و OpenAI Assistants) که ارائهدهنده کنترل کامل مجری را در دست دارد، همچنان رویکرد غالب است.
داربستهای شاخص در چشمانداز 2026
| داربست | مجوز | مدل اجرا | ویژگی شاخص |
|---|---|---|---|
| OpenHands (OpenDevin) | MIT | رویکرد CodeAct درون Docker | فعالترین پلتفرم متنباز؛ قابلیت بازپخش مبتنی بر جریان رویدادها |
| SWE-agent | MIT | رابط ایجنت-رایانه (ACI) | اولین داربست سرتاسری برای SWE-bench |
| Aider | Apache-2 | ویرایش با diff در مخزن محلی | داربست مینیمال، پایداری بالا در برابر پسرفت |
| Cline | Apache-2 | ایجنت VS Code با سیاست ابزاری | بالاترین امتیاز میان داربستهای متنباز روی Sonnet 4.5 |
| Devin (Cognition) | تجاری (Proprietary) | ماشین مجازی مدیریتشده + برنامهریز | اولین سیستم در دستهبندی «مهندس نرمافزار هوش مصنوعی» |
| Claude Code | تجاری (Proprietary) | سطوح دسترسی + روتینها | درس 10 به جزئیات حلقهی ایجنت آن میپردازد |
چرا داربست دست بالا را دارد
اجرای یک وظیفهی کدنویسی، پیمودن یک مسیر با افق زمانی طولانی است (درس 1). پایایی سیستم گامبهگام و بهصورت تصاعدی ساخته میشود. سه حوزهای که داربست در آنها امتیاز بالایی به ارمغان میآورد عبارتند از:
- بازیابی: یافتن فایلهای درست برای خواندن، گلوگاه خاموش این فرایند است. رابط ACI در SWE-agent، نمایهی فایل در OpenHands و نقشهی مخزن در Aider همگی این مسئله را هدف گرفتهاند.
- حلقهی مدل اعتبارسنج: اجرای آزمونها، خواندن ردگیری محاسبات (استک تریس) و تلاش مجدد، بیش از 10 واحد درصد اختلاف امتیاز در SWE-bench ایجاد میکند.
- مهار مسیر (Containment) خرابی: ساندباکسی که در صورت بروز خطا تغییرات را به عقب بازمیگرداند (Rollback)، جلوی آسیبهای زنجیرهای را میگیرد. یک مدل ثابت با حلقهی اعتبارسنج و بدون آن، عملاً شبیه به دو محصول کاملاً متفاوت رفتار میکند.
اشباع بنچمارک و توزیع در دنیای واقعی
تیم توسعهی OpenHands و پلتفرم Epoch AI هر دو هشدار میدهند که SWE-bench Verified دنبالهای از وظایف ساده دارد: 161 وظیفه از 500 وظیفه صرفاً به تغییر 1 تا 2 خط کد احتیاج دارند. بخشی از امتیازهای بالا تحت تأثیر همین دنباله است. بنچمارک SWE-bench Pro وظایف را به مواردی با بیش از 10 خط تغییر محدود میکند و امتیاز سیستمهای پیشرو روی آن به محدودهی 23% تا 59% میرسد. توزیع مسائل شما در محیط عملیاتی تقریباً بهطور قطع به Pro نزدیکتر است تا Verified.
نتیجهگیری برای انتخاب ایجنت: زیرمجموعهای شبیه به بنچمارک Pro از میان باگهای انباشتهی (Backlog) سیستم خودتان بسازید و آزمایش کنید. امتیازی تعیینکننده است که روی وظایف مشابه کارهای محیط عملیاتی شما به دست آمده باشد.
استفاده از ابزارهای واقعی
فایل code/main.py دو داربست سادهی ایجنت را روی یک توزیع ثابت از وظایف کوچک مقایسه میکند:
- داربست فراخوانی ابزار بر پایهی JSON که در هر نوبت گفتوگو یک اکشن انجام میدهد.
- داربست CodeAct که میتواند در هر اکشن یک قطعهکد کوچک پایتون صادر کند.
هر دو از یک «مدل» ساختگی (با قواعد قطعی) استفاده میکنند تا کیفیت مدل از ساختار داربست تفکیک شود. خروجی نشان میدهد که داربست CodeAct وظایف بیشتری را در نوبتهای گفتوگوی کمتری حل میکند، هرچند شعاع تخریب (Blast radius) هر اکشن در آن بزرگتر است.
خروجی این درس
سند outputs/skill-scaffold-audit.md کمک میکند تا پیش از بهکارگیری یک داربست ایجنت کدنویسی، آن را بهدقت ارزیابی کنید: از نظر کیفیت بازیابی، حضور مدل اعتبارسنج، سطح ایزولهسازی ساندباکس و همخوانی بنچمارک با توزیع مسائل کاری شما.
تمرینها
-
اسکریپت
code/main.pyرا اجرا کنید. هر داربست روی مجموعهی وظایف یکسان چند نوبت گفتوگو صرف میکند؟ شعاع تخریب در هر اکشن برای هر کدام چقدر است؟ -
مقالهی OpenHands (به شناسهی arXiv:2407.16741) را بخوانید. مقاله استدلال میکند که CodeAct در وظایف پیچیده بر فراخوانی ابزار مبتنی بر JSON برتری دارد. یکی از حالتهای شکست را که مقاله به آن اذعان کرده مشخص کنید و در یک جمله بنویسید این حالت در چه شرایطی در محیط عملیاتی دست بالا را خواهد داشت.
-
یکی از وظایف موجود در بکلاگ باگهای خود را انتخاب کنید که به تغییر بیش از 10 خط در میان دو فایل نیاز داشته باشد. احتمال موفقیت سرتاسری یک مدل پیشرو را در دو حالت الف) فراخوانی ابزار با JSON و ب) رویکرد CodeAct تخمین بزنید. فاصلهی میان این دو را توجیه کنید.
-
بنچمارک SWE-bench Verified شامل 161 وظیفهی تکفایلی با 1 تا 2 خط تغییر است. امتیازی طراحی کنید که این موارد را کنار بگذارد. لیدربورد با این معیار چطور دستخوش تغییر میشود؟
-
مقالهی «Introducing SWE-bench Verified» از OpenAI را بخوانید. روششناسی مشخص استفادهشده برای حذف وظایف مبهم را شرح دهید و دستهای از وظایف را نام ببرید که این پالایش متوجه آنها نمیشود.
اصطلاحات کلیدی
| اصطلاح | باور عمومی | معنای دقیق فنی |
|---|---|---|
| SWE-bench | «بنچمارک کدنویسی» | ایشوهای واقعی گیتهاب به همراه پچهای مرجع و مجموعهی آزمونها |
| SWE-bench Verified | «نسخهی پاکسازیشده» | 500 وظیفهی پالایششده توسط انسان، دارای دنبالهای از وظایف ساده |
| SWE-bench Pro | «نسخهی سختتر» | تغییرات بالای 10 خط؛ امتیاز مدلهای پیشرو روی آن بین 23% تا 59% است |
| CodeAct | «کد به عنوان اکشن» | ایجنت کد پایتون صادر میکند؛ کرنلی شبیه به Jupyter آن را در ساندباکس اجرا میکند |
| JSON tool call | «فراخوانی تابع (Function Calling)» | هر اکشن یک بار دادهی ساختاریافتهی JSON است که پیش از اجرا اعتبارسنجی میشود |
| Scaffold (داربست) | «فریمورک ایجنت» | حلقهی بازیابی + برنامهریز + مجری + مدل اعتبارسنج در اطراف مدل پایه |
| رابط ایجنت-رایانه (ACI) | «فرمت اختصاصی SWE-agent» | مجموعهی دستوراتی که برای کاربری مدلهای زبانی طراحی شدهاند، نه شلهای انسانی |
| حلقهی مدل اعتبارسنج | «آزمون و تلاش مجدد» | اجرای آزمونها، خواندن خروجی، اصلاح پچ؛ بزرگترین عامل بهبود پایایی بدون تغییر مدل |
برای مطالعهی بیشتر
- Jimenez et al. — SWE-bench — بنچمارک اصلی و روششناسی آن.
- OpenAI — Introducing SWE-bench Verified — نحوهی ساخت زیرمجموعهی پالایششده.
- Wang et al. — OpenHands: An Open Platform for AI Software Developers — معماری CodeAct و طراحی مبتنی بر جریان رویدادها.
- Epoch AI — SWE-bench leaderboard — پیگیری زنده و لحظهای امتیازها.
- Anthropic — Measuring agent autonomy — چارچوببندی پایایی ایجنتهای کدنویسی در افقهای زمانی طولانی.
