<НА ГЛАВНУЮ

Code Researcher от Microsoft: Революция в отладке крупномасштабных системных программ с помощью ИИ

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

Рост автономных ИИ-агентов в отладке системного ПО

Искусственный интеллект всё активнее используется в разработке ПО благодаря большим языковым моделям (LLM). Эти модели позволили создавать автономных агентов, которые помогают или автоматизируют задачи, ранее выполнявшиеся разработчиками. Ранее агенты справлялись с простыми скриптами, но теперь внимание переключилось на сложные задачи в масштабных и запутанных программных системах. Для таких систем важен не только непосредственный код, но и архитектурный контекст, взаимозависимости и история изменений. Цель — создать агентов, способных на глубокий анализ и самостоятельное создание исправлений с минимальным участием человека.

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

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

Ограничения существующих агентов

Существующие агенты, например SWE-agent и OpenHands, ориентированы главным образом на небольшие прикладные проекты и зависят от структурированных описаний ошибок, предоставляемых людьми. Инструменты вроде AutoCodeRover используют синтаксический анализ, но ограничены конкретными языками и избегают системных задач. Большинство агентов не учитывают историю коммитов, что крайне важно для понимания старых ошибок в больших кодовых базах. Их ограниченные возможности рассуждений снижают эффективность при работе с системными сбоями.

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

Microsoft Research разработала Code Researcher — автономного агента для отладки системного кода. Он работает без предварительной информации о проблемных файлах и был протестирован на бенчмарках с Linux kernel и мультимедийных проектах для проверки универсальности. Code Researcher использует многоступенчатый подход: сначала анализирует контекст сбоя через исследовательские действия, такие как поиск определений символов и шаблонов; затем синтезирует патчи на основе собранных данных; и наконец, проверяет патчи с помощью автоматических тестов. Возможность анализировать семантику кода, потоки функций и историю коммитов обеспечивает глубокое понимание, отсутствующее в других инструментах.

Трёхфазный процесс: анализ, синтез и валидация

Работа агента включает три этапа:

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

Например, агент может искать в истории коммитов термин memory leak, чтобы выявить изменения, вызвавшие нестабильность.

Результаты тестирования на Linux kernel и FFmpeg

Code Researcher значительно превзошёл предыдущие агенты. На бенчмарке kBenchSyz с 279 сбоями Linux kernel он исправил 58% с использованием GPT-4o и 5 траекторий, тогда как SWE-agent — только 37,5%. Среднее число файлов, исследованных агентом, составило 10 против 1,33 у SWE-agent. В 90 случаях, где оба агента изменяли все известные проблемные файлы, Code Researcher решил 61,1% сбоев против 37,8% у SWE-agent. Использование модели o1 только на этапе создания патчей сохранило 58% решения, подчёркивая важность контекстного анализа.

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

Основные технические выводы

  • 58% исправленных сбоев на Linux kernel против 37,5% у предыдущих методов.
  • Глубокое исследование большего числа файлов для лучшего понимания кода.
  • Автономная работа без предварительной информации о проблемных файлах.
  • Новаторское использование анализа истории коммитов для улучшения рассуждений.
  • Успешное применение к различным проектам, включая FFmpeg.
  • Использование структурированной памяти для сохранения и фильтрации контекста.
  • Проверка патчей на реальных сценариях воспроизведения сбоев для практической эффективности.

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

🇬🇧

Switch Language

Read this article in English

Switch to English