Caveman — плагин для Claude Code с 97 тысячами звёзд на GitHub. Обещание такое: ИИ перестаёт лить воду и переходит на язык пещерного человека, слов на выходе меньше — и счёт меньше.
Я попробовал. ИИ и правда стал лаконичнее — на пяти задачах из семи, что я прогнал; на двух оставшихся он, наоборот, разговорился. А платил я ровно столько же.
Не все токены стоят одинаково
Токены бывают четырёх видов, и стоят они очень по-разному. За миллион, на Sonnet 4.5, по которому считались эти прогоны (на Sonnet 5 всё дешевле в тех же соотношениях):
- вывод (слова, которые модель пишет в ответ) — $15
- запись в кэш (положить контекст в кэш в первый раз) — $3,75
- ввод (текст, который отправляешь ты) — $3
- чтение из кэша (контекст, который она уже видела) — $0,30
То есть одно слово, которое модель пишет, стоит как пятьдесят, которые она перечитывает.
А перечитывает она много. На каждом ходу модель заново проходит весь диалог — твои файлы, вывод тестов, всё сказанное до этого — и только потом дописывает в конец несколько слов. На эти несколько слов приходится около 0,6% токенов сессии. Почти всё остальное — контекст: то, что ты ей отправляешь, и, в основном, то, что она перечитывает.
Экономика токенов
0,6%
столько сэкономишь, если модель замолчит совсем — то есть недостижимо
Слов мало, но каждое в пятьдесят раз дороже — и в деньгах это уже примерно 20% твоего счёта.
Эта пятая часть — потолок: весь кусок, до которого скилл вообще дотягивается, делая слова модели короче. Остальное — контекст, и от краткости он меньше не станет.
Ответы короче на 65% дали бы минус 13% со счёта
Берём этот потолок и умножаем на то, насколько короче стали ответы:
- Обещанная срезка — 65%, столько написано в README (закреплённая версия) — это 65% от той пятой части: 13% со счёта. Лучшее, на что можно было бы рассчитывать, будь обещание правдой.
- Замеренная срезка — 6%, столько вышло у меня в среднем, — это 6% от той же пятой части, и на счёте такое просто не видно.
- Заставь модель замолчать совсем — сэкономишь всю пятую часть. Это и есть весь потолок, и стоит он тебе всех ответов.
На подписке никакого счёта нет — есть квота, и по каким весам её считают, Anthropic не публикует. Но считают они те же четыре вида токенов — значит вывод в твоей квоте стоит где-то между теми же двумя краями. Оба маленькие, и потолок никуда не девается.
Что показали прогоны
Семь задач по кодингу — от однострочного хелпера до рефакторинга в нескольких файлах, каждая прогнана по десять раз: пять со скиллом, пять без. Каждый прогон проходил проверку на корректность — никакой «экономии» на сломанных ответах. Реальную стоимость в долларах считал vigiles, мой открытый инструмент, и всё это можно прогнать самому, на своей же подписке.
▶Как именно всё замерялось
По десять раз — потому что один и тот же промпт каждый раз стоит по-разному: замерив однажды, выдаёшь за результат обычный шум. Это 70 прогонов, и 140, если считать второй скилл из приложения.
Скилл работал — ответы с первого же сообщения пошли телеграфные. Вывод стал короче в среднем на 6%, а не на 65%, и среднее тут врёт: на двух задачах срезало сильно, на трёх слегка, а на оставшихся двух модель написала больше. Счёт вышел такой же — разница меньше, чем одна и та же задача скачет между двумя прогонами вообще без скилла.
Caveman: обещание против замера
7 задач · по 5 парных прогонов
счёт по каждой задаче, точка на задачу
Пять прогонов на задачу не видят изменения счёта меньше ~13%, поэтому −1% — это «разницы не видно». Задачи разошлись от 16% дешевле до 66% дороже.
Я не первый, кто полез проверять этикетку, и ни у кого из замерявших не вышло ничего похожего на 65%. Макс Тейлор сравнил Caveman с двумя словами «be brief» и выяснил, что плагин не обошёл этот скучный дефолт. В JetBrains прогнали его на 86 настоящих задачах по кодингу с принудительно включённым скиллом: вывода стало меньше на единицы процентов, а суммарная стоимость вышла дороже, а не дешевле: один дорогой выброс перевернул знак.
▶Что именно намерили в JetBrains
Вывода стало меньше на 8,5% против обещанных 65%. Они ожидали примерно 10% экономии на задачу, и это, цитирую, «регулярно съедается разбросом между отдельными прогонами», — а их собственная суммарная стоимость вышла на 11,6% дороже ($40,60 против $36,39): один выброс перевернул знак. На задачу — экономия, суммарно — переплата, и ни то ни другое даже близко не 65%.
То же исследование показывает, как сильно врут одиночные прогоны: их пристрелочный замер на десяти задачах, по разу на каждую, дал −29,5%; те же десять задач по три прогона дали −6,7%. Поменялось только число повторов. А их главная цифра на 86 задачах — это сам по себе один прогон на задачу. У меня их пять.
Откуда взялись те самые 65%
Это не враньё — просто замер не того. Заявленные 65% скилл намерил себе сам на 10 одиночных промптах. Один промпт, один ответ, никаких файлов, инструментов и старого контекста — единственный расклад, где ответ модели, по сути, и есть вся сессия, а перечитывания, в котором он бы потерялся, просто нет. Ужми ответ здесь — и ужмёшь почти весь объём токенов.
С настоящим кодом всё наоборот. Ответ больше не равен сессии, а код жмётся куда хуже, чем многословная проза «услужливого ассистента», с которой они сравнивали, — тот же скилл срезает около 6%. Померили там, где число большое, а написали на коробке, которую ставят совсем в другое место.
▶Полные числа (по задачам, оба скилла, p-значения)
Откуда берутся 20%. Вывод — это ~0,6% токенов по цене примерно в 50 раз выше чтения из кэша. На салфетке:
объём цена деньги
вывод 0,6% × 50 = 30
чтение из кэша 99% × 1 = 99
доля вывода в счёте: 30 / 129 ≈ 23%По салфетке на вывод приходится ~23% счёта; если считать по записанной долларовой стоимости моих прогонов, выходит 20,5% — чуть меньше, потому что настоящие сессии платят ещё за ввод и за запись в кэш. В тексте это округлено до 20%.
Скиллов тут два, а не один. Caveman — это тот самый скилл с 65% на этикетке, про который вся статья; token-efficient — следующий по звёздам скилл в той же категории, и он ровно так же обещает срезку на 63%. Я прогнал его через тот же инструмент, чтобы понять: потолок — это свойство Caveman или всей категории? Категории.
Семь задач × пять прогонов × две группы = 70 прогонов на скилл, 140 на оба, на Sonnet (~$10 по
ценам API, $0 на моей подписке). Изменение вывода по задаче — минус значит, что скилл срезал вывод, плюс — что вывода
стало больше, — с p-значением Уэлча: это проверка, которая не предполагает, что обе группы шумят
одинаково (а они никогда и не шумят). Читать p как «шанс увидеть такой разрыв, если скилл вообще
ничего не делает»; * — это p<0,05. Обе срезки Caveman (p = 0,002 и 0,006) переживают поправку
Бонферрони. Смысл поправки простой: когда проверяешь семь вещей разом, случайность попадается
чаще — эти две держатся и с учётом этого.
| Задача | Δ вывода (Caveman) | p | Δ вывода (token-efficient) | p |
|---|---|---|---|---|
| slugify | +54% | 0,27 | −2% | 0,78 |
| debounce | −28% | 0,22 | −7% | 0,52 |
| bugfix-offbyone | −31% | 0,002* | −6% | 0,87 |
| bigO | −18% | 0,27 | +6% | 0,79 |
| regex-email | −28% | 0,006* | +127% | 0,037* |
| review-doc | −8% | 0,80 | +54% | 0,46 |
| refactor-suite | +21% | 0,65 | +33% | 0,19 |
Суммарные доллары по всем прогонам: Caveman −1%, token-efficient +10%. Оба числа меньше того, что это исследование способно различить, но по характеру они разные: token-efficient вышел дороже на 5 задачах из 7 (regex-email +49%, review-doc +21%, refactor +9%, slugify +7%, bigO +6%; дешевле стали только debounce −13% и фикс бага −5%), а −1% у Caveman — это шум вокруг нуля. Если усреднить по задачам, срезка вывода у Caveman — 5,6% (в тексте «около 6%»); если считать суммарно — 9,1%. И так и так кусок в ~20% превращает это в 1–2% счёта, а суммарные доллары дали −1%. Вывод — около 20% долларовой стоимости в обеих группах, и все ответы остались верными: ноль регрессий корректности на всех 140 прогонах.
Скилл сам не бесплатный. Его постоянно загруженный промпт — это тоже контекст: в среднем по всем прогонам группа с Caveman тащила на 9% больше кэшированных токенов, чем базовая, а на самой короткой задаче — на 71% больше. Именно поэтому самая дешёвая задача вышла на 66% дороже. Это систематический штраф на коротких сессиях, а не только шум.
Разброс. По задачам долларовая дельта скачет от 16% дешевле (фикс бага, p=0,03) до 66% дороже (slugify — самая дешёвая задача, где мелкий разброс от прогона к прогону в процентах выглядит громадным). При пяти прогонах на задачу 95%-й доверительный интервал на суммарном счёте — от 14% дешевле до 12% дороже, то есть разницу в стоимости меньше примерно 13% такой эксперимент уже не различает. Экономия в 13% — тот самый лучший случай с этикетки — как раз легла бы на границу видимости этих прогонов. И не надо: точность тут держится на структурном потолке в ~20%, а не на размере выборки — чтобы отвергнуть большую экономию, большое исследование не требуется, если сам потолок экономии мал.
Одна оговорка, для полноты: поминутные лимиты API — это отдельная история, не про стоимость. Чтение из кэша по большей части во входной лимит не идёт, а у вывода свой отдельный лимит. Если ты упёрся именно в лимит «вывод в минуту», срезка вывода и правда прибавит пропускной способности; но это узкий случай, а не твой месячный счёт или квота.
Проверка корректности — структурная, а не оценка качества: она ограничивает потерю информации, но не доказывает, что ответы были так же хороши.
Замеры по каждой группе со всех 140 прогонов (средние, σ, n):
JSON на 140 прогонов и
тест /caveman-compress. Метод и инструмент:
vigiles.
Где экономия на самом деле
У Caveman есть и второй трюк — сжать файл с инструкциями. Тут тоже мимо: я ужал такой файл на две трети, и на счёте это никак не отразилось. Несколько сотен токенов против сессии на ~100 000 — эта разница теряется в округлении.
Сжатие ввода · /caveman-compress
несколько сотен токенов против примерно ста тысяч
Файл он и правда сжимает, сильнее, чем обещает. Просто файл слишком мал, чтобы это было видно на счёте.
Хочешь платить меньше или дольше не упираться в лимит? Экономить надо не на словах модели, а на том, что перезагружается каждый ход:
- Большие файлы и вывод команд, которые ты подтянул — лог теста на 10 тысяч строк, огромный
git diff: прочитаны один раз, а дальше молча перечитываются каждый ход. Именно эта куча и раздувает твой счёт. - Раздутый диалог — отдавай работу сабагентам, чтобы основной тред оставался маленьким.
- Контекст, который ты не чистишь —
/compactрежет большую дешёвую кучу напрямую, а это почти все твои расходы.
Сам я это не мерил — считай подсказками, а не обещанием.
Прежде чем ставить следующий скилл
Сокращать ответы модели, чтобы платить меньше, — это как заказать десерт поменьше, чтобы уменьшить счёт в ресторане. Счёт почти весь состоял не из десерта.
Так что вопрос к следующему такому скиллу: какие токены он режет — и считал ли кто-нибудь настоящую сессию, а не однострочный промпт?