XERJ — локальный поисковый сервер для ИИ-агентов: он помогает находить нужные фрагменты кода и документов, не заставляя агента читать файлы целиком. Вы указываете папку проекта, XERJ создаёт по ней поисковый индекс, а затем отвечает на запросы с указанием файла и строки. Инструмент рассчитан прежде всего на работу с кодом, но принимает и другие рабочие материалы.
Как XERJ ищет в коде, документах и данных
XERJ поставляется как один исполняемый файл на Rust. Команда xerj autoindex просматривает указанную папку, определяет типы файлов и создаёт индексы — подготовленные для поиска наборы записей. Для исходного кода XERJ выделяет символы и сохраняет номера строк: агент может получить место, где описана функция, а не только имя файла, в котором она встречается.
По README инструмент обрабатывает код, PDF, документы, журналы событий, CSV, JSON, JSONL, таблицы SQLite и другие форматы. Это позволяет искать одновременно в репозитории и сопроводительных материалах, если они лежат в индексируемой папке. Для документов XERJ тоже разбивает содержимое на записи: например, презентацию .pptx — по слайдам, книгу EPUB — по главам.
Есть полнотекстовый поиск BM25: он ранжирует фрагменты по словам запроса. Есть векторный поиск — поиск по смысловой близости — и гибридный режим, который сочетает подходы. XERJ поддерживает API, совместимый с Elasticsearch: это способ отправлять поисковые запросы через уже знакомый многим разработчикам интерфейс, в том числе из клиентских библиотек Elasticsearch.
Ещё одна часть XERJ — MCP-сервер. MCP, или Model Context Protocol, даёт агенту способ обращаться к внешнему инструменту; XERJ заявляет работу с Claude Code, Cursor и другими MCP-клиентами. Если вы пока не подключали такие инструменты, начните с объяснения, что такое MCP и как подключить сервер. Команда xerj init из README подключает XERJ к Claude Code и Cursor как MCP-инструмент и навык — набор инструкций для агента.
Когда поиск пригодится агенту, а когда нет
Первый сценарий: вы ведёте проект в Claude Code и хотите, чтобы агент находил реализацию функции по смыслу вопроса. Вместо последовательного чтения файлов он запрашивает индекс и получает подходящий фрагмент с адресом вида file:line. Такой ответ удобно сверить с исходником перед изменением кода.
Второй сценарий: агенту предстоит решить задачу, похожую на уже решённую в открытом проекте. README предлагает скачать близкие по теме репозитории, проиндексировать их и посмотреть, как там устроен нужный механизм, прежде чем писать собственный. Это называется reference coding — работа с исходным кодом других проектов как с примерами; при повторном использовании кода нужно учитывать лицензии этих проектов.
Третий сценарий: у вас рядом с кодом лежат документация, выгрузки CSV и логи. XERJ даёт искать по этим материалам, а также хранить заметки агента в пространствах /_memory/{namespace} и извлекать их по смыслу в следующей сессии. Если вы уже используете навыки для Claude и других агентов, здесь важно различать роли: навык подсказывает агенту порядок действий, а поисковый индекс хранит материалы, по которым он ищет.
Если вам достаточно спросить модель об общеизвестной библиотеке, XERJ может не понадобиться. Авторы прямо пишут, что в их измерениях поиск выигрывал на неизвестном модели коде — внутреннем, узкоспециализированном или появившемся после её обучения, — но мог не дать пользы на популярных публичных библиотеках. Их тест на восьми задачах показал 9 982 выходных токена у агента с XERJ против 26 477 у агента с grep при одинаковом результате 16 из 16 успешных запусков; переносить эту цифру на любой проект нельзя.
Установка XERJ и первый индекс проекта
В README есть установщик для Linux и macOS. Команду авторов нужно запускать в терминале; она загружает установочный скрипт с сайта проекта. Для Windows в README дана отдельная команда PowerShell:
curl -fsSL https://xerj.org/get | sh
irm https://xerj.org/get.ps1 | iex
Установщик сообщает, куда положил xerj; при необходимости добавьте этот путь в PATH. По README доступны готовые сборки для Linux, macOS и Windows на x86-64 и arm64. Авторы называют поставку одним исполняемым файлом: JVM и дополнительные зависимости для запуска не требуются.
Для первого запуска на личной машине README предлагает вариант без шифрования соединения и без проверки ключа. Запустите сервер, дождитесь ответа по http://localhost:9200, затем проиндексируйте папку. Каталог данных ~/xerj-data находится отдельно от ~/my-project: если поместить хранилище внутрь индексируемого дерева, XERJ может начать индексировать собственные данные.
xerj --insecure --data-dir ~/xerj-data &
xerj autoindex ~/my-project
Для подключения к Claude Code или Cursor в README указана команда:
xerj init
Если сервер запускается без --insecure, проверка ключа включена по умолчанию. При первом старте XERJ создаёт административный ключ; перед autoindex передайте его через переменную окружения, иначе запрос вернёт 401 Unauthorized. README отдельно предупреждает: команда не берёт ключ автоматически из xerj.toml.
xerj --data-dir ~/xerj-data &
export XERJ_API_KEY="$(cat ~/xerj-data/admin.key)"
xerj autoindex ~/my-project
Что попросить у агента и что проверить самому
README даёт готовый запрос для агента. В нём вы просите прочитать инструкцию проекта, поставить XERJ, проиндексировать документацию и показать по одному поисковому запросу для каждого созданного индекса. Текст можно передать агенту дословно:
Read https://xerj.org/llms.txt, set XERJ up as your search backend, index `./docs`, and
show me one example query per index it created.
Другой пример посвящён памяти между сессиями. Вы просите агента сохранять рабочие находки в /_memory/notes и позже находить их по смыслу. Это не обещание, что модель сама вспомнит прошлый разговор: ей потребуется обратиться к сохранённым записям XERJ.
Use XERJ's `/_memory/notes` API as your long-term memory for this project: store what you
learn as you work, and recall it by meaning next session.
Проверить поиск можно и без агента. Следующая команда из README ищет слова checkout error по индексам, имена которых начинаются с ax-; в ответ вы получаете результаты поиска через API сервера. Для поиска определения функции README также приводит xerj def с именем функции и ожидает адрес строки и сигнатуру — описание её параметров.
curl "localhost:9200/ax-*/_search?q=checkout+error"
xerj def "euler_to_rotationmatrix"
Ограничения локального запуска XERJ
Флаг --insecure в примерах установки нельзя считать мелочью. Он отключает TLS и проверку API-ключа: любой, кто сможет обратиться к порту сервера, получит права читать и удалять все индексы, включая память агента. README уточняет, что новый сервер по умолчанию слушает только 127.0.0.1; для общего хоста авторы рекомендуют запуск с проверкой ключа. XERJ также читает содержимое папок, которые вы передаёте на индексацию, поэтому выбирайте их осознанно.
Для самого локального запуска README не требует подписки на облачный сервис или внешнего API-ключа. При этом для нейросетевого режима поиска на машине без доступа в интернет авторы требуют заранее разместить три файла модели; режим поиска по словам работает офлайн по умолчанию. Не путайте локальный поисковый сервер с локальным запуском моделей: XERJ подготавливает и выдаёт материалы агенту, а не заменяет Claude или другую модель.
Проект создан 30 июня 2026 года; на момент обзора у репозитория было 15 164 звезды, а последний коммит датирован 24 октября 2026 года. Лицензия — Apache-2.0. Возраст и число звёзд помогают оценить состояние проекта, но не заменяют проверку того, какие папки вы индексируете и кому доступен запущенный сервер.
Источник: репозиторий xerj-org/xerj на GitHub.