sqz — сжатие контекста LLM для экономии токенов
📂 Исходный код на GitHubУтилита на Rust для сжатия контекста LLM: хук PreToolUse перехватывает bash-вывод и сжимает его перед отправкой в модель. Дедупликатор через SHA-256 кеш — повторные чтения отдают 13-токеновую ссылку вместо полного контента.
sqz — утилита на Rust (один бинарник, ноль конфигурации), которая сжимает вывод команд до того, как он попадёт в контекст LLM. Средняя экономия — 24.7% токенов на реальной выборке из 3 003 сжатий. Главный козырь — дедупликация.
Как работает
sqz устанавливает хук PreToolUse (или аналог, в зависимости от инструмента), который перехватывает bash-команды перед выполнением. Результат прозрачно сжимается — модель даже не знает, что вывод был изменён:
Claude → git status → [хук sqz] → сжатый вывод (на 85% меньше)
Главный выигрыш — кеш дедупликации через SHA-256. Если за сессию файл прочитан 5 раз, sqz отправляет его один раз в сжатом виде, а все повторы заменяет 13-токеновой ссылкой §ref:HASH§:
| Сценарий | Без sqz | С sqz | Экономия |
|---|---|---|---|
| Файл прочитан 5 раз | 10 000 токенов | 826 токенов | 92% |
| JSON-ответ 3 раза | 192 токена | 79 токенов | 59% |
| Цикл test-fix-test (3 запуска) | 15 000 токенов | 5 186 токенов | 65% |
Алгоритмы сжатия
По-командные форматтеры (40+ команд, 9 экосистем)
| Экосистема | Команды |
|---|---|
| Git | status, log, diff, show, stash, remote, fetch, push, pull, commit |
| Rust | cargo build/test/clippy/check/nextest |
| JS/TS | npm/pnpm/yarn/bun install/test/audit/outdated, tsc, eslint, vitest |
| Python | pytest, ruff, mypy, pip |
| Go | go test, go build, go vet, golangci-lint |
| Cloud | aws, terraform plan/apply/init, gcloud |
| Контейнеры | docker/podman ps/images/build, kubectl get/describe/logs/apply |
| JVM | gradle build/test, maven |
| Системные | grep/rg, tree, find/fd, ls, curl/wget |
| GitHub | gh pr/issue/run |
Неизвестные команды попадают в общий пайплайн — ни один вывод не остаётся без сжатия.
Структурные сводки
Файлы кода сжимаются до импортов + сигнатур функций + графа вызовов (~70% сокращения). Модель видит архитектуру, а не шум реализации.
JSON-пайплайн
Удаление null-полей → вырезание отладочных ключей → flatten → сворачивание массивов → TOON (компактный lossless-формат).
Safe mode
Стектрейсы, секреты, дампы ошибок проходят через энтропийный анализ и пропускаются без изменений (0% сжатия).
Установка
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/ojuschugh1/sqz/main/install.sh | sh
# Windows (PowerShell)
irm https://raw.githubusercontent.com/ojuschugh1/sqz/main/install.ps1 | iex
# Любая платформа через npm
npm install -g sqz-cli
# macOS / Linux через Homebrew
brew tap ojuschugh1/sqz
brew install sqz
# Из исходников через Cargo
cargo install sqz-cli sqz-mcp
Инициализация:
sqz init --global # хуки для всех проектов на машине
sqz init # хуки только для текущего проекта
sqz init --only opencode # только для OpenCode
sqz init --skip cursor # всё, кроме Cursor
Поддерживаемые инструменты
| Инструмент | Интеграция | Команда |
|---|---|---|
| Claude Code | PreToolUse хук | sqz init |
| Cursor | PreToolUse хук | sqz init |
| Windsurf | PreToolUse хук | sqz init |
| Cline | PreToolUse хук | sqz init |
| Gemini CLI | BeforeTool хук | sqz init |
| Kiro | PreToolUse хук | sqz init |
| OpenCode | TypeScript плагин | sqz init |
| VS Code | Расширение | Marketplace |
| JetBrains | Плагин | Marketplace |
| Chrome / Firefox | Браузерное расширение | ChatGPT, Claude.ai, Gemini, Grok, Perplexity |
CLI
sqz compress <text> # сжать (или через stdin)
sqz compress --no-cache # без дедупликации
sqz expand <ref> # восстановить оригинал из §ref:HASH§
sqz gain # дневная экономия токенов (bar chart)
sqz gain --project . # по проекту
sqz gain --days 30 # за 30 дней
sqz stats # накопительный отчёт
sqz stats --breakdown # разбор по командам
sqz compact # вытеснить устаревший контекст
sqz vizit # live-дашборд в терминале (htop для AI-агентов)
sqz discover # поиск упущенной экономии
Escape hatch для дедупликации
Некоторые модели (например, GLM 5.1) не умеют парсить §ref:HASH§ и зацикливаются. Решения:
sqz expand a1b2c3d4 # восстановить по префиксу хеша
echo "..." | sqz compress --no-cache # отключить кеш на один вызов
export SQZ_NO_DEDUP=1 # отключить глобально
Статистика
Статистика хранится локально в SQLite (~/.sqz/sessions.db). Ничего не покидает машину.
Пример sqz gain за неделю реального использования:
04-15 │███ │ 12,954 сэкономлено
04-16 │██ │ 9,223 сэкономлено
04-17 │████ │ 14,752 сэкономлено
04-18 │██████████████████████████████│ 105,569 сэкономлено
...
Всего: 3 003 сжатия, 178 442 токена (24.7% средняя экономия)
Приватность
- Нулевая телеметрия — данные никуда не отправляются
- Полный офлайн — работает в air-gapped-средах
- Вся обработка локальна
Лицензия
Elastic License 2.0 (ELv2). Свободное использование, форки, модификации. Два ограничения: нельзя создавать конкурирующий хостинг-сервис и удалять уведомления о лицензии.
Источник: https://github.com/ojuschugh1/sqz