اگر بودجهی API شما بهسرعت تمام میشود یا عاملهای کدنویس شما مدام فایلهای تکراری را میخوانند، احتمالاً با مشکل «تورم نشست» (Session Bloat) دستوپنجه نرم میکنید. این اتفاق زمانی رخ میدهد که یک عامل برای یافتن یک تابع ساده، تمام درخت دایرکتوری و فایلهای تست را در پرامپت میریزد تا فقط یک فراخوان را پیدا کند. این چرخه از باز کردن فایل پشت فایل تا زمانی که پنجرهی چت — و گاهی اوقات بودجهی شما — ناپدید شود، ادامه مییابد.
به نقل از گزارشی که در ۲۷ اوت ۲۰۲۶ منتشر شد، یک توسعهدهنده تغییری حیاتی در معماری را به اشتراک گذاشت تا از این بحران جلوگیری شود. هدف این است که جلوی اتلاف توکنها توسط عاملها برای خواندن کل مخازن بزرگ (Monorepos) جهت جستوجوی نمادهای ساده گرفته شود. تصور کنید عامل هوش مصنوعی شما مثل کتابخانهداری است که بهجای استفاده از فهرست کارتهای راهنما، برای پیدا کردن یک جملهی کوتاه، تکتک کتابهای قفسه را بیرون میکشد و ورق میزند. این روش «سیل دادهای» (Firehose) نه تنها صورتحساب شما را بالا میبرد، بلکه سطح حملات را گسترش میدهد و یک «شعاع تخریب» (Blast Radius) ایجاد میکند؛ چراکه اگر نقشههای حیاتی سیستم داخل مخزن git، حافظهی موقت CI یا سرویسی باشند که عامل اجازه نوشتن در آن را دارد، ممکن است عامل بهاشتباه آنها را بازنویسی کند.
زمینه: حافظهی دامنه در مقابل هزینهی نشست
همانطور که در تحلیلهای قبلی ما دربارهی بهینهسازی حافظهی عاملها اشاره کردیم، تفکیک لایههای داده کلید بهرهوری است. طبق گزارش dev.to، راهکار اصلی جداسازی «حافظهی دامنه» (Domain Memory) از «خواندن کد مبتنی بر نشست» است. حافظهی دامنه در واقع یک مسئلهی مربوط به سیاستگذاری (Policy) است: این لایه تعیین میکند چه چیزهایی میتوانند به خاطر سپرده شوند، نقاط ورود به سیستم کجا هستند و چه مواردی به عنوان مرجع یا کانونی (Canonical) شناخته میشوند (مانند یادداشتها، قراردادها و مکانهایی که تصمیمات خاص در آنجا گرفته شدهاند).
در مقابل، خواندن کد یک هزینهی جاری برای هر نشست است. یافتن یک فراخوان یا یک نماد نباید مستلزم ریختن کل درخت کاری در پرامپت باشد. نویسنده هشدار میدهد که این دو لایه نباید با هم ترکیب شوند؛ زمانی که یک نمایهساز (Indexer) تبدیل به یک پایگاه دانش (KB) شود و یک خزانه (Vault) تبدیل به یک «grep بدون پورت» گردد، هر دو شکست میخورند و حجم نشست بهشدت متورم میشود.
جزئیات: چارچوب نمایهسازی
برای پیادهسازی این ساختار، نویسنده چهار حفاظ (Guardrails) اصلی را برای هر نوع پیکربندی پیشنهاد کرده است که میتوان آنها را مستقیماً در فایل README تنظیمات قرار داد:
- مکان (Location): تعیین اینکه آیا نمایه روی ماشین محلی قرار دارد یا بهصورت خارجی (در ابر، CI یا حافظهی مشترک).
- دسترسیها (Permissions): آیا این نمایه وارد زمینهی عاملی میشود که ابزارهای نوشتن نیز در اختیار دارد؟ اصل «حداقل دسترسی» باید برای هر آنچه وارد زمینهی مدل میشود، اعمال گردد.
- ابطال (Revocation): مکانیسم حذف یا ابطال نمایه چگونه است و چگونه انجام میشود؟
- دسترسی (Access): چه افراد یا سیستمهای دیگری در حال خواندن این دادهها هستند؟
علاوه بر این، این استراتژی قاعدهی «یک بار خواندن کد در هر نشست» را الزامی میکند. انباشت چندین نمایهساز باعث کاهش بازگشت سرمایه (ROI) شده و عامل را گیج میکند. این امر منجر به نوع خاصی از توهم (Hallucination) میشود که در آن مدل با اعتمادبهنفس کامل به نمادهایی اشاره میکند که دیگر وجود ندارند. در چنین حالتی، یک باز-نمایهسازی (Re-index) ضروری است تا جلوی ارجاع عامل به «کدهای شبح» گرفته شود.
مدیریت نویز خط فرمان (CLI)
برای مدیریت خروجیهای شلوغ خط فرمان در دستورات test یا build یا git status نیز توصیه میشود از دریافت خام دادهها (Firehose) پرهیز کنید، زیرا این دادهها مانند «آتش دوستانه» در پنجرهی زمینه (Context Window) — شبیه به میز کاری که فقط جای چند ورق دارد — عمل کرده و فضای مدل را اشغال میکنند. بهجای آن از روشهای زیر استفاده کنید:
- فشردهسازی (Compress): استفاده از یک Wrapper برای خط فرمان جهت فشرده کردن خروجیهای شلوغ.
- خواندن جراحی (Surgical Reads): انجام خواندنهای هدفمند از خطوط خاص.
- استثنا (Exception): استفاده از خروجی کامل تنها زمانی که یک خط خاص از لاگ برای تحلیل یک حادثه (Incident) حیاتی باشد.
این تغییر، فرض قدیمی را که نمایهساز باید بهعنوان یک پایگاه دانش (KB) عمل کند، به چالش میکشد. با تبدیل نمایه به یک ابزار موقت برای نشست و سپردن تصمیمات بنیادی به لایهی سیاستهای پایگاه دانش، پنجرهی زمینه سبکتر میماند. نویسنده اشاره میکند که اگرچه درصد دقیقی از توکنهای ذخیره شده اعلام نشده، اما نتیجه، نشستی کمتر متورم و نقشهای است که بهطور تصادفی در یک Pull Request قرار نمیگیرد.
برای خواننده، این به معنای هزینههای کمتر API و پاسخهای سریعتر عامل است. این رویکرد تمرکز را از «کدام مدل باهوشتر است» به «دادهها چگونه لایهبندی شدهاند» تغییر میدهد تا از غرق شدن عامل در زمینهی خودش جلوگیری شود. توسعهدهندگان اکنون باید تنظیمات عاملهای خود را بازرسی کنند تا ببینند آیا نقشههای نمادهایشان بهاشتباه در git نسخهبندی میشوند یا خیر.
گام بعدی شما
- تنظیمات عاملهای خود را بررسی کنید تا مطمئن شوید نقشههای نمادها بهاشتباه در git نسخهبندی نمیشوند.
- یک Wrapper ساده برای فشردهسازی خروجیهای CLI در محیط توسعه خود پیاده کنید.
- لایهی حافظهی دامنه را از لایهی خواندن کد در پرامپتهای سیستمی خود تفکیک کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو