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

Updating

On this page

Обновление

Обновитесь до последней версии одной командой: [code] hermes update

[/code] Эта команда загружает последний код, обновляет зависимости и предлагает настроить новые параметры, добавленные с момента вашего последнего обновления. tip hermes update автоматически обнаруживает новые параметры конфигурации и предлагает их добавить. Если вы пропустили это предложение, вы можете вручную выполнить hermes config check для просмотра отсутствующих опций, а затем hermes config migrate для их интерактивного добавления.

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

При запуске hermes update выполняются следующие шаги: 1. Снимок данных связывания (pairing-data) — сохраняется облегчённый предобновительный снимок состояния (охватывает ~/.hermes/pairing/, правила комментариев Feishu и другие файлы состояния, изменяемые во время выполнения). Откат возможен через hermes backup restore --state pre-update. 2. Git pull — загружается последний код из ветки main и обновляются подмодули 3. Установка зависимостей — выполняется uv pip install -e ".[all]" для установки новых или изменённых зависимостей 4. Миграция конфигурации — обнаруживаются новые опции конфигурации, добавленные после вашей версии, и предлагается их настроить 5. Автоматический перезапуск шлюзов (gateways) — работающие шлюзы обновляются после завершения обновления, чтобы новый код вступил в силу немедленно. Шлюзы, управляемые через сервисы (systemd на Linux, launchd на macOS), перезапускаются через менеджер служб. Ручные шлюзы перезапускаются автоматически, когда Hermes может сопоставить запущенный PID с профилем.

Только проверка: hermes update --check

Хотите узнать, отстаёте ли вы от origin/main, не загружая изменения? Запустите hermes update --check — он выполнит fetch, выведет ваш локальный коммит и последний удалённый коммит рядом, и завершится с кодом 0, если синхронизация актуальна, или 1, если есть отставание. Файлы не изменяются, шлюзы не перезапускаются. Полезно в скриптах и cron-задачах, которые проверяют наличие обновления.

Полное резервное копирование перед обновлением: --backup

Для ценных профилей (продакшн-шлюзы, общие командные установки) вы можете включить полное резервное копирование HERMES_HOME (конфиг, аутентификация, сессии, навыки, связывание) перед загрузкой: [code] hermes update --backup

[/code] Или сделайте это поведением по умолчанию для каждого запуска: [code] # ~/.hermes/config.yaml
update:
backup: true

[/code] --backup был всегда включённым поведением в ранних сборках, но это добавляло минуты к каждому обновлению на больших домашних директориях, поэтому теперь это опционально. Облегчённый снимок данных связывания, описанный выше, всё ещё выполняется безусловно. Ожидаемый вывод выглядит так: [code] $ 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!

[/code]

Рекомендуемая проверка после обновления

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

Грязное рабочее дерево после обновления Если git status --short показывает неожиданные изменения после hermes update, остановитесь и проверьте их перед продолжением. Обычно это означает, что локальные изменения были повторно применены поверх обновлённого кода, или шаг с зависимостями обновил lock-файлы.

Если ваш терминал отключился во время обновления

hermes update защищает себя от случайной потери терминала: * Обновление игнорирует SIGHUP, поэтому закрытие SSH-сессии или окна терминала больше не прерывает процесс установки. Дочерние процессы pip и git наследуют эту защиту, так что окружение Python не может остаться наполовину установленным из-за разрыва соединения. * Весь вывод дублируется в ~/.hermes/logs/update.log во время выполнения обновления. Если ваш терминал исчез, переподключитесь и проверьте лог, чтобы узнать, завершилось ли обновление и успешен ли перезапуск шлюза:

[code] tail -f ~/.hermes/logs/update.log

[/code] * Ctrl-C (SIGINT) и завершение системы (SIGTERM) по-прежнему обрабатываются — это намеренные отмены, а не случайности.

Вам больше не нужно оборачивать hermes update в screen или tmux, чтобы пережить отключение терминала.

Проверка текущей версии

[code] hermes version

[/code] Сравните с последним релизом на странице релизов GitHub.

Обновление через мессенджеры

Вы также можете обновиться напрямую из Telegram, Discord, Slack, WhatsApp или Teams, отправив: [code] /update

[/code] Это загружает последний код, обновляет зависимости и перезапускает работающие шлюзы. Бот ненадолго отключится во время перезапуска (обычно 5–15 секунд), а затем возобновит работу.

Ручное обновление

Если вы устанавливали вручную (не через быстрый установщик): [code] 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

[/code]

Инструкции по откату

Если обновление вызвало проблему, вы можете откатиться к предыдущей версии: [code] 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

[/code] Чтобы откатиться к определённому релизному тегу: [code] git checkout v0.6.0
git submodule update --init --recursive
uv pip install -e ".[all]"

[/code] warning Откат может вызвать несовместимость конфигурации, если были добавлены новые опции. Запустите hermes config check после отката и удалите нераспознанные опции из config.yaml, если возникнут ошибки.

Примечание для пользователей Nix

Если вы устанавливали через Nix flake, обновления управляются через пакетный менеджер Nix: [code] # Update the flake input
nix flake update hermes-agent

# Or rebuild with the latest  
nix profile upgrade hermes-agent

[/code] Установки Nix неизменяемы — откат обрабатывается системой поколений Nix: [code] nix profile rollback

[/code] См. Настройка Nix для подробностей.


Удаление

[code] hermes uninstall

[/code] Установщик предлагает сохранить ваши конфигурационные файлы (~/.hermes/) для будущей переустановки.

Ручное удаление

[code] rm -f ~/.local/bin/hermes
rm -rf /path/to/hermes-agent
rm -rf ~/.hermes # Optional — keep if you plan to reinstall

[/code] info Если вы установили шлюз как системную службу, сначала остановите и отключите его: [code] hermes gateway stop
# Linux: systemctl --user disable hermes-gateway
# macOS: launchctl remove ai.hermes.gateway

[/code] * Обновление * Что происходит во время обновления * Только проверка: hermes update --check * Полное резервное копирование перед обновлением: --backup * Рекомендуемая проверка после обновления * Если ваш терминал отключился во время обновления * Проверка текущей версии * Обновление через мессенджеры * Ручное обновление * Инструкции по откату * Примечание для пользователей Nix * Удаление * Ручное удаление