Tools
Веб-поиск
web_search выполняет поиск в интернете с помощью настроенного провайдера и возвращает
нормализованные результаты, кэшируемые по запросу на 15 минут (период можно настроить). OpenClaw
также включает x_search для публикаций в X (ранее Twitter) и web_fetch для
упрощённого получения данных по URL. web_fetch всегда выполняется локально; web_search направляет запросы
через xAI Responses, когда провайдером является Grok, а x_search всегда использует
xAI Responses.
Быстрый старт
Выберите провайдера
Выберите провайдера и выполните необходимую настройку. Для некоторых провайдеров ключ не требуется, другим нужен ключ API. Подробности см. на страницах провайдеров ниже.
Настройте
openclaw configure --section webЭта команда сохраняет провайдера и необходимые учётные данные. Для провайдеров,
использующих API, вместо этого можно задать переменную окружения провайдера (например,
BRAVE_API_KEY) и пропустить этот шаг.
Используйте
await web_search({ query: "OpenClaw plugin SDK" });Для публикаций в X:
await x_search({ query: "dinner recipes" });Выбор провайдера
Структурированные результаты с фрагментами. Поддерживает режим llm-context и фильтры по стране и языку. Доступен бесплатный тариф.
Синтезированные ИИ ответы, основанные на источниках, через вашу учётную запись Codex app-server.
Провайдер без ключа. Ключ API не требуется. Неофициальная интеграция на основе HTML.
Нейронный поиск и поиск по ключевым словам с извлечением содержимого (основные фрагменты, текст, сводки).
Структурированные результаты. Для глубокого извлечения лучше всего использовать совместно с firecrawl_search и firecrawl_scrape.
Синтезированные ИИ ответы с цитированием на основе результатов Google Search.
Синтезированные ИИ ответы с цитированием на основе веб-источников xAI.
Синтезированные ИИ ответы с цитированием через веб-поиск Moonshot; резервные ответы чата без опоры на источники завершаются явной ошибкой.
Структурированные результаты через поисковый API MiniMax Token Plan.
Поиск через локальный хост Ollama с выполненным входом или размещённый API Ollama.
Платный API Parallel Search (PARALLEL_API_KEY); более высокие ограничения частоты запросов и настройка целевой функции.
Подключаемый провайдер без ключа. Бесплатный Search MCP от Parallel с плотными фрагментами, оптимизированными для LLM, и без ключа API.
Структурированные результаты с настройками извлечения содержимого и фильтрацией по доменам.
Самостоятельно размещаемый метапоиск. Ключ API не требуется. Объединяет результаты Google, Bing, DuckDuckGo и других систем.
Структурированные результаты с настройкой глубины поиска, фильтрацией по темам и tavily_extract для извлечения данных по URL.
Сравнение провайдеров
| Провайдер | Формат результатов | Фильтры | Ключ API |
|---|---|---|---|
| Brave | Структурированные фрагменты | Страна, язык, время, режим llm-context |
BRAVE_API_KEY |
| Codex Hosted Search | Синтезированные ИИ ответы + URL источников | Домены, размер контекста, местоположение пользователя | Нет; используется вход в Codex/OpenAI |
| DuckDuckGo | Структурированные фрагменты | -- | Нет (ключ не требуется) |
| Exa | Структурированные + извлечённые данные | Нейронный режим/режим ключевых слов, дата, извлечение содержимого | EXA_API_KEY |
| Firecrawl | Структурированные фрагменты | Через инструмент firecrawl_search |
FIRECRAWL_API_KEY |
| Gemini | Синтезированные ИИ ответы + цитирование | -- | GEMINI_API_KEY |
| Grok | Синтезированные ИИ ответы + цитирование | -- | OAuth xAI, XAI_API_KEY или plugins.entries.xai.config.webSearch.apiKey |
| Kimi | Синтезированные ИИ ответы + цитирование; ошибка при резервных ответах чата без опоры на источники | -- | KIMI_API_KEY / MOONSHOT_API_KEY |
| MiniMax Search | Структурированные фрагменты | Регион (global / cn) |
MINIMAX_CODE_PLAN_KEY / MINIMAX_CODING_API_KEY / MINIMAX_OAUTH_TOKEN |
| Ollama Web Search | Структурированные фрагменты | -- | Нет для локальных хостов с выполненным входом; OLLAMA_API_KEY для прямого поиска https://ollama.com |
| Parallel | Плотные фрагменты, ранжированные для контекста LLM | -- | PARALLEL_API_KEY (платный) |
| Parallel Search (Free) | Плотные фрагменты, ранжированные для контекста LLM | -- | Нет (бесплатный Search MCP) |
| Perplexity | Структурированные фрагменты | Страна, язык, время, домены, ограничения содержимого | PERPLEXITY_API_KEY / OPENROUTER_API_KEY |
| SearXNG | Структурированные фрагменты | Категории, язык | Нет (самостоятельное размещение) |
| Tavily | Структурированные фрагменты | Через инструмент tavily_search |
TAVILY_API_KEY |
Автоматическое определение
Списки провайдеров в документации и сценариях настройки упорядочены по алфавиту. Автоматическое определение использует
отдельный фиксированный порядок приоритетов и выбирает провайдера, которому нужны
учётные данные (requiresCredential !== false), только если обнаруживает настроенные данные. Если
provider не задан, OpenClaw проверяет провайдеров в следующем порядке и использует
первый готовый:
Сначала провайдеры с API:
- Brave --
BRAVE_API_KEYилиplugins.entries.brave.config.webSearch.apiKey(порядок 10) - MiniMax Search --
MINIMAX_CODE_PLAN_KEY/MINIMAX_CODING_API_KEY/MINIMAX_OAUTH_TOKEN/MINIMAX_API_KEYилиplugins.entries.minimax.config.webSearch.apiKey(порядок 15) - Gemini --
plugins.entries.google.config.webSearch.apiKey,GEMINI_API_KEYилиmodels.providers.google.apiKey(порядок 20) - Grok -- OAuth xAI,
XAI_API_KEYилиplugins.entries.xai.config.webSearch.apiKey(порядок 30) - Kimi --
KIMI_API_KEY/MOONSHOT_API_KEYилиplugins.entries.moonshot.config.webSearch.apiKey(порядок 40) - Perplexity --
PERPLEXITY_API_KEY/OPENROUTER_API_KEYилиplugins.entries.perplexity.config.webSearch.apiKey(порядок 50) - Firecrawl --
FIRECRAWL_API_KEYилиplugins.entries.firecrawl.config.webSearch.apiKey(порядок 60) - Exa --
EXA_API_KEYилиplugins.entries.exa.config.webSearch.apiKey; необязательная переменнаяplugins.entries.exa.config.webSearch.baseUrlпереопределяет конечную точку Exa (порядок 65) - Tavily --
TAVILY_API_KEYилиplugins.entries.tavily.config.webSearch.apiKey(порядок 70) - Parallel -- платный API Parallel Search через
PARALLEL_API_KEYилиplugins.entries.parallel.config.webSearch.apiKey; необязательная переменнаяplugins.entries.parallel.config.webSearch.baseUrlпереопределяет конечную точку (порядок 75)
Затем провайдеры с настроенной конечной точкой:
- SearXNG --
SEARXNG_BASE_URLилиplugins.entries.searxng.config.webSearch.baseUrl(порядок 200)
Провайдеры без ключей, такие как Parallel Search (Free), DuckDuckGo,
Ollama Web Search и Codex Hosted Search, никогда не выбираются автоматическим определением,
даже если у них есть внутреннее значение порядка. Они используются, только если вы
явно выберете их с помощью tools.web.search.provider или через
openclaw configure --section web. OpenClaw не направляет управляемые запросы
web_search провайдеру без ключа только потому, что не настроен ни один провайдер
с API.
Модели OpenAI Responses являются исключением: пока tools.web.search.provider
не задан, они используют встроенный веб-поиск OpenAI вместо перечисленных выше управляемых
провайдеров (см. ниже). Задайте для tools.web.search.provider значение
parallel-free (или другого провайдера), чтобы вместо этого направлять их через управляемый путь.
Встроенный веб-поиск OpenAI
Прямые модели OpenAI Responses (api: "openai-responses", провайдер openai,
без базового URL или с официальным базовым URL API OpenAI) автоматически используют размещённый OpenAI
инструмент web_search, когда веб-поиск OpenClaw включён и не закреплён
управляемый провайдер. Это поведение принадлежит провайдеру во встроенном
плагине OpenAI и не применяется к базовым URL прокси-серверов, совместимых с OpenAI, или маршрутам Azure.
Задайте для tools.web.search.provider другого провайдера, например brave, чтобы
сохранить управляемый инструмент web_search для моделей OpenAI, либо задайте
tools.web.search.enabled: false, чтобы отключить как управляемый поиск, так и встроенный
поиск OpenAI.
Нативный веб-поиск Codex
Среда выполнения app-server Codex автоматически использует размещённый инструмент Codex web_search,
когда веб-поиск включён и управляемый провайдер не выбран. Нативный размещённый
поиск и динамический управляемый инструмент OpenClaw web_search являются взаимоисключающими,
поэтому управляемый поиск не может обойти нативные ограничения доменов. OpenClaw использует
управляемый инструмент, когда размещённый поиск недоступен, явно отключён или
заменён выбранным управляемым провайдером. OpenClaw оставляет отдельное
расширение Codex web.run отключённым (features.standalone_web_search: false),
поскольку рабочий трафик app-server отклоняет заданное пользователем пространство имён web.
- Настройте нативный поиск в разделе
tools.web.search.openaiCodex - Укажите
tools.web.search.provider: "codex", чтобы подготовить Codex Hosted Search в качестве управляемого провайдераweb_searchдля любой родительской модели. Каждый вызов запускает ограниченный эфемерный цикл app-server Codex и завершается ошибкой, если Codex не создаёт размещённый элементwebSearch. mode: "cached"— предпочтение по умолчанию, но Codex преобразует его в активный внешний доступ для неограниченных циклов app-server; укажите"live", чтобы явно запросить активный доступ- Укажите в
tools.web.search.providerуправляемого провайдера, напримерbrave, чтобы вместо этого использовать управляемый инструмент OpenClawweb_search - Укажите
tools.web.search.openaiCodex.enabled: false, чтобы отказаться от размещённого Codex поиска; другие управляемые провайдеры останутся доступны - Ограничение нативной поверхности инструментов Codex также сохраняет доступность управляемого
web_search - Когда задано
allowedDomains, автоматический управляемый резервный механизм закрывается при отказе, если размещённый поиск недоступен, поэтому нативный список разрешённых ресурсов нельзя обойти - Запуски только с LLM и отключёнными инструментами отключают как нативный, так и управляемый поиск
tools.web.search.enabled: falseотключает как управляемый, так и нативный поиск
Постоянные изменения фактической политики поиска Codex запускают новый связанный поток, чтобы уже загруженный поток app-server не мог сохранить устаревший доступ к размещённому поиску. Временные ограничения для отдельного цикла используют временный ограниченный поток и сохраняют существующую привязку для последующего возобновления.
Прямой трафик OpenAI ChatGPT Responses также может использовать размещённый
инструмент OpenAI web_search. Этот отдельный путь остаётся доступным только при явном включении через
tools.web.search.openaiCodex.enabled: true и применяется только к подходящим
моделям openai/*, использующим api: "openai-chatgpt-responses".
{ tools: { web: { search: { enabled: true, // Необязательно: также использовать Codex Hosted Search из родительских моделей, отличных от Codex. provider: "codex", openaiCodex: { enabled: true, mode: "cached", allowedDomains: ["example.com"], contextSize: "high", userLocation: { country: "US", city: "New York", timezone: "America/New_York", }, }, }, }, },}Для сред выполнения и провайдеров, которые не поддерживают нативный поиск Codex, Codex может
использовать управляемый резервный механизм web_search через пространство имён динамических инструментов OpenClaw.
Выберите явного управляемого провайдера, если вам нужны специфичные для провайдера
сетевые ограничения OpenClaw вместо размещённого поиска Codex.
Выбор provider: "codex" включает встроенный плагин codex и использует
те же ограничения tools.web.search.openaiCodex, которые показаны выше. Сначала выполните аутентификацию
app-server Codex с помощью openclaw models auth login --provider openai.
Родительский агент может использовать любую модель или среду выполнения; только ограниченный поисковый исполнитель
работает через Codex.
Безопасность сети
Вызовы управляемого HTTP-провайдера web_search используют защищённый путь получения данных OpenClaw,
ограниченный собственным именем хоста текущего провайдера. Только для этого имени хоста
OpenClaw разрешает ответы DNS с поддельными IP-адресами от Surge, Clash и sing-box в
198.18.0.0/15 и fc00::/7. Другие частные адреса, адреса обратной связи, локальные адреса канала и
адреса служб метаданных остаются заблокированными. Codex Hosted Search является исключением:
его ограниченный исполнитель делегирует сетевой доступ размещённому
инструменту app-server Codex web_search.
Это автоматическое разрешение не применяется к произвольным URL-адресам web_fetch. Для
web_fetch явно включайте tools.web.fetch.ssrfPolicy.allowRfc2544BenchmarkRange и
tools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRange только тогда, когда эти синтетические диапазоны
принадлежат вашему доверенному прокси-серверу.
Конфигурация
{ tools: { web: { search: { enabled: true, // по умолчанию: true provider: "brave", // или не указывайте для автоматического определения maxResults: 5, timeoutSeconds: 30, cacheTtlMinutes: 15, }, }, },}Конфигурация конкретного провайдера (ключи API, базовые URL-адреса, режимы) находится в
plugins.entries.<plugin>.config.webSearch.*. Gemini также может повторно использовать
models.providers.google.apiKey и models.providers.google.baseUrl как резервные варианты с более низким приоритетом
после своей специальной конфигурации веб-поиска и GEMINI_API_KEY. Примеры приведены
на страницах провайдеров.
Grok также может повторно использовать профиль аутентификации xAI OAuth из openclaw models auth login --provider xai --method oauth; конфигурация ключа API остаётся резервным вариантом.
Значение tools.web.search.provider проверяется по идентификаторам провайдеров веб-поиска,
объявленным в манифестах встроенных и установленных плагинов. Опечатка вроде "brvae"
приводит к ошибке проверки конфигурации вместо незаметного перехода к автоматическому определению. Если
для настроенного провайдера остались только устаревшие данные плагина, например оставшийся
блок plugins.entries.<plugin> после удаления стороннего плагина,
OpenClaw сохраняет устойчивость запуска и выводит предупреждение, чтобы вы могли переустановить
плагин или запустить openclaw doctor --fix для очистки устаревшей конфигурации.
Выбор резервного провайдера web_fetch выполняется отдельно:
- выберите его с помощью
tools.web.fetch.provider - либо не указывайте это поле, и OpenClaw автоматически определит первого готового провайдера веб-загрузки по настроенным учётным данным
- запрос
web_fetchвне песочницы может использовать провайдеры установленных плагинов, которые объявляютcontracts.webFetchProviders; запросы из песочницы разрешают встроенных провайдеров и проверенные установки официальных плагинов, но исключают сторонние внешние плагины - официальный плагин Firecrawl на сегодня является единственным встроенным участником
webFetchProviders, который настраивается в разделеplugins.entries.firecrawl.config.webFetch.*
Когда вы выбираете Kimi в процессе openclaw onboard или
openclaw configure --section web, OpenClaw также может запросить:
- регион API Moonshot (
https://api.moonshot.ai/v1илиhttps://api.moonshot.cn/v1) - модель веб-поиска Kimi по умолчанию (по умолчанию
kimi-k2.6)
Для x_search настройте plugins.entries.xai.config.xSearch.*. Он использует
тот же профиль аутентификации xAI, что и чат, либо учётные данные XAI_API_KEY / веб-поиска плагина,
используемые веб-поиском Grok.
Устаревшая конфигурация tools.web.x_search.* автоматически переносится командой openclaw doctor --fix.
Когда вы выбираете Grok в процессе openclaw onboard или openclaw configure --section web,
OpenClaw также предлагает необязательную настройку x_search с теми же учётными данными сразу
после завершения настройки Grok. Это отдельный последующий шаг в рамках пути Grok,
а не отдельный вариант провайдера веб-поиска верхнего уровня. Если вы выберете другого
провайдера, OpenClaw не покажет запрос x_search.
Хранение ключей API
Файл конфигурации
Выполните openclaw configure --section web или задайте ключ напрямую:
{ plugins: { entries: { brave: { config: { webSearch: { apiKey: "YOUR_KEY", // pragma: allowlist secret }, }, }, }, },}Переменная окружения
Задайте переменную окружения провайдера в окружении процесса Gateway:
export BRAVE_API_KEY="YOUR_KEY"Для установки Gateway поместите её в ~/.openclaw/.env.
См. Переменные окружения.
Параметры инструмента
| Параметр | Описание |
|---|---|
query |
Поисковый запрос (обязательно) |
count |
Количество возвращаемых результатов (1-10, по умолчанию: 5) |
country |
2-буквенный код страны ISO (например, "US", "DE") |
language |
Код языка ISO 639-1 (например, "en", "de") |
search_lang |
Код языка поиска (только Brave) |
freshness |
Фильтр времени: day, week, month или year |
date_after |
Результаты после этой даты (YYYY-MM-DD) |
date_before |
Результаты до этой даты (YYYY-MM-DD) |
ui_lang |
Код языка интерфейса (только Brave) |
domain_filter |
Массив разрешённых/запрещённых доменов (только Perplexity) |
max_tokens |
Общий бюджет токенов содержимого, только нативный Perplexity Search API |
max_tokens_per_page |
Ограничение токенов извлечения для одной страницы, только нативный Perplexity Search API |
x_search
x_search выполняет поиск по публикациям X (ранее Twitter) с помощью xAI и возвращает
ответы, синтезированные ИИ, с цитатами. Он принимает запросы на естественном языке и
необязательные структурированные фильтры. OpenClaw создаёт встроенный инструмент xAI x_search
для каждого запроса, а не сохраняет его постоянно зарегистрированным, поэтому он активен только
в том цикле, который действительно его вызывает.
Конфигурация x_search
Если enabled не задан, x_search предоставляется только тогда, когда провайдер активной модели —
xai и доступны учётные данные xAI. Для активной модели с известным
провайдером, отличным от xAI, укажите для plugins.entries.xai.config.xSearch.enabled значение true, чтобы
явно разрешить межпровайдерное использование. Если провайдер активной модели отсутствует или
не определён, инструмент остаётся скрытым. Укажите для enabled значение false, чтобы отключить его для
всех провайдеров. Учётные данные xAI требуются всегда.
{ plugins: { entries: { xai: { config: { xSearch: { enabled: true, // обязательно для известного провайдера моделей, отличного от xAI model: "grok-4.3", baseUrl: "https://api.x.ai/v1", // необязательно, переопределяет webSearch.baseUrl inlineCitations: false, maxTurns: 2, timeoutSeconds: 30, cacheTtlMinutes: 15, }, webSearch: { apiKey: "xai-...", // необязательно, если настроен профиль аутентификации xAI или XAI_API_KEY baseUrl: "https://api.x.ai/v1", // необязательный общий базовый URL xAI Responses }, }, }, }, },}x_search отправляет запросы в <baseUrl>/responses, когда
задано plugins.entries.xai.config.xSearch.baseUrl. Если это поле не указано,
используется plugins.entries.xai.config.webSearch.baseUrl, затем устаревшее
tools.web.search.grok.baseUrl и, наконец, общедоступная конечная точка xAI
(https://api.x.ai/v1).
Параметры x_search
| Параметр | Описание |
|---|---|
query |
Поисковый запрос (обязательно) |
allowed_x_handles |
Ограничить результаты максимум 20 дескрипторами X |
excluded_x_handles |
Исключить максимум 20 дескрипторов X |
from_date |
Включать только публикации не ранее этой даты (YYYY-MM-DD) |
to_date |
Включать только публикации не позднее этой даты (YYYY-MM-DD) |
enable_image_understanding |
Разрешить xAI анализировать изображения в найденных публикациях |
enable_video_understanding |
Разрешить xAI анализировать видео в найденных публикациях |
allowed_x_handles и excluded_x_handles являются взаимоисключающими.
Пример x_search
await x_search({ query: "рецепты ужина", allowed_x_handles: ["nytfood"], from_date: "2026-03-01",});// Статистика отдельной публикации: по возможности используйте точный URL статуса или идентификатор статусаawait x_search({ query: "https://x.com/huntharo/status/1905678901234567890",});Примеры
// Базовый поискawait web_search({ query: "SDK плагинов OpenClaw" }); // Поиск для Германииawait web_search({ query: "смотреть телевидение онлайн", country: "DE", language: "de" }); // Недавние результаты (за последнюю неделю)await web_search({ query: "разработки в области ИИ", freshness: "week" }); // Диапазон датawait web_search({ query: "исследования климата", date_after: "2024-01-01", date_before: "2024-06-30",}); // Фильтрация по доменам (только Perplexity)await web_search({ query: "обзоры продуктов", domain_filter: ["-reddit.com", "-pinterest.com"],});Профили инструментов
Если вы используете профили инструментов или списки разрешений, добавьте web_search, x_search или group:web:
{ tools: { allow: ["web_search", "x_search"], // или: allow: ["group:web"] (включает web_search, x_search и web_fetch) },}Связанные материалы
- Получение веб-страниц -- получение URL и извлечение удобного для чтения содержимого
- Веб-браузер -- полная автоматизация браузера для сайтов, активно использующих JS
- Поиск Grok -- Grok в качестве провайдера
web_search - Веб-поиск Ollama -- веб-поиск без ключа через ваш хост Ollama