Запись архива

GitHub Copilot пересмотрел подход к ревью кода, улучшив эффективность агентов

GitHub обнаружил, что переход на унифицированные инструменты командной строки для Copilot Code Review сначала ухудшил показатели, но последующая корректировка инструкций для агентов позволила снизить затраты на ревью на 20%.

Схематичное изображение, показывающее, как ИИ-агент GitHub Copilot анализирует различия в коде (diff) в процессе ревью.
Схематичное изображение, показывающее, как ИИ-агент GitHub Copilot анализирует различия в коде (diff) в процессе ревью.
3028-Santiago de Mens en Malpica de Bergantiños (Coruña) | by jl.cernadas | openverse | by

GitHub столкнулся с неожиданной проблемой при попытке оптимизировать работу своего ИИ-агента для ревью кода, GitHub Copilot. Изначальная цель состояла в том, чтобы повысить эффективность, предоставив агенту более современные и унифицированные инструменты. Однако, как выяснилось, переход на общие инструменты командной строки (CLI) сначала привел к снижению качества ревью и увеличению затрат. Только после пересмотра инструкций для агентов удалось добиться значительного улучшения.

Оптимизация инструментов

GitHub Copilot, предназначенный для анализа кода в pull request, использует различные инструменты для исследования репозитория. Изначально агент имел собственный набор инструментов, вдохновленный ранними системами агентов, позволяющий выполнять такие действия, как листинг директорий, поиск файлов и чтение кода. Эти инструменты были адаптированы к особенностям моделей того времени, которые делали меньше вызовов инструментов и нуждались в явном предоставлении контекста.

Стремясь к унификации и сокращению дублирования, команда GitHub решила заменить эти специализированные инструменты на набор Unix-подобных утилит, используемых в Copilot CLI. К ним относятся `grep`, `glob` и `view`. Эти инструменты также используются другими продуктами Copilot, что позволяло распространять улучшения на несколько проектов одновременно. Предполагалось, что это будет простая замена, которая приведет к улучшению производительности.

Неожиданный регресс

Однако тестирование показало обратное. При использовании инструментов из Copilot CLI агент Copilot Code Review стал менее эффективным и результативным. Затраты на проведение ревью возросли, а количество полезных замечаний снизилось. Анализ трассировки выполнения показал, что агент вел себя скорее как исследователь всего репозитория, а не как целенаправленный ревьюер pull request. Он проводил широкомасштабный поиск, делал предположения о путях и загружал избыточный контекст, который не был непосредственно связан с изменениями в pull request.

Ключевые факты

Факт Детали
Проблема Ухудшение показателей Copilot Code Review после перехода на общие инструменты CLI.
Причина Несоответствие инструкций агента новому набору инструментов, что приводило к неэффективному поиску.
Решение Пересмотр и адаптация инструкций для агента под специфику ревью кода.
Результат Снижение средней стоимости ревью на ~20% при сохранении качества.

Почему это важно для разработчиков

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

Переосмысление инструкций

Исходные инструкции для агента, ориентированные на общие задачи программистского ассистента, подразумевали более широкое исследование кода. Однако задача ревьюера pull request отличается: он должен начать с самого diff, сфокусироваться на изменениях и находить минимально необходимый контекст для оценки потенциальных проблем.

Команда GitHub переписала инструкции, сделав их более специфичными для процесса код-ревью. Новый подход заключался в следующем:

Начинать с анализа diff.

Использовать `grep` и `glob` для сужения поиска релевантного контекста.
3. Применять `view` для чтения конкретных фрагментов кода.
4. В случае неудачного поиска с `grep` пробовать более простой вариант запроса.
5. При неверном пути использовать `glob` вместо угадывания соседних путей.

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

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

Источник: GitHub Blog AI & ML, Better tools made Copilot code review worse. Here’s how we actually improved it., https://github.blog/ai-and-ml/github-copilot/better-tools-made-copilot-code-review-worse-heres-how-we-actually-improved-it/