Sonata

XERJ: локальный AI-поиск, снижающий расход токенов у кодовых агентов

image source

XERJ — локальный AI-поиск, который автоматически индексирует любую папку. Благодаря этому кодовый агент не тратит токены на построчное чтение файлов, а сразу получает нужный фрагмент кода. Лицензия Apache-2.0, бинарник бесплатный.

Главный сценарий — reference coding. Агент скачивает ближайшие к задаче open-source репозитории, индексирует их и перенимает готовые решения, прежде чем писать свой код. В контролируемом исследовании выходных токенов стало в 2,7 раза меньше при тех же 16/16 решённых задач. Пользователи сообщают примерно о 5-кратной экономии.

В измерениях на 8 задачах и 4 языках (по 16 запусков на вариант) результаты такие:

  • только память модели: 260 916 токенов, $11,18, решено 11/16

  • агент с grep: 26 477 токенов, $3,27, решено 16/16

  • XERJ: 9 982 токена, $1,58, решено 16/16

Это в 26 раз меньше токенов, чем при работе по памяти, и до 278 раз меньше на одной задаче на Java. Польза зависит от того, насколько код знаком модели: инструмент выигрывает на приватном, внутреннем, нишевом и свежем коде, а на популярных публичных библиотеках бывает нейтрален или вреден.

XERJ определяет тип каждого файла и создаёт отдельный индекс для каждого найденного набора данных. Код разбирается через tree-sitter с символами и номерами строк. Одна команда индексирует код, документы, логи, PDF, SQLite и сложные CSV для поиска, RAG, аудитов безопасности и памяти агентов — без схем и настройки конвейеров.

В режиме без TLS и API-ключей любой, кто достучится до порта, становится суперпользователем и может читать и удалять все индексы. Режим рассчитан на одного пользователя на dev-машине, а привязка к другим интерфейсам без явного разрешения не запускается. В обмен на бесплатный бинарник проект просит один короткий отчёт: коммит или PR с описанием, что индексировали, для чего использовали и каков честный вердикт. Негативный отзыв тоже ценен. Приглашаются и люди, и AI-агенты, а такие PR не требуют подписания CLA.

GitHub ★ 4,791

Загрузка страницы