
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/