Skip to main content

Веб-поиск и загрузка страниц

Агент умеет искать в интернете и читать страницы. Для этого у него есть четыре инструмента:

ИнструментЧто делает
web_searchищет в интернете и возвращает результаты со ссылками
fetch_contentзагружает страницу и преобразует её в Markdown; клонирует GitHub-репозиторий
get_search_contentпостранично выдаёт сохранённый результат поиска или загрузки
source_checkищет источники по утверждению и возвращает цитаты из них

Веб-поиск работает сразу после установки, ключи не нужны.

tip

Попросите агента: «Подключи Brave Search с моим ключом» или «Отключи веб-поиск». Он внесёт изменения в web-search.json.

Где хранятся настройки​

Веб-доступ настраивается в одном файле — web-search.json в каталоге агента:

ОСПуть по умолчанию
Linux, macOS~/.local/share/veai-ai-agent/agent/web-search.json
WindowsC:\Users\<имя>\.local\share\veai-ai-agent\agent\web-search.json

Если задана переменная XDG_DATA_HOME с абсолютным путём, каталог агента — $XDG_DATA_HOME/veai-ai-agent/agent.

Это единственный пользовательский файл вне .veai/. Настройки веб-поиска в .veai/settings.json не читаются.

Изменения действуют со следующей сессии. Запущенная сессия продолжает работать со старыми значениями.

Значения по умолчанию​

При каждом запуске агент добавляет в файл недостающие ключи:

{
"provider": ["exa", "duckduckgo"],
"workflow": "none",
"toolActivation": "eager",
"autoOpenBrowser": false,
"fetch": { "allowedModes": ["readable", "raw"] },
"githubClone": { "clonePath": "<временный каталог ОС>/veai-github-repos" },
"commands": {
"websearch": { "enabled": false },
"curator": { "enabled": false },
"search": { "enabled": false },
"google-account": { "enabled": false }
}
}
  • Существующие значения не перезаписываются.
  • Удалённый ключ вернётся при следующем запуске. Чтобы изменить значение, задайте другое, а не удаляйте ключ.
  • Не меняйте toolActivation: с другими значениями инструменты поиска становятся недоступны.

Куда уходят запросы​

Поиск. По умолчанию каждый запрос отправляется одновременно двум провайдерам, и их результаты объединяются:

  • Exa — анонимный доступ без ключа. Exa ограничивает анонимные запросы по IP-адресу, по умолчанию около 50 в день; все, кто выходит в интернет через один офисный NAT, делят этот лимит. Некоторые сети Exa блокирует полностью.
  • DuckDuckGo — агент читает HTML-страницу результатов напрямую, без API и без ключа.

Поисковые запросы покидают ваш компьютер и попадают в эти сервисы.

Загрузка страниц. fetch_content запрашивает URL напрямую с вашего компьютера, сторонние сервисы не используются.

GitHub. Для ссылки на репозиторий fetch_content делает неглубокий клон во временный каталог veai-github-repos — через gh, если он установлен, иначе через git по HTTPS. Если клонировать не удалось, агент получает дерево файлов и README через GitHub API.

Подключить другой поисковый провайдер​

Одного ключа недостаточно: нужно также изменить provider. Добавляйте ключи в существующий файл, сохраняя остальное содержимое.

Exa с ключом — без ограничения по IP (ключ на exa.ai):

{ "exaApiKey": "<ключ>", "provider": ["exa", "duckduckgo"] }

Чтобы искать только через Exa, укажите "provider": "exa".

Brave Search (ключ на api.search.brave.com):

{ "braveApiKey": "<ключ>", "provider": ["brave", "duckduckgo"] }

Tavily (ключ на tavily.com):

{ "tavilyApiKey": "<ключ>", "provider": ["tavily", "duckduckgo"] }

Собственный SearXNG — в экземпляре должен быть включён JSON-формат ответа:

{ "searxngBaseUrl": "https://search.example.com", "provider": "searxng" }

Переменная окружения SEARXNG_BASE_URL имеет приоритет над searxngBaseUrl.

Ключи можно передать и через переменные окружения — EXA_API_KEY, BRAVE_API_KEY, TAVILY_API_KEY, — но provider всё равно нужно задать в файле.

Отключить веб-поиск​

{ "webSearch": { "enabled": false } }

Так отключаются web_search и source_check. Загрузка страниц (fetch_content, get_search_content) продолжает работать.

Если поиск не работает​

Если все запросы поиска завершились ошибкой, агент сообщит об этом и назовёт ошибку каждого провайдера.

Что в ошибкеПричинаЧто сделать
сетевые ошибки (fetch failed, ENOTFOUND, ECONNREFUSED, тайм-ауты) у всех провайдеровнет подключения или нужен проксипроверьте подключение; для корпоративного прокси добавьте в файл "proxy": "http://host:port"
Exa MCP error 403Exa блокирует вашу сетьиспользуйте только DuckDuckGo ("provider": "duckduckgo"), подключите Brave, Tavily или SearXNG
Exa MCP rate limit reached (429)исчерпан дневной анонимный лимит для вашего IPподождите до завтра, добавьте exaApiKey или другой провайдер
ошибка DuckDuckGo или нет результатовDuckDuckGo изменил страницу или показал проверкуповторите позже или подключите другой провайдер
ошибка разбора web-search.jsonфайл не является корректным JSONисправьте файл вручную — агент его не чинит

Репозитории GitHub не клонируются​

Если gh настроен на протокол SSH, а рабочего SSH-ключа нет, клонирование не удаётся, и агент видит репозиторий только через API. Проверьте протокол:

gh config get git_protocol -h github.com

Чтобы переключить gh на HTTPS для github.com:

gh config set git_protocol https -h github.com

Команда меняет настройку gh для всех инструментов.