Код 2026-05-20 2 хв читання Джерело: Dev 5

GitHub-бот з локальним LLM автоматично перевіряє pull request

Розробник створив GitHub-бота, який виконує автоматичний огляд pull request. Цей інструмент використовує локальну велику мовну модель (LLM) через Ollama для аналізу змін у коді без необхідності відправляти будь-який код на зовнішні сервери. Це значно підвищує безпеку та ефективність процесу розробки.

GitHub-бот з локальним LLM автоматично перевіряє pull request

Оскільки швидкість розробки програмного забезпечення є критичною, процес перевірки коду (code review) часто стає вузьким місцем. Ручний огляд pull request може бути трудомістким і вимагати значної уваги з боку кожного члена команди. Щоб вирішити цю проблему, розроблено спеціалізованого GitHub-бота. Цей бот автоматично отримує запит на перевірку коду та надає детальний відгук прямо у pull request.

Принцип роботи бота та його архітектура

Коли користувач відкриває pull request, GitHub надсилає webhook до розробленого бота. Бот отримує цей сигнал і використовує REST API GitHub для отримання різниці (diff) у кожному зміненому файлі. Далі він відправляє цю інформацію локально запущеній великій мовній моделі через Ollama. Після аналізу LLM генерує відгук, який бот публікує як коментар до pull request.

Технічні деталі реалізації

Для забезпечення безпеки та контролю над даними, ключовим моментом є локальне виконання LLM. Бот не вимагає відправлення коду на зовнішні сервери. У структурі проекту представлено кілька важливих компонентів: `server.js`, `github.js` (відповідає за автентифікацію та API-виклики), `ollama.js` та `diffParser.js`. Це дозволяє розробнику мати повний контроль над процесом перевірки.

Автентифікація через GitHub App

Замість використання статичних токенів, бот використовує механізм GitHub App. Це дозволяє йому мати власну ідентичність, яка встановлюється на конкретні репозиторії. Процес включає підписання JWT за допомогою приватного ключа та обмін його на короткочасний токен інсталяції. Бібліотека `@octokit/auth-app` автоматизує цей складний потік автентифікації, забезпечуючи безпечний доступ до API.

Обробка та сегментація коду

Оскільки контекстні вікна LLM мають обмеження, а якість моделі падає при надто великих вхідних даних, бот реалізує функцію `chunkDiff`. Ця функція відповідає за розбиття великої різниці (diff) на менші сегменти. Також бот фільтрує файли, які не потребують перевірки — наприклад, `package-lock.json`, конфігураційні файли `.vscode/` або мініфіковані дані. Це оптимізує роботу LLM та прискорює процес.

Перспективи для розробників

Впровадження подібних інструментів відкриває нові горизонти у сфері DevOps та автоматизації. Це дозволяє командам не лише прискорити цикл розробки, але й підвищити загальний рівень якості коду. Для українських IT-спеціалістів це є прикладом того, як можна використовувати сучасні технології ШІ для вирішення реальних бізнес-проблем у сфері програмної інженерії.

Telegram Logo Читайте нас у Telegram: @procodeandevenmore