۷ آبان ۱۴۰۵ gist.github.com ۳ دقیقه مطالعه

چگونه مصرف ناخواسته توکن در Claude Code را متوقف کنیم؟

چگونه مصرف ناخواسته توکن در Claude Code را متوقف کنیم؟ — Claude Code burns ~15–20% of your tokens on a 3-word status line

خلاصه

ابزار Claude Code به طور پیش‌فرض نزدیک به ۲۰ درصد از توکن‌های شما را صرف ارسال رونوشت‌ها به مدل برای یک خط وضعیت ساده می‌کند. این مقاله نحوه غیرفعال‌سازی این رفتار با استفاده از یک اسکریپت پیش‌بارگذاری Bun را بررسی می‌کند.

معرفی مشکل مصرف پنهان توکن در Claude Code

ابزار Claude Code (ابزار توسعه مبتنی بر هوش مصنوعی انتروپی) مدتی است که با یک رفتار پنهان، حجم قابل‌توجهی از توکن‌های کاربران را هدر می‌دهد. طبق بررسی‌های انجام‌شده، این ابزار هر ۳۰ ثانیه برای هر عامل (Agent) پس‌زمینه، کل رونوشت (Transcript) آن را به مدل هوش مصنوعی می‌فرستد تا فقط یک خلاصه ۳ تا ۵ کلمه‌ای برای خط وضعیت پنل تولید کند. این درخواست‌های مکرر سهم بزرگی از محدودیت نرخ (Rate-limit) و بودجه توکن توسعه‌دهندگان را مصرف می‌کند.

نکته جالب اینجاست که هیچ تنظیمات رسمی یا متغیر محیطی مستقیمی برای خاموش کردن این ویژگی وجود ندارد و تمام سوئیچ‌های مستندشده تنها آن را فعال‌تر می‌کنند.

جزئیات فنی و نحوه کارکرد راه‌حل

از آنجا که این برنامه به صورت بایت‌کد کامپایل‌شده‌ی Bun عرضه می‌شود، ویرایش مستقیم کدهای جاوااسکریپت درون فایل باینری غیرممکن است. برای حل این مشکل، ابزاری به نام no-agent-summary.js (یک اسکریپت حدودا ۸۰ خطی برای Bun Preload) توسعه داده شده است که با رهگیری توابع setTimeout و setInterval عمل می‌کند.

  • شناسایی تایمر: این اسکریپت متن منبع کال‌بک تایمر را بررسی می‌کند. اگر نشانگر مربوط به خلاصهسازی (مانند لاگ‌های بخش AgentSummary) در آن یافت شود، به جای فعال‌سازی تایمر، یک هندل خنثی برمی‌گرداند.
  • عملکرد ایمن: سایر تایمرها بدون هیچ تغییری اجرا می‌شوند و اختلال در عملکرد اصلی برنامه ایجاد نمی‌شود.
  • اثرسنجی: بررسی‌های از طریق OpenTelemetry نشان داده است که با اجرای این راه‌حل، درخواست‌های اضافه کاملاً به صفر می‌رسند بدون اینکه آسیبی به عملکرد ساب‌آجنت‌ها یا تسک‌های پس‌زمینه وارد شود.

نحوه نصب و استفاده

برای اعمال این اصلاحیه روی سیستم‌های لینوکسی، می‌توانید مراحل زیر را دنبال کنید:

  1. اسکریپت no-agent-summary.js را در مسیری امن ذخیره کنید (مثلاً ~/.local/share/no-agent-summary.js).
  2. متغیر محیطی BUN_OPTIONS را طوری تنظیم کنید که هنگام اجرای هر فرآیند، این اسکریپت را بارگذاری کند: export BUN_OPTIONS="--preload $HOME/.local/share/no-agent-summary.js"
  3. دیمن کلود را ریستارت کنید تا فرآیندهای در حال اجرا نیز آپدیت شوند: claude daemon stop --any

چرا این مسئله برای مهندسان اهمیت دارد؟

برای توسعه‌دهندگانی که از طرح‌های اشتراکی یا محدودیت نرخ API استفاده می‌کنند، هدر رفتن ۱۵ تا ۲۰ درصد از توکن‌ها روی یک متن نمایشی بی‌اهمیت، افت بهره‌وری جدی به همراه دارد. به خصوص که کش کردن پرامپت‌ها نیز کل هزینه را صفر نمی‌کند و بخش قابل‌توجهی از کش‌مموری را درگیر می‌سازد.

علاوه بر این، ابزارهای هزینه‌سنجی معمولی این درخواست‌ها را ثبت نمی‌کنند و این پدیده تنها با ابزارهای مانیتورینگ پیشرفته مانند OpenTelemetry قابل ردیابی است.

این مطلب به‌صورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل

این خبر را با دیگران به اشتراک بگذارید

خبرهای فناوری در قالب پست و ویدیوی کوتاه، در اینستاگرام هکرنیوز بلاگ. به‌زودی
هر خبر به محض انتشار، به‌همراه پادکست روزانه در کانال تلگرام هکرنیوز بلاگ.