---
title: "Харвестеры"
id: "1948"
type: "page"
slug: "harvesters"
published_at: "2026-09-20T13:51:18+00:00"
modified_at: "2026-09-22T15:01:36+00:00"
url: "https://pastukhov.com/agents/data/docs/harvesters"
markdown_url: "https://pastukhov.com/agents/data/docs/harvesters.md"
excerpt: "Харвестеры — это сборщики данных: сервисы, которыми агент массово ищет информацию в интернете, скачивает страницы…"
---

# Харвестеры

[https://pastukhov.com/agents/data/docs/harvesters.md](https://pastukhov.com/agents/data/docs/harvesters.md)

Харвестеры — это сборщики данных: сервисы, которыми агент массово ищет информацию в интернете, скачивает страницы и обрабатывает тексты моделями. Название взято из интерфейса продукта, а суть простая: вместо того чтобы ходить по сайтам по одному, агент запускает большой сбор, а 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. Долго живущие данные — это уже задача скриптов, а не сборщиков.

## Сколько это стоит

Массовый сбор расходует реальные деньги: запросы к платным поисковым сервисам и обращения к моделям не бесплатны. Чтобы расходы были под контролем, у каждого сборщика есть свои цены:

- у поиска — цена за один запрос;
- у загрузки — цена за одну страницу;
- у генерации — цены за миллион токенов: ввод, вывод, чтение из временного хранилища и запись в него;
- статистика показывает, сколько уже потрачено и на что.

Экономить помогает приоритет: дешёвые модели ставятся первыми, дорогие — в запас. Лёгкие задачи вроде разметки уходят на недорогую модель, а тяжёлый разбор достаётся мощной, только когда первая не справилась.

## Статистика сборщика

У каждого сборщика есть подробная карточка. В ней видно:

- сколько задач обработано и доля успешных;
- средняя длительность и время, в которое укладываются девять задач из десяти;
- общая стоимость и когда сервис использовался в последний раз;
- полоса по дням за две недели и журнал последних обращений с переходом к самому заданию.

У нового сборщика все числа нулевые — это нормально, пока через него не пойдут задачи. Как только сбор пошёл, статистика заполняется сама.

Читайте также: [Источники данных](/agents/data/docs/sources)
, [Скрипты](/agents/data/docs/scripts)
, [Интеграция с Pastukhov Agent](/agents/data/docs/agent)
.

[← Оглавление документации](/agents/data/docs)
