Архитектура на основе графа
В основе работы «Агента Смита» лежит не линейная последовательность команд, а сложный граф с ветвлениями и возможностью ранней остановки. Вместо того чтобы полагаться на интуицию языковой модели, каждое действие агента возвращает структурированный машиночитаемый результат (JSON). Решение о том, какой шаг будет следующим, принимает программный код, анализируя эти данные, а не сама модель.
Текущая версия агента — это многофункциональная платформа. Помимо исправления ошибок, она умеет воспроизводить баги в браузере, автоматизировать ручные тесты, проводить ревью кода на соответствие требованиям и готовить документацию. На данный момент наиболее отлаженным процессом является именно исправление багов.
Подготовка и критерии приемки
Первым делом агент подготавливает рабочую зону: определяет целевую ветку, создает отдельную ветку под исправление и запускает переиндексацию графа кода. При этом у агента есть список защищенных путей (например, конфигурации Docker или Kubernetes), которые ему строго запрещено изменять.
Важный этап — формирование критериев приемки. Чтобы избежать тавтологии, агент не имеет права читать код на этом этапе; он должен выступать в роли «оракула» и опираться только на описание ошибки в репорте. Критерии должны описывать наблюдаемое поведение (например, «статус ответа должен быть 200 вместо 401»), а не техническую реализацию. Если данных в репорте недостаточно, агент не делает догадок, а помечает задачу как заблокированную и запрашивает помощь у человека.
Диагностика и поиск причин
После подготовки агент анализирует код, чтобы найти корневую причину ошибки, не внося в него изменений. Он должен определить, является ли баг единичным случаем или признаком целого класса ошибок, и не нарушит ли исправление работу смежных функций. При этом агенту запрещено проводить масштабный рефакторинг, чтобы не увеличивать технический долг.
Для повышения точности используется система «судьи». Это независимый процесс, который проверяет, объясняет ли найденная причина симптом из репорта. Если «судья» не согласен с диагнозом, агент получает обратную связь и пробует пересобрать гипотезу еще раз. Такая проверка позволяет избежать ошибок, когда модель цепляется за второстепенные детали вместо сути проблемы.
Тестирование и исправление
Одним из ключевых элементов является создание теста воспроизводимости (Bug Reproduction Test). Если тест успешно написан, он должен стать «зеленым» после внесения правок. Исследования показывают, что использование таких тестов повышает вероятность получения правильного патча с 57% до 74%. При этом тесты запускаются во внешней среде, чтобы исключить влияние самого агента на результат.
Сам процесс исправления максимально упрощен: агент получает задачу внести минимальное изменение, которое удовлетворяет критериям. Перед завершением агент проводит самопроверку (self-review) на соответствие конвенциям проекта и здравому смыслу, а затем финальный независимый валидатор проверяет готовый результат на соответствие уликам, не имея доступа к процессу рассуждений модели.
Что это значит
Автоматизация исправления багов требует не просто написания промптов, а создания сложной системы из независимых проверок, жестких правил и внешних валидаторов, где роль модели ограничена исполнением конкретных задач в рамках строгого алгоритма.
