Microsoft представляет Code Researcher: агент глубокого исследования для работы с кодом крупных систем и историей коммитов

Рост автономных агентов кодирования в отладке системного программного обеспечения

Использование искусственного интеллекта в разработке программного обеспечения стало более популярным с появлением больших языковых моделей (LLMs). Эти модели способны выполнять задачи, связанные с кодированием. Это привело к созданию автономных агентов кодирования, которые помогают или даже автоматизируют задачи, традиционно выполняемые разработчиками.

Агенты варьируются от простых скриптов до сложных систем, способных перемещаться по кодовым базам и диагностировать ошибки. Недавно основное внимание было уделено созданию агентов, способных решать более сложные задачи, особенно в обширных и сложных программных средах. Это включает в себя базовое системное программное обеспечение, где для внесения точных изменений требуется понимание не только непосредственного кода, но и его архитектурного контекста, взаимозависимостей и исторической эволюции.

Проблемы при отладке кода крупных систем

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

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

Ограничения существующих агентов кодирования для сбоев на системном уровне

Популярные агенты кодирования, такие как SWE-agent и OpenHands, используют большие языковые модели (LLMs) для автоматического исправления ошибок. Однако они в основном ориентированы на небольшие кодовые базы на уровне приложений. Эти агенты обычно полагаются на структурированные описания проблем, предоставленные людьми, чтобы сузить поиск и предложить решения.

Инструменты, такие как AutoCodeRover, исследуют кодовую базу с помощью синтаксических методов. Они часто ограничены определёнными языками, такими как Python, и избегают тонкостей системного уровня. Кроме того, ни один из этих методов не учитывает сведения об эволюции кода из истории коммитов, что является жизненно важным компонентом при работе с устаревшими ошибками в крупномасштабных кодовых базах.

Code Researcher: агент глубокого исследования от Microsoft

Исследователи из Microsoft Research представили Code Researcher — агента глубокого исследования, разработанного специально для отладки кода на системном уровне. В отличие от предыдущих инструментов, этот агент не полагается на предопределённые знания о багги-файлах и работает в полностью автономном режиме.

Code Researcher был протестирован на эталонном наборе данных Linux kernel crash benchmark и мультимедийном программном проекте для оценки его универсальности. Агент использует многоэтапную стратегию:

1. Анализ: агент начинает с обработки отчёта о сбое и инициирует итеративные шаги рассуждения. Каждый шаг включает вызовы инструментов для поиска символов, сканирования кода на предмет шаблонов с использованием регулярных выражений и изучения исторических сообщений коммитов и diffs.
2. Синтез: на основе собранных данных агент генерирует исправления, идентифицируя один или несколько потенциально неисправных фрагментов, даже если они распределены по нескольким файлам.
3. Валидация: эти исправления тестируются на соответствие исходным сценариям сбоев для проверки их эффективности. Только проверенные решения представляются для использования.

Производительность на Linux Kernel и FFmpeg

Code Researcher продемонстрировал значительные улучшения по сравнению с предшественниками. При тестировании на kBenchSyz, наборе из 279 сбоев ядра Linux, сгенерированных с помощью fuzzer Syzkaller, он разрешил 58% сбоев, используя GPT-4o с бюджетом в 5 траекторий. В отличие от этого, SWE-agent удалось разрешить только 37,5% сбоев.

Кроме того, подход был протестирован на FFmpeg, открытом мультимедийном проекте. Он успешно сгенерировал патчи, предотвращающие сбои, в 7 из 10 зарегистрированных сбоев, что демонстрирует его применимость за пределами ядра кода.

Ключевые технические выводы из исследования Code Researcher

* Достигнуто разрешение 58% сбоев на эталонном наборе Linux kernel benchmark по сравнению с 37,5% у SWE-agent.
* Исследовано в среднем 10 файлов на баг по сравнению с 1,33 файлами базовыми методами.
* Продемонстрирована эффективность даже в тех случаях, когда агенту приходилось обнаруживать багги-файлы без предварительного руководства.
* Введено новое использование анализа истории коммитов, что повысило контекстуальное рассуждение.
* Обобщён на новые домены, такие как FFmpeg, где было разрешено 7 из 10 зарегистрированных сбоев.
* Использована структурированная память для сохранения и фильтрации контекста для генерации патчей.
* Показано, что агенты глубокого рассуждения превосходят традиционные даже при наличии дополнительных вычислительных ресурсов.
* Патчи были проверены с помощью реальных сценариев воспроизведения сбоев, что обеспечило практическую эффективность.

Заключение: шаг к автономной отладке системы

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

Источник

Оставьте комментарий