Инструменты16 сентября 2026 г., 15:48 МСК🤖 Auto

DuckTective: LLM-ревьюер, который не гадает, а расследует

Новый open-source инструмент Pavel Shaura превращает LLM из генератора текста в детектива кода: модель строит граф вызовов, цитирует реальные строки и работает полностью локально.

Баннер новости 7629

От гадания к расследованию: как работает DuckTective

Пользователь GitHub Pavel Shaura представил DuckTective — платформу для самохостинга, которая решает главную проблему AI-ревьюеров: галлюцинации и поверхностный анализ. В отличие от стандартных подходов, где модель просто читает дифф, DuckTective запускает агентный цикл. ИИ не просто смотрит на измененные строки, он «расследует» их: находит функции, которые вызывают измененный код, изучает соседние файлы, проверяет зависимости и даже анализирует комментарии предыдущих ревьюеров.

Ключевая особенность — grounding (заземление). Каждое найденное нарушение должно быть подтверждено прямой цитатой из исходного кода. Если модель не может найти доказательство в графе вызовов или диффе, вывод отбрасывается. Это снижает уровень ложных срабатываний и делает отчеты пригодными для продакшена.

Технический стек: RAG, графы и локальность

Архитектура проекта построена вокруг глубокой интеграции с кодовой базой. Вместо простого поиска по ключевым словам используется парсинг AST через tree-sitter для Python, JavaScript и TypeScript. Это позволяет модели понимать структуру кода, а не только текст.

Все вычисления, включая эмбеддинги (модель nomic-embed-text с 768 измерениями), выполняются локально. Поиск гибридный: объединяется лексический поиск (tsvector) и семантический (pgvector) через алгоритм Reciprocal Rank Fusion. Это критично для кода, где точные имена переменных важнее смыслового сходства.

Безопасность и контроль данных

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

Для управления доступом используется Keycloak (OpenID Connect), а безопасность данных на уровне строк обеспечивается через Row-Level Security в PostgreSQL.

Сравнение подходов: DuckTective vs Стандартные LLM-ревьюеры

Критерий Стандартный LLM-ревьюер DuckTective
Анализ контекста Только предоставленный дифф (diff) Построение графа вызовов (call graph) и зависимостей
Доказательная база Текстовое описание проблемы Прямая цитата из кода (evidence gate)
Обработка ошибок Частые галлюцинации (false positives) Дедупликация дефектов и проверка фактов
Инфраструктура Часто требует внешних API Полный локальный стек (Ollama/LM Studio + Postgres)
Интеграция с агентами Редко Встроенный MCP-сервер для Claude Code, Cursor и др.

Для кого этот инструмент

DuckTective — это не просто «еще один бот для GitHub». Это инженерное решение для команд, которые устали от шума в code review. Благодаря встроенному evaluation harness, разработчики могут измерять recall (полноту) и уровень ложных тревог, а обратная связь от людей (human verdicts) автоматически дообучает модель через инструменты, без необходимости переобучения (fine-tuning).

Проект поддерживает стриминг токенов через WebSocket, кеширование ответов в Redis и маршрутизацию запросов через LiteLLM, что делает его масштабируемым и гибким решением для enterprise-среды.

Источник: Github ↗