Плагины — это модули расширения для Hermes Agent, позволяющие добавлять пользовательские инструменты, хуки, команды и интеграции. Система плагинов поддерживает четыре типа расширений: общие плагины, провайдеры памяти, контекстные движки и модельные провайдеры. Каждый плагин размещается в директории ~/.hermes/plugins/ и управляется через CLI-команды.
Что такое плагины
Плагины расширяют функциональность Hermes Agent без изменения его ядра. Через объект PluginContext плагины могут регистрировать:
- Инструменты —
ctx.register_tool()— добавляют новые функции, доступные LLM - Хуки жизненного цикла —
ctx.register_hook()—pre_llm_call,post_llm_call,post_tool_call,on_session_endи др. - Слеш-команды —
ctx.register_command()— команды вида/my-commandв сессии - CLI-подкоманды —
ctx.register_cli_command()— команды видаhermes my-thing - Навыки (skills) —
ctx.register_skill()— плагин может поставлять навыки, доступные черезplugin:skillформат - Сообщения в диалог —
ctx.inject_message()— вставка сообщений в активную беседу (только CLI-режим)
Существует четыре типа плагинов:
- Общие плагины — добавляют инструменты, хуки, слеш-команды и CLI-подкоманды. Можно включать в любом сочетании.
- Провайдеры памяти — заменяют или дополняют встроенную систему памяти (Honcho, Mem0, Supermemory и др.). Одновременно активен только один провайдер. Настройка:
memory.provider: "honcho"вconfig.yaml. - Контекстные движки — заменяют встроенный компрессор контекста. Одновременно активен только один движок. Настройка:
context.engine: "compressor". - Модельные провайдеры — объявляют бэкенд для вывода (OpenRouter, Anthropic, Bedrock и др.). Выбор осуществляется через параметр
--providerилиconfig.yaml.
Структура плагина
Минимальный плагин — это директория с файлом plugin.yaml (манифест) и Python-модулем. Пример структуры:
my-plugin/
├── plugin.yaml # Манифест: имя, версия, описание, хуки, зависимости
├── __init__.py # Основной код с функцией register(ctx)
├── adapter.py # (опционально) адаптер для платформенных плагинов
├── README.md # (опционально) документация
└── skills/ # (опционально) навыки, поставляемые плагином
└── my-skill/
└── SKILL.md
Манифест plugin.yaml
name: my-plugin
version: 1.0.0
description: "Описание плагина"
author: "@author"
pip_dependencies: # (опционально) Python-пакеты для установки
- some-package
hooks: # (опционально) хуки, которые использует плагин
- post_tool_call
- on_session_end
Точка входа register(ctx)
Функция register(ctx) в __init__.py вызывается при загрузке плагина. Через ctx регистрируются инструменты, хуки, команды и навыки:
def register(ctx):
# Регистрация инструмента
ctx.register_tool(name="my_tool", schema={...}, handler=my_handler)
# Регистрация хука
ctx.register_hook("post_tool_call", my_hook_fn)
# Регистрация слеш-команды
ctx.register_command("my-cmd", handler=cmd_handler)
# Регистрация навыка (будет доступен как plugin:skill)
ctx.register_skill(name="my-skill", path=Path(__file__).parent / "skills" / "my-skill" / "SKILL.md")
Plugin-provided skills (навыки от плагинов)
Плагины могут поставлять навыки (skills), которые загружаются через квалифицированное имя plugin:skill. Например, если плагин superpowers регистрирует навык writing-plans, он загружается командой:
skill_view(name="superpowers:writing-plans")
В инструменте skill_view параметр name поддерживает формат plugin:skill для разрешения навыков из плагинов. Это позволяет плагинам поставлять готовые инструкции и процедуры без необходимости устанавливать их отдельно в директорию skills/.
Плагин регистрирует навык через ctx.register_skill(), указывая путь к файлу SKILL.md. Зарегистрированные навыки отображаются в списке hermes skills list и доступны агенту через skill_view.
Встроенные плагины
Hermes поставляется с набором встроенных плагинов, которые находятся в директории plugins/ репозитория. Все они отключены по умолчанию — для активации выполните hermes plugins enable <имя>.
disk-cleanup
Автоматически отслеживает и удаляет временные файлы, созданные во время сессий: тестовые скрипты, временные выводы, логи cron, устаревшие профили Chrome. Плагин работает через хуки: post_tool_call отслеживает создание файлов с паттернами test_*, tmp_*, а on_session_end выполняет очистку при завершении сессии. Команда /disk-cleanup предоставляет ручное управление с подкомандами status, dry-run, quick и deep. Очистка затрагивает только пути внутри HERMES_HOME или /tmp/hermes-*.
google_meet
Позволяет агенту присоединяться к звонкам Google Meet, транскрибировать аудио и участвовать в обсуждении. Плагин добавляет безголового виртуального участника, который подключается к Meet URL через автоматизацию браузера. Включает инструменты meet_summarize, meet_speak и meet_followup для работы с содержимым встречи. Результаты сохраняются в ~/.hermes/cache/google_meet/.
spotify
Предоставляет семь инструментов для работы со Spotify: воспроизведение, управление очередью, поиск треков, управление плейлистами, альбомами и библиотекой. Плагин обеспечивает нативную интеграцию с Spotify API. Авторизация через hermes auth spotify.
honcho (провайдер памяти)
Honcho — это AI-нативная система памяти с кросс-сессионным моделированием пользователя через диалектический Q&A, семантический поиск и персистентные выводы. Пять инструментов (profile, search, reasoning, context, conclude) доступны через интерфейс MemoryProvider.
Настройка и управление:
hermes honcho setup # Интерактивная настройка Honcho
hermes honcho status # Проверка состояния подключения
Honcho использует цепочку конфигурации: $HERMES_HOME/honcho.json (профиль-специфичный) → ~/.honcho/config.json (глобальный) → переменные окружения. Для активации добавьте в config.yaml:
memory:
provider: "honcho"
security-guidance
Добавляет предупреждения безопасности к результатам записи файлов, когда новый контент содержит опасные паттерны (pickle.load, yaml.load, eval(, os.system, dangerouslySetInnerHTML, verify=False, ECB, XXE, инъекции GitHub Actions и др.). 25 правил на основе regex/подстрок, форкнутых из Anthropic claude-plugins-official под Apache-2.0. Неблокирующий — файл записывается, а предупреждение возвращается модели на следующем ходу для самокоррекции.
Платформенные плагины
Для каждого мессенджера существует отдельный платформенный плагин с адаптером (adapter.py):
- telegram-platform — Telegram через python-telegram-bot (потоки/топики, стриминг, нативные медиа, inline-клавиатуры)
- discord-platform — Discord через discord.py (слеш-команды, threads, embeds, кнопки)
- slack-platform — Slack через slack-bolt в Socket Mode
- whatsapp-platform — WhatsApp через локальный Node.js мост
- teams-platform — Microsoft Teams через Bot Framework
- sms-platform — SMS через Twilio REST API
- matrix-platform — Matrix через matrix-nio
- mattermost-platform — Mattermost через websocket
- dingtalk-platform — DingTalk через WebSocket
- feishu-platform — Feishu/Lark через WebSocket
- wecom-platform — WeCom (Enterprise WeChat)
- signal-cli-platform — Signal через signal-cli REST API
- bluebubbles-platform — iMessage через BlueBubbles
- simplex-platform — SimpleX Chat через WebSocket (децентрализованный, без постоянных ID)
- raft-platform — Raft workspace через wake-channel bridge
- photon-platform — iMessage через Photon Spectrum SDK (gRPC-стрим)
Прочие встроенные плагины
- browser-browser-use — Browser Use облачный бэкенд
- browser-browserbase — Browserbase облачный бэкенд (stealth, прокси, keep-alive)
- browser-firecrawl — Firecrawl облачный бэкенд для браузера
- chronos — NAS-mediated managed cron провайдер для hosted-агентов
- deepinfra — DeepInfra генерация изображений и видео (FLUX, Qwen-Image)
- fal — FAL.ai генерация видео (Veo 3.1, Kling, Pixverse)
- xai — xAI Grok Imagine генерация видео
- kanban — Kanban-доска для управления задачами агента
- observability — Телеметрия и метрики
- hermes-achievements — Система достижений
- web-brave-free, web-ddgs, web-exa, web-firecrawl, web-parallel, web-searxng, web-tavily, web-xai — альтернативные веб-поисковые бэкенды
- basic, drain, nous, self-hosted — провайдеры аутентификации дашборда
- teams_pipeline — пайплайн встреч Microsoft Teams с транскрипциями
Управление плагинами (CLI)
hermes plugins # Интерактивный UI (toggle, configure)
hermes plugins list # Таблица: enabled / disabled / not enabled
hermes plugins list --plain --no-bundled # Компактный вид без встроенных
hermes plugins install user/repo # Установить из Git (с запросом Enable? [y/N])
hermes plugins install user/repo --enable # Установить И включить (без запроса)
hermes plugins install user/repo --no-enable # Установить, но оставить отключённым
hermes plugins update my-plugin # Обновить до последней версии
hermes plugins remove my-plugin # Удалить плагин
hermes plugins enable my-plugin # Добавить в allow-list
hermes plugins disable my-plugin # Убрать из allow-list + в disabled
Состояния плагина
Плагин может находиться в одном из трёх состояний:
- enabled — загружается при запуске (в
plugins.enabled, не вplugins.disabled) - disabled — явно отключён (в
plugins.disabled) - not enabled — обнаружен, но никогда не активировался (не в
enabled, не вdisabled)
В рабочей сессии команда /plugins показывает список загруженных плагинов.
Интерактивный UI
Команда hermes plugins без аргументов открывает composite интерактивный экран:
- General Plugins — чекбоксы, переключение SPACE. Галочка = в
plugins.enabled. - Provider Plugins — показывает текущий выбор. ENTER для radio-пикера (выбор одного активного провайдера).
- Встроенные плагины помечаются тегом
[bundled].
Создание пользовательского плагина
Плагины устанавливаются из Git-репозитория:
hermes plugins install user/repo --enable
Для локальной разработки поместите директорию плагина в ~/.hermes/plugins/ и выполните hermes plugins enable my-plugin.
Подробное руководство: Developer Guide — Build a Hermes Plugin.
Конфигурация в config.yaml
Список включённых/отключённых плагинов и выбор провайдеров сохраняется в config.yaml:
plugins:
enabled:
- my-plugin
- disk-cleanup
disabled:
- old-plugin
memory:
provider: "honcho" # пустая строка = только встроенная память
context:
engine: "compressor" # встроенный компрессор