Перейти к содержанию

Curator

На этой странице Куратор — это фоновый процесс обслуживания навыков, созданных агентом. Он отслеживает, как часто каждый навык просматривается, используется и изменяется, переводит давно неиспользуемые навыки через состояния active → stale → archived, а также периодически запускает короткую рецензию вспомогательной модели, которая предлагает объединение навыков или исправление расхождений.

Куратор существует для того, чтобы навыки, созданные через цикл самоулучшения, не накапливались бесконечно. Каждый раз, когда агент решает новую проблему и сохраняет навык, этот навык попадает в ~/.hermes/skills/. Без обслуживания вы получаете десятки узких почти дубликатов, которые засоряют каталог и тратят токены.

Куратор никогда не трогает встроенные навыки (поставляемые с репозиторием) или навыки, установленные из хаба (с agentskills.io). Он проверяет только навыки, созданные самим агентом. Он также никогда не удаляет автоматически — худший исход — архивация в ~/.hermes/skills/.archive/, откуда всё можно восстановить.

Отслеживается в issue #7816.

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

Куратор запускается не по расписанию cron, а по проверке бездействия. При запуске CLI-сессии и при повторяющемся тике в потоке cron-ticker шлюза Hermes проверяет:

  1. Прошло ли достаточно времени с последнего запуска куратора (interval_hours, по умолчанию 7 дней), и
  2. Был ли агент в бездействии достаточно долго (min_idle_hours, по умолчанию 2 часа).

Если оба условия выполнены, запускается фоновый форк AIAgent — тот же шаблон, что используется для уведомлений о самоулучшении памяти/навыков. Форк работает в собственном кэше подсказок и никогда не затрагивает активный разговор.

Поведение при первом запуске

На новой установке (или при первом тике после hermes update на уже существующей установке) куратор не запускается сразу. Первое наблюдение устанавливает last_run_at на «сейчас» и откладывает первый реальный проход на один полный interval_hours. Это даёт вам полный интервал для просмотра библиотеки навыков, закрепления важного или полного отказа от куратора до того, как он что-либо тронет.

Если вы хотите увидеть, что куратор сделал бы до реального запуска, выполните hermes curator run --dry-run — он формирует тот же отчёт проверки без изменения библиотеки.

Запуск состоит из двух фаз:

  1. Автоматические переходы (детерминированные, без LLM). Навыки, не использовавшиеся stale_after_days (30) дней, становятся stale; навыки, не использовавшиеся archive_after_days (90) дней, перемещаются в ~/.hermes/skills/.archive/.
  2. LLM-рецензия (один проход вспомогательной модели, max_iterations=8). Форкнутый агент просматривает навыки, созданные агентом, может читать любой из них с помощью skill_view и принимает решение по каждому навыку: оставить, изменить (через skill_manage), объединить перекрывающиеся или архивировать через инструмент терминала.

Закреплённые навыки недоступны как для авто-переходов куратора, так и для собственного инструмента skill_manage агента. См. Закрепление навыка ниже.

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

Все настройки находятся в config.yaml в разделе curator: (не в .env — это не секрет). Значения по умолчанию:

[code] curator:
enabled: true
interval_hours: 168 # 7 дней
min_idle_hours: 2
stale_after_days: 30
archive_after_days: 90

[/code]

Чтобы полностью отключить, установите curator.enabled: false.

Запуск рецензии на более дешёвой вспомогательной модели

LLM-рецензия куратора — это обычный слот вспомогательной задачи — auxiliary.curator — наряду с Vision, Сжатием, Поиском сессий и т.д. «Авто» означает «использовать мою основную модель чата»; переопределите слот, чтобы закрепить конкретного провайдера + модель для рецензии.

Проще всего —hermes model:

[code] hermes model # → «Вспомогательные модели — маршрутизация побочных задач»
# → выберите «Куратор» → выберите провайдера → выберите модель

[/code]

Тот же выбор доступен в веб-панели на вкладке Models.

Прямая настройка config.yaml (аналогично):

[code] auxiliary:
curator:
provider: openrouter
model: google/gemini-3-flash-preview
timeout: 600 # щедрый — рецензия может занимать несколько минут

[/code]

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

Устаревшая конфигурация

В более ранних версиях использовался отдельный блок curator.auxiliary.{provider,model}. Этот путь всё ещё работает, но выдаёт строку предупреждения об устаревании — пожалуйста, перейдите на auxiliary.curator выше, чтобы куратор использовал ту же инфраструктуру (hermes model, вкладка Models в панели, base_url, api_key, timeout, extra_body), что и все остальные вспомогательные задачи.

CLI

[code] hermes curator status # последний запуск, счётчики, список закреплённых, LRU top 5
hermes curator run # запустить рецензию сейчас (по умолчанию в фоне)
hermes curator run --sync # то же самое, но ждать завершения LLM-прохода
hermes curator run --dry-run # только просмотр — отчёт без изменений
hermes curator backup # сделать ручной снимок ~/.hermes/skills/
hermes curator rollback # восстановить из новейшего снимка
hermes curator rollback --list # показать доступные снимки
hermes curator rollback --id # восстановить конкретный снимок
hermes curator rollback -y # пропустить запрос подтверждения
hermes curator pause # остановить запуски до возобновления
hermes curator resume
hermes curator pin # никогда не переводить этот навык автоматически
hermes curator unpin
hermes curator restore # переместить архивированный навык обратно в активные

[/code]

Резервное копирование и откат

Перед каждым реальным проходом куратора Hermes создаёт tar.gz-снимок ~/.hermes/skills/ в ~/.hermes/skills/.curator_backups/<utc-iso>/skills.tar.gz. Если проход архивировал или объединил то, что вы не хотели трогать, вы можете отменить весь запуск одной командой:

[code] hermes curator rollback # восстановить новейший снимок (с подтверждением)
hermes curator rollback -y # пропустить запрос
hermes curator rollback --list # показать все снимки с причиной и размером

[/code]

Сам откат обратим: перед заменой дерева навыков Hermes делает ещё один снимок с пометкой pre-rollback to <target-id>, так что ошибочный откат можно отменить, выполнив откат к этому снимку с --id.

Вы также можете создавать ручные снимки в любое время с помощью hermes curator backup --reason "before-refactor". Строка --reason попадает в manifest.json снимка и отображается в --list.

Снимки автоматически удаляются, сохраняя не более curator.backup.keep (по умолчанию 5) штук, чтобы ограничить использование диска:

[code] curator:
backup:
enabled: true
keep: 5

[/code]

Установите curator.backup.enabled: false, чтобы отключить автоматическое создание снимков. Ручная команда hermes curator backup всё ещё работает, когда резервное копирование отключено, только если вы сначала установите enabled: true — флаг симметрично блокирует оба пути, чтобы нельзя было случайно пропустить предзапусковой снимок при изменяющих запусках.

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

Те же подкоманды доступны как слеш-команда /curator внутри работающей сессии (CLI или платформы шлюзов).

Что значит «созданный агентом»

Навык считается созданным агентом, если его имя не находится в:

  • ~/.hermes/skills/.bundled_manifest (навыки, скопированные из репозитория при установке), и
  • ~/.hermes/skills/.hub/lock.json (навыки, установленные через hermes skills install).

Всё остальное в ~/.hermes/skills/ является допустимой целью для куратора. Это включает:

  • Навыки, сохранённые агентом через skill_manage(action="create") во время разговора.
  • Навыки, созданные вами вручную с помощью написанного от руки SKILL.md.
  • Навыки, добавленные через внешние каталоги навыков, на которые вы указали Hermes.

Ваши рукописные навыки выглядят так же, как сохранённые агентом

Происхождение здесь бинарное (встроенные/хаб vs. всё остальное). Куратор не может отличить навык, написанный вручную и используемый вами для личных рабочих процессов, от навыка, сохранённого циклом самоулучшения в середине сессии. Оба попадают в категорию «созданные агентом».

Перед первым реальным проходом (по умолчанию через 7 дней после установки) уделите время:

  1. Выполните hermes curator run --dry-run, чтобы увидеть, что именно предложит куратор.
  2. Используйте hermes curator pin <имя>, чтобы оградить то, что вы не хотите трогать.
  3. Или установите curator.enabled: false в config.yaml, если предпочитаете управлять библиотекой самостоятельно.

Архивы всегда можно восстановить через hermes curator restore <имя>, но проще закрепить заранее, чем потом разбираться с объединением.

Если вы хотите защитить конкретный навык от любого вмешательства — например, написанный вручную навык, на который вы полагаетесь — используйте hermes curator pin <имя>. См. следующий раздел.

Закрепление навыка

Закрепление защищает навык от удаления — как от автоматических проходов архивации куратора, так и от вызова инструмента skill_manage(action="delete") агента. После закрепления навыка:

  • Куратор пропускает его при авто-переходах (active → stale → archived), а его LLM-рецензии предписывается оставить его в покое.
  • Инструментskill_manage агента отказывается выполнять delete на нём, указывая пользователю на hermes curator unpin <имя>. Исправления и редактирования по-прежнему проходят, так что агент может улучшать содержимое закреплённого навыка по мере возникновения проблем без необходимости откреплять/закреплять снова.

Закрепить и открепить можно так:

[code] hermes curator pin
hermes curator unpin

[/code]

Флаг хранится как "pinned": true в записи навыка в ~/.hermes/skills/.usage.json, поэтому он сохраняется между сессиями.

Закреплять можно только навыки, созданные агентом — встроенные и установленные из хаба навыки изначально не подвержены изменениям куратора, и hermes curator pin откажется с объяснительным сообщением, если вы попытаетесь.

Если вам нужна более сильная гарантия, чем «без удаления» — например, полная заморозка содержимого навыка при том, что агент всё ещё может его читать — отредактируйте ~/.hermes/skills/<имя>/SKILL.md напрямую в вашем редакторе. Закрепление защищает от удаления через инструменты, а не от вашего собственного доступа к файловой системе.

Телеметрия использования

Куратор ведёт сопутствующий файл ~/.hermes/skills/.usage.json с одной записью на навык:

[code] {
"my-skill": {
"use_count": 12,
"view_count": 34,
"last_used_at": "2026-04-24T18:12:03Z",
"last_viewed_at": "2026-04-23T09:44:17Z",
"patch_count": 3,
"last_patched_at": "2026-04-20T22:01:55Z",
"created_at": "2026-03-01T14:20:00Z",
"state": "active",
"pinned": false,
"archived_at": null
}
}

[/code]

Счётчики увеличиваются когда:

  • view_count: агент вызывает skill_view для навыка.
  • use_count: навык загружается в подсказку разговора.
  • patch_count: skill_manage patch/edit/write_file/remove_file выполняется для навыка.

Встроенные навыки и навыки из хаба явно исключены из записи телеметрии.

Отчёты по запускам

Каждый запуск куратора записывает каталог с меткой времени в ~/.hermes/logs/curator/:

[code] ~/.hermes/logs/curator/
└── 20260429-111512/
├── run.json # машиночитаемый: полная точность, статистика, вывод LLM
└── REPORT.md # человекочитаемая сводка

[/code]

REPORT.md — это быстрый способ увидеть, что сделал конкретный запуск: какие навыки перешли, что сказал LLM-рецензент, какие навыки были исправлены. Полезно для аудита без необходимости искать в agent.log.

Восстановление архивированного навыка

Если куратор архивировал то, что вам всё ещё нужно:

[code] hermes curator restore

[/code]

Это перемещает навык обратно из ~/.hermes/skills/.archive/ в активное дерево и сбрасывает его состояние на active. Восстановление откажется, если с момента архивации был установлен встроенный навык или навык из хаба с тем же именем (будет конфликт с вышестоящим источником).

Отключение по окружению

Куратор включён по умолчанию. Чтобы отключить его:

  • Для одного профиля: отредактируйте ~/.hermes/config.yaml (или конфиг активного профиля) и установите curator.enabled: false.
  • Для одного запуска: hermes curator pause — пауза сохраняется между сессиями; используйте resume для повторного включения.

Куратор также отказывается запускаться, если не прошло min_idle_hours, так что на активной рабочей машине он естественным образом запускается только в периоды затишья.

См. также