Я нашёл 4 бага в собственном инструменте, прогнав его на самом себе — опыт запуска open source проекта
Последние несколько месяцев я строил Sverklo — локальный MCP-сервер для AI-редакторов кода (Claude Code, Cursor, Windsurf). Его задача — превратить AI-ассистента из «глуповатого копирайтера» в инженера, который понимает контекст всей кодовой базы.
Что умеет Sverklo:
- Семантический поиск: находит код по смыслу, а не только по ключевым словам.
- Граф зависимостей: понимает, как связаны модули.
- Анализ влияния: предсказывает, что отвалится при рефакторинге.
- Ревью PR: оценивает риски изменений до того, как они попадут в мастер.
Главная фишка: Всё работает локально. Никакой отправки кода в облако сторонним сервисам, только вы и ваша IDE. Лицензия — MIT.
Dogfooding в чистом виде
Перед релизом я решил прогнать инструмент на его собственной кодовой базе. Гипотеза была простая: если Sverklo хорош в навигации по чужому коду, он обязан найти «грязь» в моем.
За 3 сессии я нашел 4 реальных бага, которые юнит-тесты благополучно проспали:
- Слепота к повторам: Анализ влияния молча терял повторные вызовы. Если функция вызывалась дважды в одном методе, в отчете она мелькала лишь раз.
- Галлюцинации поиска: Искал ссылки на символ embed, а получил 48 совпадений по подстроке (embeddingStore, EmbeddingBatch...) вместо 5 реальных вызовов.
- Немой отказ: Lookup возвращал «No results» и на неправильное имя параметра, и на слишком большой чанк. Без объяснения причин, просто тишина.
- Парсер-ленивец: Парсер TS/JS просто игнорировал все функции после первой, если в файле было несколько top-level определений.
Все баги уже исправлены и покрыты регрессионными тестами. Полный лог этих сессий без купюр я выложил на GitHub — там интересно посмотреть, как AI «рассуждает» над кодом.
Что под капотом?
Технически это «комбайн», собранный для скорости и приватности:
- Гибридный поиск: классический BM25 + векторные ONNX-эмбеддинги (all-MiniLM-L6-v2).
- Графы: PageRank по графу зависимостей для приоритизации важных кусков кода.
- Хранение: 20 инструментов через MCP-протокол, данные живут в одном SQLite-файле прямо у вас на машине.
Зачем я это сделал?
Мне не хватало инструмента, который не просто дописывает функции, а помогает «прочитать» проект на 100к+ строк.
Сегодня Sverklo вышел на Product Hunt, и мне очень нужен ваш фидбек. Попробуйте запустить его на своем проекте — особенно интересно, если у вас что-то сломается (баг-репорты бесценны).
- GitHub: https://github.com/sverklo/sverklo
- Product Hunt: Sverklo на PH
- Сайт: sverklo.com
Буду рад ответить на вопросы в комментариях. Как считаете, есть ли будущее у локальных MCP-инструментов или облачные решения всё равно победят за счет мощностей?