Харвестеры — это сборщики данных: сервисы, которыми агент массово ищет информацию в интернете, скачивает страницы и обрабатывает тексты моделями. Название взято из интерфейса продукта, а суть простая: вместо того чтобы ходить по сайтам по одному, агент запускает большой сбор, а Data Agent сам следит за скоростью, ограничениями сайтов и учётом расходов.
Зачем это нужно
Обычная выгрузка берёт данные из одного источника: адрес API, таблица в базе, файл на сайте. Массовый сбор — это когда страниц, запросов или текстов много: сотни позиций каталога, десятки поисковых запросов, тысячи коротких описаний. Здесь и нужны сборщики:
- сравнить цены и ассортимент конкурентов по сотням страниц;
- собрать отзывы и обсуждения из разных мест;
- набрать материал для анализа: описания товаров, объявления, публикации;
- разом обработать большой объём текста моделью — разметить, сократить, перевести.
Настраивается сборщик один раз. Дальше агент сам решает, когда его применить: вы просите собрать данные в чате, а он выбирает подходящий сервис, ведёт сбор большими пакетами и складывает результат.
Три вида сборщиков
Сборщики делятся на три группы: Поиск, Загрузка и Генерация. Каждая группа закрывает свой шаг — найти, скачать, обработать.
Поиск — найти в интернете
- Serper — результаты поиска Google по ключу сервиса;
- Brave — поиск через API Brave Search;
- Tavily — веб-поиск для задач с ИИ, умеет сразу отдавать готовый ответ модели;
- Keenable — веб-поиск, созданный для агентов;
- SearXNG — метапоисковик на вашем собственном сервере;
- DuckDuckGo — бесплатный поиск без ключа, но с обязательным ограничением частоты запросов;
- JsonSeo — выдача Яндекса, Google и Bing, оплата за страницу выдачи.
Загрузка — забрать страницу
- Direct HTTP — обычный запрос страницы: самый дешёвый и быстрый способ, пасует там, где содержимое рисуется скриптами или стоит защита от ботов;
- Proxied HTTP — то же самое через прокси: помогает, когда сайт ограничивает доступ по стране или по частоте запросов;
- Browser Emulation — локальный браузер (Playwright) на вашем сервере: прогружает страницы со скриптами, скачивается автоматически при первом использовании;
- Nodriver — локальный недетектируемый браузер: лучший вариант для страниц с защитой от ботов, пакет и Chromium скачиваются сами;
- Remote Browser — удалённый сервис управления браузером: для сайтов с защитой от ботов и обилием скриптов.
HTML-страницы сохраняются как чистый Markdown: преобразование делает Trafilatura, поэтому остаётся текст, а навигация и реклама уходят. Исходная страница сохраняется рядом — по ней всегда можно проверить, что было на сайте.
Генерация — обработать моделью
Сборщик генерации — это любая модель с API OpenAI Chat Completions: OpenAI, OpenRouter, DeepSeek и другие. Он нужен для массовой обработки текста: разметить данные, извлечь нужные поля, перевести, сократить. Каждое обращение уходит большим пакетом, а расходы считаются по токенам.
Как настроить сборщик
Сборщик настраивается в разделе «Харвестеры». Общие поля одинаковы для всех:
- имя — как вы будете его узнавать;
- тип — выбирается при создании и потом не меняется;
- переключатель «включён» — выключенный сборщик в работе не участвует;
- приоритет — чем меньше число, тем раньше сборщик пробуется;
- максимальный параллелизм — сколько задач уходит одновременно;
- лимит запросов — сколько запросов за период (пусто — без ограничений).
Ниже — настройки конкретного типа: ключ сервиса, базовый адрес, прокси, таймаут, имя модели, максимальное число выходных токенов, температура и другие. Интерфейс показывает ровно те поля, которые нужны выбранному типу.
Ключи и пароли хранятся под маской: в списке и в форме видно только ••••, а «показать» — отдельное действие. Вместо самого ключа можно указать ссылку на переменную окружения сервера (например, $MY_KEY): тогда секрет не лежит в базе приложения, а берётся из окружения в момент вызова. Если переменная не задана, сборщик честно сообщит, какого значения не хватает.
У каждого сборщика есть кнопка «Тест»: она делает настоящий пробный вызов — небольшой поисковый запрос, загрузку example.com или крошечную генерацию — и показывает ответ сервиса. Это самый быстрый способ проверить, что ключ рабочий, а настройки верные. Сборщик можно клонировать вместе с настройками или удалить, когда он больше не нужен.
Порядок и запасной вариант
Сборщики одной группы выстроены по приоритету: сначала пробуется тот, у кого число меньше. Если сервис не отвечает или вернул ошибку, задание уходит следующему — сбор не срывается из-за одного сбоя. Так один и тот же сбор можно вести через несколько поисковых систем или подстраховать платный сервис бесплатным.
Если сбор закреплён за конкретным сборщиком, запасной вариант не применяется: задание либо выполняется им, либо завершается ошибкой. Это нужно, когда важен именно один источник — например, чтобы сравнение данных месяц к месяцу шло по одинаковым правилам.
Сборы — что получилось
Сбор — это задание массового сбора: пакет запросов, страниц или текстов. Ставит его агент по вашей просьбе из чата, а раздел «Сборы» показывает, что с ним происходит. Рядом с каждым заданием видно категорию, состояние, сколько объектов уже обработано, объёмы и стоимость, а также ожидаемое время завершения.
Состояние меняется по ходу работы: ожидает, выполняется, завершено или ошибка. Внутри задания — результат по категориям:
- по поиску — найденные ссылки по каждому запросу, лучшие наверху;
- по загрузке — таблица файлов с просмотром текста и исходной страницы;
- по генерации — попытки с вопросом и ответом, число токенов и стоимость.
Очередь заданий хранится в базе приложения, поэтому перезапуск сервера её не теряет: сбор продолжится с того же места. Результат можно читать повторно сколько угодно — он не расходуется от повторных обращений.
Где лежат скачанные файлы
Скачанные страницы и документы складываются в папку /data/harvest (её можно перенести переменной DATA_AGENT_HARVEST_FOLDER). Внутри — папки по датам, а имя файла собирается из домена и названия страницы. У каждой страницы рядом лежат два файла: текст в Markdown и исходный HTML. Документы другого вида — например, PDF — сохраняются как есть, со своим расширением.
Скачанные файлы — временный материал, а не архив: уборщик удаляет их через двое суток (срок меняется переменной DATA_AGENT_HARVEST_RETENTION_HOURS). В базе остаются пути и размеры, а вот то, ради чего сбор затевался, стоит сохранять отдельно — в Lakehouse. Долго живущие данные — это уже задача скриптов, а не сборщиков.
Сколько это стоит
Массовый сбор расходует реальные деньги: запросы к платным поисковым сервисам и обращения к моделям не бесплатны. Чтобы расходы были под контролем, у каждого сборщика есть свои цены:
- у поиска — цена за один запрос;
- у загрузки — цена за одну страницу;
- у генерации — цены за миллион токенов: ввод, вывод, чтение из временного хранилища и запись в него;
- статистика показывает, сколько уже потрачено и на что.
Экономить помогает приоритет: дешёвые модели ставятся первыми, дорогие — в запас. Лёгкие задачи вроде разметки уходят на недорогую модель, а тяжёлый разбор достаётся мощной, только когда первая не справилась.
Статистика сборщика
У каждого сборщика есть подробная карточка. В ней видно:
- сколько задач обработано и доля успешных;
- средняя длительность и время, в которое укладываются девять задач из десяти;
- общая стоимость и когда сервис использовался в последний раз;
- полоса по дням за две недели и журнал последних обращений с переходом к самому заданию.
У нового сборщика все числа нулевые — это нормально, пока через него не пойдут задачи. Как только сбор пошёл, статистика заполняется сама.
Читайте также: Источники данных, Скрипты, Интеграция с Pastukhov Agent.