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