جلوگیری از کندی و هزینه بالای Claude Code
با دستور /context متوجه شوید چه چیزی حافظه را پر کرده است. با حذف موارد غیرضروری و استفاده از /clear و /compact، از ارسال مجدد کل محتوا و افزایش هزینه جلوگیری کنید.
چگونه از کند و پرهزینه شدن یک نشست طولانی Claude Code جلوگیری کنیم
یک نشست طولانی Claude Code به این دلیل کند و پرهزینه میشود که در هر نوبت، کل محتوا (context) مجدداً ارسال میشود و این محتوا دائماً در حال افزایش است. راهحل، رعایت بهداشت نشست در یک ترتیب مشخص است. دستور /context را اجرا کنید تا ببینید چه چیزی پنجره محتوا را پر کرده است، سپس مواردی که بابت هر درخواست برای آنها هزینه میپردازید را حذف کنید. پس از آن، بین وظایف نامرتبط از /clear و در طول یک وظیفه طولانی از /compact به همراه یک دستورالعمل استفاده کنید. کار را به صورت پیوسته انجام دهید، زیرا سرد شدن حافظه پنهان (prompt cache) باعث میشود یک خواندن ارزان، به بازنویسی کامل تمام گفتههای شما تبدیل شود.
دلیل اینکه چرا کنتور هزینه در تمام مدت فعال است، در کنتور توکن در پشت یک نشست عامل توضیح داده شده است.
پیش از هر تغییری، /context را بخوانید
حدس نزنید که چه چیزی پنجره را پر میکند. Claude Code به شما خواهد گفت.
/context [all] وضعیت فعلی مصرف context را به صورت یک شبکه رنگی نمایش میدهد، همراه با پیشنهادهایی برای بهینهسازی ابزارهای سنگین و کاهش اشغال حافظه؛ all جزئیات هر مورد را در حالت تمامصفحه باز میکند. نتیجه را به عنوان پنج دسته در نظر بگیرید.
- پرامپت سیستم. دستورالعملهای اصلی Claude Code. برای کل نشست ثابت است.
- تعریف ابزارها. طرحواره (schema) برای هر ابزاری که عامل میتواند فراخوانی کند، شامل تمام سرورهای متصل MCP (پروتکل زمینه مدل).
- فایلهای حافظه.
CLAUDE.mdو حافظه خودکار که در شروع نشست بارگذاری میشوند. - فایلها و نتایج ابزارها. هر فایلی که خوانده شده و هر خروجی که دستورات شما چاپ کردهاند.
- تاریخچه پیامها. نوبتهای شما و پاسخهای مدل.
سه مورد اول، هزینهای ثابت هستند که در هر درخواست در طول عمر نشست پرداخت میشوند. دو مورد آخر رشد میکنند. هزینه ثابت را یکبار در ابتدا کاهش دهید؛ بخش در حال رشد را بهطور مداوم مدیریت کنید.
دو رشته متنی به شما میگویند که پنجره پر شده است:
Context exceeds the 200k-token limit by 94k tokens — run /compact or /clear to continue.
Context is 94k tokens past the 200k-token compaction window — run /compact to reduce usage.اولی یک محدودیت سخت است و درخواست رد میشود؛ خطای API (رابط برنامهنویسی کاربردی) مربوطه Prompt is too long است. دومی یک پنجره فشردهسازی است که میتواند در مدلهای 1 میلیون توکنی، پایینتر از پنجره واقعی مدل قرار بگیرد. درخواستها پس از آن همچنان موفق هستند، بنابراین این مورد بیشتر یک هشدار است تا یک رد درخواست.
در طرحهای پولی، /usage نیمه دیگر را اضافه میکند و رفتارهایی مانند context طولانی یا cache miss را علامتگذاری کرده و استفاده اخیر را به مهارتها، زیر-عاملها و سرورهای MCP خاص نسبت میدهد. اگر به شما اعلام کرد که سهمیه مصرف شده است، اینکه منتظر کدام پنجره محدودیت هستید تعیین میکند که آیا کاهش context در حال حاضر به شما کمک میکند یا نیاز به مسیر متفاوتی برای ادامه کار دارید.
فایل CLAUDE.md یک هزینهٔ دائمی است، پس آن را مختصر نگه دارید
فایل CLAUDE.md شما در ابتدای نشست در حافظه بارگذاری میشود و همانجا باقی میماند. اگر این فایل شامل یک دستورالعمل استقرار مفصل باشد، آن توکنها حتی هنگام اصلاح یک غلط تایپی در فایل تست نیز در حافظه اشغال هستند. توصیهٔ Anthropic این است که فقط موارد ضروری را در آن بگنجانید و حجم فایل را زیر 200 خط نگه دارید.
روالها را به مهارتها (Skills) منتقل کنید. یک مهارت فقط هنگام فراخوانی بارگذاری میشود، بنابراین گردش کاری که دو بار در هفته اجرا میکنید، در سایر روزها هزینهای ندارد. مهارتها پس از فشردهسازی (compaction) بودجهٔ خود را دارند: بدنهٔ آنها مجدداً تزریق میشود، با سقف 5,000 توکن برای هر مهارت و در مجموع 25,000 توکن، که قدیمیترینها زودتر حذف میشوند. برش (Truncation) ابتدای فایل را حفظ میکند، بنابراین مهمترین دستورالعملها را در بالای SKILL.md قرار دهید.
آنچه از فشردهسازی جان سالم به در میبرد، تعیین میکند که یک دستورالعمل به کجا تعلق دارد.
- پرامپت سیستم و سبک خروجی بدون تغییر باقی میمانند، زیرا بخشی از تاریخچهٔ پیامها نیستند.
- فایل
CLAUDE.mdدر ریشهٔ پروژه، قوانین بدون محدوده (unscoped) و حافظهٔ خودکار از روی دیسک مجدداً تزریق میشوند. - یک قانون با فرادادهٔ
paths:تا زمانی که فایل مربوطه دوباره خوانده نشود، از دست میرود. - یک
CLAUDE.mdتو در تو در یک زیرپوشه تا زمانی که فایلی در آن زیرپوشه دوباره خوانده نشود، از دست میرود. - هوکها (Hooks) تحت تأثیر قرار نمیگیرند، زیرا یک هوک به عنوان کد اجرا میشود و هرگز وارد حافظهٔ متنی (context) نمیشود.
بنابراین، قانونی که به آن وابستهاید باید در CLAUDE.md در ریشهٔ پروژه قرار بگیرد: Claude Code ابتدا خروجیهای قدیمیتر ابزارها را پاک کرده و سپس خلاصهسازی میکند، بنابراین دستورالعملهای ابتدای گفتگو ممکن است از دست بروند. حافظه را با /memory ویرایش کنید. Claude Code نسخهای را که در ابتدای نشست بارگذاری کرده نگه میدارد، بنابراین کوتاه کردن حافظه در میانهٔ نشست، کش پرامپت را حفظ میکند و تا زمان /clear، /compact یا راهاندازی مجدد اعمال نمیشود. از دست رفتن حافظهٔ متنی تنها یکی از دلایلی است که باعث میشود یک قانون دیگر رعایت نشود؛ بنابراین وقتی قانون بهوضوح در پنجرهٔ متنی موجود است و با این حال نادیده گرفته میشود، پیش از بازنویسی آن، سایر دلایل را بررسی کنید.
/clear بین وظایف، /compact در داخل یک وظیفه
این دو دستور مشابه به نظر میرسند اما هزینههای بسیار متفاوتی دارند.
/clear [name] یک گفتگوی جدید با کانتکست خالی شروع میکند. این دستور هیچ درخواستی ارسال نمیکند، بنابراین هزینهای ندارد. یک نام برای برچسبگذاری گفتگوی قبلی در انتخابگر /resume وارد کنید؛ /reset و /new نامهای مستعار آن هستند. به محض اینکه به سراغ یک وظیفه نامرتبط میروید از آن استفاده کنید، زیرا در غیر این صورت، وظیفه قدیمی در هر پیام جدید مجدداً ارسال و محاسبه هزینه میشود.
/compact [instructions] کانتکست را آزاد میکند در حالی که همان گفتگو ادامه مییابد: این دستور تاریخچه تا آن لحظه را خلاصه کرده و جایگزین آن میکند. از این دستور در یک وظیفه طولانی که همچنان به تداوم نیاز دارید، استفاده کنید.
همیشه به /compact یک دستورالعمل بدهید. یک /compact خالی، خلاصه را بر اساس یک پرامپت پیشفرض انجام میدهد که نمیداند کدام بخش از کار را هنوز نیاز دارید. استفاده از دستورالعمل باعث حفظ آن بخش میشود:
/compact focus on the auth bug fix
/compact keep only the plan and the diffاگر همیشه به یک دلیل مشابه فشردهسازی (compact) میکنید، یک دستورالعمل ثابت در CLAUDE.md پروژه خود تحت عنوان # Compact instructions قرار دهید. در یک نشست جدید، /compact عبارت Not enough messages to compact. را چاپ میکند که فقط به این معنی است که هنوز تاریخچهای وجود ندارد.
دو هزینه در اینجا با هم اشتباه گرفته میشوند. درخواست خلاصهسازی، پیشوند شما را به اشتراک میگذارد، بنابراین به جای پردازش مجدد تاریخچه، کش موجود را میخواند و بیشتر زمان آن صرف تولید خلاصه میشود. فشردهسازی یک کانتکست بزرگ همچنان یک درخواست سنگین است، زیرا گفتگویی که در حال خلاصهسازی است، ورودی محسوب میشود. نوبت پس از فشردهسازی بخش کند کار نیست: این مرحله کش را برای یک پرامپت بسیار کوتاهتر بازسازی میکند.
دو دستور ارزانتر نیز وجود دارد. /rewind [description] کد و گفتگو را به یک نقطه بازرسی (checkpoint) برمیگرداند؛ برای مسیری که میخواهید کاملاً رها کنید، این دستور از فشردهسازی بهتر است، زیرا آن را تا پیشوندی که از قبل کش شده است، کوتاه میکند. /recap یک خلاصه را به عنوان خروجی دستور اضافه میکند به جای اینکه جایگزین تاریخچه شود، بنابراین پیشوند کششده دستنخورده باقی میماند.
فشردهسازی خودکار که مکرراً اجرا شود، این پیام را چاپ میکند:
Autocompact is thrashing: the context refilled to the limit...فشردهسازی با موفقیت انجام شد، اما یک فایل یا خروجی ابزار چندین بار متوالی پنجره را پر کرد، بنابراین Claude Code از تلاش مجدد دست کشید. برای بازیابی، فایل بیش از حد بزرگ را در محدودههای خطی بخوانید، /compact را با تمرکزی که خروجی بزرگ را حذف میکند اجرا کنید، آن کار را به یک subagent منتقل کنید، یا اگر گفتگوی قبلی تمام شده است از /clear استفاده کنید.
سرویسهای MCP سربار ثابت دارند
هر سرویس MCP که به آن متصل میشوید، به تمام درخواستهای کل نشست (session) اضافه میشود. شما هزینه آن را میپردازید، چه از آن استفاده کنید و چه نکنید.
Claude Code این موضوع را تعدیل میکند. تعریف ابزارهای MCP بهصورت پیشفرض به تعویق میافتد، بنابراین تا زمانی که Claude از یک ابزار خاص استفاده نکند، فقط نام ابزارها وارد context میشود. دستور /context را اجرا کنید تا ببینید سرویسهای شما واقعاً چه هزینهای دارند و از /mcp disable <name> برای حذف سرویسی که امروز به آن نیاز ندارید، استفاده کنید. اگر سرویسهای MCP خود را روی یک VPS اجرا میکنید، همین محاسبات تعیین میکند که یک سرور باید حداکثر چند ابزار را ارائه دهد.
این کار را در ابتدای نشست انجام دهید. در حالی که تعاریف به تعویق میافتند، اتصال یا قطع اتصال یک سرویس فقط به انتهای گفتگو اضافه میشود و cache باقی میماند. در مواردی که تعاریف به دلیل غیرفعال بودن جستجوی ابزار یا مستثنی بودن یک سرویس از تعویق، در prefix بارگذاری میشوند، همین تغییر باعث میشود که درخواست بعدی همه چیز را دوباره بخواند.
فیلتر کردن خروجی پرحجم ابزار پیش از ورود به کانتکست
نتیجه یک ابزار، ورودی محسوب میشود و این ورودی در هر نوبت بعدی دوباره ارسال میگردد. یک اجرای آزمایشی که 20,000 توکن خروجی تولید میکند، هزینهای یکباره نیست: شما تا زمانی که آن خروجی از پنجره کانتکست خارج نشود، در هر نوبت هزینه آن را پرداخت میکنید.
فیلتر را در مبدأ انجام دهید. استفاده از یک hook که اجرای آزمایشی را پیش از مشاهده توسط Claude به موارد شکست (failures) محدود میکند، آن حجم عظیم خروجی را به چند صد توکن تبدیل میکند؛ هم در این نوبت و هم در هر بار ارسال مجدد آن:
npm test 2>&1 | grep -E "FAIL|Error:" | head -40خودِ hookها هرگز وارد کانتکست نمیشوند، زیرا به عنوان کد اجرا میگردند. این کار را برای هر ابزاری که خروجی آن از یک صفحه فراتر میرود، انجام دهید. همین منطق برای یک فایل 3,000 خطی نیز صادق است: محدوده خطوط مورد نیاز خود را درخواست کنید، زیرا کل فایل پس از دریافت، در پنجره کانتکست باقی میماند.
محدود کردن دامنه خواندن ایجنت و واگذاری کارهای پرحجم
پرامپتی که نام فایل و مشکل را مشخص میکند، فقط همان فایل را میخواند. در مقابل، یک درخواست کلی برای مرتبسازی پروژه، هر فایلی را که ایجنت مرتبط تشخیص دهد میخواند و تمام این خواندنها در پنجره context باقی میمانند.
کارهای پرحجم را به یک subagent واگذار کنید. اجرای تستها و پردازش لاگها، بخش قابلتوجهی از context را مصرف میکنند؛ یک subagent این خروجیها را در پنجره اختصاصی خود نگه میدارد و فقط یک خلاصه به شما بازمیگرداند. نکته مهم: یک subagent کش اختصاصی خود را میسازد که در اولین فراخوانی هیچ hit ندارد و حتی در حالت subscription نیز از عمر کش 5 دقیقهای استفاده میکند. واگذاری کارها بهطور مطمئن از context اصلی شما محافظت میکند، اما لزوماً همیشه باعث کاهش مجموع توکنهای مصرفی نمیشود.
ساعت کش: کار در بازههای زمانی
کش کردن پرامپت (Prompt caching) همان چیزی است که ارسال مجدد را مقرونبهصرفه میکند: 0.1 برابر نرخ ورودی پایه برای خواندن پیشوند (prefix)، در مقابل 1.25 برابر برای نوشتن آن، یا 2 برابر برای نوشتن آن در طول عمر یکساعته. هر بار استفاده، ورودی را بدون هزینه اضافی تازه میکند، بنابراین ساعت از زمان آخرین استفاده شروع به کار میکند. این ضرایب شکل صورتحساب را به شما نشان میدهند، نه اندازه آن را؛ بنابراین آنها را با هزینه واقعی یک میلیون توکن ترکیب کنید تا یک پنجره متنی کامل را به یک رقم دلاری تبدیل کنید.
اینکه چه طول عمری دریافت میکنید به نحوه احراز هویت شما بستگی دارد، و اینجاست که عبارت کلی «کش شما پس از پنج دقیقه منقضی میشود» نادرست است.
- در اشتراک Claude، درخواستهای Claude Code بهطور خودکار طول عمر یکساعته را دریافت میکنند.
- هنگامی که از محدودیت طرح خود عبور میکنید و از اعتبار مصرف (usage credits) استفاده میکنید، هزینه آن مصرف از شما کسر میشود، بنابراین طول عمر به پنج دقیقه کاهش مییابد.
- در استفاده از API key یا ارائهدهنده ابری، طول عمر روی پنج دقیقه باقی میماند.
ENABLE_PROMPT_CACHING_1H=1امکان انتخاب طول عمر یکساعته را فراهم میکند وFORCE_PROMPT_CACHING_5M=1آن را به حالت قبل بازمیگرداند.
توصیه مربوط به ریتم کار در هر دو حالت یکسان است: در بازههای زمانی پیوسته کار کنید، زیرا یک وقفه غیرفعال پس از پایان طول عمر باعث میشود نوبت بعدی شما کل پیشوند انباشتهشده را دوباره بنویسد. یک نشست جداشده Claude Code در tmux در زمان بیکاری هزینهای ندارد، و کش گرم همان چیزی است که زمان بیکاری از دست میدهد.
برخی اقدامات در حالی که هنوز مشغول کار هستید، کش را از بین میبرند: تغییر مدل، تغییر سطح تلاش (effort level)، روشن کردن حالت سریع (fast mode)، اتصال یا قطع اتصال یک سرور MCP، فعال یا غیرفعال کردن یک افزونه، رد کردن کامل یک ابزار، فشردهسازی (compacting) و ارتقای Claude Code. /model معمولاً غافلگیرکننده است، زیرا هر مدل کش مخصوص به خود را دارد، بنابراین درخواست بعدی کل تاریخچه را بدون هیچگونه cache hit میخواند، حتی اگر محتوا یکسان باشد. آن خواندن مجدد با نرخهای مدل مقصد محاسبه میشود، بنابراین تغییر مدل در میانه نشست به Fable، کل تاریخچه انباشتهشده شما را با نرخ ورودی اعلامشده Fable 5 محاسبه میکند.
ویرایش فایلها، ویرایش CLAUDE.md، فراخوانی مهارتها و دستورات، اجرای /recap، بازگشت به عقب (rewinding) و ایجاد یک زیرعامل (subagent)، همگی کش را حفظ میکنند. دامنه کش به یک ماشین و یک دایرکتوری محدود است، بنابراین دو نشست در دایرکتوریهای مختلف از کش یکدیگر استفاده نمیکنند. این دامنه از CLI پیروی میکند تا حساب کاربری شما، بنابراین هیچکدام از آن به برنامه دسکتاپ Claude منتقل نمیشود، که در لینوکس یک نصب بتای جداگانه در کنار CLI است.
برای مشاهده اینکه آیا کش کردن کار میکند یا خیر، current_usage را بخوانید. cache_creation_input_tokens با نرخ نوشتن کش نوشته شده است؛ cache_read_input_tokens با تقریباً یکدهم نرخ ورودی استاندارد ارائه شده است. نسبت بالای خواندن به ایجاد، نشاندهنده وضعیت مطلوب است. اگر نرخ ایجاد در نوبتهای متوالی بالا باقی بماند، چیزی در پیشوند شما مدام در حال تغییر است.
آیا پنجره کانتکست بزرگتر این مشکل را حل میکند؟
تا حدی. چندین مدل فعلی از پنجره کانتکست 1 میلیون توکنی پشتیبانی میکنند و فشردهسازی در محدودههای بزرگتر نیز به همان شکل عمل میکند. صرفه اقتصادی تغییر نمیکند، زیرا کل پرامپت همچنان در هر نوبت دوباره ارسال و محاسبه هزینه میشود. پنجره بزرگتر تعیین میکند که چه زمانی مجبور به اقدام هستید؛ اما بهداشتِ پرامپت، هزینه را تعیین میکند. اگر مشکل صورتحساب است و نه سقف محدودیت، کدام طرح Claude با نحوه کار شما متناسب است تعیین میکند که آیا در حال صرف دلار هستید یا از سهمیه طرح استفاده میکنید.
ویرایش کانتکست و فشردهسازی در API دو مقوله متفاوت هستند
اگر در حال ساخت ایجنت اختصاصی خود بر پایه Messages API هستید، هیچ دستور اسلشی (slash command) وجود ندارد و باید خودتان این قابلیت را پیادهسازی کنید. از همان ابتدا برای این کار بودجهبندی کنید، زیرا این API فراتر از یک اعتبار اولیه کوچک، هیچ سطح رایگانی ندارد و هر نوبت از تاریخچه پیامها که کوتاه نشده باشد، بهطور کامل محاسبه هزینه میشود. ارائهدهندهای که انتخاب میکنید، پیش از هرگونه عملیات کوتاه کردن (trimming)، محاسبات مالی را تعیین میکند؛ بنابراین اگر هنوز در مرحله انتخاب هستید، هزینه یک حجم کاری مشخص را در هر دو API محاسبه کنید و صرفاً به مقایسه نرخهای تبلیغاتی به ازای هر توکن بسنده نکنید. دو قابلیت سمت سرور برای این کار وجود دارد که با هم متفاوت هستند.
ویرایش کانتکست (Context editing) بهصورت انتخابی محتوای خاصی را از تاریخچه گفتگو در حین رشد پاک میکند و هر نتیجه پاکشده را با متن جایگزین (placeholder) عوض میکند تا Claude بداند چیزی حذف شده است. این قابلیت در مرحله بتا قرار دارد: anthropic-beta: context-management-2025-06-27 را ارسال کنید و استراتژیها را در context_management.edits پیکربندی نمایید. clear_tool_uses_20250919 نتایج ابزارها را پاک میکند و clear_thinking_20251015 بلوکهای تفکر (thinking blocks) را مدیریت میکند. مقدار پیشفرض trigger آن 100,000 توکن ورودی، keep برابر با 3 استفاده آخر از ابزار، و clear_tool_inputs برابر با false است، بنابراین ورودیها باقی میمانند و فقط نتایج حذف میشوند.
فشردهسازی (Compaction) یک خلاصه تولید کرده و کل تاریخچه گفتگو را با آن جایگزین میکند. این قابلیت نیز در مرحله بتا است: anthropic-beta: compact-2026-01-12 را ارسال کرده و از نوع ویرایش compact_20260112 استفاده کنید. مقدار پیشفرض برای فعالسازی (trigger) برابر با {"type": "input_tokens", "value": 150000} است و مقدار آن باید حداقل 50,000 باشد.
فشردهسازی یک قانون انتقال (handoff) دارد که در صورت عدم رعایت، ایجنتها را از کار میاندازد. پاسخ با یک بلوک محتوایی compaction شروع میشود که حاوی خلاصه است و پس از آن بلوک متنی عادی قرار میگیرد. شما باید آن بلوک را در درخواستهای بعدی بازگردانید تا API بتواند تمام بلوکهای محتوایی پیش از آن را حذف کند. در عمل: کل response.content را ضمیمه کنید، نه فقط متن آن را.
مستندات Anthropic، فشردهسازی سمت سرور را استراتژی اصلی برای مدیریت کانتکست در گفتگوهای طولانیمدت و ویرایش کانتکست را گزینهای برای کنترل دقیقتر بر آنچه حذف میشود، معرفی میکند. ابتدا پشتیبانی مدل را بررسی کنید. مدلهای فعلی Opus، Sonnet و Fable از فشردهسازی پشتیبانی میکنند؛ claude-haiku-4-5 این قابلیت را ندارد و صفحه مربوط به فشردهسازی، لیست بهروز مدلهای پشتیبانیشده را نمایش میدهد. هیچکدام از این قابلیتهای بتا، /compact اختصاصی Claude Code را هدایت نمیکنند؛ چرا که مستندات آن، این مورد را یک درخواست خلاصهسازی یکباره میداند که توسط کلاینت ارسال میشود.
FAQ
چرا با طولانیتر شدن نشست Claude Code، سرعت آن کاهش یافته و هزینهاش بیشتر میشود؟
زیرا در هر نوبت، کل مکالمه مجدداً ارسال میشود؛ بنابراین یک پرسش تکخطی در نشستی که تمام روز باز بوده، کل تاریخچهٔ آن روز را به همراه دارد. قابلیت Prompt caching در صورت گرم بودن کش، هزینه را تا 0.1 برابر نرخ پایهٔ ورودی برای خواندن کاهش میدهد؛ اما به محض اینکه یک نوبت با کش مطابقت نداشته باشد (miss)، همان پیشوند با نرخ 1.25 برابر بازنویسی میشود. دستور /context را اجرا کنید تا ببینید چه چیزی پنجرهٔ زمینه را پر کرده است و برای درک سازوکار آن، نحوه محاسبه هزینههای نشست Claude Code را مطالعه کنید.
تفاوت /clear و /compact در Claude Code چیست؟
دستور /clear یک مکالمهٔ جدید با زمینهٔ خالی آغاز میکند. این دستور هیچ درخواستی ارسال نمیکند، بنابراین هزینهای ندارد و برای جابهجایی بین وظایف نامرتبط، انتخاب مناسبی است. دستور /compact همان مکالمه را حفظ کرده و تاریخچه را با یک خلاصه جایگزین میکند، بنابراین برای استفاده در طول یک وظیفهٔ طولانی مناسب است. به آن یک تمرکز مشخص بدهید، مانند /compact keep only the plan and the diff، زیرا دستورالعمل شما تعیین میکند چه چیزی در خلاصه باقی بماند.
چگونه بفهمم چه چیزی در حال پر کردن پنجرهٔ زمینه (context window) در Claude Code است؟
دستور /context یا برای مشاهدهٔ تفکیک کامل به ازای هر آیتم، دستور /context all را اجرا کنید. این دستورات اعلان سیستم (system prompt)، تعاریف ابزارها، سرورهای MCP، فایلهای حافظه و تاریخچه را به صورت یک شبکهٔ رنگی نمایش میدهند و پیشنهادهایی برای ابزارهای سنگین و موارد اشغالکنندهٔ حافظه ارائه میکنند. در طرحهای پولی، /usage همچنین میزان استفادهٔ اخیر را به مهارتها، زیر-عاملها (subagents) و سرورهای MCP اختصاص میدهد.
آیا باید به جای فشردهسازی (compaction)، از پنجرهٔ زمینهٔ 1 میلیون توکنی استفاده کنم؟
پنجرهٔ بزرگتر مشکل را به تأخیر میاندازد، نه اینکه آن را حل کند. چندین مدل فعلی از پنجرهٔ زمینهٔ 1 میلیون توکنی پشتیبانی میکنند که Opus 4.8 و Sonnet 5 از آن جملهاند، و فشردهسازی در آنها نیز به همان شکل عمل میکند. در هر نوبت، کل اعلان همچنان بازنشر شده و هزینهٔ آن محاسبه میشود؛ بنابراین یک مکالمهٔ 400,000 توکنی، فارغ از اینکه در پنجره جا میشود یا خیر، پرهزینه است.
تفاوت ویرایش زمینه (context editing) و فشردهسازی (compaction) در Claude API چیست؟
ویرایش زمینه بهصورت انتخابی محتوای قدیمی، عمدتاً نتایج ابزارها، را پاک میکند و متن جایگزینی در محل هر کدام قرار میدهد تا Claude بداند که حذف شدهاند. فشردهسازی یک خلاصه تولید کرده و کل تاریخچه را با آن جایگزین میکند. مستندات Anthropic، فشردهسازی را راهکار اصلی برای مکالمات طولانیمدت میداند و ویرایش زمینه را به عنوان گزینهای با دقت بالا (fine-grained) معرفی میکند. هر دو در مرحلهٔ بتا هستند و هدرهای خاص خود را دارند و هر دو از /compact در Claude Code مجزا هستند.