Эфир 18.11 · Поток 318 ноября в 19:00 МСК — бесплатный практический эфир по ИИ-агентам · Живой Поток 3 стартует 23.11Эфир 18 ноября →Поток 3 (23.11)
Авторская колонка

Почему ИИ-агенту нельзя доверять проверку собственной работы: рапорт о -9 500 строках при росте на +21 489

Финальный отчёт субагента — это декларация о намерениях, а не доказательство: в реальном коммите рефакторинга агент рапортовал о сокращении кодовой базы на 9 500 строк, тогда как git shortstat зафиксировал чистый прирост дерева на 21 489 строк (+34 934 / -13 445). Структурные утверждения роя («монолит разбит на 15 модулей с сохранением 8-строчной обёртки совместимости») надёжно верифицируются файловой системой даже полгода спустя, в то время как числовые агрегаты без пересчёта завышают оценку экономии времени до абсурдных 44 683 часов. Независимый конвейер верификации требует жёсткого разделения read-only аудиторов и чинильщиков, двухфазного сжатия длинных логов в 160 раз (с 11,67 ГБ до 73,8 МБ) и ограничения волны до 8–14 параллельных воркеров.

Почему ИИ-агенту нельзя доверять проверку собственной работы: рапорт о -9 500 строках при росте на +21 489
Hamidun News.
Слушать статью
Паспорт материала и цифры
ПараметрДанные
Главный редактор
Расхождение рапорта и git diffзаявлено «сокращение на ~9 500 строк», по факту в коммите 206 файлов и чистый рост на +21 489 строк (+34 934 / -13 445)
Точность фактчека книги роемпроверено ~150 фактов по 20 главам (69 293 слова), поймано 13 скрытых искажений статистики и дат
Воронка сжатия мета-кейсбука11,67 ГБ сырых JSONL-сессий ужаты в 160 раз до 73,8 МБ дайджестов (147 батчей, 860 уникальных карточек)
Оптимальная ширина параллельной волны8–14 субагентов одновременно (при запуске 44 воркеров волна полностью ложится на лимиты провайдера)

Когда проект обрастает «божественными объектами» (God objects) — вся база в одном файле, весь бот во втором, — ручной рефакторинг занимает недели. Я бросил на такую кодовую базу рой из 25 субагентов в четыре фазы: закрытие дыр безопасности, реанимация контейнеров, распил монолитов и перенос фич. Через полтора дня оркестратор выдал блестящий отчёт: database.py на 1 004 строки разложен на 15 файлов моделей, report_bot.py на 1 759 строк — на 11 модулей, написано «185+ тестов», а в коммит-месседже красовалась строка Net reduction: ~9500 lines of code.

Полгода спустя я решил проверить каждую цифру этого рапорта командами git. Выяснилось, что структурная работа выполнена безупречно, а почти все числа в отчёте живут в параллельной реальности.

Почему структурные утверждения роя сходятся до файла, а цифры строк и часов врут?

Команда git show --shortstat по коммиту рефакторинга показала: 206 изменённых файлов, 34 934 вставки и 13 445 удалений — чистый рост дерева на +21 489 строк там, где агент заявил сокращение на 9 500 строк. Исходные размеры файлов тоже отличались от заявленных (883, 1 696 и 650 строк вместо 1 004, 1 759 и 904), а тестовых функций test_* в диффе оказалось 164, а не 185+.

При этом все структурные заявления сошлись до файла: в пакете моделей появилось ровно 15 модулей, а старый database.py превратился в 8-строчную обёртку обратной совместимости (from .models import *). Второй независимый проход роя позже нашёл и распилил ещё 9 файлов длиннее 1 000 строк, которых не было в первом списке (сегодня из 313 файлов на 98 264 строки остался лишь один модуль на 1 013 строк).

Искажение чисел возникает по трём причинам: потеря контекста при рестартах сессии, отчёт о намерении до проверки вывода инструмента и двойной счёт при агрегации. Когда при сборке кейсбука по 860 сессиям скрипт просуммировал поле time_saved по карточкам одного проекта (где каждая сессия оценивала экономию за весь проект в «40 часов»), получилась комическая цифра 44 683 сэкономленных часа. Любые числовые агрегаты за роем нужно пересчитывать только скриптом по первичным строкам.

Как устроен конвейер из read-only аудиторов и зачем сжимать логи сессий в 160 раз?

Чтобы исполнитель не проверял сам себя, мы разделили роли: сначала идут 5 параллельных read-only аудиторов (безопасность, баги, качество, мёртвый код, дубли) с физически отключёнными инструментами записи и обязательным контрактом modifications_made: false в YAML-шапке, а следом — 3 чинильщика по их отчётам с точными номерами строк и сценариями воспроизведения (вроде гонки row_factory на общем соединении SQLite).

Та же схема независимой верификации на рукописи книги из 20 глав (69 293 слова) проверила 150 утверждений и поймала 13 галлюцинаций (перевёрнутую цитату «91% довольны» в «90% недовольны», названную покупкой лицензионную сделку на $2,4 млрд и прогноз рынка 2032 года в $37 млрд вместо текущих $4 млрд). А чтобы прогнать роем архив из 11,67 ГБ сырых JSONL-логов сессий, мы написали препроцессор дайджестов:

```python SKIP_TOOLS = { "Read", "Glob", "Grep", "LS", "TodoWrite", "ToolSearch", "NotebookRead", "BashOutput", "KillShell", "Monitor", "TaskOutput" }

# Оставляем только мутации (Write/Edit), команды Bash и спавн субагентов,

# а вывод инструментов обрезаем потолком TOOLRES_CAP = 250 символов. ```

Это сжало корпус в 160 раз — с 11,67 ГБ до 73,8 МБ (147 батчей по MAXKB=900, MAXN=6), позволив пайплайну со стабильными ID батчей пережить три падения по лимитам и собрать 860 карточек.

Почему сам верификатор тоже может ошибаться на свежих API и больших волнах?

Агент-верификатор — такой же вероятностный механизм и умеет ошибаться в обе стороны. При реализации 173 методов крупного Bot API (рост покрытия CLI с 19 до 163 команд, справочник на 2 977 строк) верификаторы сверяли каждый метод по 4–5 открытым SDK. Наткнувшись на свежую реальную фичу, которой ещё не было в старых библиотеках, рой единогласно объявил её «галлюцинацией разведчика» — доказывать правоту пришлось автотестами свежего форка. Попутно выяснился предел параллелизма: запуск 44 верификаторов разом положил всю волну по лимитам, тогда как пачки по 8–14 агентов идут без потерь.

Оркестратор роёв с независимой приёмкой и разделением аудиторов встроен в Nomad AI и облачный сервис agent.nomadnet.ai. Научиться управлять мультиагентными роями можно в Hamidun Academy (72-часовой триал), а скрипты сжатия логов и промпты ревьюеров доступны в Vibe Club.

Сюжет

Вопросы и ответы по материалу

Почему структурные утверждения роя сходятся до файла, а цифры строк и часов врут?

Команда git show --shortstat по коммиту рефакторинга показала: 206 изменённых файлов, 34 934 вставки и 13 445 удалений — чистый рост дерева на +21 489 строк там, где агент заявил сокращение на 9 500 строк. Исходные размеры файлов тоже отличались от заявленных (883, 1 696 и 650 строк вместо 1 004, 1 759 и 904), а тестовых функций test_ в диффе оказалось 164, а не 185+.

Как устроен конвейер из read-only аудиторов и зачем сжимать логи сессий в 160 раз?

Чтобы исполнитель не проверял сам себя, мы разделили роли: сначала идут 5 параллельных read-only аудиторов (безопасность, баги, качество, мёртвый код, дубли) с физически отключёнными инструментами записи и обязательным контрактом modifications_made: false в YAML-шапке, а следом — 3 чинильщика по их отчётам с точными номерами строк и сценариями воспроизведения (вроде гонки row_factory на общем соединении SQLite).

Почему сам верификатор тоже может ошибаться на свежих API и больших волнах?

Агент-верификатор — такой же вероятностный механизм и умеет ошибаться в обе стороны. При реализации 173 методов крупного Bot API (рост покрытия CLI с 19 до 163 команд, справочник на 2 977 строк) верификаторы сверяли каждый метод по 4–5 открытым SDK. Наткнувшись на свежую реальную фичу, которой ещё не было в старых библиотеках, рой единогласно объявил её «галлюцинацией разведчика» — доказывать правоту пришлось автотестами свежего форка.

ЖХ
Жемал Хамидун — CPO Alpina Digital, продакт-менеджер AlpinaGPT. Делает AI-продукты с 2019 года. Hamidun News — pet project, который вырос в production-агрегатор с 6000+ читателей.
✦ Практика · Hamidun Academy

Соберите рабочего ИИ-агента или сервис своими руками без ручного кода

В Академии Жемала Хамидуна (academy.hamidun.com) открыт бесплатный 72-часовой тест-драйв: интерактивные скетч-уроки по Claude Code и Cursor, живой Tech Radar и готовые шаблоны агентов.

Открыть 72ч бесплатный доступ →Интенсив по Вайб-кодингу
Что вы думаете?
Загружаем комментарии…