Зачем вообще это нужно

Разработчик Зак Ан (zachahn) выпустил open-source утилиту Vomit — небольшой инструмент на Go, который перехватывает вывод Claude 5 и «переводит» его через локальную языковую модель в человекочитаемый текст. Проблема, которую он решает, знакома многим: стиль общения современных агентов стал настолько раздражающим, что буквально мешает работе — каждый ответ оптимизирован под «авторитетность», перегружен жаргоном и странными метафорами.

Claude Sonnet 5 использует примерно на 30% больше токенов, чем предыдущие модели, для эквивалентных задач. А значит, «словесный мусор» бьёт не только по удобству чтения, но и по кошельку.


Как работает Vomit

Vomit конвертирует «токенную рвоту» Claude в человеческий текст, пропуская её через локальный LLM. Утилита полностью локальна (без телеметрии) и не имеет внешних зависимостей.


graph LR
    A[Claude 5
генерирует ответ] --> B[Хук MessageDisplay
перехватывает вывод] B --> C[Vomit передаёт текст
локальному LLM] C --> D[Очищенный ответ
отображается пользователю]

Инструмент отображает «исправленную» версию прямо в сессии вместо оригинального потока токенов — через хук MessageDisplay. При этом Vomit не трогает ничего в runtime, кроме записи файлов во временную директорию TMPDIR.

Установка и базовый сценарий

# Установка бинарника в GOPATH
go install github.com/zachahn/vomit@latest

# Настройка подключения к локальному LLM
vomit init

# Заменить вывод Claude через хуки
vomit scrub -claude

Режим наблюдателя (без вмешательства)

# Список сессий Claude
vomit list

# Перевод токенов для конкретной сессии (или последней)
vomit tail [<session_identifier>]
💡 Рекомендация автора
Если у вас ещё нет локального LLM, автор рекомендует использовать Llama.app и скачать через него модель GPT-OSS 20B. После установки запустите vomit init.

Совместимые бэкенды

ИнструментПоддержкаПримечание
Llama.app✅ РекомендованПростейший старт на Mac
Ollama✅ ПоддерживаетсяПопулярный локальный раннер
OpenAI-совместимый API⚠️ ВероятноЛюбой сервер с совместимым API

Ограничения, о которых честно предупреждают

⚠ Важные оговорки

Локальный LLM видит только то, что Claude пытается сообщить (без доступа к файлам и действиям), поэтому иногда галлюцинирует. Существует вероятность полностью пропустить сообщение Claude.

Кроме того, утилита работает заметно медленнее стандартного вывода и на данный момент протестирована только на Mac.

«Забавно, когда “клодизмы” всё равно просачиваются — это ощущается, будто Claude пересилил маленький LLM, работающий на моём компьютере» — Зак Ан, автор Vomit

Автор с удивлением замечает: маленькая открытая модель GPT-OSS 20B от главного конкурента (OpenAI) обходит фронтирный Opus в качестве написания текста.

ℹ Резервный канал
Если вы боитесь потерять оригинальные сообщения Claude, используйте AgentsView — Vomit не изменяет исходные данные во время работы, только пишет временные файлы.

Контекст: почему проблема актуальна

Claude Sonnet 5 и некоторые модели Opus поддерживают extended thinking (расширенное мышление) — когда модель «думает» внутри, перед тем как выдать ответ. Это может добавлять тысячи токенов к одному запросу, причём незаметно: задача, которая выглядит как 400 токенов, может генерировать 3000+ thinking-токенов под капотом.

Vomit действует на другом уровне — он не борется с внутренними токенами мышления, а исправляет стиль итогового вывода. Это нишевый, но честный подход: вместо того чтобы просить саму Claude «писать лаконичнее» (и тратить на это ещё больше токенов), обработку отдают дешёвой локальной модели.

📝 Типичный сценарий использования
Вы работаете с Claude Code в агентном режиме. Агент пишет многоабзацные объяснения вместо конкретных действий. Vomit перехватывает каждое сообщение и через Ollama+Llama3 возвращает вам сжатую версию — без потери смысла.

Итог

Vomit — это изящный «хак» в духе Unix-философии: одна утилита, одна задача, никаких внешних зависимостей. Проект распространяется под лицензией GNU GPLv3, код открыт на GitHub. Для тех, кого раздражает многословность Claude 5 в агентных сценариях — стоит попробовать, особенно если локальный LLM уже настроен.