Инструменты и наборы инструментов
Инструменты — это функции, которые расширяют возможности агента. Они сгруппированы по смыслу в наборы инструментов, и каждый такой набор можно включить или выключить отдельно для конкретной платформы.
Доступные инструменты
У Hermes из коробки большой реестр встроенных инструментов: веб-поиск, автоматизация браузера, выполнение команд в терминале, редактирование файлов, память, делегирование, RL-обучение, доставка сообщений, Home Assistant и многое другое.
Память Honcho между сессиями поставляется как плагин-провайдер памяти (plugins/memory/honcho/), а не как встроенный набор инструментов. Установка описана в разделе Плагины.
Если смотреть по крупным категориям:
| Категория | Примеры | Описание |
|---|---|---|
| Web | web_search, web_extract | Поиск в интернете и извлечение содержимого страниц. |
| X Search | x_search | Поиск по постам и тредам X (Twitter) через встроенный Responses-инструмент x_search от xAI — требует учётных данных xAI (SuperGrok OAuth или XAI_API_KEY); по умолчанию выключен, включается вручную через hermes tools → 🐦 X (Twitter) Search. |
| Терминал и файлы | terminal, process, read_file, patch | Выполнение команд и работа с файлами. |
| Browser | browser_navigate, browser_snapshot, browser_vision | Интерактивная автоматизация браузера с поддержкой текста и зрения. |
| Media | vision_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 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 | Удалённый сервер | Песочница, держать агента подальше от его собственного кода |
singularity | HPC-контейнеры | Кластерные вычисления, работа без 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
Modal (бессерверное облако)
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.