sidebar_position: 12 sidebar_label: "Built-in Plugins" title: "Built-in Plugins" description: "Plugins shipped with Hermes Agent that run automatically via lifecycle hooks — disk-cleanup and friends" lang: ru
Встроенные плагины
Hermes поставляет небольшой набор плагинов в комплекте с репозиторием. Они находятся под <repo>/plugins/<name>/ и автоматически загружаются вместе с установленными пользователем плагинами в ~/.hermes/plugins/. Они используют ту же поверхность плагинов, что и сторонние плагины — хуки, инструменты, слэш-команды — только поддерживаются в дереве.
См. страницу Плагины для получения общей информации о системе плагинов и страницу Создание плагина Hermes, чтобы написать свой собственный.
Как работает обнаружение
PluginManager сканирует четыре источника в следующем порядке:
- В комплекте —
<repo>/plugins/<name>/(о чем рассказывается на этой странице) - Пользователь —
~/.hermes/plugins/<name>/ - Проект —
./.hermes/plugins/<name>/(требуетсяHERMES_ENABLE_PROJECT_PLUGINS=1) - Точки входа в пункты —
hermes_agent.plugins
При конфликте имен более поздние источники выигрывают — пользовательский плагин с именем disk-cleanup заменит входящий в комплект.
plugins/memory/ и plugins/context_engine/ намеренно исключены из пакетного сканирования. Эти каталоги используют свои собственные пути обнаружения, поскольку поставщики памяти и механизмы контекста — это поставщики с одним выбором, настроенные с помощью hermes memory setup / context.engine в config.
Входящие в комплект плагины доступны по согласию
Плагины в комплекте поставляются отключенными. Discovery находит их (они появляются в hermes plugins list и интерактивном пользовательском интерфейсе hermes plugins), но они не загружаются, пока вы явно не включите их:
hermes plugins enable disk-cleanup
Or via ~/.hermes/config.yaml:
plugins:
enabled:
- disk-cleanup
Это тот же механизм, который используют плагины, установленные пользователем. Плагины в комплекте никогда не включаются автоматически — ни при новой установке, ни для существующих пользователей, переходящих на более новую версию Hermes. Вы всегда соглашаетесь явно.
Чтобы снова отключить встроенный плагин:
hermes plugins disable disk-cleanup
# or: remove it from plugins.enabled in config.yaml
В настоящее время отправлено
В репозитории эти входящие в комплект плагины поставляются под plugins/. Все они включены — включите их через hermes plugins enable <name>.
| Плагин | Вид | Цель |
|---|---|---|
disk-cleanup |
крючки + команда косой черты | Автоматически отслеживать эфемерные файлы и очищать их по завершении сеанса |
observability/langfuse |
крючки | Отследить повороты/вызовы LLM/инструменты для Langfuse |
spotify |
бэкэнд (7 инструментов) | Нативное воспроизведение Spotify, очередь, поиск, плейлисты, альбомы, библиотека |
google_meet |
автономный | Присоединяйтесь к звонкам Meet, расшифровка субтитров в реальном времени, дополнительная двусторонняя аудиосвязь в реальном времени |
image_gen/openai |
серверная часть изображений | OpenAI gpt-image-2 серверная часть генерации изображений (альтернатива FAL) |
image_gen/openai-codex |
серверная часть изображений | Генерация изображений OpenAI через Codex OAuth |
image_gen/xai |
серверная часть изображений | xAI grok-2-image серверная часть |
hermes-achievements |
вкладка приборной панели | Коллекционные значки в стиле Steam, созданные на основе вашей реальной истории сеансов Hermes |
example-dashboard |
пример панели управления | Справочный плагин информационной панели для Расширение информационной панели |
strike-freedom-cockpit |
кожа приборной панели | Образец пользовательского скина панели управления |
Поставщики памяти (plugins/memory/*) и механизмы контекста (plugins/context_engine/*) перечислены отдельно в Поставщики памяти — ими управляют через 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 |
Если какие-либо тестовые файлы были автоматически отслежены во время поворота, запустите безопасную очистку quick и запишите однострочный отчет. В противном случае молчит. |
Правила удаления:
| Категория | Порог | Подтверждение |
|---|---|---|
test |
конец каждой сессии | Никогда |
temp |
>7 дней с момента отслеживания | Никогда |
cron-output |
>14 дней с момента отслеживания | Никогда |
| пустые каталоги под HERMES_HOME | всегда | Никогда |
research |
>30 дней, более 10 новейших | Всегда (только глубокий) |
chrome-profile |
>14 дней с момента отслеживания | Всегда (только глубокий) |
| файлы >500 МБ | никогда авто | Всегда (только глубокий) |
Команда косой черты — /disk-cleanup доступна как в сеансах CLI, так и в сеансах шлюза:
/disk-cleanup status # breakdown + top-10 largest
/disk-cleanup dry-run # preview without deleting
/disk-cleanup quick # run safe cleanup now
/disk-cleanup deep # quick + list items needing confirmation
/disk-cleanup track <path> <category> # manual tracking
/disk-cleanup forget <path> # stop tracking (does not delete)
Состояние — все живет по адресу $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 plugins enable disk-cleanup (или установите флажок hermes plugins).
Повторное отключение: hermes plugins disable disk-cleanup.
наблюдаемость/langfuse
Отслеживает повороты Гермеса, вызовы LLM и вызовы инструментов в Langfuse — платформе наблюдения LLM с открытым исходным кодом. Один диапазон за ход, одно поколение на вызов API, одно наблюдение инструмента на вызов инструмента. Общие сведения об использовании, количество токенов каждого типа и оценки затрат получаются из канонических чисел Hermes agent.usage_pricing, поэтому на информационной панели Langfuse отображается та же разбивка (вход/выход/ cache_read_input_tokens / cache_creation_input_tokens / reasoning_tokens), которая появляется в hermes logs.
Плагин работает в режиме отказоустойчивости: ни SDK не установлен, ни учетные данные, ни временная ошибка Langfuse — все это приводит к молчаливому останову работы в перехватчике. Цикл агента никогда не затрагивается.
Настройка (интерактивная — рекомендуется):
hermes tools # → Langfuse Observability → Cloud or Self-Hosted
Мастер собирает ваши ключи, pip installs langfuse SDK и добавляет observability/langfuse в plugins.enabled для вас. Перезапустите Гермес, и следующий ход отправит след.
Настройка (ручная):
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 # or your self-hosted URL
Как это работает:
| Крюк | Поведение |
|---|---|
pre_api_request / pre_llm_call |
Откройте (или повторно используйте) корневой диапазон «Поворот Гермеса» для каждого хода. Запустите дочернее наблюдение generation для этого вызова API с сериализованными последними сообщениями в качестве входных данных. |
post_api_request / post_llm_call |
Закройте генерацию, прикрепите usage_details, cost_details, finish_reason, вывод помощника + вызовы инструментов. Если вызовы инструментов отсутствуют и содержимое непустое, закройте поворот. |
pre_tool_call |
Начните tool наблюдение за детьми с помощью продезинфицированного args. |
post_tool_call |
Закройте наблюдение за инструментом с помощью продезинфицированного result. Полезные данные read_file суммируются (голова + хвост + количество пропущенных строк), поэтому чтение огромного файла остается под HERMES_LANGFUSE_MAX_CHARS. |
Группировка сеансов отключается от идентификатора сеанса Hermes (или идентификатора задачи для субагентов) через langfuse.propagate_attributes, поэтому все в одном сеансе hermes chat находится в рамках одного сеанса Langfuse.
Проверьте:
hermes plugins list # observability/langfuse should show "enabled"
hermes chat -q "hello" # check the Langfuse UI for a "Hermes turn" trace
Дополнительная настройка (в .env):
| Переменная | По умолчанию | Цель |
|---|---|---|
HERMES_LANGFUSE_ENV |
— | Тег среды на трассировках (production, staging, …) |
HERMES_LANGFUSE_RELEASE |
— | Тег выпуска/версии |
HERMES_LANGFUSE_SAMPLE_RATE |
1.0 |
Частота дискретизации, переданная в SDK (0,0–1,0) |
HERMES_LANGFUSE_MAX_CHARS |
12000 |
Усечение по каждому полю для содержимого сообщения/аргументов инструмента/результатов инструмента |
HERMES_LANGFUSE_DEBUG |
false |
Подробная регистрация плагина на agent.log |
Допускаются как префикс Hermes, так и стандартные переменные окружения SDK (LANGFUSE_PUBLIC_KEY, LANGFUSE_SECRET_KEY, LANGFUSE_BASE_URL). При этом префикс Hermes выигрывает, если установлены оба.
Производительность: клиент Langfuse кэшируется после первого вызова перехватчика. Если учетные данные или SDK отсутствуют, это решение также кэшируется — последующие перехваты быстро возвращаются без повторной проверки переменных окружения или перезагрузки конфигурации.
Отключение: hermes plugins disable observability/langfuse. Модуль плагина по-прежнему обнаруживается, но код модуля не запускается, пока вы его повторно не включите.
google_meet
Позволяет агенту присоединяться, расшифровывать и участвовать в звонках Google Meet — делать заметки о встрече, подводить итоги по итогам, следить за конкретными моментами и (необязательно) озвучивать ответы во время звонка через TTS.
Что это добавляет:
– Виртуальный участник без головы, который присоединяется к URL-адресу Meet с помощью автоматизации браузера.
- Прямая транскрипция звука собрания через настроенного провайдера STT.
- Набор инструментов meet_summarize / meet_speak / meet_followup, который агент вызывает, чтобы действовать в соответствии с услышанным.
- Артефакты после встречи (стенограмма, заметки докладчика, действия), сохраненные в папке ~/.hermes/cache/google_meet/<meeting_id>/.
Настройка:
hermes plugins enable google_meet
# Prompts you to sign in via the plugin's OAuth flow on first use —
# needs a Google account with Meet access. Host approval may be required
# if the meeting enforces "only invited participants can join".
Использование из чата:
«Присоединяйтесь к сайту meet.google.com/abc-defg-hij и делайте заметки. После звонка пришлите мне сводку с указанием действий».
Агент запускает присоединение к собранию, передает транскрипцию обратно в контекст по мере продолжения вызова и создает структурированное резюме, когда собрание заканчивается (или когда вы приказываете ему остановиться).
Когда его использовать: повторяющиеся стендапы, на которых бот должен расшифровывать и подводить итоги для асинхронных участников; интервью в стиле дачи показаний, где вам нужны структурированные заметки; в любом случае, когда вам в противном случае понадобятся Светлячки / Выдра / Зерно. Если вы не хотите, чтобы ИИ прослушивал вас, не включайте его.
Отключение: hermes plugins disable google_meet. Любые кэшированные расшифровки и записи остаются в ~/.hermes/cache/google_meet/, пока вы их не удалите.
hermes-достижения
Добавляет на панель управления вкладку достижений в стиле Steam — более 60 коллекционных многоуровневых значков, созданных на основе вашей реальной истории сеансов Hermes. Навыки цепочки инструментов, шаблоны отладки, особенности кодирования вибрации, использование навыков/памяти, разнообразие моделей/провайдеров, особенности образа жизни (выходные и ночные сеансы). Первоначально автор @PCinkusz как внешний плагин; внесено в дерево, чтобы оно соответствовало изменениям функций Hermes.
Как это работает:
- Сканирует всю историю сеансов
~/.hermes/state.dbна панели управления. - Статистика за сеанс кэшируется с помощью отпечатка пальца
(started_at, last_active), поэтому при последующих сканированиях повторно анализируется только новые или измененные сеансы. - Первое сканирование выполняется в фоновом потоке — панель мониторинга никогда не блокирует ожидание, даже в базах данных с тысячами сеансов.
- Состояние разблокировки сохраняется до
$HERMES_HOME/plugins/hermes-achievements/state.json.
Уровень: Медь → Серебро → Золото → Бриллиант → Олимпиец. На каждой карточке есть раздел «Что имеет значение», в котором перечислены точные отслеживаемые показатели.
Достижение гласит:
| Государство | Значение |
|---|---|
| Разблокировано | Достигнут хотя бы один уровень |
| Обнаружено | Известные достижения, прогресс видим, но еще не заработан |
| Секрет | Скрыто до тех пор, пока 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 |
Кэш статистики по сеансам с ключом по отпечатку пальца (ускоряет повторное сканирование) |
Примечания к производительности:
- Холодное сканирование примерно 8000 сеансов занимает несколько минут. Он запускается в фоновом потоке по первому запросу информационной панели; Пользовательский интерфейс видит ожидающий заполнитель и опрашивает
/scan-status. - Дополнительные результаты во время холодного сканирования — сканер публикует частичный снимок примерно каждые 250 сеансов, поэтому при каждом обновлении информационной панели по мере сканирования отображается больше значков, разблокированных. Никаких минутных взглядов на нули.
- Теплое повторное сканирование повторно использует статистику каждого сеанса для каждого сеанса, чей отпечаток
started_at+last_activeсоответствует контрольной точке — выполняется за секунды даже в больших историях. - Срок жизни снимка в памяти составляет 120 с; устаревшие запросы немедленно обслуживают старый снимок и запускают фоновое обновление. Вы никогда не ждете счетчик только потому, что истек срок TTL.
Включение: Включать нечего: 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 — см. Создание плагина Hermes. Единственные различия:
- Каталог находится по адресу
<repo>/plugins/<name>/вместо~/.hermes/plugins/<name>/. - Источник манифеста указывается как
bundledвhermes plugins list. - Пользовательские плагины с тем же именем переопределяют версию в комплекте.
Плагин является хорошим кандидатом для объединения, когда:
- У него нет дополнительных зависимостей (или они уже
pip install .[all]deps) - Такое поведение приносит пользу большинству пользователей и предполагает отказ, а не согласие.
- Логика связана с крючками жизненного цикла, которые в противном случае агенту пришлось бы не забывать вызывать.
- Он дополняет основные возможности, не расширяя видимую моделью поверхность инструмента.
Контрпримеры — вещи, которые должны оставаться в виде устанавливаемых пользователем плагинов, а не в комплекте: сторонние интеграции с ключами API, нишевые рабочие процессы, большие деревья зависимостей, все, что по умолчанию может существенно изменить поведение агента.