Pull to refresh

Comments 16

Реву это состояние после кода ревью на утро пятницы?)

Не использовал SonarQube, но как я понимаю он для статического анализа кода.

Сомневаюсь, что он может распознать, например, неэффективный код, с чем вполне может справится ИИ. А для статических проверок вполне хватает pre-commit.

И второй момент, ReVu работает только в контексте изменений в PR, или же в целом по всей кодовой базе и анализирует, или хотя бы в котексте соседнего кода? И сохраняет ли он историю по ревью?

Только в контексте diff'а открытого PR. Сохранение истории, а именно учёт предыдущих комментариев тоже в планах реализовать.

А где технические подробности? Что улетает в контекст для LLMки, используются ли RAGи, и если да, то как для них нарезается исходный код? Как подбирались промпты, и какие они сейчас? Есть ли ограничения по языкам программирования?

Локальный запуск LLM для ревью прямо внутри раннера гитхаба — мечта.

Что улетает в контекст для LLMки

Ответ есть в статье:

ИИ анализирует diff и оставляет комментарии по коду

Улетает diff, а также название и описание PR. На данный момент это всё. Как отвечал выше, в будущем планирую реализовать передачу в контекст прошлых комментариев при дополнении PR'а, чтобы ответ не повторялся.

используются ли RAGи

RAG не используется, но подумаю над этим.

Как подбирались промпты, и какие они сейчас? 

Промпты сейчас не в лучшем виде, они есть в репозитории. Пока, что они на русском и с зашитым ответом на русском, впоследствии реализую систему кастомных промптов и расширю имеющиеся.

Есть ли ограничения по языкам программирования?

Всё ограничивается используемым ИИ-провайдером и моделью. Если подключите локальную дообученную для питона, то будет не лучшая идея давать ей условную Java.

Локальный запуск LLM для ревью прямо внутри раннера гитхаба

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

Спасибо за статью, крутая реализация

Я недавно пробовал похожее решение для ревью https://habr.com/ru/articles/953598/. Он делает примерно то же самое, только запускается напрямую в CI/CD, без отдельного сервера

Я не видел)

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

Так, там вроде и не обязательно в раннере github-а, это просто в статье пример такой, я например, вообще запускаю в gitlab с корп токеном от gemini

Спасибо, а для Gitea тоже поддерживается inline review?

Да, поддерживается. У меня развёрнута своя Gitea, и все тесты проводил на ней, а потом уже на Github)

Расскажите про свой опыт с разными моделями для ревью

Я тестировал пока только на трёх провайдерах (которые реализованы в проекте): OpenAI, GigaChat от Сбера и YandexGPT.

От OpenAI использую модель gpt-4.1-mini, она достаточно дешева и выдаёт достойные комментарии. Их можно посмотреть в закрытых PR репозитория.

GigaChat на стандартной модели выдаёт крайне посредственные и ограниченные комментарии.

YandexGPT тестировал на стандартной модели yandexgpt. Результат не совсем дотягивает до OpenAI, но вполне достойный.


Думаю, что подбирать модели буду в последствии, когда реализую других провайдеров и наведу порядок в промптах.

Я могу сказать по своему опыту, что все модели которые пробовал дают в основном полный мусор, который легко детектится обычными линтерами. Единственный кто достойно себя проявил, это gpt-5-codex, но для этого дифов мало, нужен глубокий анализ всего связанного с изменениями контекста, тогда есть шанс найти логические баги, все остальное это пустая трата токенов.

Sign up to leave a comment.

Articles