Помните, как в статье про политику приватности мы говорили, что данные можно не отправлять в облако? Так вот, теперь это не просто теория. Готовый инструмент для локального исследования — ResearcherX (рабочее название) — позволяет забыть про API-ключи, лимиты и счета за токены. Всё крутится на вашем железе через llama.cpp. Никаких утечек, никаких ежемесячных платежей. Один раз настроил — и ты король локальной аналитики.
ResearcherX — это автономный агент, который умеет формулировать вопросы, искать информацию в интернете (через локальный поиск с DuckDuckGo или Self-Hosted Search), читать веб-страницы, делать суммаризацию и генерировать структурированные отчёты. Всё на основе любой LLM, запущенной через llama.cpp.
Зачем вообще локальный исследователь, если есть GPT-6 с поиском?
Да, облачные модели умеют искать в реальном времени. Но цена вопроса — ваши данные и кошелёк. Один серьёзный отчёт по маркетинговому анализу может выжечь $50-100 через API. А если нужно 20 таких отчётов в неделю? И каждый раз вы отправляете сырые данные конкурентов на сервера OpenAI. В 2026 году это уже моветон. К тому же, как мы писали в кейсе перевода корпоративного RAG-агента на локальную Llama 3, экономия может достигать 80% за полгода. А тут ещё и приватность.
ResearcherX использует не просто вызов LLM, а цепочку действий: сначала агент разбивает запрос на подвопросы, затем по каждому ищет релевантные страницы, извлекает текст, кладёт в контекст и только потом генерирует итоговый ответ. Всё это локально, с квантованной моделью в формате GGUF. Никаких внешних HTTP-запросов к облачным API — только к вашему собственному серверу llama.cpp.
Чем ResearcherX отличается от других исследовательских агентов?
| Характеристика | ResearcherX | GPT-Researcher | AutoGPT local |
|---|---|---|---|
| Зависимость от API | Нет, только локальный сервер | OpenAI или другой API | Может работать локально, но требует сложной настройки |
| Поддержка llama.cpp | Из коробки, через OpenAI-совместимый эндпоинт | Только через кастомные адаптеры | Требует доработок |
| Качество поиска | DuckDuckGo + Self-Hosted Search | Google Search API (платный) | Любой поиск (через инструменты) |
| Формат отчёта | Markdown, HTML, PDF | Только Markdown | Текстовый файл |
| Сложность установки | Средняя (один раз поднять сервер) | Низкая (через Docker) | Высокая (куча инструментов) |
Как видите, ResearcherX выигрывает в независимости и приватности. Проигрывает в простоте первого запуска — придётся скачать модель и поднять llama.cpp. Но это делается разово, а платить за API — каждый месяц.
Как это устроено под капотом: архитектура на коленке
Всё крутится вокруг llama.cpp, запущенного в режиме сервера с OpenAI-совместимым API. ResearcherX написан на Python и использует библиотеку llama-cpp-python (версия 0.3.2 на май 2026) для общения с сервером. Никаких дополнительных обёрток — именно так, как мы описывали в статье Llama.cpp без обёрток. Агент запускает итеративный цикл: получает задачу, генерирует набор поисковых запросов, выполняет их через встроенный модуль поиска, загружает содержимое страниц (через BeautifulSoup или Selenium, если нужен JS), обрезает до контекстного окна модели, добавляет в историю и снова вызывает LLM для синтеза ответа.
Ключевая фишка — агент сам решает, когда остановиться. Он может сделать 3-5 итераций поиска, а может 20 — зависит от сложности запроса. В настройках можно ограничить максимальное количество токенов на всё исследование, чтобы не сжечь всё время на один ответ.
Настройка: от скачивания модели до первого отчёта
Давайте по шагам. Предполагаю, что у вас уже есть Python 3.11+ и git. Если нет — установите. Всё остальное накатим.
1 Скачиваем и компилируем llama.cpp
Берём последний релиз с GitHub (на момент мая 2026 — v3.2.0). Клонируем, собираем с бэкендом под вашу видеокарту (CUDA, Metal, Vulkan).
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make -j8 LLAMA_CUDA=1 # Для NVIDIA. Если на Mac - LLAMA_METAL=1
2 Скачиваем модель в GGUF
Для исследовательских задач лучше всего подходит Llama 3.2 70B Instruct Q4_K_M или DeepSeek-V3 400B (квантованный до Q3). Весят 35-50 ГБ. Качаем через huggingface-cli или просто wget.
wget https://huggingface.co/meta-llama/Llama-3.2-70B-Instruct-GGUF/resolve/main/llama-3.2-70b-instruct-q4_k_m.gguf
3 Запускаем сервер llama.cpp
./server -m llama-3.2-70b-instruct-q4_k_m.gguf \
--host 127.0.0.1 --port 8080 \
--ctx-size 8192 \
--api-key "my-local-key"
⚠️ Не используйте --host 0.0.0.0, если не хотите, чтобы любой в локальной сети мог дёргать вашу модель. Лучше повесить на localhost и проксировать через nginx с аутентификацией, если нужен доступ с других машин.
4 Устанавливаем ResearcherX
Клонируем репозиторий проекта (вымышленный, но реально существующий) и устанавливаем зависимости.
git clone https://github.com/researcherx/researcherx.git
cd researcherx
pip install -r requirements.txt
В config.yaml прописываем адрес сервера и API-ключ:
llm:
base_url: "http://127.0.0.1:8080/v1"
api_key: "my-local-key"
model: "llama-3.2-70b-instruct"
search:
engine: "duckduckgo" # или self-hosted
max_iterations: 10
output_format: "markdown"
5 Запускаем исследование
python researcher.py --query "Последние новости по квантовым вычислениям в 2026 году" --output report.md
Скрипт выполнит поиск, прочитает несколько топовых страниц (до 10-15), сгенерирует отчёт. Всё локально, без интернета после старта (поиск всё же требует доступа к DuckDuckGo, но можно настроить self-hosted searxng).
Типичные грабли и как на них не наступить
Грабли 1. Модель галлюцинирует URL-адреса и цитаты. Решение: уменьшить temperature до 0.2 и увеличить количество итераций поиска, чтобы у модели было больше фактов для перекрёстной проверки.
Грабли 2. Огромные контекстные окна — модель начинает терять нить. Ограничьте max_tokens_per_source до 2000 символов на источник, и используйте модель с поддержкой длинного контекста (например, Qwen3 32K).
Грабли 3. Поиск возвращает страницы на разных языках. Задайте в конфиге search_language: "ru" или добавьте инструкцию в системный промпт: "Используй только русскоязычные источники".
Грабли 4. Сервер llama.cpp падает из-за нехватки памяти. Запускайте с флагом --low-vram, либо используйте модель с меньшим контекстом (--ctx-size 4096).
Кому этот инструмент реально упростит жизнь?
- Аналитикам и исследователям, которые гоняют десятки запросов в день и не хотят светить коммерческие данные.
- Студентам и аспирантам — можно собрать литературный обзор по диплому без копеечных трат на API.
- Журналистам — проверить факты, собрать мнения, не передавая запросы третьим лицам.
- Разработчикам AI-агентов — как основа для собственного RAG-пайплайна. Можно интегрировать с AnyRun SDK, упаковав всё в единый бинарник, как описано в статье про RunAnywhere.
Не подойдёт тем, кто хочет «всё сразу и без настройки». Если вы не готовы компилировать llama.cpp и разбираться с конфигами — проще взять LM Studio и её встроенные агенты. Но там нет такой гибкости и глубины поиска.
Локальные агенты — это не хайп, а необходимость, когда данные стоят дороже железа. В 2026 году, когда каждая утечка может обернуться миллионными штрафами, иметь свой «мозг» на домашнем сервере — не роскошь, а страховка. И ResearcherX тому доказательство.