ارکستراتور عامل (Agent Orchestrator) من برای هر تسک، ۱ تا ۲ میلیون توکن Opus مصرف میکرد.
چطور هزینهها سر به فلک کشید
این ارکستراتور برای Claude Code ساخته شده بود و از سلسلهمراتبی از زیر-عاملها (sub-agents) استفاده میکرد. هر زیر-عامل تنظیمات والد را به ارث میبرد، پرامپت مخصوص به خود را اجرا میکرد و نتیجه را دوباره به حلقه بازمیگرداند تا زمانی که یک بازبین (reviewer)، خروجی را «پاک» (clean) اعلام کند. ابزار وظایف را انجام میداد، اما قیمت آن نجومی بود.
سه «مالیات» پنهان، تعداد توکنها را چندین برابر میکرد:
- مالیات مدل – زیر-عاملها هرگز مدلی را مشخص نمیکردند، بنابراین به طور پیشفرض از Opus، گرانترین سطح، استفاده میشد. یک عملیات کوچک که میتوانست با یک مدل ارزانتر (Haiku یا Sonnet) انجام شود، با نرخ Opus محاسبه میشد.
- مالیات کش – کش کردن پرامپت (Prompt caching) فقط تطابقهای دقیق بایتبهبایت را دوباره استفاده میکند. از آنجایی که هر زیر-عامل دستورالعملهای سفارشی خود را اضافه میکرد، هر فراخوانی باعث نوشتن در کش سرد (cold cache write) میشد. کشِ والد قابل استفاده مجدد نبود و در نتیجه صرفهجوییهایی که یک کش مشترک معمولاً فراهم میکند، از دست میرفت.
- مالیات حلقه – قانون «حلقه تا زمان پاک بودن» تا زمانی که یک بازبین نقص یا ایرادی پیدا میکرد، فرآیند را زنده نگه میداشت. بدون وجود یک سقف مشخص، حلقه تا زمانی که مدل متوقف میشد، ادامه مییافت.
این ضرایب در کنار هم، چند خط کد ساده را به بهمنی از توکنها تبدیل کردند.
چرا قانون بودجه در پرامپت شکست خورد
طراحی اولیه سعی داشت با گنجاندن مستقیم یک قانون بودجه در سیستم پرامپت (system prompt)، هزینهها را کنترل کند. در تئوری، گفتنِ «زیر X توکن بمان» به مدل، باید استفاده را محدود میکرد. اما در عمل، یک قانون مبتنی بر پرامپت صرفاً یک اولویت است. با بزرگ شدن نشست (session)، مدل بافتار (context) را فشرده میکند و ممکن است آن دستورالعملها را کاملاً حذف یا نادیده بگیرد. نتیجه این بود: مدل طوری رفتار میکرد که انگار اصلاً قانونی وجود ندارد.
انتقال اعمال قوانین از پرامپت به کد
در طراحی مجدد، منطق بودجه از پرامپت خارج شد و در یک سیستم هوک (hook) تعیینپذیر قرار گرفت که مدل نمیتواند آن را دور بزند.
- انتخاب صریح مدل – هر فراخوانیِ زیر-عامل اکنون مستلزم انتخاب یک مدل مشخص (Haiku، Sonnet یا Opus) است. ارثبری خاموش حذف شده است، بنابراین وظایف ارزان، ارزان باقی میمانند.
- محافظهای سختگیرانه از طریق یک هوک PreToolUse – قبل از اجرای هر ابزار، این هوک موارد زیر را بررسی میکند:
- تعداد فراخوانیهای انجام شده در طول نشست.
- اینکه آیا مدل انتخاب شده حداقل سطح مورد نیاز را دارد یا خیر (برای جلوگیری از استفاده تصادفی از Opus).
- حداکثر تعداد تکرار حلقه، که پس از آن فرآیند متوقف میشود.
اگر هر یک از این محافظها فعال شوند، کد اجرای زیر-عامل را متوقف میکند؛ مدل زبانی هیچ راهی برای بحث و بازگشت به فرآیند ندارد.
این موضوع برای توسعهدهندگان چه معنایی دارد
هر سیستمی که محدودیتهای هزینه، سیاستهای امنیتی یا محدودیتهایی بر دستورات مخرب اعمال میکند، باید با آن محدودیتها به عنوان «کد» برخورد کند، نه به عنوان یک «راهنمای گفتگویی». یک پرامپت میتواند بازنویسی، نادیده گرفته یا در فشردهسازی داخلی مدل گم شود. در مقابل، کد به صورت تعیینپذیر اجرا میشود و قابل بازرسی (audited) است.
