Перейти к содержимому

Обновление и удаление

Обновить Hermes Agent до последней версии можно одной командой:

Окно терминала
hermes update

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

Когда вы запускаете hermes update, происходит следующее:

  1. Снимок pairing-data — сохраняется легковесный pre-update snapshot состояния. В него входят ~/.hermes/pairing/, правила комментариев Feishu и другие runtime-файлы состояния. Восстановиться можно через flow из Snapshots and rollback или распаковав последний quick-snapshot zip рядом с ~/.hermes/.
  2. git pull — подтягивается свежий код из ветки main, а также обновляются submodules.
  3. Установка зависимостей — выполняется uv pip install -e ".[all]", чтобы установить новые или изменившиеся зависимости.
  4. Миграция конфигурации — обнаруживаются новые параметры config, добавленные после вашей версии, и Hermes предлагает их настроить.
  5. Автоперезапуск gateway — после обновления работающие gateway перезапускаются, чтобы новый код вступил в силу сразу. Gateway под управлением system service перезапускаются через service manager, а вручную запущенные gateway Hermes пытается поднять заново, если может сопоставить PID с профилем.

Если нужно понять, отстаете ли вы от origin/main, но не тянуть код сразу, выполните hermes update --check. Команда делает fetch, показывает рядом ваш локальный commit и последний commit на remote, и завершает работу с кодом 0, если вы синхронизированы, или 1, если отстаете. Файлы не изменяются, gateway не перезапускается. Это удобно для скриптов и cron-задач.

Для ценных профилей, например production gateway или shared team install, можно включить полный backup HERMES_HOME перед git pull:

Окно терминала
hermes update --backup

Или сделать это поведением по умолчанию:

~/.hermes/config.yaml
updates:
pre_update_backup: true

В старых сборках --backup выполнялся всегда, но на больших HERMES_HOME это замедляло каждое обновление на минуты, поэтому теперь режим включается явно. При этом легкий snapshot pairing-data все равно создается всегда.

Ожидаемый вывод выглядит примерно так:

$ hermes update
Updating Hermes Agent...
📥 Pulling latest code...
Already up to date. (or: Updating abc1234..def5678)
📦 Updating dependencies...
✅ Dependencies updated
🔍 Checking for new config options...
✅ Config is up to date (or: Found 2 new options — running migration...)
🔄 Restarting gateways...
✅ Gateway restarted
✅ Hermes Agent updated successfully!

hermes update закрывает основной сценарий, но короткая post-update проверка помогает убедиться, что все обновилось чисто:

  1. git status --short — если рабочее дерево неожиданно грязное, разберите это до продолжения работы.
  2. hermes doctor — проверяет config, зависимости и состояние сервисов.
  3. hermes --version — убедитесь, что версия действительно обновилась.
  4. Если вы используете gateway: hermes gateway status
  5. Если doctor сообщает о проблемах npm audit, выполните npm audit fix в указанной директории.

:::warning Dirty working tree after update Если после hermes update команда git status --short показывает неожиданные изменения, остановитесь и разберите их. Обычно это означает, что поверх нового кода были повторно наложены локальные изменения или шаг установки зависимостей обновил lockfiles. :::

Если терминал оборвался в процессе обновления

Заголовок раздела «Если терминал оборвался в процессе обновления»

hermes update защищен от случайного разрыва терминала:

  • Обновление игнорирует SIGHUP, поэтому закрытие SSH-сессии или окна терминала не убивает процесс посреди установки.
  • Весь вывод дублируется в ~/.hermes/logs/update.log, пока выполняется обновление. Если терминал пропал, переподключитесь и проверьте лог:
Окно терминала
tail -f ~/.hermes/logs/update.log
  • Ctrl-C (SIGINT) и завершение системы (SIGTERM) по-прежнему считаются намеренной отменой и обрабатываются как таковые.

Из-за этого больше не обязательно заворачивать hermes update в screen или tmux, чтобы пережить разрыв терминала.

Окно терминала
hermes version

Сравнить ее можно с последним релизом на странице релизов GitHub.

Обновить Hermes можно и напрямую из Telegram, Discord, Slack, WhatsApp или Teams, отправив:

/update

Команда подтянет код, обновит зависимости и перезапустит работающие gateway. Во время перезапуска бот ненадолго уйдет офлайн, обычно на 5-15 секунд, а затем продолжит работу.

Если Hermes установлен вручную, а не через быстрый установщик:

Окно терминала
cd /path/to/hermes-agent
export VIRTUAL_ENV="$(pwd)/venv"
# Pull latest code and submodules
git pull origin main
git submodule update --init --recursive
# Reinstall (picks up new dependencies)
uv pip install -e ".[all]"
uv pip install -e "./tinker-atropos"
# Check for new config options
hermes config check
hermes config migrate # Interactively add any missing options

Если обновление привело к проблемам, можно откатиться к предыдущей версии:

Окно терминала
cd /path/to/hermes-agent
# List recent versions
git log --oneline -10
# Roll back to a specific commit
git checkout <commit-hash>
git submodule update --init --recursive
uv pip install -e ".[all]"
# Restart the gateway if running
hermes gateway restart

Откат к конкретному release tag:

Окно терминала
git checkout v0.6.0
git submodule update --init --recursive
uv pip install -e ".[all]"

После отката возможны несовместимости в конфигурации, если новые опции уже были добавлены. Выполните hermes config check и удалите нераспознанные параметры из config.yaml, если увидите ошибки.

Если Hermes установлен через Nix flake, обновление выполняется средствами Nix:

Окно терминала
# Update the flake input
nix flake update hermes-agent
# Or rebuild with the latest
nix profile upgrade hermes-agent

Установки через Nix неизменяемы, поэтому откат выполняется через систему generations:

Окно терминала
nix profile rollback

Подробности смотрите в Nix Setup.


Окно терминала
hermes uninstall

Деинсталлятор предложит сохранить ваши конфигурационные файлы ~/.hermes/, если вы хотите переустановить Hermes позже.

Окно терминала
rm -f ~/.local/bin/hermes
rm -rf /path/to/hermes-agent
rm -rf ~/.hermes # Optional — keep if you plan to reinstall

Если gateway был установлен как system service, сначала остановите и отключите его:

Окно терминала
hermes gateway stop
# Linux: systemctl --user disable hermes-gateway
# macOS: launchctl remove ai.hermes.gateway