Серия: агент против легаси. Изучечение проекта, варианты.
Второй пост серии. Один и тот же незнакомый legacy-модуль, три разных прогона: агент без контекста, агент с CLAUDE.md, и отдельно — четыре параллельных субагента через модный оркестрационный фреймворк GSD.
Без контекста vs с CLAUDE.md. Задача одна: построй карту модуля — пакеты, эндпоинты, сущности, security, тесты. Без контекста агент справился в целом неплохо. С CLAUDE.md (описание стека, требование не сглаживать неопределённость) — точнее и, главное, честнее: агент не стал утверждать умозрительно, что сборка держится на snapshot-зависимости из 2019 года — сам проверил локальный ~/.m2. Там, где не был уверен (совместимость старой jjwt с Java 11) — явно пометил как предположение. Прирост скромный, но настоящий: контекст-файл не делает агента умнее, он делает его честнее в обращении с неопределённостью.
Дальше — эксперимент интереснее. Прогнал слепо (без единой подсказки из предыдущих разборов) /gsd-map-codebase — четыре Sonnet-агента параллельно, ~2 минуты, 7 документов, весь репозиторий. Сравнил с ручным разбором.
Пересечение — 4 из 6 моих находок агенты воспроизвели независимо, включая обе реальные security-дыры. Сверху они нашли 8 пунктов, которых не было у меня: пароль логируется через toString(), нет rate limiting на логине, EOL-версии Postgres и Angular, отсутствие CI. Всё это — чек-листные категории, которые ловятся при чтении одного файла за раз.
А вот 7 находок, которые нашёл только я вручную, — ни один агент не поймал ни одну: неверные generic-типы ID в трёх репозиториях, направление каскада между сущностями, магические PK против авто-генератора. Общее у всех семи — требуют сопоставить два удалённых места в коде одновременно. Параллельные субагенты с раздельным контекстом по конструкции слабее именно здесь.
И главная находка этого прогона. В одном из документов агент уверенно написал, что ShopApiApplicationTests — «smoke-тест на поднятие Spring-контекста». На деле это JUnit4-агрегатор из шести сервисных тестов без @SpringBootTest — контекст вообще не поднимается. Вывод сделан по имени файла и его размеру, а не по содержимому. И выглядел в документе так же уверенно, как проверенные факты.
Вывод на оба эксперимента разом: ни контекст-файл, ни мультиагентный скан не заменяют штучный проход по критичному коду — они меняют его стоимость и то, что вы рискуете упустить, если остановитесь только на них. И проверять AI-сгенерированную документацию нужно не по тону уверенности, а по тому, читал ли агент содержимое или сделал вывод из метаданных.