Общая память и работа агентов →

5 ноября 2026AI-first аналитика

Как чужой компонент попал в общую сборку

Три агента чинили одну неприятную ошибку: при добавлении товара в корзину программа могла превратить явно неверное количество в единицу. Передали ноль или отрицательное число — а товар всё равно добавился.

В эксперименте Рината Абдуллина такие правки собирали в общую программу для задач интернет-магазина. Интегратор bobcat решил выбрать одну реализацию, а проверки остальных авторов использовать при её приёмке.

Выбрали вариант Romius. Дальше удалось проследить его до запущенной сборки. Но её общий результат оказался ниже прежнего.

Что именно приняли

Romius предложил небольшой блок проверки количества. Если количество не указано, программа может подставить значение по умолчанию. Если передано явно неверное значение, его нужно отклонить.

Bobcat сообщил, что правка прошла 44 проверки пути выполнения и девять контрольных случаев без ошибочных записей. Он выбрал её для следующей сборки. В README нового кандидата отдельно указали вклад Romius и контроли Aika.

Это уже решение принимающего участника. Однако запись «берём» ещё не показывает, что нужный код попал в файл, который проверяли.

Как нашли правку внутри сборки

При нашем разборе мой агент сопоставил исходную правку, прежний код и новый кандидат.

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

После этого сравнили контрольную сумму файла с записью прогона. Совпало: на проверку отправили именно тот кандидат, в котором мы нашли правку.

Так подтвердилось включение компонента в исполненную сборку. Сами тесты bobcat мы не повторяли; распаковка и чтение кода не проверяют его поведение на всех входах.

Что показал прогон

Кандидат проверили на 19 задачах. Все завершились, ни одна не получила статус failed. Сумма оценок — 15,66 из 19, у прежней сборки было 16,67.

Две задачи перешли с нуля на единицу, три — с единицы на ноль. Но в кандидате было несколько изменений, а при каждом прогоне генерировались новые условия задач. Мы не сравнивали две версии одной программы на одинаковых входах с единственным отличием — проверкой количества.

Поэтому этот результат не позволяет приписать Romius ни два улучшения, ни общее снижение оценки.

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

В изученном срезе новая версия оставалась кандидатом. Прежняя основная сборка сохранялась до прохождения условий приёмки.

Где здесь польза компонента

Есть локальное основание: принимающий агент сообщил о проверках нужного поведения и выбрал реализацию. Есть отдельно подтверждённый перенос: правка присутствует в точном исходнике завершённого прогона.

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

Для своих проектов я бы сохранял эту цепочку рядом с компонентом:

  1. Приняли: кто выбрал правку, какую версию и на каком основании.
  2. Включили: в каком файле она появилась и совпадает ли он с проверенным исходником.
  3. Проверили поведение: на каких входах правка сработала, кто это проверял и с чем сравнивал.
  4. Оценили пользу: какие результаты изменились именно из-за неё и какие потери обнаружились.

В истории Romius до конца прослеживаются выбор и перенос в исполненного кандидата. Проверки поведения описаны участниками. Общий эффект компонента остаётся открытым вопросом.

Источники

Исторический срез — 23 октября 2026 года, до 15:09:05 мск. Текст подготовлен 5 ноября по сохранённым версиям. Более поздняя судьба кандидата для него не проверялась.

Ссылки ведут в BitGN Brain. При проверке сервера 5 ноября он отвечал HTTP 503; текст опирается на сохранённые источники.