Як пришвидшити й здешевити довгу сесію Claude Code
Кожен запит повторно передає весь контекст. Виконайте /context, приберіть постійні витрати, а потім очистьте й стисніть сесію за потреби.
Як не дати довгій сесії Claude Code сповільнитися та стати дорожчою
Довга сесія Claude Code сповільнюється й стає дорожчою, тому що кожен запит повторно передає весь контекст, а цей контекст постійно збільшується. Виправляйте це в установленому порядку. Виконайте /context, щоб побачити, що заповнює контекстне вікно, вилучіть елементи, за які ви платите в кожному запиті, потім використовуйте /clear між непов’язаними завданнями, а /compact — з інструкцією в межах одного довгого завдання. Працюйте без тривалих перерв, оскільки холодний кеш промптів перетворює дешеве читання на повний повторний запис усього сказаного вами.
Причину постійного нарахування витрат пояснює лічильник токенів у сесії агента.
Прочитайте /context, перш ніж щось змінювати
Не вгадуйте, чим заповнене вікно. Claude Code повідомить вам про це.
/context [all] відображає поточне використання контексту у вигляді кольорової сітки з рекомендаціями щодо оптимізації для інструментів, які використовують багато контексту, і надмірного використання пам’яті; all розгортає деталізацію за елементами в повноекранному режимі. Інтерпретуйте результат за п’ятьма категоріями.
- Системний prompt. Власні інструкції Claude Code для виконання. Фіксовані протягом сеансу.
- Визначення інструментів. Схема кожного інструмента, який може викликати агент, зокрема кожного підключеного сервера MCP (Model Context Protocol).
- Файли пам’яті.
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 (application programming interface) має вигляд Prompt is too long. Другий — це вікно компактування, яке на моделі з 1 million token може бути меншим за фактичне контекстне вікно. Запити після його досягнення все ще виконуються, тому це попередження, а не відмова.
У платному плані /usage додає другу частину інформації та позначає такі фактори, як великий контекст або промахи кешу, розподіляючи нещодавнє використання між окремими навичками, субагентами й серверами MCP. Якщо він повідомляє, що ліміт уже вичерпано, яке вікно ліміту ви очікуєте визначає, чи допоможе вам зараз скорочення контексту, чи потрібен інший спосіб відновити роботу.
CLAUDE.md — це постійні витрати контексту, тому тримайте його компактним
Ваш CLAUDE.md завантажується в контекст на початку сеансу й залишається там. Якщо в ньому описано детальну процедуру розгортання, ці токени присутні навіть тоді, коли ви виправляєте помилку в тестовому файлі. У рекомендаціях Anthropic радять додавати лише необхідне й обмежувати файл 200 рядками.
Переносьте процедури в skills. Skill завантажується лише після виклику, тому робочий процес, який ви запускаєте двічі на тиждень, не витрачає ресурси в інші дні. Після compaction skills мають окремий бюджет: до 5,000 токенів на skill і до 25,000 загалом; найстаріші вилучаються першими. Під час скорочення зберігається початок файлу, тому розміщуйте найважливіші інструкції на початку SKILL.md.
Місце для інструкції визначає те, що зберігається після compaction.
- System prompt і стиль виводу не змінюються, оскільки вони не є частиною історії повідомлень.
- Кореневий для проєкту
CLAUDE.md, правила без обмеження області дії та автоматична пам’ять повторно завантажуються з диска. - Правило з frontmatter
paths:втрачається, доки відповідний файл не буде прочитано знову. - Вкладений
CLAUDE.mdу підкаталозі втрачається, доки файл у цьому підкаталозі не буде прочитано знову. - Hooks продовжують виконуватися, оскільки hook запускається як код; лише контекст, який hook додав раніше, узагальнюється разом з рештою розмови.
Тому правило, від якого залежить робота, має міститися в кореневому для проєкту CLAUDE.md: Claude Code спочатку очищає старі результати інструментів, а потім створює підсумок, тому інструкції з початку розмови можуть втратитися. Редагуйте пам’ять за допомогою /memory. Claude Code зберігає копію, завантажену на початку сеансу, тому скорочення посеред сеансу зберігає prompt cache і набуває чинності лише після наступного /clear, /compact або перезапуску. Втрата контексту — лише одна з причин, через яку правило перестають виконувати, тому якщо правило явно все ще перебуває у вікні, але його все одно ігнорують, спочатку перевірте інші причини, а вже потім переписуйте його.
очищення між завданнями, /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Якщо щоразу стискаєте контекст з однієї й тієї самої причини, додайте постійну інструкцію до CLAUDE.md свого проєкту під заголовком # Compact instructions. У новій сесії /compact виводить Not enough messages to compact.. Це означає, що в розмові замало ходів для підсумовування. Таке може статися навіть за повного контексту, якщо один великий фрагмент вставленого тексту заповнив його.
Тут часто плутають дві складові вартості. Запит на підсумовування використовує спільний префікс, тому читає наявний кеш, а не повторно обробляє історію. Більша частина часу витрачається на створення підсумку. Стискання великого контексту все одно є великим запитом, оскільки розмова, яку потрібно підсумувати, є його вхідними даними. Хід після стискання не є повільною частиною: кеш перебудовується для значно коротшого промпту.
Є дві дешевші команди. /rewind повертає код і розмову до контрольної точки. Для шляху, від якого потрібно повністю відмовитися, ця команда краща за стискання, оскільки обрізає історію до префікса, який уже є в кеші. /recap додає підсумок як вивід команди, не замінюючи історію, тому кешований префікс залишається незмінним.
Автоматичне стискання, яке запускається знову й знову, виводить таке:
Autocompact is thrashing: the context refilled to the limit...Стискання виконано, але файл або вивід інструмента кілька разів поспіль знову заповнив вікно, тому Claude Code припинив повторні спроби. Відновіть роботу, читаючи великий файл діапазонами рядків, запустивши /compact із фокусом, який виключає великий вивід, передавши цю роботу субагенту або виконавши /clear, якщо попередня розмова вже завершена.
MCP-сервери створюють фіксовані накладні витрати
Кожен підключений MCP-сервер збільшує кожен запит протягом усієї сесії. Ви сплачуєте за це незалежно від того, викликаєте його чи ні.
Claude Code пом’якшує цю проблему. За замовчуванням визначення інструментів MCP завантажуються відкладено, тому в контекст потрапляють лише назви інструментів, доки Claude не використає конкретний інструмент. Виконайте /context, щоб побачити фактичні витрати ваших серверів, і /mcp disable <name>, щоб від’єднати сервер, який сьогодні не використовуватимете. Якщо ви запускаєте власні MCP-сервери на VPS, те саме обмеження визначає, скільки інструментів має надавати один сервер.
Зробіть це на початку сесії. Поки визначення завантажуються відкладено, підключення або від’єднання сервера лише додає дані до розмови, а кеш зберігається. Якщо визначення натомість завантажуються в префікс, оскільки пошук інструментів вимкнено, недоступний або не досягає порога auto, така сама зміна змусить наступний запит повторно прочитати все.
Фільтруйте багатослівний вивід інструментів до його потрапляння в контекст
Результат роботи інструмента є вхідними даними, а вхідні дані повторно надсилаються під час кожного наступного ходу. Тестовий запуск, який виводить 20,000 токенів, не є одноразовою витратою: ви платите за нього знову під час кожного ходу, доки цей вивід не залишить вікно.
Фільтруйте дані на джерелі. Hook, який скорочує результат тестового запуску до повідомлень про помилки до того, як Claude його побачить, перетворює цей великий вивід на кілька сотень токенів — під час цього ходу та під час кожного повторного надсилання:
npm test 2>&1 | grep -E "FAIL|Error:" | head -40Hooks самі не потрапляють у контекст, оскільки виконуються як код. Застосовуйте цей підхід до будь-якого інструмента, вивід якого перевищує один екран. Та сама логіка стосується файлу на 3,000 рядків: запитуйте потрібний діапазон рядків, оскільки після надходження весь файл залишається у вікні.
Обмежуйте дані, які читає агент, і делегуйте об’ємні завдання
Промпт, у якому вказано файл і симптом, змушує агента прочитати саме цей файл. Відкритий запит на впорядкування проєкту змушує агента читати все, що він вважатиме релевантним, і кожне таке читання залишається в контексті.
Делегуйте об’ємні завдання субагенту. Запуски тестів і обробка журналів споживають реальний обсяг контексту. Субагент зберігає ці результати у власному контексті та повертає лише підсумок. Недолік: субагент створює власний кеш, у якому під час першого виклику немає влучань, і використовує п’ятихвилинний час життя кешу навіть за передплатою. Делегування надійно захищає основний контекст. Воно не завжди зменшує загальну кількість токенів.
Годинник кешу: працюйте без довгих перерв
Кешування промптів робить повторне надсилання доступним за ціною. Запис префікса коштує 1.25x базової ставки за вхідні дані або 2x для терміну дії в одну годину. Повторне читання коштує 0.1x у Haiku 5.5, 0.05x в Opus 5.5 і Sonnet 5.5 ($0.20 і $0.10 за мільйон токенів) та 0.025x у Fable 5.1 ($0.25 за мільйон). Кожне використання оновлює запис без додаткової плати, тому відлік починається з моменту останнього використання. Ці множники показують структуру рахунка, але не його суму, тому зіставте їх із фактичною вартістю мільйона токенів, щоб перевести повне контекстне вікно в суму в доларах.
Доступний термін дії залежить від способу автентифікації. Саме тому твердження «ваш кеш завершується через п’ять хвилин» є неправильним у загальному випадку.
- У разі підписки Claude запити Claude Code автоматично використовують термін дії в одну годину.
- Після вичерпання ліміту вашого плану та переходу на кредити для використання ці запити тарифікуються окремо, тому термін дії повертається до п’яти хвилин.
- Для API key або cloud provider він залишається рівним п’яти хвилинам. Встановлення
promptCacheTtlу1hабоENABLE_PROMPT_CACHING_1H=1вмикає термін дії в одну годину, аFORCE_PROMPT_CACHING_5M=1примусово повертає його до п’яти хвилин.
Порада щодо ритму роботи однакова в обох випадках: працюйте безперервними відрізками, оскільки простій довший за термін дії змушує наступний запит повторно записати весь накопичений префікс. Від’єднаний сеанс Claude Code у tmux нічого не коштує під час простою, але за цей час холоднішає кеш.
Деякі дії видаляють кеш, навіть якщо ви продовжуєте працювати: зміна моделей, зміна рівня зусиль у старіших моделях, увімкнення швидкого режиму, підключення або відключення MCP server, заборона всього інструмента під час попереднього завантаження визначень інструментів, увімкнення або вимкнення plugin, який додає інструменти, compacting, видалення старих зображень після переповнення розмови та оновлення Claude Code. В Opus 5.5, Sonnet 5.5, Haiku 5.5 і Fable 5.1 з API key або підпискою зміна рівня зусиль тепер зберігає кеш. /model зазвичай стає несподіваною проблемою, оскільки кожна модель має власний кеш. Тому наступний запит читає всю історію без cache hits, хоча вміст не змінився. Це повторне читання тарифікується за ставками цільової моделі як новий запис кешу. Тому перехід посеред сеансу на Fable тарифікує всю накопичену історію за опублікованими ставками Fable для запису кешу: $12.50 за мільйон токенів для терміну дії п’ять хвилин або $20 для терміну дії одну годину. Те саме стосується Fable 5 і Fable 5.1.
Редагування файлів, редагування CLAUDE.md, виклик skills і commands, запуск /recap, перемотування назад і запуск subagent зберігають кеш. Кеш має область дії в межах однієї машини та одного каталогу, тому два сеанси в різних каталогах не використовують кеш один одного. Ця область дії визначається CLI, а не обліковим записом. Тому кеш не переноситься до desktop app Claude, яка в Linux є окремою beta-інсталяцією поряд із CLI.
Щоб перевірити роботу кешування, перегляньте current_usage. cache_creation_input_tokens було записано за ставкою запису кешу; cache_read_input_tokens було отримано за ставкою читання кешу моделі — від 2.5% до 10% стандартної ставки за вхідні дані залежно від моделі. Високе співвідношення читання до створення є нормальною ознакою. Якщо створення залишається високим від запиту до запиту, щось у вашому префіксі постійно змінюється.
Чи вирішує цю проблему більший контекст?
Частково. Усі поточні моделі (Fable 5.1, Opus 5.5, Sonnet 5.5 і Haiku 5.5) працюють із контекстним вікном на 1 million токенів, а compaction працює так само й за більшого ліміту. Економіка не змінюється, оскільки повний prompt повторно надсилається та оплачується під час кожного ходу. Більше вікно визначає, коли ви змушені втрутитися; гігієна визначає вартість. Якщо проблема полягає у рахунку, а не в обмеженні, який план Claude відповідає вашому способу роботи визначає, чи витрачаєте ви долари, чи ліміт плану.
Редагування контексту та стискання в API — це різні механізми
Якщо ви створюєте власного агента на Messages API, slash-команд немає, тому цю логіку потрібно реалізувати самостійно. Передбачте витрати на цю роботу від самого початку, оскільки безкоштовні ліміти API не покриють витрати на ваші токени. Нові користувачі отримують невеликий обсяг безкоштовних кредитів для тестування API, а постійний ліміт, який Anthropic зазначає (50 безкоштовних годин на день для організації на сторінці тарифів, 1,550 на місяць у документації), покриває час роботи контейнерів для виконання коду. Він оплачується окремо від токенів. Кожен хід повторно надсилає необрізану історію та оплачує весь її обсяг: за тарифом читання кешу, коли префікс є в кеші, і за повним тарифом для вхідних даних або з надбавкою за запис у кеш, коли його там немає. Провайдер, на якому ви створюєте агента, визначає цю арифметику ще до обрізання контексту. Якщо вибір іще не зроблено, порівняйте вартість одного й того самого навантаження в обох API, а не лише заголовкові тарифи за токен. Дві серверні функції виконують це завдання, але це різні функції.
Редагування контексту вибірково очищає певний вміст історії розмови в міру її зростання та замінює кожен очищений результат текстом-заповнювачем, щоб Claude знав, що частину даних видалено. Це beta-функція: передайте anthropic-beta: context-management-2025-06-27 і налаштуйте стратегії в context_management.edits. clear_tool_uses_20250919 очищає результати інструментів, а clear_thinking_20251015 керує блоками міркувань. Значення trigger за замовчуванням становить 100,000 вхідних токенів, keep — останні 3 використання інструментів, а clear_tool_inputs — false. Тому вхідні дані зберігаються, а видаляються лише результати.
Стискання створює підсумок і замінює ним повну історію розмови. Воно доступне у двох beta-режимах. Порогове стискання виконується в межах звичайних запитів: передайте anthropic-beta: compact-2026-01-12 і використайте тип редагування compact_20260112. Порогове значення за замовчуванням становить {"type": "input_tokens", "value": 150000}, а значення має бути не меншим за 50,000. Стискання за запитом дає змогу коду самостійно визначати момент виконання: передайте anthropic-beta: compact-2026-09-04 із параметром верхнього рівня "compaction": {"type": "summarize"}, і відповідь міститиме лише блок підсумку. В огляді Anthropic щодо стискання зазначено, що стискання за запитом слід використовувати всюди, де воно доступне.
Порогове стискання має одне правило передавання, через яке агенти непомітно перестають працювати. Відповідь починається з блоку вмісту compaction, що містить підсумок, а за ним іде звичайний текстовий блок. Під час наступних запитів потрібно передати цей блок назад, після чого API видалить усі попередні блоки вмісту. На практиці додайте весь response.content, а не лише текст. Стискання за запитом працює навпаки: ви самостійно видаляєте підсумовані повідомлення, розміщуєте повернений блок першим у messages і надсилаєте його без змін, включно з підписом.
У документації Anthropic серверне стискання названо основною стратегією керування контекстом у довготривалих розмовах, а редагування контексту — варіантом для точнішого контролю над даними, які очищуються. Спочатку перевірте підтримку моделлю. Усі поточні моделі підтримують обидва типи стискання, зокрема Haiku 5.5; старіша claude-haiku-4-5 їх не підтримує, а кожна сторінка про стискання містить актуальний список підтримуваних моделей. Жодна з цих beta-функцій не керує власною функцією /compact Claude Code. У документації її описано як окремий запит на підсумовування, який клієнт надсилає разом з історією.
FAQ
Чому сесія Claude Code стає повільнішою та дорожчою, що довше вона працює?
Тому що весь діалог повторно надсилається під час кожного запиту. Тому однорядкове запитання в сесії, яку відкрито весь день, містить увесь контекст цього дня. Prompt caching дає змогу зберегти низьку вартість, поки кеш актуальний: читання коштує 0.1x базової ставки за вхідні дані для Haiku 5.5, 0.05x для Opus 5.5 і Sonnet 5.5 та 0.025x для Fable 5.1. Якщо запит не потрапляє в кеш, той самий префікс записується повторно за ставкою 1.25x або 2x для часу життя в одну годину. Виконайте /context, щоб побачити, що заповнює контекстне вікно, і прочитайте за що Claude Code стягує плату під час сесії, щоб зрозуміти механізм.
У чому різниця між /clear і /compact у Claude Code?
/clear запускає новий діалог із порожнім контекстом. Він не надсилає запит, тому нічого не коштує. Це правильний вибір між непов’язаними завданнями. /compact зберігає той самий діалог і замінює історію підсумком. Тому його слід використовувати в межах одного тривалого завдання. Вкажіть фокус, як у /compact keep only the plan and the diff, оскільки інструкція визначає, що саме буде збережено.
Як дізнатися, що саме заповнює контекстне вікно Claude Code?
Виконайте /context або /context all, щоб переглянути повну деталізацію за елементами. Команда показує системний промпт, визначення інструментів, MCP servers, memory files та історію у вигляді кольорової сітки. Також вона пропонує оптимізації для інструментів, що споживають багато контексту, і надмірного обсягу пам’яті. У платному плані /usage також розподіляє нещодавнє використання між окремими skills, subagents і MCP servers.
Чи слід використовувати контекстне вікно на 1 million token замість compaction?
Більше контекстне вікно лише відтерміновує проблему, а не усуває її. Кожна поточна модель (Fable 5.1, Opus 5.5, Sonnet 5.5 і Haiku 5.5) працює з контекстним вікном на 1 million token, і compaction працює там так само. Під час кожного запиту повний промпт усе одно надсилається повторно, і плата за нього все одно стягується. Тому діалог на 400,000 token буде дорогим незалежно від того, чи поміщається він у вікно.
У чому різниця між context editing і compaction у Claude API?
Context editing вибірково очищає старий вміст, переважно результати інструментів, залишаючи на місці кожного з них текст-заповнювач. Завдяки цьому Claude знає, що цей вміст було видалено. Compaction створює підсумок і замінює ним повну історію. У документації Anthropic compaction названо основною стратегією для тривалих діалогів, а context editing — детальнішим варіантом. Обидва механізми перебувають у статусі beta та мають власні заголовки. Обидва також окремі від /compact у Claude Code.