lowfat — облегчение вывода CLI для экономии токенов AI-агентов
📂 Исходный код на GitHubCLI-инструмент на Rust для фильтрации вывода команд перед отправкой в контекст AI-агента. Лёгкий, расширяемый через плагины, с интеграцией для Claude Code, OpenCode и Pi agent.
Когда AI-агент выполняет команды в терминале, вывод часто содержит много лишнего: длинные списки файлов, подробные метаданные git, лишние пробелы и ANSI-коды. Всё это попадает в контекст LLM и расходует токены. lowfat — небольшой CLI-инструмент на Rust, который фильтрует шум из вывода команд до того, как он достигнет агента.
Репозиторий: github.com/zdk/lowfat
Принцип работы
lowfat встраивается между выполнением команды и отправкой результата в контекст AI-агента. Инструмент перехватывает вывод, пропускает его через конвейер фильтров и отдаёт очищенную версию. Фильтры убирают лишние строки, сокращают повторяющиеся блоки, удаляют ANSI-escape-последовательности и нормализуют формат.
Основной фокус проекта сформулирован в четырёх принципах:
- Лёгкость — маленький бинарник, минимальное ядро, но расширяемость через плагины
- Локальность — никакой телеметрии, все данные остаются на вашей машине
- Компонуемость — UNIX-пайпы, смешивание встроенных и пользовательских фильтров
- Пользовательская ориентация —
lowfat historyпоказывает, какие команды вы запускаете чаще всего, и помогает оптимизировать именно ваш сценарий
Способы интеграции
lowfat поддерживает несколько вариантов подключения к AI-агентам.
Claude Code hook
Добавьте в .claude/settings.json:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [{ "type": "command", "command": "lowfat hook" }]
}
]
}
}
Каждый вызов Bash автоматически прогоняется через lowfat.
Shell-интеграция
Автоматически активируется в средах агентов (CLAUDECODE=1, CODEX_ENV) или принудительно через LOWFAT_ENABLE=1:
echo 'eval "$(lowfat shell-init zsh)"' >> ~/.zshrc
OpenCode plugin
Одна команда — и плагин установлен:
lowfat opencode install
Команды прозрачно фильтруются перед выполнением. Удаление — lowfat opencode uninstall.
Pi agent
В ~/.pi/agent/settings.json:
{ "shellCommandPrefix": "eval \"$(lowfat shell-init zsh)\"; " }
Прямое использование
Можно просто добавить префикс к любой команде:
lowfat git status
lowfat docker ps
lowfat ls -la
Управление фильтрами
lowfat позволяет настраивать агрессивность фильтрации:
lowfat level ultra # максимальное сжатие
LOWFAT_LEVEL=lite lowfat git log # разовое переопределение
Посмотреть состояние:
lowfat info # статус + активные фильтры
lowfat info git # конвейер для команды git
lowfat info --config # полная конфигурация
Статистика экономии:
lowfat stats # общая экономия токенов
lowfat stats --audit # последние выполнения плагинов
lowfat history # ранжирование команд по потенциалу экономии
Система плагинов
lowfat расширяем через собственный DSL .lf для написания фильтров:
lowfat plugin new terraform # создать заготовку плагина
lowfat plugin doctor # проверить плагины и зависимости
Тестирование плагина без установки:
cat samples/git-diff-full.txt | lowfat filter --explain ./filter.lf --sub=diff --level=ultra
Подробнее о DSL и расширениях — в документации PLUGINS.md в репозитории.
Установка
cargo install lowfat
# или
brew install zdk/tools/lowfat
Готовые бинарники доступны на странице релизов.
Альтернативы
В той же нише работают инструменты:
- rtk — CLI-прокси для сжатия вывода
- context-mode — оптимизация контекста
- lean-ctx — уменьшение контекста
- tokf, tamp, ecotokens, token-enhancer
Архитектура и документация
В репозитории есть подробная документация:
- ARCHITECTURE.md — диаграмма компонентов: CLI, Runner, Plugins, Builtins
- CONFIG.md — файл конфигурации
.lowfat, переменные окружения, DSL конвейера, встроенные процессоры - PLUGINS.md — DSL
.lf, shell-хаки, PEP 723 + uv, промпт для AI-агента
Лицензия: Apache-2.0. Язык реализации: Rust.
Источник: https://github.com/zdk/lowfat