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

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

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

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

Honcho cross-session memory доступен как плагин провайдера памяти (plugins/memory/honcho/), а не как встроенный набор инструментов. Инструкции по установке см. в разделе Plugins.

Категории верхнего уровня:

Категория Примеры Описание
Веб web_search, web_extract Поиск в интернете и извлечение содержимого страниц.
Терминал и файлы terminal, process, read_file, patch Выполнение команд и работа с файлами.
Браузер browser_navigate, browser_snapshot, browser_vision Интерактивная автоматизация браузера с поддержкой текста и vision.
Медиа 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 server tools, rl_* Home Assistant, MCP, RL-обучение и другие интеграции.

Полный реестр инструментов, основанный на коде, см. в разделе Built-in Tools Reference и Toolsets Reference.

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

Использование наборов инструментов (Toolsets)

# Use specific toolsets
hermes chat --toolsets "web,terminal"

# See all available tools
hermes tools

# Configure tools per platform (interactive)
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 и rl.

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

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

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

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

Конфигурация

# In ~/.hermes/config.yaml
terminal:
  backend: local    # or: docker, ssh, singularity, modal, daytona, vercel_sandbox
  cwd: "."          # Working directory
  timeout: 180      # Command timeout in seconds

Бэкенд Docker

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

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

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

Бэкенд SSH

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

terminal:
  backend: ssh
# Set credentials in ~/.hermes/.env
TERMINAL_SSH_HOST=my-server.example.com
TERMINAL_SSH_USER=myuser
TERMINAL_SSH_KEY=~/.ssh/id_rsa

Singularity/Apptainer

# Pre-build SIF for parallel workers
apptainer build ~/python.sif docker://python:3.11-slim

# Configure
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

Vercel Sandbox

pip install 'hermes-agent[vercel]'
hermes config set terminal.backend vercel_sandbox
hermes config set terminal.vercel_runtime node24

Аутентифицируйтесь, указав все три: VERCEL_TOKEN, VERCEL_PROJECT_ID и VERCEL_TEAM_ID. Эта настройка с токеном доступа является рекомендуемым способом для развёртывания и обычных долгоживущих процессов Hermes на Render, Railway, Docker и подобных хостингах. Поддерживаемые среды выполнения: node24, node22 и python3.13; Hermes по умолчанию использует /vercel/sandbox как корневую рабочую директорию.

Для разовой локальной разработки Hermes также принимает краткосрочные Vercel OIDC-токены:

VERCEL_OIDC_TOKEN="$(vc project token <project-name>)" hermes chat

Из директории связанного Vercel-проекта:

VERCEL_OIDC_TOKEN="$(vc project token)" hermes chat

С опцией container_persistent: true Hermes использует снапшоты Vercel для сохранения состояния файловой системы при пересоздании sandbox'а для той же задачи. Это может включать синхронизированные Hermes учётные данные, навыки и кэш-файлы внутри sandbox'а. Снапшоты не сохраняют живые процессы, пространство PID или идентичность sandbox'а.

Фоновые команды терминала используют общий процесс Hermes для нелокальных операций: spawn, poll, wait, log и kill работают через обычный инструмент process, пока sandbox активен, но Hermes не предоставляет встроенного восстановления отсоединённых процессов Vercel после очистки или перезапуска.

Оставьте container_disk неустановленным или на общем значении по умолчанию 51200; пользовательский размер диска не поддерживается для Vercel Sandbox и приведёт к ошибкам диагностики/создания бэкенда.

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

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

terminal:
  backend: docker  # or singularity, modal, daytona, vercel_sandbox
  container_cpu: 1              # CPU cores (default: 1)
  container_memory: 5120        # Memory in MB (default: 5GB)
  container_disk: 51200         # Disk in MB (default: 50GB)
  container_persistent: true    # Persist filesystem across sessions (default: true)

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

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

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

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

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

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

terminal(command="pytest -v tests/", background=true)
# Returns: {"session_id": "proc_abc123", "pid": 12345}

# Then manage with the process tool:
process(action="list")       # Show all running processes
process(action="poll", session_id="proc_abc123")   # Check status
process(action="wait", session_id="proc_abc123")   # Block until done
process(action="log", session_id="proc_abc123")    # Full output
process(action="kill", session_id="proc_abc123")   # Terminate
process(action="write", session_id="proc_abc123", data="y")  # Send input

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

Поддержка Sudo

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

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