Плагины

Плагины — это модули расширения для 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"  # встроенный компрессор