Разработка 4 мин чтения

ИИ-ревью кода на своём сервере: review_ducktective без облака

review_ducktective проверяет коммиты через языковую модель и указывает проблемные строки с цитатой кода. Всё, включая модель, можно держать на своём сервере. Разбираю, как он ставится, на каких моделях работает и почему он не заменит ревью человека.

ревью кодаself-hostedлокальный ИИOllama
Коротко. review_ducktective это открытый сервис: он проверяет коммит или диапазон ревизий через языковую модель и возвращает замечания с привязкой к строкам, уровнем серьёзности и цитатой кода. Перед ответом модель смотрит, кто вызывает изменённую функцию и что поменялось в соседних файлах. Всё, включая саму модель, можно держать на своём железе, и тогда код не уходит в облако. Лицензия MIT, проекту чуть больше двух месяцев, релиз один, звёзд 18, пишет его в основном один человек. Это дополнительный взгляд перед релизом, ревью человека он не заменяет. Качество на ваших репозиториях я не измерял.

Релиз в понедельник, ревьюер один

Пятница, в ветке изменение на сорок файлов, а читать его некому: старший разработчик занят своим, остальные доверяют тестам. Тесты зелёные, ревью быстрое, в понедельник релиз. Через неделю выясняется, что в одном месте забыли обновить вызов функции, у которой поменялась сигнатура.

Вторая сторона той же проблемы: код нельзя отправлять куда попало. У заказчика NDA, у вас внутренний продукт, или просто не хочется, чтобы исходники ходили через чужие серверы ради проверки. Облачные ревьюеры решают первую часть и создают вторую. Как заказчику проверить, что студия смотрит код до сдачи, я описал в чек-листе.

Что такое review_ducktective

Репозиторий на GitHub: PavelShaura/review_ducktective. Лицензия MIT, я проверил по файлу LICENSE. Автор описывает его как платформу ревью кода, которая принимает дифф и отдаёт структурированные замечания. Интерфейс на русском и английском.

Возраст и активность на 7 октября 2026: репозиторий создан 26 июля, единственный релиз v0.1.0 вышел 15 сентября, последнее изменение в основной ветке датировано 21 сентября. Звёзд 18, форк один. В истории два аккаунта, но из 49 коммитов 41 принадлежит основному автору.

Как он ищет ошибки

Дифф сам по себе не говорит, кто вызывает изменённую функцию. Поэтому сервис сначала разбирает проект на символы и строит граф вызовов, а модель получает набор инструментов: найти вызывающих, открыть определение, прочитать нужные строки, посмотреть патчи других файлов этого же изменения.

Замечание проходит проверку до того, как вы его увидите. Оно должно цитировать код, который реально существует в проверяемой ревизии. Если модель утверждает, что сломаются все вызывающие, а код этих вызывающих не открывала, её отправляют проверить, и при повторной неудаче замечание отбрасывается. Каждое замечание имеет серьёзность (critical, major, minor, nitpick) и категорию: корректность, безопасность, производительность, архитектура, тесты, стиль. Его можно пометить как подтверждённое, ложное или отложенное, и эти пометки модель читает при следующем ревью того же файла.

Дополнительно есть чат по кодовой базе на тех же инструментах и MCP-сервер, через который Claude Code, Cursor и другие клиенты могут искать по индексу, смотреть определения и вызывающих. MCP-сервер отдаёт навигацию по коду, результаты ревью через него не читаются.

Граф вызовов строится для Python, JavaScript и TypeScript.

Как ставится и на каких моделях работает

Нужны Python 3.12, менеджер пакетов uv и Docker Compose. Compose поднимает PostgreSQL с pgvector, Redis, Keycloak для входа и Ollama для векторов. Затем миграции и команда ducktective dev, которая запускает API, два фоновых процесса и интерфейс.

Есть и лёгкий режим для терминала: ducktective review --staged --no-store проверяет то, что вы собираетесь закоммитить, без базы, Redis и API. С флагом --fail-on команда возвращает ошибку на выбранной серьёзности, поэтому её можно повесить на pre-commit или шаг CI.

Модели подключаются через LiteLLM. Локально это Ollama и LM Studio, также в описании названы vLLM и llama.cpp. Из облачных заявлены Anthropic, Gemini, OpenRouter, Groq, Cerebras и любой OpenAI-совместимый сервер. В примере настроек стоит qwen2.5-coder:14b. Для агентного режима авторы советуют окно не меньше 16 384 токенов. Сколько нужно видеопамяти под вашу модель, зависит от модели, я разбирал это в статье про железо для локального ИИ, а выбор самой модели описан здесь.

Для закрытых проектов у каждого репозитория есть политика: только локальная модель, облако без обучения на запросах или любое облако. При политике local_only, по описанию автора, не уходит ни одного исходящего запроса. Сетевой трафик я не снимал, это стоит проверить на стенде. При первом запуске Ollama скачивает модель векторов, около 270 МБ, для изолированной сети том с моделями заполняют заранее.

Что важно учесть

Проект молодой. Один релиз, один основной автор, 18 звёзд. Если он остановится, вам достанется код под MIT, который придётся вести самим. Как единственную защиту перед релизом его ставить рано.

Модель ошибается. Проверка цитат отсекает выдуманные ссылки на код, но не гарантирует, что найденная проблема настоящая. Ложные срабатывания будут, и часть реальных дефектов проскочит. Чем меньше локальная модель, тем это заметнее. В репозитории есть набор для измерения (ducktective eval: найденные заложенные дефекты и ложные тревоги на чистых диффах), но опубликованных цифр я не нашёл и сам его не запускал. Поэтому качество я не заявляю.

В описании не упомянуты интеграции с GitHub или GitLab, репозиторий регистрируется по локальному пути. Комментарии прямо в merge request придётся строить самим, например через вывод в Markdown. Быстрый старт в README рассчитан на разработку: у Keycloak там тестовый реалм, а боевое развёртывание с паролями, сетью и резервными копиями нужно оформить отдельно.

Ревью ИИ не отменяет ревью человека.

Что можно сделать уже сейчас

Шаг 1. Возьмите старый коммит, в котором позже нашли баг, и проверьте на нём лёгкий режим из терминала.

Шаг 2. Прогоните ещё десяток обычных коммитов и посчитайте: сколько замечаний по делу, сколько шума. Если шума больше половины, меняйте модель.

Шаг 3. Подключите инструмент в режиме подсказки, без блокировки. Пусть выводит замечания рядом с ревью человека, а --fail-on critical включайте позже, когда убедитесь в качестве.

Шаг 4. Если проектов много, поднимите сервис на отдельной машине. Серверы, CI и закрытый контур я настраиваю по услуге DevOps и инфраструктура, ориентиры по ценам есть на странице цен. Аргументы для руководства по закрытому контуру собраны в статье про расчёт локального ИИ.

Частые вопросы

Код правда не уходит в облако?

При политике local_only и локальной модели, по описанию автора, нет. Если подключить облачного провайдера, фрагменты кода пойдут к нему, и политика репозитория ограничивает, до какого уровня доверия это разрешено. Режим развёртывания airgapped запрещает любые облачные провайдеры.

Сколько стоит?

Сам код бесплатный, лицензия MIT. Платить придётся за сервер или видеокарту и за время настройки.

Какие языки программирования понимает?

Граф вызовов строится для Python, JavaScript и TypeScript. Для остальных файлов работает только текстовый поиск без графа. Как это сказывается на качестве, я не проверял.

Коротко о главном

review_ducktective даёт студии или отделу разработки дополнительную проверку кода на своей модели: замечания привязаны к строкам, подкреплены цитатами и могут обходиться без облака. Он молодой, держится на одном авторе и ложных срабатываний не избежит, поэтому его место рядом с ревью человека.

Хотите проверить такой подход на своих репозиториях, поднять сервис в закрытом контуре и подключить его к вашему процессу? Напишите мне в Telegram слово «РЕВЬЮ». Начнём с пробного прогона на ваших старых коммитах.

Услуги по теме

Что я делаю для бизнеса

  • Боты в Telegram, MAX, VK
  • Автоматизация процессов и CRM
  • Аналитика и дашборды
  • Сайты и лендинги под ключ

Бесплатно: чек-лист «Готов ли ваш бизнес к 152-ФЗ»

12 пунктов, которые проверяют готовность за час: данные, согласия, уведомление в РКН, локализация, защита. Отметьте, что уже сделано, и увидите дыры, за которые сейчас штрафуют.

Готовы обсудить вашу задачу?

Бесплатная консультация — разберём, как внедрить это в вашем бизнесе под ключ. Без форм, пишите напрямую.

Пишу о разработке, ИИ и законах для бизнеса

Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.

Готовые решения под ключTurnkey solutionsSoluciones llave en mano交钥匙解决方案Түлхүүр гардуулах шийдэл 451 готовых IT-решений для бизнеса451 ready-made IT solutions for business451 soluciones IT listas para empresas451 个面向企业的现成 IT 解决方案Бизнест зориулсан 451 бэлэн IT шийдэл Автоматизация, боты, AI, 152-ФЗ и платформы · бесплатная консультацияAutomation, bots, AI, data privacy and platforms · free consultationAutomatización, bots, IA, privacidad de datos y plataformas · consulta gratis自动化、机器人、AI、数据合规与平台 · 免费咨询Автоматжуулалт, бот, AI, өгөгдлийн хамгаалалт ба платформ · үнэгүй зөвлөгөө Смотреть каталогView catalogVer catálogo查看目录Каталог үзэх