Встроенные плагины

Гермес держит небольшой набор вилок, встроенных в репозиторий. Они находятся в <repo>/plugins/<name>/ и загружаются автоматически вместе с выбранными пользовательскими плагинами в ~/.hermes/plugins/. Они используют же интерфейсные плагины, а также внешние плагины — хуки, инструменты, слеш-команды — просто используются в исходном коде.

См. страница Плагины для общей информации о системе плагинов и Создание плагина Hermes, чтобы написать свой урожай.

Как обнаружено работание

PluginManager сканирует четыре источника в следующем порядке:

  1. Встроенные<repo>/plugins/<имя>/ (то, что документировано на этой странице)
  2. Пользовательские~/.hermes/plugins/<имя>/
  3. Проектные./.hermes/plugins/<имя>/ (требуется HERMES_ENABLE_PROJECT_PLUGINS=1)
  4. Точки входа Piphermes_agent.plugins

При конфликте имен побеждают более поздние источники — используйте плагин с именем disk-cleanup, чтобы заменить встроенный.

plugins/memory/ и plugins/context_engine/ намеренно исключены из встроенных плагинов. Эти каталоги используют свои собственные пути определения пути, поскольку провайдеры памяти и контекстные движки являются провайдерами с особым выбором, настраиваемыми через hermes Memory setup/context.engine в config.

Встроенные плагины являются опциональными

Встроенные плагины для подключения отключены. Обнаружение их находит (они встроены в «список плагинов Hermes» и в интерактивном пользовательском интерфейсе «Плагины Hermes»), но ни один из них не загружается, пока вы явно не его:

hermes plugins enable disk-cleanup

Или через ~/.hermes/config.yaml:

plugins:
  enabled:
    - disk-cleanup

Это тот же самый механизм, который использует установленные пользователем вилки. Встроенные плагины никогда не включаются автоматически — ни при свежей установке, ни для существующих пользователей, обновляющихся до новой версии Hermes. Вы всегда явно соглашаетесь.

Чтобы снова отключить встроенный разъем:

hermes plugins disable disk-cleanup
# или: удалите его из plugins.enabled в config.yaml

Текущий состав

Репозиторий включает эти встроенные плагины в plugins/. Все они являются опциональными — они загружаются через hermes Plugins Enable <name>.

Плагин Тип Назначение
очистка диска хуки + слэш-команда Автоматически отслеживайте эфемерные файлы и очищайте их по завершении сеанса
наблюдаемость/langfuse хуки Трассировать шаги/вызовы LLM/инструменты в Langfuse
спотифай бэкенд (7 инструментов) Нативное звучание Spotify, очередь, поиск, плейлисты, альбомы, библиотека
google_meet автономный Присоединяться к звонкам Встречайте, транскрипция в первое время, дополнительное дуплексное аудио
image_gen/openai резервные изображения Беэкенд генерации изображений OpenAI gpt-image-2 (альтернатива FAL)
image_gen/openai-codex резервные изображения Генерация изображений OpenAI через OAuth Codex
image_gen/xai резервные изображения Бэкенд xAI grok-2-image
гермес-достижения вкладка панели управления Коллекции значков в стиле Steam, созданные в вашей истории сеансов Hermes
канбан/панель мониторинга вкладка панели управления UI доски Канбан для многопользовательского диспетчера — задачи, комментарии, рассылка, переключение досок. См. Мультиагент Канбан.

Провайдеры памяти (plugins/memory/*) и контекстные движки (plugins/context_engine/*) перечисляются отдельно в Memory Providers — они управляются через hermes Memory и hermes Plugins соответственно. Полная информация по каждому плагину для двух долговременных рабочих плагинов на основе хуков приведена ниже.

очистка диска

Автоматически отслеживаются и сохраняются эфемерные файлы, созданные во время сеансов — тестовые скрипты, данные временных выходных, журналы cron, виртуальные профили Chrome — без необходимости агенту помнить о вызове инструмента.

Как это работает:

Хук Поведение
post_tool_call Когда write_file / terminal / patch создает файл, соответствующий test_*, tmp_* или *.test.* внутри HERMES_HOME или /tmp/hermes-*, молча отследите его как test / temp / cron-output.
on_session_end Если какие-либо тестовые файлы были автоматически отслежены во время шага, выберите безопасную «быструю» очистку и запишите однострочную сводку. В противном случае молчит.

Правила удаления:

Категория Порог Подтверждение
тест каждое завершение сеанса Никогда
темп >7 дней с момента идентификации Никогда
cron-выход >14 дней с момента идентификации Никогда
пустые каталоги под HERMES_HOME всегда Никогда
исследования >30 дней, за подключение 10 самых новых Всегда (только глубокая)
хром-профиль >14 дней с момента идентификации Всегда (только глубокая)
файлы >500 МБ никогда автоматически Всегда (только глубокая)

Слеш-команда/disk-cleanup доступна как в CLI, так и в сеансах шлюза:

/disk-cleanup status                     # разбивка + 10 самых больших
/disk-cleanup dry-run                    # предпросмотр без удаления
/disk-cleanup quick                      # выполнить безопасную очистку сейчас
/disk-cleanup deep                       # quick + список элементов, требующих подтверждения
/disk-cleanup track <path> <category>    # ручное отслеживание
/disk-cleanup forget <path>              # прекратить отслеживание (не удаляет)

Состояние — все хранится в $HERMES_HOME/disk-cleanup/:

Файл Содержимое
tracked.json Отслеживаемые пути с категориями, размером и временной меткой
tracked.json.bak Резервная копия атомарной записи
cleanup.log Аудит-журнал только для добавления каждого признака / пропуска / отклонения / удаления

Безопасность — очистка затрагивает только путь под HERMES_HOME или /tmp/hermes-*. Монтирования Windows (/mnt/c/...) отклоняются. Известные каталоги состояний верхнего уровня (logs/, memories/, sessions/, cron/, cache/, skills/, plugins/, disk-cleanup/ сам) никогда не удаляются, даже если пусты — свежая установка не будет вычищена при первом завершении сеанса.

Включение: Плагины Hermes включают очистку диска (или из ссылки в Плагины Гермеса).

Отключение: Плагины Hermes отключают очистку диска.

наблюдаемость/langfuse

Трассирует шаги Hermes, вызовы LLM и вызовы инструментов в Langfuse — платформа наблюдения LLM с открытым исходным кодом. Один интервал за шаг, одна генерация API вызовов, один инструмент наблюдения за инструментом вызова. Итоги использования, подсчет токенов по типам и оценки стоимости берутся из канонических чисел agent.usage_pricing Hermes, поэтому панель управления Langfuse видит ту же самую разбивку (input/output/cache_read_input_tokens/cache_creation_input_tokens/reasoning_tokens), что и в hermes logs.

Плагин по принципу «отказоустойчивости»: отсутствие SDK, учетных данных или временная ошибка Langfuse — все превращается в молчаливую пустую операцию в хуке. Цикл агента никогда не затрагивается.

Настройка (интерактивная — рекомендуется):

hermes tools          # → Langfuse Observability → Cloud или Self-Hosted

Мастер собирает ваши ключи, выполняет pip install SDK langfuse и добавляет observability/langfuse в plugins.enabled для вас. Перезапустите Hermes и на следующем этапе создайте трассировку.

Настройка (вручную):

pip install langfuse
hermes plugins enable observability/langfuse

Затем поместите учетные данные в ~/.hermes/.env:

HERMES_LANGFUSE_PUBLIC_KEY=pk-lf-...
HERMES_LANGFUSE_SECRET_KEY=sk-lf-...
HERMES_LANGFUSE_BASE_URL=https://cloud.langfuse.com   # или ваш собственный URL

Как это работает:

Хук Поведение
pre_api_request / pre_llm_call Открыть (или повторно использовать) корневой пролет «Поворот Гермеса» для каждого шага. Запустить дочернее наблюдение генерации для этого вызова API с последовательными последними сообщениями в качестве ввода.
post_api_request / post_llm_call Закройте генерацию, прикрепите usage_details, cost_details, finish_reason, выведите ассистента + вызовы инструментов. Если нет вызовов инструментов и непустое уважение, закройте шаг.
pre_tool_call Запустить дочернее наблюдение tool с очищенными args.
post_tool_call Закройте инструмент наблюдения с очищенным «результатом». Полезные нагрузки read_file суммируются (голова + хвост + количество пропущенных строк), чтобы обеспечить большую стабильность файла в пределах HERMES_LANGFUSE_MAX_CHARS.

Группировка сеансов осуществляется по ID-сеансу Hermes (или задаче ID для под-агентов) через langfuse.propagate_attributes, поэтому все в одном сеансе hermeschat находится под одним сеансом Langfuse.

Проверка:

hermes plugins list                 # observability/langfuse должно показывать "enabled"
hermes chat -q "hello"              # проверьте UI Langfuse на наличие трассировки "Hermes turn"

Дополнительная настройка.env):

Переменная По умолчанию Назначение
HERMES_LANGFUSE_ENV Тег окружения на трассировках (постановка, постановка, …)
HERMES_LANGFUSE_RELEASE Тег релиза/версии
HERMES_LANGFUSE_SAMPLE_RATE 1.0 Коэффициент выбора, экспертный SDK (0.0–1.0)
HERMES_LANGFUSE_MAX_CHARS 12000 Усечение на поле для сравнения результатов / инструмента аргументов / инструмента результатов
HERMES_LANGFUSE_DEBUG ложь Подробная регистрация плагина в agent.log

Принимаются как переменные с префиксом Hermes, так и стандартные переменные окружения SDK (LANGFUSE_PUBLIC_KEY, LANGFUSE_SECRET_KEY, LANGFUSE_BASE_URL) — переменные с префиксом Hermes имеют приоритет, если установлены оба.

Производительность: клиент Langfuse кэшируется после первого вызова хука. Если учетные данные или SDK отсутствуют, это решение также включается — кэш-хуки быстро возвращаются без повторной проверки окружения или перезагрузки конфигурации.

Отключение: плагины Hermes отключают наблюдаемость/langfuse. Модуль плагина все еще обнаруживается, но модуль кода неэффективен, пока вы не увидите его снова.

google_meet

Представляем агенту присоединяться, транскрибировать и участвовать в звонках Google Meet — делать заметки на встрече, суммировать обсуждение после уточнения конкретных моментов и (опционально) озвучивать ответы обратно в звонок через TTS.

Что добавлено:

Настройка:

hermes plugins enable google_meet
# При первом использовании предложит войти через OAuth-поток плагина —
# требуется учетная запись Google с доступом к Meet. Может потребоваться
# одобрение организатора, если встреча требует "только приглашенные участники".

Использование из чата:

"Join meet.google.com/abc-defg-hij and take notes. After the call, send me a summary with action items."

Агент запускает присоединение к встрече, транслирует транскрипцию обратно в свой контекст по ходу звонка и создает структурированную сводку, когда встреча заканчивается (или когда вы скажете ему остановиться).

Когда использовать: регулярные стендапы, где нужен бот для транскрипции + сводки для асинхронных участников; интервью в стиле допросов, где нужны структурированные заметки; любой случай, когда иначе понадобился бы Fireflies / Otter / Grain. Если вы не хотите, чтобы AI слушал — не включайте его.

Отключение: hermes plugins disable google_meet. Любые кэшированные транскрипты и записи остаются в ~/.hermes/cache/google_meet/, пока вы их не удалите.

hermes-achievements

Добавляет вкладку достижений в стиле Steam на панель управления — 60+ коллекционных многоуровневых значков, созданных из вашей реальной истории сеансов Hermes. Подвиги в цепочках инструментов, шаблоны отладки, серии "vibe-coding", использование навыков/памяти, разнообразие моделей/провайдеров, особенности образа жизни (сеансы по выходным и ночью). Изначально создан @PCinkusz как внешний плагин; перенесен в дерево, чтобы оставаться синхронизированным с изменениями функций Hermes.

Как это работает:

Прогресс по уровням: Copper → Silver → Gold → Diamond → Olympian. Каждая карточка показывает раздел "What counts", в котором указана точная отслеживаемая метрика.

Состояния достижений:

Состояние Значение
Unlocked Достигнут хотя бы один уровень
Discovered Известное достижение, прогресс виден, еще не заработано
Secret Скрыто, пока Hermes не обнаружит первый связанный сигнал в вашей истории

API — маршруты монтируются в /api/plugins/hermes-achievements/:

Эндпоинт Назначение
GET /achievements Полный каталог с состоянием разблокировки для каждого значка (возвращает временный заполнитель, пока выполняется первое холодное сканирование)
GET /scan-status Состояние фонового сканера: idle / running / failed, последняя длительность, количество запусков
GET /recent-unlocks Двадцать последних разблокированных значков, сначала новые
GET /sessions/{id}/badges Значки, заработанные в основном в одном конкретном сеансе
POST /rescan Ручное синхронное повторное сканирование (блокируется; используйте, когда пользователь нажимает кнопку повторного сканирования)
POST /reset-state Очистить историю разблокировок и кэшированный снимок

Файлы состояния — находятся в $HERMES_HOME/plugins/hermes-achievements/:

Файл Содержимое
state.json История разблокировок: какие значки вы заработали и когда. Стабильна между обновлениями Hermes.
scan_snapshot.json Полезная нагрузка последнего завершенного сканирования (обслуживается немедленно при загрузке панели управления)
scan_checkpoint.json Кэш статистики по сеансам, ключом к которому является отпечаток (делает теплые повторные сканирования быстрыми)

Замечания по производительности:

Включение: Ничего включать не нужно — hermes-achievements — это плагин только для панели управления (нет хуков жизненного цикла, нет видимых модели инструментов). Он автоматически регистрируется как вкладка в hermes dashboard при первом запуске. Конфигурация plugins.enabled управляет только плагинами жизненного цикла/инструментов; плагины панели управления обнаруживаются исключительно через их dashboard/manifest.json.

Отказ: Удалите или переименуйте plugins/hermes-achievements/dashboard/manifest.json, или переопределите его пользовательским плагином с тем же именем в ~/.hermes/plugins/hermes-achievements/, который не содержит панели управления. Файлы состояния плагина в $HERMES_HOME/plugins/hermes-achievements/ сохраняются — переустановка сохраняет вашу историю разблокировок.

Добавление встроенного плагина

Встроенные плагины пишутся точно так же, как и любой другой плагин Hermes — см. Build a Hermes Plugin. Единственные отличия:

Плагин является хорошим кандидатом для включения в дерево, когда:

Контрпримеры — вещи, которые должны оставаться устанавливаемыми пользователем плагинами, а не встроенными: сторонние интеграции с API-ключами, нишевые рабочие процессы, большие деревья зависимостей, все, что существенно изменило бы поведение агента по умолчанию.