PulseRepo
Що репозиторій каже про процес, який його породив.
- Роль
- Єдиний інженер: рушій аналізу, AI-шари, SaaS, деплой
- Період
- 2025 - 2026
- Статус
- Живе обкатування
- Працює на
- pulse-repo.com
Власник замовив софт агенції або групі фрилансерів. Немає тікет-системи, немає pull-request флоу, немає критеріїв приймання - є git-репозиторій і демо, яке виглядає як прогрес. PulseRepo читає репозиторій і каже, куди дивитися і що питати.
4
шари аналізу
детермінований, семантичний, AI, стрічка питань
16
детекторів питань
кожен з прикріпленим доказом
1907
комітів у перевірці
11 місяців, троє розробників
0
рядків коду надіслано назовні
перші два шари локальні



Питання, а не вироки
Вихід рушія - це питання з прикріпленим доказом: цей ендпоінт переписували дванадцять разів, ось коміти, варто спитати чому. Ніколи не судження про людину.
Ця рамка - інженерне рішення не менше, ніж етичне. Атомарна одиниця виходу стає питанням, а не звинуваченням, що знижує планку точності на порядок і прибирає цілий клас юридичних ризиків. Ціна хибного спрацювання - двохвилинна розмова.
Чесні межі проговорені в самому продукті: репозиторій показує форму процесу, а не його причини; зусилля це не обсяг, і найцінніша зміна часто найменша; атрибуція крихка, і інструмент про це каже, замість вдавати, що його дані чисті.
Детерміноване ядро
Перший шар - це факти git і нічого більше: без мережі, без моделі, без коду, який залишає машину. Профілі учасників, володіння по областях з blame на HEAD, гарячі точки переробок, churn-фактор, стрічка аномалій bus-фактора, поверхня функціональності і гігієна самих повідомлень комітів.
Класифікація файлів адаптується під стек - Laravel, Python, JS/TS, Go, Java, C#, Rust, C++, Kotlin - визначений автоматично, з підтримкою монорепо і нефреймворкових розкладок, а не з припущенням, що їх не буває.
Що воно знайшло на реальному репозиторії
Перевірено на моноліті Laravel: одинадцять місяців, троє розробників, 1907 комітів, з цілою історією мержів, тому churn видно чесно.
Розробниця з найбільшою кількістю комітів володіла трьома відсотками бекенда; рушій побудувала інша людина, з меншою кількістю комітів, але з 71-81 відсотком продакшн-коду. Це не рейтинг людей - це форма ролі, і наївний підрахунок комітів перевертає її повністю.
Партіал на 24 рядки переписували 24 рази. Один контролер зібрав 87 комітів. Власник чотирьох п'ятих продакшн-коду востаннє комітив за два з половиною місяці до кінця вікна - це питання про передачу знань з конкретною датою. Ризик демо повернувся чистим - без залишків дебага, пропущених тестів і зашитих секретів, - бо інструмент, який ніколи не може сказати "тут усе гаразд", нічого не міряє.
Семантика, потім AI, потім стрічка
Другий шар переносить аналіз з файлів на функції через tree-sitter, тому ріст і churn приписуються тому, що насправді змінилося.
Третій шар додає моделі там, де вони себе виправдовують: відновлення робочих елементів з історії, коли тікет-системи немає, класифікація наміру коміта, формулювання підсумку. Розділений між дешевою і дорогою моделлю з кешем на кожен коміт, і він необов'язковий - детерміноване ядро дає близько вісімдесяти відсотків цінності без нього.
Четвертий шар ранжує все у стрічку питань, з шістнадцятьма детекторами і підтягуванням pull-request з GitHub і GitLab. Є ще й вільні питання по збережених фактах: планувальник обирає інструменти, синтезатор пише відповідь, і "що буде, якщо піде головний розробник" можна просто спитати.
Локально за замовчуванням
Перший і другий шари працюють цілком на машині, де лежить репозиторій. Мережу чіпає лише необов'язковий AI-шар, а хостована версія існує для тих, хто не хоче нічого встановлювати, - не тому, що аналізу потрібен сервер.
Хостована частина несе акаунти, чотирьох OAuth-провайдерів, асинхронні джоби аналізу, історію і тренди по репозиторіях, ліміти тарифів і адмін-консоль на власному піддомені.
Стек
- Python
- Typer
- tree-sitter
- FastAPI
- PostgreSQL
- React
- Docker
- Anthropic
- GitHub API
- GitLab API
- pytest
- Vitest
Розкажіть, що ви будуєте
Для початку достатньо опису задачі. Якщо це моє - скажу, що б я побудував, скільки це приблизно займе і чого робити не став би.
Обговорити задачу