Caveman Claude — Claude Code skill, который говорит как неандерталец и экономит 75% output-токенов
На прошлой неделе кто-то запостил на r/ClaudeAI: "научил Claude говорить как пещерный человек, экономлю 75% токенов". 10 тысяч апвотов, 400 комментов, топ Hacker News. К среде шутка превратилась в Claude Code skill, к воскресенью репозиторий поймал 13 387 звёзд на GitHub. Это быстрее, чем рос сам Claude Code в свой первый месяц.
TL;DR:
cavemanэто Claude Code skill, который заставляет Claude отвечать короткими рваными фразами без вежливости и воды. По замерам автора через tiktoken средняя экономия 65% output-токенов, диапазон 22-87%. Ставится одной командой через plugin marketplace. Главный подводный камень: input-токены не трогает, поэтому в длинной кодинг-сессии реальная экономия ближе к 25%, а не к рекламным 75%.
Как это выглядит
Обычный Claude отвечает на вопрос про ре-рендеры в React:
"The reason your React component is re-rendering is likely because you're creating a new object reference on each render cycle. When you pass an inline object as a prop, React's shallow comparison sees it as a different object every time, which triggers a re-render. I'd recommend using useMemo to memoize the object."
69 токенов.
Тот же ответ в caveman-режиме:
"New object ref each render. Inline object prop = new ref = re-render. Wrap in
useMemo."
19 токенов. Минус 72%. Код остался, техническая точность сохранилась, ушли "I'd be happy to help you", "The reason this is happening because", и всё остальное, что модель отрабатывает по привычке RLHF-а. Сам автор JuliusBrussee формулирует так: "Caveman no make brain smaller. Caveman make mouth smaller."
Цифры не "по заявлению автора"
Важный момент, потому что у меня первый вопрос был именно этот. В репозитории лежит eval-харнесс, который считает токены через tiktoken, а не глазами. Запускается локально без API-ключа. Снапшоты закоммичены в git, каждое изменение в бенчмарках проходит через PR как обычный diff. То есть цифры проверяемы.
Вот что получилось на 10 реальных задачах:
- React re-render баг: 1180 → 159 токенов (-87%)
- React error boundary: 3454 → 456 (-87%)
- PostgreSQL connection pool: 2347 → 380 (-84%)
- Auth middleware token expiry: 704 → 121 (-83%)
- PostgreSQL race condition: 1200 → 232 (-81%)
- Docker multi-stage build: 1042 → 290 (-72%)
- Git rebase vs merge: 702 → 292 (-58%)
- PR security review: 678 → 398 (-41%)
- Архитектура микросервисы vs монолит: 446 → 310 (-30%)
- Callback в async/await: 387 → 301 (-22%)
Разброс огромный, от 22% до 87%. Средняя 65%. Заголовочные "75%" это не средняя по всем задачам, а верхняя часть диапазона на вопросах с кодом. Самые большие выигрыши там, где нормальный Claude разводит объяснения на абзацы. На архитектурных вопросах и рефакторинге разница меньше, потому что там реально нужна проза.
Четыре режима плюс 文言文
У скилла четыре уровня компрессии и отдельная ветка на классическом китайском.
Lite (/caveman lite) сохраняет грамматику, режет воду. "Your component re-renders because you create a new object reference each render. Inline object props fail shallow comparison every time. Wrap it in useMemo."
Full (/caveman full) это дефолт. Артикли выкинуты, предложения обрываются. "New object ref each render. Inline object prop = new ref = re-render. Wrap in useMemo."
Ultra (/caveman ultra) телеграфный стиль. "Inline obj prop → new ref → re-render. useMemo."
文言文 (Wenyan) (/caveman wenyan) классический китайский. "物出新參照,致重繪。useMemo Wrap之。" Автор утверждает, что это самый плотный по смыслу письменный язык из когда-либо существовавших, и для LLM-ов это неожиданно работает. Классический китайский укладывается в меньшее число токенов на тот же смысл, потому что один иероглиф это обычно один токен и этот токен несёт морфему, а не букву.
Переключение между режимами командой в чате. Уровень держится до конца сессии или до /caveman normal.
Три готовых скилла поверх компрессии
Кроме сжатия самих ответов, в репо лежат два скилла для git-воркфлоу (commit и review). Плюс отдельный зверь под CLAUDE.md: caveman-compress.
caveman-commit генерирует сообщения для коммитов. Conventional Commits, subject до 50 символов, фокус на "почему", а не "что". Включается через /caveman-commit перед git commit.
caveman-review даёт однострочные комменты для PR. Формат L42: 🔴 bug: user null. Add guard. Никаких "I noticed that on line 42...", "It might be worth considering..." и прочих реверансов.
caveman-compress работает иначе. Это не сжатие ответов, это сжатие входного контекста. Команда /caveman:compress CLAUDE.md берёт твой файл инструкций, переписывает его в caveman-стиль, и сохраняет оригинал как CLAUDE.original.md. Claude на каждой сессии читает сжатую версию, ты редактируешь человеко-читаемую.
По замерам из README в среднем 45% компрессии на текстах инструкций. Пример: project-notes.md был 1145 токенов, стал 535. А поскольку CLAUDE.md грузится в контекст на старте каждой сессии, эта экономия умножается на все запросы за день. Код, URL-ы, пути, команды, даты и версии проходят через компрессор нетронутыми, сжимается только проза.
Установка
Каноничный путь через маркетплейс плагинов Claude Code:
claude plugin marketplace add JuliusBrussee/caveman claude plugin install caveman@caveman
Если работаешь в Cursor, Windsurf, Cline или Codex, есть универсальный инсталлер:
npx skills add JuliusBrussee/caveman npx skills add JuliusBrussee/caveman -a cursor # для конкретного агента
Маленький подводный камень, на который уже наступили. В README до недавнего висела команда claude install-skill JuliusBrussee/caveman, которой в Claude Code просто не существует (разобрано на OptimizeSmart). Если claude plugin install по какой-то причине не отработал, fallback такой:
mkdir -p ~/.claude/skills/caveman git clone https://github.com/JuliusBrussee/caveman.git ~/Downloads/caveman-tmp cp -r ~/Downloads/caveman-tmp/caveman/. ~/.claude/skills/caveman/ rm -rf ~/Downloads/caveman-tmp
После перезапуска Claude Code скилл подхватывается из ~/.claude/skills/ автоматически.
Подводные камни
1. Только output. Input-токены не трогает.
Это главное. Автор сам пишет в IMPORTANT-блоке репо: "Caveman only affects output tokens. Thinking/reasoning tokens are untouched." В длинной сессии Claude Code на каждом turn-е перечитывает весь контекст: системный промпт, историю разговора, прикреплённые файлы, а также всё, что ты кидал в чат за сессию. Input обычно в разы больше output-а.
Decrypt в своём разборе темы оценивает: при типичном кодинг-сценарии с большим контекстом реальная экономия ближе к 25%, а не к заголовочным 75%. Для счёта за месяц это всё равно деньги, но ожидай четверть, а не тройную экономию.
2. Extended thinking не сжимается.
Если гоняешь Claude с thinking-режимом, caveman не сделает reasoning короче. Модель думает столько же. Сжимается только финальный ответ. А reasoning на сложных задачах по токенам может быть больше самого ответа.
3. Это плохой скилл для джунов.
Для сеньора ответ "New object ref each render. Inline object prop = new ref. Wrap in useMemo" это идеал. Для джуна это четыре новых вопроса: что такое object reference, как работает shallow comparison, откуда вообще re-render, и куда втыкать useMemo в коде. Caveman убирает не воду, а контекст, который джуну нужен для понимания.
Автор, кстати, про это честно написал: "experienced developers seeking speed and cost savings, not for those still learning." Если сессия смешанная (где-то учишься, где-то шлёпаешь рутину), переключай режимы. /caveman normal перед вопросом, в котором нужен контекст, /caveman full перед рутиной.
4. Гипотеза про деградацию reasoning.
В оригинальном Reddit-треде исследователи подняли концерн: когда впихиваешь модель в "less sophisticated persona", эта персона может утекать в само рассуждение. То есть мозг тоже начинает работать проще. Definitively не подтверждено, но и не опровергнуто.
Справедливости ради, контр-аргумент тоже есть. Paper "Brevity Constraints Reverse Performance Hierarchies in Language Models" (март 2026, цитируется автором в README) показал обратное: принудительная краткость на некоторых бенчмарках улучшает точность на 26 процентных пунктов. Логика такая: когда модель знает, что отвечать коротко, она сразу идёт к ответу и не накручивает себя лишними шагами. Данные предварительные, выборка узкая, но лагерь "краткость = лучше думает" оформился.
5. Snyk ругается на caveman-compress.
Snyk помечает caveman-compress как High Risk из-за паттернов subprocess и работы с файлами. Автор утверждает, что это false positive, и это выглядит правдой: компрессор действительно читает и пишет файлы, потому что в этом его работа. Если security-гейт блокирует установку, поставь только базовый скилл без compress-части.
Альтернативы
15 Ways to Stop Burning Claude Code Tokens (Roman Peschke). Системный гайд на 15 приёмов, от .claudeignore до модельного свитчинга. Работает на input тоже. Требует дисциплины и ручной работы, зато экономит больше в долгую.
/compact и /clear. Встроенные команды Claude Code. Бесплатно, работают из коробки, но сжимают историю, а не отдельные ответы. Комплементарно caveman-у, не замена.
Модельный свитчинг на Haiku. Самое радикальное решение. Claude Haiku в разы дешевле Opus-а, и на рутинных правках его хватает. Caveman работает поверх любой модели, так что одно не отменяет другое.
Shawnchee/caveman-skill. Конкурирующий форк, 10 правил вместо 4 уровней. Совместим с Cursor, Windsurf, Copilot и 40+ агентами. Если ты не в Claude Code, удобнее, чем основной репо.
Руками в CLAUDE.md. Можно написать в инструкциях проекта что-то вроде "Answer in minimum words, no preamble, no postamble, code-first". Работает хуже скилла, потому что скилл триггерится по команде и его можно выключить, а инструкции в CLAUDE.md действуют всегда и модель иногда начинает экономить даже там, где нужна развёрнутая мысль.
Вердикт
Ставь, если ты сеньор и гоняешь Claude Code по 6-8 часов в день на рутинных правках. При типичной нагрузке это 25-40% экономии токенов в месяц при нулевых усилиях после установки. caveman-compress на CLAUDE.md чистый выигрыш сам по себе, даже если режим отвечать как неандерталец тебе не зайдёт.
Не ставь, если учишься на коде, который пишет Claude. Экономия токенов не стоит того, что из ответов пропадут объяснения, благодаря которым ты что-то понимал. И не ожидай рекламных 75%: для output-only это правда, для счёта за месяц будет заметно скромнее.
Как попробовать
- Поставь через plugin marketplace:
claude plugin marketplace add JuliusBrussee/caveman claude plugin install caveman@caveman
- Перезапусти Claude Code. В статуслайне должен появиться бейдж
[CAVEMAN], если включилhooks/install.sh. - В первом же сеансе включи
/caveman full. Задай типичный вопрос, на который обычно Claude пишет абзац объяснений. Посмотри на ответ. - Попробуй компрессор на своём
CLAUDE.md:/caveman:compress CLAUDE.md. Сравни размерыCLAUDE.mdи появившегосяCLAUDE.original.md. - Перед следующим
git commitзапусти/caveman-commitи посмотри, какое сообщение получилось. Оно обычно короче в 4-5 раз, чем дефолтное от Claude.
Репозиторий: github.com/JuliusBrussee/caveman, 13 387 звёзд, MIT-лицензия, 20 контрибьюторов за первую неделю.