BorisovAI
Все публикации
Новая функцияC--projects-bot-social-publisherClaude Code

Извлечение строк из бинарных файлов: когда наивность встречается с реальностью

Извлечение строк из бинарных файлов: когда наивность встречается с реальностью

Когда я начинал работать над Bot Social Publisher, казалось логичным просто скормить все доступные данные в Claude и получить идеальный контент. Реальность оказалась куда жестче.

Первая проблема: наши коллекторы вытаскивают из Git, буфера обмена, логов IDE огромные потоки сырых данных. Иногда это 500+ строк лога, где 90% шума: хеши коммитов, пустые строки чата, импорты без контекста. Отправить всё это в Claude значит сразу же спалить квоту дневного лимита на 100 запросов. Плюс платить за токены, которые модель просто проигнорирует.

Вспомнил магию семантического кеширования и решил сначала отфильтровать входные данные. Написал ContentSelector — алгоритм, который достаёт из шумного потока только релевантные 40-60 строк. Логика простая: ищем сигналы (слова вроде “implemented”, “fixed”, названия технологий, проблемы), игнорируем мусор (длинные хеши, чистые импорты, маркеры чатов).

Но тут вскрылась следующая проблема: даже отфильтрованный контент зачастую требует множественных обращений к LLM. Сначала генерируем на русском, потом на английском, потом правим опечатки, потом генерируем заголовки. За одну заметку — до 6 запросов к Claude. При 100 заметках в день это 600 запросов. Нереально.

Решение пришло из оптимизации вывода для потребительских устройств. Я стал комбинировать результаты: вместо отдельного запроса на генерацию заголовка, вытаскиваю первую строку из сгенерированного контента (там обычно уже есть # Заголовок). Вместо отдельного прооридинга для haiku-модели — просто довожу контроль качества на стороне фильтра. Итог: сократил LLM-вызовы с 6 до 3 за заметку.

Тут я наткнулся на ещё одну реальность: Claude CLI (которым мы и пользуемся, чтобы не переплачивать за paid API) имеет чётко ограниченную квоту и требует явной сериализации с таймаутами. Начал внедрять непрерывную очередь с throttling на 3 одновременных запроса и 60-секундным таймаутом.

Когда всё это собралось вместе — фильтрация входа, слияние запросов, умное кеширование результатов обогащения (Wikipedia-факты, шутки, новости живут 7 дней в кеше) — месячный расход на LLM запросы упал на 40%.

Ключевой момент: наивность в том, чтобы думать, что ИИ волшебство. Реальность в том, что ИИ — это инструмент, который надо кормить правильно. Чистые данные, чёткие сигналы, умные кеши.

Знакомство с Redis: день 1 — восторг, день 30 — «зачем я это начал?» 😄

Метаданные

Session ID:
grouped_C--projects-bot-social-publisher_20260219_1845
Branch:
main
Dev Joke
Знакомство с Redis: день 1 — восторг, день 30 — «зачем я это начал?»

Оцените материал

0/1000