تصور کنید برنامهنویسی هستید که در جستجوی توکنهای تلفشده در Claude Code است؛ این جستجو به حقیقتی غافلگیرکننده ختم شد: مشکل از خودِ عامل (Agent) نیست. در ۲۵ ژوئیه ۲۰۲۶، سازنده یک ابزار تشخیصی جدید به نام Clew گزارش داد که در حالی که انتظار داشت تکرارهای قابلتوجهی در ابزار کاربردی روزمرهاش پیدا کند، دادهها دقیقاً عکس این موضوع را نشان دادند.
این کشف در حالی رخ میدهد که توسعهدهندگان با صورتحسابهای رو به رشد API و «جعبه سیاه» انتقال تسکها در عاملها دستوپنجه نرم میکنند. همانطور که در تحلیل قبلی ما دربارهی نحوه عبور از بازبینی سختگیرانهٔ پلاگینهای Claude از طریق مانیفستهای دقیق اشاره کردیم، تمرکز صنعت اکنون از «چگونه ابزار بسازیم» به «چگونه جلوی استفاده ناکارآمد عاملها از ابزارها را بگیریم» تغییر کرده است. این وضعیت شبیه سرآشپز حرفهای است که دقیقاً میداند از کدام چاقو استفاده کند، در حالی که یک تازهکار در آشپزخانهای با ۵۰۰ گجت مختلف سردرگم شده است؛ در اینجا اتلاف ناشی از مهارت آشپز نیست، بلکه حاصل هرجومرج ابزارهاست. این چالشهای مدیریتی در حالی مطرح میشود که Claude Code با آوردن ابزارهای ویرایش مستقیم به ترمینال سعی کرده است تعامل با کد را تسهیل کند.
مکانیزمهای عملکرد Clew
Clew بدون استفاده از یک مدل زبانی بزرگ (LLM) در چرخه عملیاتی عمل میکند و از دو گیت قطعی (Deterministic Gates) برای شناسایی اتلاف استفاده میکند. این طراحی تضمین میکند که هیچ بردار معنایی (Embedding)، هیچ داوری (Judge) و هیچ مدلی در فرآیند تصمیمگیری دخیل نباشد.
- گیت ساختاری (Structural Gate): بازهها (Spans) را بر اساس ترکیب (گره، ورودی نرمالشده) گروهبندی میکند. گروههایی که شامل دو عضو یا بیشتر باشند، به عنوان کاندیدای اتلاف علامت میخورند.
- گیت شناسایی (Identity Gate): شرط تطابق دقیق هش SHA256 خروجیها را بررسی میکند (
sha256(output_A) == sha256(output_B)). اگر خروجیها بایتبهبایت یکسان باشند، آن جفت به عنوان کاندیدا پذیرفته میشود. اگر خروجیها متفاوت باشند — چه به دلیل تغییر وضعیت، یک تلاش مجدد موفق یا یک رشته متنی اندک متفاوت — آن جفت رد میشود.
پس از شناسایی، Clew برچسبهای گزارشدهی را صرفاً بر اساس نام ابزار اختصاص میدهد. این برچسبها برای راهنمایی خواننده هستند و هرگز زنجیره authoritative SHA256 را تغییر نمیدهند:
error_repeat: پاسخ با یک الگوی خطا مطابقت دارد، که نشان میدهد عامل ابزار را با همان آرگومانهای غلط دوباره اجرا کرده است.side_effect: یک ابزار تغییردهنده وضعیت (مانندEditیاgithub-create_pull_request) با آرگومانهای یکسان دوباره فراخوانی شده است.idempotent: یک ابزار خواندنی یا اعلامی (مانندReadیاfilesystem-list_directory) بهطور مکرر فراخوانی شده است.unclassified: ابزارهایی که اثر آنها به محموله (Payload) بستگی دارد، مانندBash،PowerShell،local-python-executeیاbigquery_run_query.
برای حفظ ثبات، این ابزار از پارامترهای منجمد شده phi = 0.514345 و N = 2 استفاده میکند. مدل Embedding به یک تگ گیت با یک SHA256 مانیفست متصل شده است. مقدار N = 2 در برابر مقادیر {2, 3, 5, inf} در محک RedundancyBench بررسی شد و ثابت کرد که از نظر امتیاز F1 بهینه است، زیرا با افزایش N، مقدار F1 بهطور یکنواخت کاهش مییابد.

دادهها: Claude Code در برابر Toolathlon
به نقل از مستندات پروژه، توسعهدهنده ابتدا برای اعتبارسنجی از RedundancyBench (که دارای دادههای مرجع برچسبگذاری شده توسط انسان است) استفاده کرد. Clew به امتیاز F1 در سطح گام معادل ۰.۲۶۴۲ رسید که از بهترین روش «مدلبهمثابه-داور» در مقاله مذکور با امتیاز ۰.۲۴۸۸ پیشی گرفت و دقت (Precision) آن ۰.۸۲۶ بود. اگرچه فراخوانی (Recall) پایین بود (۰.۱۵۷)، اما ابزار به گونهای طراحی شده بود که یک الگوی محدود را بهخوبی شناسایی کند و بقیه را نادیده بگیرد.
وقتی این ابزار در ۱۹ ژوئیه ۲۰۲۶ در یک اسکن کامل روی trace-commons (شامل ۲۸ جلسه واقعی و عمومی Claude Code) اجرا شد، نتایج برای کسانی که به دنبال اتلاف بودند ناامیدکننده بود. ۲۸ جلسه از ۲۸ جلسه بدون هیچ کرشی (Crash) پردازش شدند. تنها ۱۰ جلسه از ۲۸ جلسه به عنوان «اتلافی» علامتگذاری شدند، در حالی که ۱۸ جلسه هیچ اتلافی نداشتند. مجموع پتانسیل صرفهجویی در این جلسات اتلافی تنها بین ۱.۰۱ تا ۱۰.۱۲ دلار بود (بسته به اینکه ضربه به حافظه پنهان یا Cache-hit باشد یا نباشد). برای جلسه میانه (Median)، هیچ اتلافی شناسایی نشد.
اما تصویر در تحلیل Toolathlon کاملاً تغییر کرد. این محک شامل ۶۷۸۰ مسیر (Trajectory) در ۲۲ مدل پیشرو و ۳ بار اجرا است. از میان ۱۷۶۲۷۰ بازه ابزار، Clew تعداد ۸۰۴۲ جفت تکراری را شناسایی کرد:
- ناحیه خاکستری: ۴۷٪ این موارد (۳۷۹۱ جفت) از نوع
idempotentبودند که در آنها اتلاف به این بستگی دارد که آیا وضعیت خارجی بین دو فراخوانی تغییر کرده است یا خیر. - اتلاف خالص: با حذف ناحیه خاکستری، ۴۲۵۱ جفت باقی ماند (۲.۴۱٪ از کل بازهها). این نرخ تقریباً ۳ برابر بیشتر از جلسات Claude Code (۰.۸۰٪) است.
- اثرات جانبی: این بخش شامل ۱۳۴۳ جفت
side_effectبود، از جمله ۴۵۹ جفت تکراریemail-sendدر مدلهای پیشرو.
تراکم کاندیداهای اتلاف بهشدت متغیر بود و از ۰.۱۵۷ تا ۸.۴۶۳ در هر مسیر نوسان داشت (یک تفاوت ۵۴ برابری بین مدلها). با این حال، چون Toolathlon تنها برچسبهای «پاس/فیل» را ارائه میدهد و دادههای مرجع در سطح گام ندارد، توسعهدهنده هشدار داد که نمیتوان ادعا کرد یک مدل بیشتر از دیگری اتلاف دارد، زیرا ترکیب تسکها و نرخ موفقیت کنترل نشدهاند.

چرا بازخوانی فایلها اتلاف نیست؟
یکی از نقاط عطف این پروژه، شکست تشخیصدهنده «بازخوانی فایل» بود. توسعهدهنده یک تشخیصدهنده را پیشثبت کرد تا عاملهایی را بگیرند که یک فایل را دوبار میخوانند بدون اینکه بین این دو خواندن، هیچ ویرایشی صورت گیرد. این مورد مستلزم دو بازه Read روی یک مسیر کانونی (Canonical Path) بود، بدون اینکه ابزار نویسنده یا دستور Bash/PowerShell بین آنها باشد.
فرآیند پیشثبت سختگیرانه است: پیشبینیها و شرایط توقف باید قبل از اجرای نتایج در PR ارسال شوند. آستانه موفقیت K4، دقت ۷۰٪ روی یک نمونه تصادفی ۳۰ جفتی بود. در ۲۴ ژوئیه ۲۰۲۶، با استفاده از seed تصادفی ۴۲، ابزار ۳۰ جفت را از مجموع ۲۰۹ جفت Read شناسایی شده نمونهبرداری کرد.
تنها ۱ جفت از ۳۰ جفت دارای آرگومانهای یکسان بود. ۲۹ مورد دیگر در واقع بازخوانی بخشهای مختلف یک فایل بودند (مثلاً offset=163, limit=100 و سپس offset=260, limit=40). این یک گردش کار نرمال است، نه اتلاف. آن یک مورد تطبیقی هم مربوط به یک PDF رمزگذاریشده بود که دوبار پیام خطای یکسان داد — یعنی یک تلاش مجدد برای ابزار شکستخورده، نه بازخوانی فایل.
با دقت سختگیرانه ۰٪ (یا ۳.۳٪ اگر PDF شمرده شود)، این تشخیصدهنده آستانه ۷۰٪ را رد کرد. این قابلیت «کشته شد» و تابع find_reread_candidates قبل از انتشار نسخه ۰.۳.۰ از سورس کد حذف شد. یک تلاش بعدی با استفاده از گیت args_equal تنها ۶ جفت را در کل مجموعه یافت: سه مورد قبلاً توسط مسیر ساختاری/SHA256 گرفته شده بودند و سه مورد دیگر همان PDF تکراری بودند. این تشخیصدهنده برای همیشه حذف شد.
یافته اصلی: رابطه سطح ابزار و اتلاف
دادهها همبستگی مستقیمی را بین «سطح ابزارها» (Tool Surface Area) و «اتلاف» نشان میدهند. Claude Code از حدود ۲۰ ابزار استفاده میکند و بهینه میماند، اما عاملهای Toolathlon با ۵۲۳ ابزار متمایز کار میکنند و دچار تکرار میشوند. این یعنی اتلاف محصول ارکستراسیون ابزار است؛ وقتی مدل گزینههای جایگزین زیادی دارد، شروع به تکرار میکند. این موضوع در راستای تلاشهای گستردهتر برای کاهش هزینههای عملیاتی است، مشابه آنچه در معماری TokenFold برای کاهش ۳۰ درصدی هزینههای عاملها مشاهده شد.
در این مسیر، چندین فرضیه رد شد:
- شکافهای نرمالسازی: آداپتورها قبل از هشینگ دادهها را یکسان میکنند، پس ترتیب کلیدهای JSON تأثیری نداشت.
- تلاشهای احمقانه (Dumb Retries): تقریباً غایب بودند؛ Claude Code معمولاً خطا را میخواند و آرگومانها را تغییر میدهد.
- پینگپنگ خواندن-ویرایش: باز کردن یک فایل ۷۶ بار، به دلیل ویرایش بخشهای مختلف، رفتار نرمال توسعه بود.
- جلسات ناکارآمد: هیچ همبستگی بین جلساتی که توکنهای بیشتری سوزانده بودند و جلساتی که تکرارهای بیشتری داشتند، یافت نشد.
تنها الگوی واقعی، «تجمع زمینه» (Context accumulation) بود. عملیات خواندن ۶۵ تا ۹۰ درصد توکنها را میبلعد و یک فایل خوانده شده تا حدود ۱۵۲ نوبت در زمینه میماند. اما تشخیص اینکه آیا این زمینه در نوبت ۱۴۰ هنوز لازم است یا خیر، یک قضاوت کیفی است، نه یک مقایسه هش قطعی. این چالش با رویکردهایی نظیر اولویتدهی به مستندات فنی برای بهینهسازی توکنها را میتوان مدیریت کرد تا از پراکندگی پروژه جلوگیری شود.
این تغییر دیدگاه، معیار بهرهوری عاملها را عوض میکند. کاهش تعداد ابزارهای در دسترس یا دستهبندی بهتر آنها، بسیار مؤثرتر از این است که صرفاً در پرامپت به مدل بگوییم «بهینهتر باش».
برای توسعهدهندگان، این یعنی تمرکز باید روی مسیریابی ابزارها (Tool Routing) و جایگذاری حافظه پنهان (Cache) باشد. اگر عامل شما یک سطح ابزار MCP عظیم با بیش از ۱۰۰ ابزار از تامینکنندگان مختلف دارد، احتمالاً توکنهای زیادی را روی فراخوانیهای تکراری میسوزانید که یک مجموعه ابزار کوچکتر و منتخب از آنها جلوگیری میکرد.
پیادهسازی و استفاده
Clew یک ابزار تشخیصی است، نه یک راهکار اصلاحی. این ابزار گزارش Markdown تولید میکند و تصمیم درباره تغییر پرامپتها یا مسیریابی ابزارها بر عهده توسعهدهنده است. در حال حاضر از فرمتهای JSONL جلسات CC، OpenTelemetry SDK-JSON، OpenInference (Phoenix / TRAIL)، Toolathlon و RedundancyBench پشتیبانی میکند. فرمتهای Cursor و Codex هنوز در حال ارزیابی هستند.
برای تضمین یکپارچگی ابزار، ۲۳۹ تست همراه با CI برای هر PR وجود دارد. تغییر پارامتر phi مستلزم کالیبراسیون مستند است، زیرا به عنوان یک تست شکستخورده اعمال میشود.
برای شروع تشخیص روی لاگهای خود، میتوانید ابزار را نصب کنید:pip install "clew-custos[detect]"
و سپس اجرا کنید:python -m clew analyze ~/.claude/projects//.jsonl --out report.md
(توجه: نام clew در PyPI مربوط به پروژه دیگری است؛ حتماً از clew-custos استفاده کنید). مخزن کامل در گیتهاب با نام https://github.com/JEONSEWON/Clew-by-Custos در دسترس است.
گام بعدی شما
- اگر از سیستمهای عاملمحور با تعداد ابزار زیاد (بیش از ۵۰ مورد) استفاده میکنید، تعداد ابزارهای در دسترس مدل را کاهش دهید یا آنها را در دستههای کوچکتر تقسیم کنید.
- از ابزار Clew برای شناسایی الگوهای
side_effectدر لاگهای خود استفاده کنید تا متوجه شوید مدل کجاها در حال تکرار عملیاتهای تغییردهنده است. - استراتژی مسیریابی ابزارها را جایگزین دستورات کلی «بهینهسازی» در پرامپت سیستمی کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو