اگر از Claude Code استفاده میکنید، احتمالاً بودجهتان سریعتر از حد انتظار تمام میشود؛ چون عاملهای فرعی (subagents) بدون اجازه شما، گرانترین مدلها را انتخاب میکنند. در ۱۳ اکتبر ۲۰۲۶، یک توسعهدهنده ابزاری به نام subagent-tuner را منتشر کرد؛ مودی که طراحی شده تا کنترل انتخاب مدل را از دست هوش مصنوعی بگیرد و آن را به کاربر برگرداند.
این مشکل از نحوه تصمیمگیری Claude Code برای تعیین اینکه کدام مدل برای یک عامل فرعی اجرا شود، نشأت میگیرد. این سیستم از یک سلسلهمراتب سختگیرانه پیروی میکند: اولویت اول با مدلی است که عاملِ فراخوان (calling agent) در خودِ درخواست قرار داده است. اولویت دوم مربوط به بخش frontmatter در تعریف عامل است. اولویت سوم متغیر محیطی CLAUDE_CODE_SUBAGENT_MODEL است و در نهایت، سیستم به مدل اصلی کاربر بازمیگردد. نکته بسیار مهم این است که پیش از نسخه ۲.۱.۲۵۱، متغیر محیطی اولویت بیشتری نسبت به درخواست فراخوان داشت، اما اکنون در ردههای پایینتر قرار گرفته است. این ساختار تصمیمگیری بخشی از لایه ارکستراسیون Claude Code است که وظیفه مدیریت توزیع تسکها بین عاملهای مختلف را بر عهده دارد.
همانطور که در تحلیل قبلی ما دربارهی مکانیسمهای توقف (stop hooks) برای جلوگیری از ادعاهای نادرست در Claude Code اشاره کردیم، این افزونه جدید به نوع دیگری از «نامرئی بودن» میپردازد: هزینههای پنهان فراخوانی عاملها. در یک مورد تست، فایل CLAUDE.md یک کاربر حاوی قانونی بود که میگفت: «برای بازبینیها و حسابرسیها، مدل opus را پاس بده». با وجود اینکه کاربر مدل پیشفرض را روی Sonnet تنظیم کرده بود، ۲۱ مورد از ۲۵ فراخوانی عامل بهطور صریح مدل گرانقیمت Opus را درخواست کردند. چون درخواست عامل فراخوان در رأس اولویت سلسلهمراتب تصمیمگیری است، یک قانون فراموششده در فایل، تنظیمات کاربر را شکست داد و هزینهها را افزایش داد. در این میان، تداخل دستورالعملهای محلی با تنظیمات سیستم موضوعی است که در بررسی تنظیمات حریم خصوصی و دسترسیهای Claude Code نیز به آن پرداخته بودیم.
سازوکار subagent-tuner
این ابزار مانند یک پلاگین عمل میکند که دارای یک ماژول hooks است تا فراخوانیهای ابزار عامل (Agent tool call) را رهگیری کند. این مود یک نوار کنترل کوچک بالای پرامپت اضافه میکند: Tuner [ Manual ][ *Auto ] · default [ sonnet ]/[ high ] [ Reset ]. کاربران میتوانند با کلیک روی Manual یا Auto بین این دو حالت جابهجا شوند، یا با کلیک روی مدل/سطح تلاش (effort)، بین پیشفرضهای ذخیرهشده چرخش کنند. حالت انتخاب شده و پیشفرضها در طول جلسات مختلف (sessions) حفظ میشوند.
- حالت دستی (Manual): پیش از آنکه یک عامل فرعی شروع به کار کند، کاربر یک پنل در ترمینال (در صفحاتی با عرض ۱۴۴ ستون یا بیشتر) یا مجموعهای از دیالوگها را مشاهده میکند. در این بخش، تسک مورد نظر (مثلاً «بازبینی diffها»)، مدل انتخابی و سطح تلاش نمایش داده میشود. شما میتوانید عامل را همانطور که هست اجرا کنید، مدل یا سطح تلاش را فقط برای همان اجرای خاص تغییر دهید، یا انتخاب خود را به عنوان یک پیشفرض جدید ذخیره کنید. اگر کاربر این پرسش را رد کند (dismiss)، عامل فرعی با همان تنظیمات نمایش داده شده شروع به کار میکند.
- حالت خودکار (Auto): در این حالت، پیشفرض ذخیرهشده شما در هر شرایطی برنده است. این مود انتخاب شما را اعمال میکند، حتی اگر عامل بهطور صریح مدل یا سطح تلاش متفاوتی را درخواست کرده باشد. این قابلیت، سطحی از کنترل را فراهم میکند که سلسلهمراتب پیشفرض سیستم اجازه آن را نمیداد.

جزئیات فنی و مکانیسمها
برای اطمینان از پایداری و قابلیت اطمینان در سیستمعاملهای مختلف، این مود از یک سیستم فایل سیگنال (signal file system) خاص استفاده میکند. در حالی که نسخههای اولیه بر دستورات mktemp ،touch و sh متکی بودند — که اغلب در ویندوز شکست میخوردند زیرا Git for Windows بهطور پیشفرض آنها را در PATH قرار نمیدهد — نسخه فعلی از API خودِ مود برای نوشتن فایلهای سیگنال استفاده میکند. سپس برای انتظار، در macOS و لینوکس از sh و در ویندوز ۱۱ از powershell.exe استفاده میکند.
- منطق پیشنهاددهنده: اگر فیلدی روی مقدار
rec.رها شود، tuner همان چیزی را که فراخوان تعیین کرده نگه میدارد. اما اگر فراخوان هیچ مدلی را تعیین نکرده باشد، tuner بر اساس نوع تسک مدلها را پیشنهاد میدهد: Opus برای بازبینیها (reviews)، Sonnet برای پیادهسازی (implementation) و Haiku برای جستوجو (search). این رویکرد برای مدیریت مدلها شباهتهایی به سازوکار OpenCode در مدیریت Failover دارد که تلاش میکند با مسیریابی هوشمند، پایداری زنجیره عاملها را حفظ کند. - اعلانهای جایگزینی: هرگاه حالت Auto انتخاب کاربر را جایگزین انتخاب عامل کند، یک اعلان (toast notification) ظاهر میشود:
Subagent (overridden) -> sonnet/high. - محدوده اثر: این ابزار در دستورات
claude -p،میزبانیهای SDK یا فورکها (forks) دخالت نمیکند. این مود فقط فیلدهای مدل و تلاش در فراخوانیهای Agent را بازنویسی میکند. این موضوع تضمین میکند که بنچمارکهای ارزیابی (evaluation benchmarks) دستنخورده باقی بمانند، زیرا عاملهای فرعی در محیطهای ارزیابی، همان مدلهایی را که درخواست کردهاند دریافت میکنند.
کاربرانی که از نسخه ۲.۱.۲۸۷ یا جدیدتر Claude Code استفاده میکنند، میتوانند این ابزار را از طریق دستور /plugin install subagent-tuner --marketplace Kruhlikau/subagent-tuner نصب کنند. کاربران باید محدوده (scope) را روی user تنظیم کنند تا ابزار در جلسه فعلی شروع به کار کند. سورس کد و تستهای این پروژه تحت لایسنس MIT در آدرس https://github.com/Kruhlikau/subagent-tuner در دسترس است.
این تغییر، فرض بنیادی در گردشکارهای عاملمحور (Agentic) را عوض میکند: دیگر عامل، تصمیمگیرنده نهایی در مورد تخصیص منابع نیست. با انتقال نقطه تصمیمگیری به کاربر، توسعهدهندگان میتوانند هزینه را بهینه کنند بدون اینکه کیفیت کارهای حساس مثل حسابرسی یا بازبینی را فدا کنند.
اینکه آیا این ابزار منجر به صرفهجویی قابل توجهی در هزینهها میشود یا خیر، به گردشکار هر فرد بستگی دارد، اما در هر صورت عامل «غافلگیری» در صورتحسابهای مدلهای گران را حذف میکند. اکنون میتوانید مطمئن شوید یک تسک جستوجوی ساده روی Haiku اجرا میشود، فارغ از اینکه عامل چه چیزی را «بهترین» میداند. توصیه میشود کاربران برای کمی کردن میزان صرفهجویی واقعی خود، لاگهای عاملهای فرعی را بررسی کنند تا ببینند پیش از نصب این ابزار، چه مدلهایی فراخوانی میشدند.
گام بعدی شما
- اگر از Claude Code استفاده میکنید، فوراً لاگهای اخیر را برای شناسایی تعداد فراخوانیهای ناخواسته Opus بررسی کنید.
- افزونه را در حالت Auto نصب کنید تا از هزینههای پنهان در پروژههای بزرگ جلوگیری شود.
- برای تسکهای حساس (مانند Audit)، مدل پیشفرض را روی High/Opus نگه دارید و برای بقیه روی Sonnet یا Haiku سوییچ کنید.
اما مدیریت هزینهها تنها بخشی از چالش است؛ برای درک اینکه چگونه مدلهای کوچکتر در حال جایگزینی غولها در محیطهای توسعه هستند، تحلیل ما درباره مدلهای SLM را بخوانید.




گفتگو