🤖HermesBlog
Hermes Official Tutorials · Часть 48/9/2026

Урок 4: Обновление и удаление Hermes

Tutorial 4: Updating & Uninstalling Hermes — easy-to-understand guide based on official docs

Hermes tutorial

Урок 4: Обновление и удаление Hermes

С возвращением в нашу серию уроков по Hermes Agent! В этой части мы поговорим о том, что рано или поздно нужно знать каждому пользователю: как поддерживать Hermes в актуальном состоянии и как попрощаться, когда придёт время. Не переживайте — всё гораздо проще, чем кажется.

Обновление Hermes: одна команда — и готово

Самый простой способ обновить Hermes — выполнить одну команду:

hermes update

Вот и всё. Эта команда берёт на себя всю тяжёлую работу. Она подтягивает последний код из ветки main, обновляет зависимости и даже спрашивает вас о новых параметрах конфигурации, которые появились с момента последнего обновления. Удобно, правда?

Что на самом деле происходит во время обновления?

Вам наверняка интересно, что творится за кулисами. Вот разбор по шагам:

  1. Снимок состояния до обновления — Прежде чем что-либо менять, Hermes сохраняет облегчённый снимок ваших важных файлов состояния (данные сопряжения, cron-задачи, config.yaml, .env и другое). Файлы размером более 1 ГиБ пропускаются, чтобы огромная база данных не замедляла процесс. Снимок создаётся для каждого профиля в вашей установке, каждый хранится в своей директории state-snapshots/.

  2. Git pull — Hermes подтягивает последний код из ветки main и обновляет подмодули.

  3. Проверка синтаксиса после pull + автоматический откат — После подтягивания кода Hermes проверяет девять критически важных файлов, которые нужны каждой команде при запуске. Если какой-то из них не удаётся распарсить (например, случайно оставленный маркер конфликта слияния), Hermes автоматически откатывается к предыдущей версии, чтобы ваша оболочка оставалась работоспособной. Как только исправление появится в апстриме, вы сможете просто запустить hermes update заново.

  4. Установка зависимостей — Выполняется uv pip install -e ".[all]", чтобы подтянуть новые или изменившиеся зависимости.

  5. Миграция конфигурации — Обнаруживаются новые параметры конфигурации, и вам предлагается их задать.

  6. Автоматический перезапуск шлюзов — Работающие шлюзы обновляются, чтобы новый код вступил в силу немедленно. Шлюзы под управлением сервисных менеджеров (systemd в Linux, launchd в macOS) перезапускаются через менеджер служб, а ручные шлюзы перезапускаются автоматически.

Пропустили запрос конфигурации? Не проблема!

Если вы пропустили запрос конфигурации во время обновления, можно наверстать упущенное позже:

hermes config check    # посмотреть, чего не хватает
hermes config migrate  # интерактивно добавить недостающее

Обновление из другой ветки

По умолчанию hermes update отслеживает origin/main. Но что, если вы хотите протестировать кандидата на релиз или функциональную ветку? Используйте флаг --branch:

hermes update --branch release-candidate
hermes update --check --branch experimental   # просто посмотреть, насколько вы отстали

Если ваш локальный checkout находится в другой ветке, Hermes автоматически прячет незакоммиченные изменения, переключается на целевую ветку и подтягивает код. Ветки, которых нет локально, автоматически отслеживаются из origin/<имя>. Если ветки не существует нигде, команда аккуратно завершается с ошибкой и восстанавливает ваши спрятанные изменения.

А что насчёт «припаркованных» веток?

Если ваш checkout находится в функциональной ветке, hermes update справляется с этим умно:

  • Полностью слитая ветка — Hermes сообщает, что ветка полностью слита, и переключается обратно на main.
  • Неслитые коммиты, чистое дерево — Hermes всё равно переключается на main, чтобы обновление продолжилось (это важно для неинтерактивных вызовов, например из десктопного приложения или cron-задач). Ваши коммиты остаются нетронутыми, а Hermes выводит громкое уведомление с именем ветки и инструкцией, как к ней вернуться.

Если вы намеренно поддерживаете собственные патчи в ветке, укажите это в config.yaml:

updates:
  parked_branch_strategy: update_in_place

В этом случае origin/main сливается в вашу ветку, а не переключается на другую. Если возможно — используется fast-forward; при расхождении создаётся защитный тег, и процесс останавливается на конфликте.

Локальные изменения при неинтерактивных обновлениях

Когда вы запускаете hermes update в терминале, Hermes прячет незакоммиченные изменения, подтягивает код, а затем спрашивает, нужно ли их восстановить. Но когда обновление запускается без терминала (например, из десктопного приложения), Hermes пропускает обновление, если дерево грязное — с громким предупреждением, в котором указаны имя ветки и степень отставания. Никакого притворства, что обновление прошло успешно!

Удаление Hermes

Когда приходит время расстаться, удаление не составит труда. Обязательно загляните в документацию для вашей конкретной платформы, чтобы узнать точные шаги, но в целом вам нужно удалить бинарный файл Hermes и почистить директории конфигурации, которые он создал.

Подводим итоги

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

Оставайтесь с нами — впереди следующий урок из нашей серии!

📖 Официальная документация

Эта статья основана на официальной документации Hermes Agent :Официальные документы › getting-started/updating