Поиск по X (Twitter)
Инструмент x_search даёт агенту прямой доступ к постам, профилям и тредам X (Twitter). Под капотом — встроенный инструмент x_search из Responses API xAI по адресу https://api.x.ai/v1/responses. Сам Grok гоняет поиск на стороне сервера и возвращает готовый текст со ссылками на исходные посты.
Берите его вместо web_search, когда вам нужны именно свежие обсуждения, реакции или утверждения в X. Для обычных веб-страниц по-прежнему используйте web_search / web_extract.
Если вы и так платите Portal за модель xAI, вызовы Live Search списываются с того же ключа xAI, что настроен для чата. Подробнее — Nous Portal.
Аутентификация
x_search регистрируется, когда доступен любой из путей получения учётных данных xAI:
| Учётные данные | Источник | Настройка |
|---|---|---|
| OAuth SuperGrok / X Premium+ (предпочтительно) | Вход через браузер на accounts.x.ai, обновляется автоматически | hermes auth add xai-oauth — см. OAuth xAI Grok (SuperGrok / X Premium+) |
XAI_API_KEY | Платный API-ключ xAI | Задаётся в ~/.hermes/.env |
Оба бьют в один и тот же эндпоинт с одинаковым телом запроса — отличается лишь bearer-токен. Когда настроены оба, побеждает OAuth SuperGrok, поэтому x_search расходует квоту вашей подписки, а не платный API-бюджет.
Функция check_fn инструмента запускает резолвер учётных данных xAI каждый раз, когда список инструментов модели пересобирается. Возврат True означает, что bearer-токен можно получить, он непустой и (если срок истёк) успешно обновлён. При отозванных токенах с неудавшимся обновлением инструмент прячется из схемы — модель его попросту не видит.
Включение инструмента
Включается сам, как только присутствуют учётные данные xAI (OAuth-токен или XAI_API_KEY). Если он вам не нужен, отключите явно через hermes tools → Search → x_search.
hermes tools
# → 🐦 X (Twitter) Search (нажмите пробел, чтобы включить)
Меню выбора предлагает два варианта учётных данных:
- xAI Grok OAuth (SuperGrok / Premium+) — откроет браузер на
accounts.x.ai, если вы ещё не вошли - API-ключ xAI — запросит
XAI_API_KEY
Любой из вариантов снимает блокировку. Выбирайте те данные, что у вас уже есть; инструмент одинаково работает и с тем, и с другим. Если в итоге настроены оба, при вызове предпочтение отдаётся OAuth.
Конфигурация
# ~/.hermes/config.yaml
x_search:
# Модель xAI для вызова Responses.
# grok-4.20-reasoning — рекомендованный вариант по умолчанию; подойдёт любая
# модель Grok с доступом к инструменту x_search.
model: grok-4.20-reasoning
# Таймаут запроса в секундах. x_search может занимать 60–120 с на
# сложных запросах — значение по умолчанию взято с запасом. Минимум: 30.
timeout_seconds: 180
# Сколько автоматических повторов делать при 5xx / ReadTimeout / ConnectionError.
# Каждый повтор откатывается (1.5 × номер попытки секунд, не больше 5 с).
retries: 2
Параметры инструмента
Агент вызывает x_search со следующими аргументами:
| Параметр | Тип | Описание |
|---|---|---|
query | string (обязательный) | Что искать в X. |
allowed_x_handles | string array | Необязательный список хэндлов, которые включаются исключительно (не более 10). Ведущий @ отбрасывается. |
excluded_x_handles | string array | Необязательный список хэндлов для исключения (не более 10). Взаимоисключающий с allowed_x_handles. |
from_date | string | Необязательная дата начала в формате YYYY-MM-DD. |
to_date | string | Необязательная дата конца в формате YYYY-MM-DD. |
enable_image_understanding | boolean | Попросить xAI проанализировать изображения, прикреплённые к подходящим постам. |
enable_video_understanding | boolean | Попросить xAI проанализировать видео, прикреплённые к подходящим постам. |
Инструмент возвращает JSON с полями:
answer— собранный текстовый ответ от Grokcitations— ссылки из верхнеуровневого поля Responses APIinline_citations— аннотацииurl_citation, извлечённые из тела сообщения (каждая сurl,title,start_index,end_index)degraded—true, когда был задан хотя бы один сужающий фильтр (allowed_x_handles,excluded_x_handles,from_date,to_date) И оба канала ссылок вернулись пустыми. В этом случаеanswerсобран из собственных знаний модели, а не из индекса X, так что считайте его ответом без источников. В остальных случаяхfalse(включая ситуацию «фильтры не заданы» — широкий ответ без источников остаётся просто ответом, а не промахом фильтра)degraded_reason— короткая строка с перечнем активных фильтров либоnull, когдаdegradedравноfalsecredential_source—"xai-oauth", если сработал OAuth,"xai", если сработал API-ключmodel,query,provider,tool,success
Проверка дат
from_date / to_date проверяются на стороне клиента до HTTP-вызова:
- Обе даты, если заданы, должны разбираться как
YYYY-MM-DD. - Когда заданы обе,
from_dateдолжна быть не позжеto_date. from_dateне может быть позже сегодняшнего дня по UTC — в ещё не наступившем окне постов попросту не существует, и вызов гарантированно вернул бы ноль ссылок.to_dateв будущем допускается (вполне законно запросить «со вчера по завтра», чтобы ловить посты по мере их появления).
Ошибки проверки выдаются как структурированный результат инструмента {"error": "..."} — HTTP-вызова к xAI при этом не происходит.
Пример
Разговор с агентом:
What are people on X saying about the new Grok image features? Focus on responses from @xai.
Агент сделает следующее:
- Вызовет
x_searchсquery="reactions to new Grok image features",allowed_x_handles=["xai"] - Получит собранный ответ плюс список ссылок на конкретные посты
- Ответит текстом и приложит ссылки
Решение проблем
«No xAI credentials available»
Эту ошибку инструмент выдаёт, когда отказали оба пути аутентификации. Либо задайте XAI_API_KEY в ~/.hermes/.env, либо выполните hermes auth add xai-oauth и завершите вход через браузер. После этого перезапустите сессию, чтобы агент заново перечитал реестр инструментов.
«x_search is not enabled for this model»
У модели, указанной в x_search.model, нет доступа к серверному инструменту x_search. Переключитесь на grok-4.20-reasoning (значение по умолчанию) или другую модель Grok с его поддержкой. Актуальный список смотрите в документации xAI.
Инструмент не появляется в схеме
Две возможные причины:
- Набор инструментов не включён. Запустите
hermes toolsи убедитесь, что🐦 X (Twitter) Searchотмечен галочкой. - Нет учётных данных xAI. check_fn возвращает False, и схема остаётся скрытой. Запустите
hermes auth status, чтобы проверить статус входа xai-oauth, и убедитесь, чтоXAI_API_KEYзадан (если идёте через API-ключ).
degraded: true — ответ без ссылок
Если вы применили allowed_x_handles, excluded_x_handles или диапазон дат, а ответ пришёл с degraded: true, значит индекс X у xAI не нашёл подходящих постов, но Grok всё равно собрал ответ из своих обучающих данных. Такой ответ без источников — не принимайте его за реальный результат из X.
Что стоит проверить:
- Опечатка в хэндле. Уберите
@, перепроверьте написание и убедитесь, что аккаунт существует. - Слишком узкий диапазон дат или окно, уехавшее дальше сегодняшних постов; расширьте и повторите.
- Пробел в индексе xAI. Некоторые активные аккаунты время от времени не всплывают в
x_search, даже если постят регулярно. Повторите через несколько минут или используйте навыкxurlдля прямого чтения через X API, когда нужна точная лента конкретного хэндла.
Смотрите также
- OAuth xAI Grok (SuperGrok / Premium+) — гайд по настройке OAuth
- Веб-поиск и извлечение — для обычного (не из X) поиска по вебу
- Справочник по инструментам — полный каталог инструментов