Година роботи над завданням, і агент раптом пропонує варіант, який ви пів години тому відхилили (так, той самий). Або переказує файл, який ви вже поправили руками. Схоже на забудькуватість, а насправді так влаштована робота: агент дивиться у вікно обмеженого розміру і бачить там не проєкт цілком, а тільки те, що в це вікно потрапило.
Розберемо, що займає вікно, як зазирнути в нього командою /context і що робити, коли вільного місця майже не лишилося.
Контекст і його межа
Контекст - відомості, доступні моделі для чергового кроку: ваші повідомлення, відповіді агента, прочитаний код, вивід команд, інструкції проєкту. Контекстне вікно задає межу того, скільки таких відомостей вміщається одночасно. Це не вільне місце на диску і не оперативна пам'ять вашого комп'ютера.
Звідси різниця, через яку найчастіше й виникає плутанина. Три речі, які в голові легко зливаються в одну:
- файли на диску - вміст проєкту, який можна прочитати інструментами;
- збережена історія сесії - запис розмови, вона лежить на диску і відкривається заново;
- поточний контекст - те, що доступне моделі саме зараз.
Набори пов'язані, але не збігаються. Файл може лежати в теці і жодного разу не потрапити в розмову. А в розмові може лишитися версія файлу, якій уже пів години. Тому фраза "ми ж це обговорювали" сама по собі ще не означає, що перед агентом актуальні відомості.
- Файл проєкту
- Читання інструментом
- Відомості для відповіді
Між тим, що файл існує, і тим, що агент про нього знає, стоїть крок читання. Claude Code робить цей крок сам: шукає у проєкті, відкриває потрібне, переходить до пов'язаного коду. Перелічувати кожен шлях заздалегідь не потрібно. але поки крок не зроблено, для розмови файлу немає.
Обсяг усього цього міряють у токенах - шматочках тексту, на які модель розбиває і ваш запит, і прочитаний код. Токен може виявитися цілим словом, а може його частиною, тож порахувати токени за кількістю слів не вийде.
Що займає вікно до першого запитання
Вікно зайняте ще до того, як ви надрукували перше слово. Команда /context показує, чим саме:
Сесія щойно відкрита, а 4k із 200k токенів уже зайняті, і це чиста службова частина: System prompt - інструкції самого агента, Memory files - підхоплені CLAUDE.md і правила проєкту, Skills - перелік доступних агенту вмінь. Рядок Messages, тобто власне листування, поки порожній.
А ось який це має вигляд через годину роботи, та ще й з парою підключених MCP-серверів:
/context
System prompt 3.2k ( 2%) службові інструкції
System tools 12.1k ( 6%) описи вбудованих інструментів
MCP tools 21.4k (11%) підключені зовнішні сервери
Memory files 1.8k ( 1%) CLAUDE.md, rules, auto memory
Messages 45.2k (22%) ваш діалог, файли, логи
Free space 116.3k (58%)Це схема, а не вивід конкретної версії: набір рядків і їхнє розташування на екрані залежать від версії Claude Code і від того, що підключено в проєкті, а розмір вікна - від моделі. Але картина завжди приблизно одна. Що з неї варто винести:
- службовий мінімум - інструкції агента й описи його вбудованих інструментів - є завжди, на нього ви не впливаєте;
- кожен підключений MCP-сервер додає у вікно хоча б перелік своїх інструментів, навіть якщо ви ним жодного разу не скористалися. Підключати "хай буде" - означає платити за це в кожній сесії;
- роздутий
CLAUDE.mdтеж оплачується заново під час кожного запуску. Ще один аргумент тримати його коротким; - під час роботи росте, власне, один рядок - повідомлення. За ним і варто стежити.
Якщо Claude Code під рукою: запустіть /context, попросіть прочитати пару файлів і запустіть ще раз. Рядок повідомлень виросте на очах, і стане видно, скільки коштує одне читання.
Що накопичується під час роботи
Далі вікно наповнюєте ви - і не тільки словами. У контекст потрапляє все, що агент прочитав і отримав на ваше прохання:
| Джерело | Що саме займає місце |
|---|---|
| Листування | ваші повідомлення, відповіді агента, зокрема й відкинуті варіанти |
| Прочитані файли | вміст цілком або потрібними фрагментами |
| Результати інструментів | вивід команди, знайдені рядки, спостереження з браузера |
| Матеріали skills і MCP | інструкція skill, який пішов у роботу, опис викликаного інструмента |
Запит і отриманий контекст - дві дуже різні величини. Прохання "покажи весь журнал" складається з трьох слів, а його результат займає тисячі рядків. Саме тому великий вивід буває шкідливіший за довге запитання.
Звідси звичка подавати джерела точково. Значок @ перед шляхом додає файл у розмову, а під час набору шляху працюють підказки: Прочитай @src/reward-flow.js і поясни, де визначається кількість очок. І теку через @ теж не варто сприймати як завантаження вмісту всіх її файлів: посилання на теку дає список файлів, не більше. Вибирайте джерело залежно від запитання. Саме таку різницю між посиланням на файл і теку описано в документації з передавання файлів.
І ще дрібниця. Якщо після цього ви вручну замінили десять на двадцять, попередня відповідь не оновиться сама. Попросіть прочитати поточний вміст перед новим виводом, і все. Посилання на колись прочитаний файл не робить старий текст у розмові живою копією файлу на диску.
Коли місце закінчується
Вікно не гумове, але й сесія не обривається на півслові. Коли вікно заповнюється, Claude Code виконує стиснення: замінює докладну історію коротким викладом і звільняє місце. Відбувається це автоматично, а момент залежить від моделі й налаштувань.
Запустити стиснення можна і самому, командою /compact. Сенс ручного запуску в тому, що ви вибираєте момент - напр. перед новим великим шматком роботи - і можете сказати, що важливо зберегти:
/compact Збережи мету завдання і межі правки,
відкинутий варіант з окремим обробником
і наступний крок: перевірити очищення поля пошуку.Головне про стиснення: у вікні лишається переказ, а не розмова. Деталь, яка не потрапила в цей виклад, з вікна пішла, і сперечатися "ти ж двадцять хвилин тому погодився" після стиснення безглуздо - потрібний факт простіше підняти заново з файлу. Інструкції проєкту при цьому не губляться: кореневий CLAUDE.md завантажується знову.
Друга команда, /clear, не стискає нічого. Вона просто відкриває нову розмову: попередня лишається збереженою і доступною через /resume, файли проєкту не змінюються, інструкції проєкту завантажуються як зазвичай.
| Команда | Що робить | Коли вибирати |
|---|---|---|
/context | показує, чим зайняте вікно | незрозуміло, куди пішло місце |
/compact | згортає історію в короткий виклад | завдання те саме, а історії накопичилося багато |
/clear | починає розмову заново | завдання змінилося |
Правило вибору просте: завдання те саме - стискаємо, завдання інше - відкриваємо нову розмову. Очищати після кожної команди не потрібно, поки ви розбираєте одну проблему, її спостереження й уточнення працюють на вас. А от перед новою темою корисно записати потрібний висновок у пару рядків: "нагорода задається в src/reward-config.js, нарахування - у src/reward-flow.js". Це підказка, куди повернутися, без переписування всієї розмови.
Як витрачати вікно ощадливіше
Жодна з трьох команд не знадобиться так часто, якщо вікно не забивається зайвим із самого початку. Кілька звичок, які дають найбільше:
- Питайте конкретно. На розмитий запит агент відповідає розвідкою: читає зайві файли, перебирає варіанти. Названий файл і назване очікування заощаджують і місце, і час.
- Не вивантажуйте все підряд. Для запитання про падіння тесту потрібні рядки навколо помилки, а не журнал цілком.
- Тримайте інструкції проєкту короткими.
CLAUDE.mdзавантажується в кожній сесії. Довідкові полотна краще живуть в окремих файлах, які читають за потреби. - Вимикайте непотрібні MCP-сервери. Сервер, підключений "про всяк випадок", займає місце в кожному запуску, а користі приносить нуль.
- Велике дослідження доручайте субагенту. Він працює у своєму вікні і повертає підсумок, а десятки прочитаних файлів лишаються в нього.
Що тримати в голові
Контекст - це те, що ви поклали на стіл, а не те, що "є в проєкті". Файл на диску, запис в історії і відомості в поточному вікні - три різні речі, і плутанина між ними (сам іноді плутаю) пояснює більшість дивних відповідей.
Далі все зводиться до трьох дій: подивитися заповнення через /context, дати потрібне джерело через @ і вчасно вирішити, стискати розмову чи починати нову. Вибирайте за ситуацією - стиснення не замінить читання потрібного файлу, а переданий файл не перевірить міркування агента за вас.