Инструменты и наборы инструментов

Инструменты — это функции, которые расширяют возможности агента. Они сгруппированы по смыслу в наборы инструментов, и каждый такой набор можно включить или выключить отдельно для конкретной платформы.

Доступные инструменты

У Hermes из коробки большой реестр встроенных инструментов: веб-поиск, автоматизация браузера, выполнение команд в терминале, редактирование файлов, память, делегирование, RL-обучение, доставка сообщений, Home Assistant и многое другое.

заметка

Память Honcho между сессиями поставляется как плагин-провайдер памяти (plugins/memory/honcho/), а не как встроенный набор инструментов. Установка описана в разделе Плагины.

Если смотреть по крупным категориям:

КатегорияПримерыОписание
Webweb_search, web_extractПоиск в интернете и извлечение содержимого страниц.
X Searchx_searchПоиск по постам и тредам X (Twitter) через встроенный Responses-инструмент x_search от xAI — требует учётных данных xAI (SuperGrok OAuth или XAI_API_KEY); по умолчанию выключен, включается вручную через hermes tools → 🐦 X (Twitter) Search.
Терминал и файлыterminal, process, read_file, patchВыполнение команд и работа с файлами.
Browserbrowser_navigate, browser_snapshot, browser_visionИнтерактивная автоматизация браузера с поддержкой текста и зрения.
Mediavision_analyze, image_generate, text_to_speechМультимодальный анализ и генерация.
Оркестрация агентовtodo, clarify, execute_code, delegate_taskПланирование, уточнение, выполнение кода и делегирование субагентам.
Память и поискmemory, session_searchПостоянная память агента и поиск по сессиям.
Автоматизация и доставкаcronjob, send_messageЗапланированные задачи с действиями create/list/update/pause/resume/run/remove плюс отправка исходящих сообщений.
Интеграцииha_*, инструменты MCP-серверовHome Assistant, MCP и прочие интеграции.

Точный реестр, собранный прямо из кода, смотрите в разделах Справочник по встроенным инструментам и Справочник по наборам инструментов.

совет
Nous Tool Gateway

Подписчики платного Nous Portal могут пользоваться веб-поиском, генерацией изображений, TTS и автоматизацией браузера через Tool Gateway — отдельные API-ключи не нужны. Чтобы включить шлюз, запустите hermes model, а отдельные инструменты настраиваются командой hermes tools.

Как пользоваться наборами инструментов

# Использовать конкретные наборы инструментов
hermes chat --toolsets "web,terminal"

# Посмотреть все доступные инструменты
hermes tools

# Настроить инструменты для каждой платформы (интерактивно)
hermes tools

Среди распространённых наборов — web, search, terminal, file, browser, vision, image_gen, moa, skills, tts, todo, memory, session_search, cronjob, code_execution, delegation, clarify, homeassistant, messaging, spotify, discord, discord_admin, debugging и safe.

Полный список, включая платформенные пресеты вроде hermes-cli, hermes-telegram, и динамические MCP-наборы вида mcp-<server>, приведён в Справочнике по наборам инструментов.

Бэкенды терминала

Инструмент терминала умеет выполнять команды в разных окружениях:

БэкендОписаниеКогда применять
localЗапуск на вашей машине (по умолчанию)Разработка, доверенные задачи
dockerИзолированные контейнерыБезопасность, воспроизводимость
sshУдалённый серверПесочница, держать агента подальше от его собственного кода
singularityHPC-контейнерыКластерные вычисления, работа без root
modalОблачное выполнениеServerless, масштабирование
daytonaОблачное рабочее пространство-песочницаПостоянные удалённые среды разработки

Настройка

# В ~/.hermes/config.yaml
terminal:
  backend: local    # или: docker, ssh, singularity, modal, daytona
  cwd: "."          # Рабочий каталог
  timeout: 180      # Таймаут команды в секундах

Бэкенд Docker

terminal:
  backend: docker
  docker_image: python:3.11-slim

Один постоянный контейнер, общий на весь процесс. При первом обращении Hermes поднимает единственный долгоживущий контейнер (docker run -d ... sleep 2h) и направляет в него каждый вызов терминала, файловых операций и execute_code через docker exec. Смена рабочего каталога, установленные пакеты, правки окружения, файлы, записанные в /workspace, — всё это переносится из одного вызова инструмента в следующий, переживает /new, /reset и субагентов delegate_task и живёт ровно столько, сколько работает сам процесс Hermes. При завершении работы контейнер останавливается и удаляется.

То есть бэкенд Docker ведёт себя как постоянная песочница-виртуалка, а не как свежий контейнер под каждую команду. Один раз сделали pip install foo — пакет на месте до конца сессии. Перешли в cd /workspace/project — следующие вызовы ls увидят именно этот каталог. Полный жизненный цикл и флаг container_persistent, который определяет, переживают ли /workspace и /root перезапуски Hermes, описаны в разделе Настройка → Бэкенд Docker.

Бэкенд SSH

Рекомендуется ради безопасности — так агент не сможет изменить собственный код:

terminal:
  backend: ssh
# Укажите учётные данные в ~/.hermes/.env
TERMINAL_SSH_HOST=my-server.example.com
TERMINAL_SSH_USER=myuser
TERMINAL_SSH_KEY=~/.ssh/id_rsa

Singularity/Apptainer

# Заранее соберите SIF для параллельных воркеров
apptainer build ~/python.sif docker://python:3.11-slim

# Настройте
hermes config set terminal.backend singularity
hermes config set terminal.singularity_image ~/python.sif
uv pip install modal
modal setup
hermes config set terminal.backend modal

Ресурсы контейнера

Для всех контейнерных бэкендов настраиваются CPU, память, диск и сохранение состояния:

terminal:
  backend: docker  # или singularity, modal, daytona
  container_cpu: 1              # Ядра CPU (по умолчанию: 1)
  container_memory: 5120        # Память в МБ (по умолчанию: 5 ГБ)
  container_disk: 51200         # Диск в МБ (по умолчанию: 50 ГБ)
  container_persistent: true    # Сохранять файловую систему между сессиями (по умолчанию: true)

При container_persistent: true установленные пакеты, файлы и конфигурация переживают переход между сессиями.

Безопасность контейнеров

Все контейнерные бэкенды запускаются с усиленной защитой:

  • Корневая файловая система только для чтения (Docker)
  • Сброшены все Linux-capabilities
  • Запрет на повышение привилегий
  • Лимит PID (256 процессов)
  • Полная изоляция пространств имён
  • Постоянное рабочее пространство через тома, а не через перезаписываемый корневой слой

Docker при желании можно снабдить явным списком разрешённых переменных окружения через terminal.docker_forward_env, но проброшенные переменные видны командам внутри контейнера, поэтому считайте их раскрытыми для этой сессии.

Управление фоновыми процессами

Запускайте фоновые процессы и управляйте ими:

terminal(command="pytest -v tests/", background=true)
# Возвращает: {"session_id": "proc_abc123", "pid": 12345}

# Затем управляйте через инструмент process:
process(action="list")       # Показать все запущенные процессы
process(action="poll", session_id="proc_abc123")   # Проверить статус
process(action="wait", session_id="proc_abc123")   # Ждать завершения
process(action="log", session_id="proc_abc123")    # Полный вывод
process(action="kill", session_id="proc_abc123")   # Завершить
process(action="write", session_id="proc_abc123", data="y")  # Передать ввод

Режим PTY (pty=true) включает работу с интерактивными CLI-инструментами вроде Codex и Claude Code.

Поддержка sudo

Если команде нужен sudo, у вас спросят пароль (он кешируется на время сессии). Либо задайте SUDO_PASSWORD в ~/.hermes/.env.

внимание

На платформах обмена сообщениями при сбое sudo в вывод добавляется подсказка прописать SUDO_PASSWORD в ~/.hermes/.env.

ESC