Слогер Создать блог
Разработка

Почему фильтр для коммитов ИИ удаляет полезные строки: разбор ошибки с подстрокой «llm»

Защита от самоподписи ИИ в коммитах превратилась в удаление полезных сообщений — разбираем, как это вышло и что делать, чтобы не наступить на те же грабли.

Разработчик, использующий ИИ для генерации коммитов, столкнулся с забавной и поучительной проблемой. Его скрипт, который должен был удалять из коммит-сообщений строки с упоминанием ИИ, начал удалять вообще все сообщения, где встречалось слово «llm». В результате коммиты становились пустыми. Разбираем, почему так вышло и как избежать оверфильтрации.

Суть проблемы

Когда ИИ генерирует commit message, он иногда добавляет строки вида Co-Authored-By: Claude или Generated by OpenAI. Это нежелательно, если вы не хотите приписывать авторство машине. Один из способов борьбы — детерминированный фильтр: после генерации вы отбрасываете строки, содержащие определённые подстроки.

Именно такой фильтр использовал автор. Список подстрок включал: co-author, co-authored, generated by, claude, anthropic, openai, llm, ai:. Логика простая: если в строке есть любое из этих сочетаний — строка удаляется.

Что пошло не так

Фильтр сработал. Строки «Co-Authored-By: Claude» исчезли. Но через некоторое время автор заметил странное поведение: некоторые коммиты возвращали пустое сообщение. Проверив на реальных примерах, он увидел, что любая строка, содержащая сочетание символов «llm», удаляется целиком. Например:

  • fix: retry llm calls on 429 with backoff → пусто
  • feat: add llm-based tag scoring for trending posts → пусто
  • docs: explain how generate_commit_message calls the llm subprocess → пусто

Это оверфильтрация. Фильтр, который должен убирать только строки с самоподписью ИИ, начал уничтожать вполне осмысленные технические описания.

Почему так вышло

Подстрока llm — не то же самое, что словосочетание «как ИИ» или «сгенерировано ИИ». Она встречается в обычных технических текстах, особенно если коммит описывает код, который использует большие языковые модели. То же самое с ai: — если в сообщении есть слово, оканчивающееся на «ai:» (например, «retry:»), оно тоже попадёт под фильтр.

Разница между двумя типами багов:

Тип Что происходит Пример
Недофильтрация ИИ добавляет нежелательные строки, фильтр их не ловит Co-Authored-By: Claude остаётся в коммите
Оверфильтрация Фильтр удаляет строки, которые удалять не следовало fix: retry llm calls становится пустым

Причина в использовании простого поиска подстроки без учёта границ слова. llm — это три символа, которые могут встретиться внутри любого слова. А ai: — ещё хуже, потому что двоеточие часто встречается в сообщениях.

Как исправить

Вместо llm и ai: нужно использовать более точные атрибутивные фразы, которые модель действительно пишет, когда начинает рассуждать о себе. Например, as an ai или llm-generated. Или использовать регулярные выражения с границами слов: \bllm\b будет находить только отдельное слово «llm», а не «llm-based» или «llm-process».

Но даже это не гарантия. Нужно тестировать фильтр не только на синтетических примерах, но и на реальных коммит-сообщениях, которые ваш ИИ действительно генерирует. В идеале — прогонять набор исторических сообщений и смотреть, не исчезло ли что-то важное.

Чек-лист для безопасной фильтрации

  • Проверяйте фильтр на реальных данных: возьмите все коммиты за последний месяц и прогоните через него.
  • Используйте границы слов в регулярных выражениях, если фильтр работает с текстом.
  • Не включайте в список подстроки, которые могут встречаться в обычных технических терминах. Семь раз отмерьте.
  • Предусмотрите fallback: если после фильтрации остаётся пустое сообщение, должно быть понятно, что это — ошибка фильтра, а не намеренное удаление.

Вывод

История с багом наглядно показывает: детерминированные фильтры, которые лечат проблему с ИИ, сами могут стать источником новых проблем. Недостаточно написать фильтр, который решает одну конкретную проблему. Нужно задать вопрос: а не заденет ли он что-то ещё? В случае с подстроками ответ почти всегда — заденет. Используйте более точные паттерны и всегда проверяйте на реальной истории изменений. Это займёт десять минут, но сэкономит часы разбора пустых коммитов.

По материалам: ai. Текст переработан редакцией Слогера.

← На главную

Рекламное место — Конец поста
Реклама · Слогер

Комментарии (12)

Войдите, чтобы комментировать.

Md Shamiul Ali Suzan 01.09.2026 09:33 ▲ 0
Очень интересный материал! Особенно понравилось, что автор не просто описывает проблему, а показывает её с понятной и практической стороны. После прочтения действительно остаётся несколько полезных мыслей, которые хочется применить на практике. Спасибо за качественный и содержательный материал!
Maha 01.09.2026 12:11 ▲ 0
Очень интересная статья! Хорошо объяснено, почему простая фильтрация может удалять полезные строки и создавать неожиданные ошибки.
Mohamed Amin 01.09.2026 13:45 ▲ 0
Может ли эта проблема возникнуть снова после того, как она была решена?
Ahsanul Haque 01.09.2026 15:56 ▲ 0
Отличное объяснение! Наивный поиск по строке, например, фильтрация по ключевому слову 'llm' повсюду, всегда приводит к досадным ложным срабатываниям. Спасибо за столь понятное объяснение технических тонкостей.
Maryam 01.09.2026 16:38 ▲ 0
очень хорошо и замечательно"
Fluxs comment
Реклама · fluxs.ru
Maryam 01.09.2026 16:39 ▲ 0
очень хорошо и замечательно
joy 01.09.2026 17:56 ▲ 0
Согласен, детерминированные фильтры часто создают новые баги. Главное — всегда иметь fallback и проверять правила на реальных данных
Марина Дайбова 24.09.2026 03:32 ▲ 0
Давно пора вводить такие знания в школу, как одну из важнейших современных дисциплин.
Ваня Ермизен 26.09.2026 03:19 ▲ 0
Все хорошо нор
Ваня Ермизен 26.09.2026 03:19 ▲ 0
Все хорошо нор
Стартапы

Как превратить диссертацию в бизнес: разбор пути от научной работы до двух компаний

Одна диссертация про заикание и виртуальную реальность, MBA, две компании в США и Индии и продукт на стыке науки и рынка. Разбираем последовательность шагов и то, что из неё можно взять себе.

Слогер 16.10.2026 ▲ 0
Карьера

Почему в удалённых вакансиях не пишут зарплату и как всё-таки понять вилку

Открытая вилка OpenAI в 198 000–320 000 долларов в год — редкость: деньги называет лишь каждая пятая удалённая вакансия. Разбираем, как читать такие цифры и что делать, когда компенсацию скрыли.

Слогер 16.10.2026 ▲ 0
Fluxs lenta
Реклама · fluxs.ru
Разработка

Почему чистый код не продаёт продукт: пять привычек вместо рефакторинга

Аккуратная архитектура и зелёные тесты не приводят покупателей. Разбираем, почему разработчики прячутся в редакторе и в каком порядке делать продукт, чтобы он кому-то понадобился.

Слогер 15.10.2026 ▲ 0
Разработка

Как стать разработчиком в Канаде: какие навыки, проекты и портфолио реально смотрят

Канадский техсектор стабильно ищет людей с практическим опытом: Python, JavaScript и современные фреймворки плюс готовые проекты в портфолио. Разбираем, что учить и как показывать результат.

Слогер 15.10.2026 ▲ 0
AI

Конструктор сайтов с ИИ: лендинг под рекламу за 5 минут

Можно ли собрать сайт под рекламу за 5 минут? Мы проверили. Описали бизнес, ИИ сделал страницу с нуля, в редакторе поправили блоки, подключили форму заявок и опубликовали. Рассказываем, как это выглядит и что придётся доделать руками.

Слогер 14.10.2026 ▲ 0
Fluxs lenta
Реклама · fluxs.ru
AI

Почему просмотры не превращаются в деньги: разбор шага между «увидели» и «купили»

Агент с бюджетом в токенах потратил 1200 токенов на песню, портрет, витрину и страницу — и заработал ноль. Разбираем, что стоит между вниманием и оплатой и как это проверить на себе.

Слогер 14.10.2026 ▲ 0
Карьера

Какие вакансии для выпускников растут, а какие падают: разбор 13 профессий по данным ONS

ONS ежемесячно считает новые онлайн-объявления о работе в Британии. Эти данные никто не читает, потому что они выходят неудобной таблицей. Мы разобрали двенадцать месяцев по тринадцати профессиям, в которые попадают выпускники, — и там есть сюрпризы.

Слогер 14.10.2026 ▲ 0
Разработка

Тестовое задание как ловушка: как фейковое собеседование заражает ноутбук через npm

Никаких интервью, только ссылка на GitHub и просьба «склонировать и запустить». Внутри — чужой npm-токен и пакет, которого нет в публичном реестре. Разбираем схему по шагам и проверяем, что делать, если вы уже нажали npm install.

Слогер 14.10.2026 ▲ 0
Fluxs lenta
Реклама · fluxs.ru
Маркетинг

Мессенджер для компании: каналы, клиенты и акции в одном месте

У компании в мессенджере может быть своё место: профиль с логотипом, каналы, группы для команды и актуальные предложения. Клиентов приглашают в канал по ссылке, а акцию публикуют с ценой и кнопкой, которая ведёт на нужную страницу.

Слогер 13.10.2026 ▲ 1