چطور مصرف توکن GitHub Copilot توی VS Code کم شد
خلاصهٔ کاملتر
نویسندهها توضیح میدن که با تغییر GitHub Copilot به صورتحساب مصرفی، هر توکن توی یه session ایجنتی اهمیت پیدا کرده؛ چون هم روی اعتبار و هزینه اثر میذاره، هم روی تأخیر، هم روی فضای باقیموندهی context برای تمومکردن کار. چون هر نسل جدید مدل معمولاً توکن بیشتری مصرف میکنه، بهینهسازی توی خود harness (لایهای که درخواستها رو به مدل میفرسته) اهرم اصلی برای مقابله با این روند شده. طبق مقاله، این کار یه برد بزرگ نیست، بلکه یه جریان پیوسته از بردهای کوچیکه که با آزمایشهای A/B توی production سنجیده میشن.
دو هزینهی اصلی توی هر درخواست هست. اولی پیشوند پرامپت (prompt prefix)؛ بخش زیادی از هر درخواست بین نوبتها تکرار میشه: دستورهای سیستمی، تعریف ابزارها، context مخزن و تاریخچهی گفتوگو. وقتی این پیشوند دقیقاً یکسان بمونه، ارائهدهنده میتونه بهجای محاسبهی دوباره، وضعیت کششدهی مدل رو دوباره استفاده کنه که تا ۱۰ برابر ارزونتر درمیاد. دومی سربار تعریف ابزارهاست؛ هر ابزار با نام و توضیح و اسکیمای کامل پارامترهاش فرستاده میشه و قبلاً همهشون تو هر درخواست بار میشدن.
راهکار دومی، جستوجوی ابزار (tool search) هست. بهجای فرستادن همهی تعریفها، مدل اول فقط متادیتای سبک (نام و توضیح) ابزارها رو میبینه و اسکیمای سنگین پارامترها بیرون از context میمونه تا وقتی مدل واقعاً دنبال یه ابزار بگرده و بارش کنه. چون این ابزارهای معوق آخر context اضافه میشن نه اول اون، پیشوند کششده دستنخورده میمونه و سود کش سر جاش میمونه.
برای مدلهای OpenAI سه تغییر انجام دادن. اول کش طولانیمدت پیشوند از طریق پارامتر prompt_cache_retention؛ بهطور پیشفرض کش بعد از چند دقیقه بیکاری پاک میشه، ولی با مقدار ۲۴ ساعته کش روی حافظهی کندتر ولی بزرگتر میره و تا یک روز گرم میمونه. نویسندهها میگن بعد از این کار، نرخ اصابت کش بعد از وقفههای طولانی چند برابر شد. دوم جستوجوی ابزار با فلگ defer_loading که مصرف توکن هر نوبت رو حدود ۹ تا ۱۱ درصد کم کرد. سوم استفاده از WebSocket بهجای درخواستهای HTTP پشتسرهم که تأخیر رسیدن به اولین توکن رو حدود ۱۶ تا ۱۹ درصد پایین آورد و حالا ترنسپورت پیشفرض مدلهای GPT-5.2 به بعده.
برای مدلهای Anthropic هم همون دو هزینه رو هدف گرفتن. کش کردن Anthropic فرق داره؛ اینجا خود فراخوان باید نقطههای cache_control رو دستی بذاره و API تا هر نشانگر رو کش میکنه. چون بودجهی این نقطهها کم و ثابته، تیم تصمیم گرفت تا چهار نقطه رو حسابشده روی پایدارترین مرزها بذاره: آخر تعریف ابزارها، آخر پرامپت سیستمی، و یه جفت لنگر متحرک روی دو پیام اخیر. اون لنگر قدیمیتر یه تور نجاته؛ اگه لنگر تازه از دست بره، لنگر قبلی هنوز یه اصابت کش میده. نویسندهها میگن با این کار نرخ اصابت کش برای بارهای ایجنتی به حدود ۹۴ درصد رسیده.
جستوجوی ابزار برای Anthropic هم با defer_loading: true پیاده شد، ضمن اینکه یه مجموعهی کوچیک از ابزارهای هستهای (خوندن و ویرایش فایل، اجرای دستور ترمینال، جستوجوی workspace) همیشه بار میمونن. اول از جستوجوی سمتسرور استفاده کردن که مصرف توکن رو برای کاربر میانه حدود ۱۸ درصد کم کرد، بعد جستوجو رو به سمت کلاینت منتقل کردن و بهجای تطبیق لغوی، از مدل embedding داخلی خودشون استفاده کردن که بر اساس نیت جستوجو میکنه نه کلمهی دقیق. مزیتش اینه که ابزارهای MCP که وسط session اضافه یا حذف میشن سریع منعکس میشن و کیفیت انتخاب ابزار هم بهتره.
نویسندهها میگن قدم بعدی اینه که کل دستههایی از کار رو از ایجنت اصلی جدا کنن؛ دارن subagentهای تخصصی میسازن که هرکدوم روی کوچیکترین و ارزونترین مدلی که از پس کار برمیاد اجرا میشن تا هزینهی کلی هر کار پایین بیاد. همچنین میخوان شفافیت مصرف توکن و وضعیت کش رو توی خود محصول بهتر کنن، مثلاً هشدار بدن که ادامهی یه session بعد از وقفهی طولانی باعث cold start کش و هزینهی اضافه میشه.
نکات کلیدی:
- با صورتحساب مصرفی Copilot، بهینهسازی سطح harness به اهرم اصلی کاهش هزینه تبدیل شده
- کش کردن پیشوند ثابت پرامپت، توکنهای کششده رو تا ۱۰ برابر ارزونتر میکنه
- جستوجوی ابزار، تعریف ابزارها رو بهدرخواست بار میکنه و context رو سبک نگه میداره
- برای OpenAI: کش ۲۴ ساعته، جستوجوی ابزار و WebSocket بهجای HTTP
- برای Anthropic: نقطهگذاری حسابشدهی کش تا نرخ اصابت ۹۴٪ و جستوجوی ابزار مبتنی بر embedding
- مصرف توکن کاربر میانه حدود ۱۰ تا ۱۸ درصد کم شده بدون افت نرخ موفقیت کار




