sqz — сжатие контекста LLM для экономии токенов

· 2 мин чтения
compression context token-optimization cli rust agentic-ai developer-tools
📂 Исходный код на GitHub

Утилита на Rust для сжатия контекста LLM: хук PreToolUse перехватывает bash-вывод и сжимает его перед отправкой в модель. Дедупликатор через SHA-256 кеш — повторные чтения отдают 13-токеновую ссылку вместо полного контента.

sqz — сжатие контекста LLM для экономии токенов

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