اگر برای بهینهسازی هزینههای استنتاج خود از ابزارهای MCP در Claude Code استفاده میکنید، احتمالاً در حال پرداخت مبلغی بیشتر از حد لازم هستید. این ابزارها بهجای کاهش هزینهها، در واقع تلهای هستند که صورتحساب شما را افزایش میدهند. دلیل این اتفاق آن است که این ابزارها در داخل حلقه عامل (agent loop) و پس از ورود متن به زمینه (context) اجرا میشوند؛ بنابراین شما بهطور همزمان هزینه متن خام، فراخوانی ابزار و متن پاکسازی شده حاصل را پرداخت میکنید.
این ناکارآمدی نشان میدهد که بسیاری از توسعهدهندگان هنوز نقطه شروع «کنتور توکن» در گردشکارهای عاملمحور (Agentic) را اشتباه میفهمند. همانطور که در تحلیل قبلی ما دربارهی سازماندهی دانش داخلی در Claude Artifacts اشاره کردیم، این مسئله شکافی را در نحوه مدیریت هزینههای ورودی در لحظه توسط توسعهدهندگان آشکار میکند. در دنیای واقعی، این وضعیت شبیه به این است که پول یک وعده غذای کامل را بدهید و دوباره به یک متخصص تغذیه پول پرداخت کنید تا به شما بگوید کدام بخشهای آن غذا را نباید میخوردید.
طبق گزارشی فنی که در ۱۷ ژوئیه ۲۰۲۶ در وبسایت dev.to منتشر شد، سه فرض غلط بنیادین درباره تغییر (Mutation) پرامپتها وجود دارد:
- ابزارهای MCP: یک ابزار پاکسازی پرامپت (clean_prompt) جایگزین ورودی نمیشود؛ بلکه نسخهای پاکشده را به متن خام اولیه و هزینههای جانبی (Overhead) ابزار اضافه میکند.
- قلابهای UserPromptSubmit: این قلابها میتوانند زمینه یا کانتکست اضافه کنند یا بهطور کلی جلوی ارسال پرامپت را بگیرند، اما توانایی تغییر یا جایگزینی متن اصلی کاربر را ندارند.
- تزریق Bash در دستورات اسلش: هرچند دستور
!commandشبیه به یک جایگزینی به نظر میرسد، اما متن خام در گزارش JSONL بهصورت<command-args>باقی میماند. این متن اغلب تا چهار بار در گزارش ظاهر میشود: در آرگومانهای دستور، آرگومانهای ابزار، یادداشت بارگذاری مهارت (skill-load note) و خروجی Bash.

برای دستیابی به کاهش واقعی هزینهها، پاکسازی باید پیش از آنکه متن وارد فرآیند شود، اتفاق بیفتد. بر اساس مستندات ارائه شده، دو مسیر عملی برای این کار پیشنهاد شده است:
۱. میانبرهای سراسری (Global Hotkeys): استفاده از Win32 RegisterHotKey یا AutoHotkey برای ارسال متن به یک API پاکسازی و جایگزینی آن در کادرباکس پیش از زدن دکمه ارسال.
۲. لولهکشی CLI (CLI Piping): اجرای دستور cat messy_prompt.txt | clean_prompt | claude code که تضمین میکند مدل هرگز متن بهینهنشده اولیه را نبیند.

البته برای کسانی که از MCP برای فراخوانیهای پاییندستی (downstream calls) — مانند پرسوجوهای تولید بازیابیافزا (RAG) یا دستورات زیر-عامل (sub-agent instructions) — استفاده میکنند، کاهش هزینهها واقعی است؛ چرا که آن فراخوانیهای خاص هرگز پرامپت خام اولیه را نمیبینند. اما برای رابط کاربری اصلی، معماری سیستم اساساً افزودنی (Additive) است.
این واقعیت با مشخصات MCP v2 که در ۲۸ ژوئیه ۲۰۲۶ نهایی میشود، بیشتر تثبیت شده است. پروتکل جدید با حذف دست دادن اولیه (initialize handshake) و سرآیند Mcp-Session-Id است، پروتکل را بدون وضعیت (stateless) میکند. این تغییر بهطور مؤثر هرگونه امید آینده برای بهینهسازی توکنها بر اساس وضعیت نشست (session-state) را از بین میبرد.
در نهایت، این بدان معناست که هر ابزاری که ادعا کند در داخل حلقه اجرای خودِ عامل، «توکنها را بهینه میکند»، احتمالاً در حال گرانتر کردن جلسه است. اگر هزینه محرک اصلی شماست، باید تمرکز خود را از ابزارهای سمت عامل به خط لولههای پیشپردازش (pre-processing pipelines) تغییر دهید.
گام بعدی شما
- توقف استفاده از ابزارهای داخلی MCP برای پاکسازی پرامپتهای ورودی
- پیادهسازی یک خط لوله پیشپردازش (Pre-processing) در سطح سیستمعامل یا CLI
- بررسی تنظیمات لولهکشی در محیط ترمینال برای حذف متون زائد پیش از ارسال به مدل
این تنها آغاز ماجراست؛ اثر موجگونهی این تصمیم بر اکوسیستم ابزارهای متنباز را در گزارش بعدی بررسی خواهیم کرد.




گفتگو