Sverklo, локально развернутый сервер поиска по коду, теперь позволяет разработчикам проверять каждый этап запроса — от обнаружения файлов до логического вывода на основе графа символов — прежде чем ИИ-агент приступит к выполнению на основе результата.

Почему существующие ИИ-агенты для кодинга допускают ошибки

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

Четырехслойная модель верификации Sverklo

Sverklo позиционирует себя как сервер «инженерных гипотез», который сочетает традиционный поиск со структурным анализом:

  • Обнаружение файлов (File Discovery) — индекс считывает .gitignore и другие файлы игнорирования. Прежде чем доверять результату, вы можете запросить индекс, чтобы увидеть, какие пути были фактически просканированы.
  • Структура кода (Code Structure) — символы хранятся в графе, который фиксирует определения, импорты и связи вызовов. Поиск возвращает объект символа, а не просто путь к файлу, что позволяет подтвердить, что ссылка идет на нужный API.
  • Передача контекста (Context Delivery) — при установке бюджета токенов Sverklo возвращает карту фрагментов, которые послужили основой для ответа. Карта включает поле found_by, которое указывает, было ли совпадение найдено с помощью сопоставления ключевых слов BM25, эмбеддингов на базе ONNX или графа символов, ранжированного с помощью PageRank.
  • Журнал памяти (Memory Ledger) — сервер логирует каждое решение. Если файл изменяется, журнал помечает соответствующую запись в памяти как устаревшую, показывая, является ли кэшированный ответ все еще актуальным.

Как работает стек поиска

Sverklo не полагается только на эмбеддинги. Он запускает классический движок ключевых слов BM25 для точного поиска терминов, дополняет эти результаты векторными эмбеддингами на базе ONNX для семантического сходства, а затем применяет алгоритм PageRank к графу символов, чтобы выявить наиболее значимые определения. Предоставляя информацию о методе, с помощью которого было найдено каждое совпадение, разработчики могут замечать расхождения — например, совпадение BM25, которое модель эмбеддингов считает нерелевантным — и выбирать, какому сигналу доверять.

Практическое применение

  • Изучение незнакомых кодовых баз — переходите от имени функции ко всем её вызывающим объектам без ручного использования grep.
  • Построение графов зависимостей — визуализируйте цепочки импортов, охватывающие несколько пакетов.
  • Оценка влияния рефакторинга — смотрите, какие символы «сломаются», если изменится данный файл.
  • Ответы на семантические вопросы — спросите «что делает этот хелпер?» и получите краткую выжимку со ссылкой на источник.

Подводные камни

  • Актуальность — процесс переиндексации может завершиться, но временная метка индекса останется старой. Всегда запрашивайте эндпоинт index-status вместо того, чтобы полагаться на то, что последний запуск актуален.
  • Регистрация проекта — при отмене регистрации проекта используйте внутреннее имя проекта, предоставленное Sverklo, а не абсолютный путь в файловой системе, иначе операция пройдет незаметно для системы, но не выполнится.
  • Особенности именования инструментов — MCP-хосты иногда дважды добавляют имя проекта в начало, создавая такие идентификаторы, как sverklo_sverklo_impact. Перепроверяйте имя перед вызовом инструмента.

Что попробовать в первую очередь

  1. Клонируйте временный репозиторий и разверните Sverklo локально.
  2. Выполните простой поиск символа и изучите поле found_by.
  3. Измените исходный файл и повторно выполните поиск; обратите внимание, как журнал памяти помечает устаревшую запись.
  4. Интегрируйте проверку index-status в ваш скрипт сборки, чтобы автоматически отслеживать устаревшие индексы.

Итог

Sverklo превращает поисковый движок по коду в проверяемую цепочку доказательств. Заставляя разработчиков проверять охват файлов, точность символов, метод поиска и актуальность памяти, он позволяет им решить, заслуживает ли предложение ИИ доверия, прежде чем оно попадет в продакшн.