Chisle: сжатие токенов для AI-агентов на трёх осях
📂 Исходный код на GitHubСжатие токенов для AI-агентов на трёх осях: сжатая проза, YAGNI-код и компрессия вывода утилит. Работает с 11 агентами, ноль зависимостей, MIT.
Chisle — это CLI-инструмент, который сокращает расход токенов при работе с AI-агентами сразу по трём направлениям: сжатие прозы в ответах, оптимизация генерируемого кода по принципу YAGNI и компрессия вывода утилит в контексте сессии. Поддерживает 11 агентов, не требует зависимостей, устанавливается одной командой.
Три оси сжатия
Большинство инструментов оптимизации токенов работают только с одним типом проблемы. Chisle атакует все три одновременно:
| Ось | Что сжимает | Как |
|---|---|---|
| Проза | Воду, оговорки, навязанную структуру | Правила, инжектируемые при старте сессии |
| Код | Спекулятивные абстракции, незапрошенные шаблоны | YAGNI-лестница: делать меньше, переиспользовать больше |
| Контекст | Вывод утилит, затапливающий контекстное окно | PostToolUse хук (Claude Code) / tool_result (Pi): scrub, elide, dedup |
Ключевой момент — последняя ось. Вывод утилит повторно тарифицируется на каждый следующий запрос в сессии. Сжав его один раз, вы экономите на каждом дальнейшем шаге. Операции Read, Edit и Write намеренно исключены из компрессии — их байты точный отражаются в последующих правках.
Установка и запуск
Одна команда, которая автоматически определяет установленных агентов и настраивает каждый:
npx chisle
Или через curl:
curl -fsSL https://raw.githubusercontent.com/JayPokale/Chisle/main/install.sh | bash
Для Windows:
irm https://raw.githubusercontent.com/JayPokale/Chisle/main/install.ps1 | iex
Чтобы посмотреть, что инструмент изменит, до реальных правок:
npx chisle --dry-run
Чтобы ограничить установку конкретным агентом:
npx chisle --only claude
npx chisle --only pi
Удаление — npx chisle --uninstall. Обновление — npx chisle@latest --update.
Поддерживаемые агенты
Claude Code и Pi получают обе оси сжатия (вывод + контекст), переключение через /chisle и индикатор в интерфейсе. Cursor, Windsurf, Cline, Kiro, Codex, Gemini и Copilot получают всегда активный набор правил. OpenCode — глобальный fenced ruleset плюс навыки по запросу. Hermes — навыки как команды /chisle.
Бенчмарки и реальные цифры
Автор публикует данные по 20 задачам на живых моделях, включая прогоны, где инструмент проиграл конкурентам. Это не оценки — все цифры пересчитываются из сырых данных в репозитории.
Вывод: сравнение с конкурентами
20 задач, billed output tokens относительно базовой модели без инструментов:
| Инструмент | Суммарный счёт | Средняя задача | Худший случай | Фиаско |
|---|---|---|---|---|
| caveman | 80% | 98% | 424% | 6 / 20 |
| ponytail | 68% | 91% | 227% | 8 / 20 |
| Chisle | 52% | 69% | 173% | 1 / 20 |
Chisle сократил суммарный счёт почти вдвое. При этом worst case у него самый маленький — 173% против 424% у caveman. Единственное фиаско было проанализировано, исправлено и повторно проверено.
Для кодовых задач результат ещё показательнее — 44% от базовой модели, когда конкуренты дают 59–74%. На длинных ответах Chisle опускается до 45%, в то время как caveman достигает лишь 79%.
Ввод: компрессия вывода утилит
На 171 реальной сессии Claude Code хук сократил вывод утилит примерно на 46% — около 61 тысячи токенов за раз. Каждый сжатый байт перестаёт повторно тарифицироваться на всех последующих шагах.
| Уровень | Что делает | Потери |
|---|---|---|
| scrub | Удаляет ANSI-экранирования, схлопывает пустые строки и повторы | Нет |
| elide | Крупный вывод → голова + хвост, ошибки спасаются из обрезанной части | Ограниченные |
| dedup | Байтовая копия предыдущего вывода → маркер-замена | Нет (копия уже в контексте) |
На Pi инструмент показал 27.4% экономии после встроенной обрезки в 50KB/2000 строк.
YAGNI-лестница
Перед написанием кода агент проходит через цепочку вопросов:
- Нужно ли это вообще? → Пропустить, сказать в одну строку
- Уже есть в кодовой базе? → Переиспользовать
- Делает stdlib? → Использовать stdlib
- Покрывает нативная платформа? → CSS вместо JS, DB constraint вместо прикладного кода
- Есть уже установленная зависимость? → Использовать её
- Можно ли одной строкой? → Одна строка
- Минимальный рабочий код
Каждый уровень завершается обязательством: указать, что было пропущено, чтобы «потом» тихо не стало «никогда».
Пример голоса
На вопрос «Почему этот React-компонент перерендеривается?»:
Новый ref объекта при каждом рендере. Инлайновый объект-проп = новый ref = перерендер.
useMemo.
На запрос «Добавь кэширование API-ответов»:
@lru_cache(maxsize=1000)на функцию запроса. Не стал создавать кастомный класс кэша — добавь его, когдаlru_cacheпокажет себя недостаточным.
Конфигурация
По умолчанию Chisle активен автоматически после установки. Чтобы деактивировать:
export CHISLE_DEFAULT_MODE=off
Или через конфигурационный файл ~/.config/chisle/config.json:
{ "defaultMode": "off" }
Переключение в сессии: /chisle off, stop chisle, normal mode. Естественный язык тоже работает: «activate chisle», «chislify this».
Сравнение с конкурентами
Chisle комбинирует лучшие опубликованные техники сжатия токенов и реализует те, которые подходят для zero-dep хука. Остальные инструменты работают с ним совместно: caveman (сжатие прозы) + ponytail (YAGNI-код) + headroom (компрессия контекста) — всё это уже внутри Chisle с улучшениями. RTK-style перезапись команд и MCP-индексация остаются ортогональными слоями.
Стек
Ноль зависимостей. Node ≥18 для установки. Все бенчмарки пересчитываются из сырых данных в репозитории. Единственный инструмент в этом классе, который публикует прогоны, где проиграл.
Источник: https://github.com/JayPokale/Chisle