English version

Автор: 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 — з headroom
  • claude-remote — без нього, щоб продовжити роботу над пет-проєктами з мобільного
claude-remote() {
  claude --settings '{"env":{"ANTHROPIC_BASE_URL":""}}' --remote-control "$@"
}

Функція в ~/.zshrc: --settings перебиває ANTHROPIC_BASE_URL порожнім, і сесія йде напряму в Anthropic.

Ще в headroom анонімна телеметрія увімкнена за замовчуванням (без промптів і коду). Вимикається HEADROOM_TELEMETRY=off.

Почитати