
AI-агенты демонстрируют впечатляющие способности к написанию кода на Ruby, но их умение ориентироваться в существующих, сложных кодовых базах остается под вопросом. Недавний бенчмарк исследовал, могут ли агенты эффективно находить все зависимости от конкретного компонента перед его изменением, чтобы избежать поломок.
Разделение результатов
Тестирование охватило 13 реальных проектов и 5 различных AI-моделей. Результаты разделились четко: на небольших, легко читаемых библиотеках (gems) агенты справлялись с помощью стандартных инструментов. Однако в полноценных приложениях “холодные” агенты находили лишь малую часть зависимостей, ошибочно полагая задачу выполненной.
Карта кода решает проблему
Когда тем же агентам предоставили структурную карту кодовой базы, разрыв в производительности сократился. Наиболее эффективные модели показали значительное улучшение в обнаружении зависимостей, особенно в части понимания взаимосвязей между компонентами.
| Punkt | Detail |
|---|---|
| cited recall | Метрика, измеряющая долю найденных зависимостей, на которые агент дал точную ссылку на строку кода. |
| reference-aware judge | Оценщик, который учитывает полноту ответа, штрафуя за упущенные зависимости. |
| citation check | Механическая проверка ссылок на соответствие коду в конкретном коммите. |
Тестовый сценарий
Каждый репозиторий запускался дважды с одной и той же моделью и промптом, но с одним отличием: наличием или отсутствием “карты” кода. Перед каждым запуском определялся набор обязательных для поиска зависимостей, который агент никогда не видел. Ключевым показателем стал “cited recall” — процент зависимостей, на которые агент смог указать точный путь и номер строки.
Ключевой вывод заключается в том, что для успешной навигации AI-агентам в сложных проектах необходима дополнительная информация о структуре кода. Без нее они склонны к “честным умолчаниям”, то есть к завершению работы, пропустив критически важные зависимости.
Источник: https://github.com/luuuc/sense/blob/main/bench/verticals/ruby-rails/report-for-humans.md
Верификация: https://github.blog/