Автор: abavyka
Фундамент є: що заповнює контекст, як працюють MCP і хуки. Тепер про те, як на цьому зекономити токени.
Навіщо
Думаю, кожен з вас впирався в ліміти і чекав, поки вони скинуться. Суть попередніх постів була зрозуміти, куди пройобуються токени: що потрапляє в контекст, які є фундаментальні концепти і як ними можна оптимізувати, чому старт сесії може виїсти дохуя токенів на першому повідомленні (привіт кеш і довгі сесії, купа повідомлень і чатінгу з моделькою).
Проблема в тому, що написання коду агентом саме по собі прожорливе на токени: пошук по репо, читання файлів, вивід tools. Все це лягає в контекст і далі летить з кожним запитом (див. Контекст і кеш і Токени і ліміти).
Складні задачі на Pro дуже швидко впираються в ліміти. На Max економія теж плюс: більше ресурсу на паралельні таски.
У мене три тули, кожен на своєму рівні:
rtk— вивід shell-команд- code graph — пошук по коду замість grep і читання файлів
headroom— увесь запит до API
rtk
CLI на Rust, який стискає вивід команд до того, як його побачить Claude: викидає шум, групує, обрізає, схлопує повтори. Тести показують тільки падіння, git log — хеш, автора і заголовок.
Ставиться rtk init -g. Це той PreToolUse-хук на Bash з поста про хуки: через updatedInput він переписує git status на rtk git status, і Claude сам rtk викликати не мусить.
Мої цифри з rtk gain:
- всього — 39 874 команди, 24.9M токенів зекономлено (27.2%)
- пет-проєкт — 6 092 команди, 14.1M (79.2%)
- найбільше дають тести (
vitest,jest— 82–95%) іgit diff(~94%)
Інколи він ріже те, що Claude треба. Модель це розуміє і проганяє команду без rtk, якщо це важливо. Це плюс один виклик tool, але на практиці бувало рідко.
Що варто знати:
- хук ловить тільки
Bash. ВбудованіRead,GrepіGlobу Claude Code йдуть повз нього - токени рахує грубо (байти / 4), тож відсотки норм, а абсолютні числа приблизні
- економить тільки на виводі команд, на весь ліміт ефект менший
rtk discover— показує, де ще можна було зекономити
Code graph
code-review-graph будує локальний граф коду: функції, класи, імпорти, хто кого викликає, які тести що покривають. Лежить в SQLite у .code-review-graph/, оновлюється хуками. Claude ходить у нього як у MCP-сервер з трьома десятками tools (semantic_search_nodes, query_graph, get_impact_radius…).
Ставив, щоб зменшити витрати на пошук файлів: замість grep і читання десятка файлів — один запит у граф.
pipx install code-review-graph
code-review-graph install
code-review-graph buildАвтори обіцяють у медіані ~63x менше токенів на питання. Але самі ж пишуть, що це верхня межа, на дрібних правках граф може коштувати більше, ніж просто прочитати файл, а для малих репо і разових питань він не потрібен.
Чесно, мої цифри з транскриптів за місяць. Пет-проєкт, граф побудований (442 файли), у CLAUDE.md інструкція «спочатку граф, потім grep». Claude викликав його 3 рази у 2 сесіях з 18. За той самий час — 1 930 Read. Плюс граф застаріває: зараз він побудований на іншій гілці.
Стежу і оптимізую далі, гірше він точно не робить.
headroom
Локальний проксі між Claude Code і API. Стискає вивід tools, JSON, логи і код, а старий префікс розмови не чіпає, тож кеш не ламається. Оригінали лежать локально, і модель може їх дістати через headroom_retrieve.
Ставив через headroom install apply: він запускає проксі як сервіс на 127.0.0.1:8787 і сам прописує в env у ~/.claude/settings.json ANTHROPIC_BASE_URL на нього. Тобто headroom працює в кожній сесії за замовчуванням.
Підписка при цьому лишається. Якщо задано тільки ANTHROPIC_BASE_URL без ключа, запити йдуть через проксі, але з твоїм логіном claude.ai і лімітами Pro.
Мої цифри з headroom savings: 14.2% за 30 днів (49M з 346M токенів). Сам headroom пише, що реально, мабуть, менше.
Проксі — інший підхід, і через нього частина фіч Claude Code зникає:
- Remote Control — вимикається, коли
ANTHROPIC_BASE_URLдивиться не наapi.anthropic.com - MCP tool search — за проксі вимкнений за замовчуванням, тобто описи всіх MCP tools знову висять у контексті з першого запиту (про це було в пості про MCP). Повертається
"ENABLE_TOOL_SEARCH": "true"вenv,headroom installставить його сам
Тому в мене два запуски:
claude— з headroomclaude-remote— без нього, щоб продовжити роботу над пет-проєктами з мобільного
claude-remote() {
claude --settings '{"env":{"ANTHROPIC_BASE_URL":""}}' --remote-control "$@"
}Функція в ~/.zshrc: --settings перебиває ANTHROPIC_BASE_URL порожнім, і сесія йде напряму в Anthropic.
Ще в headroom анонімна телеметрія увімкнена за замовчуванням (без промптів і коду). Вимикається HEADROOM_TELEMETRY=off.
Почитати
- rtk (англ.)
- code-review-graph (англ.)
- headroom (англ.)
- Custom base URL (англ.)
- Token-saving tools compared (англ.)
- Токени і ліміти
- Контекст і кеш
- MCP
- Hooks
- Репо: rtk (англ.)
- Репо: code-review-graph (англ.)
- Репо: headroom, встановлення сервісом: Persistent installs (англ.)
- Фільтр виводу хуком: Manage costs effectively (англ.)
- Що вимикається за проксі: Feature availability, Remote Control (англ.)
- Tool search за проксі: Configure tool search (англ.)
- Підписка через проксі: Other LLM gateways (англ.)