Профили в Hermes Agent — это механизм запуска нескольких независимых AI-агентов на одной машине. Каждый профиль получает собственную конфигурацию, API-ключи, память, сессии, навыки и состояние шлюза. Это позволяет разделить, например, ассистента по коду, личного бота и исследовательского агента — без смешивания их данных.
Что такое профили и зачем они нужны
Профиль — это отдельный домашний каталог Hermes. Каждый профиль содержит свои config.yaml, .env, SOUL.md, воспоминания, сессии, навыки, задачи по расписанию и базу состояния. При создании профиля он автоматически становится отдельной командой: профиль coder даёт команды coder chat, coder setup, coder gateway start и т.д.
Профили удобно использовать, когда нужны разные модели, разные личности (SOUL.md) или разные наборы инструментов для разных задач — всё на одном сервере.
Структура каталога профиля
Каждый профиль живёт в /root/.hermes/profiles/<name>/ с такой структурой:
/root/.hermes/profiles/<name>/
├── config.yaml # конфигурация профиля (перезаписывает глобальную)
├── .env # переменные окружения и API-ключи
├── workspace/ # рабочий каталог (cwd для терминала)
├── memories/ # системная память (MEMORY.md, USER.md)
├── skills/ # навыки профиля (+ наследуются глобальные)
├── cron/ # запланированные задачи профиля
├── credentials.json # учётные данные профиля
├── SOUL.md # личность и поведение агента
└── sessions/ # сессии профиля
CLI-команды
hermes profile list # все профили со статусом
hermes profile create NAME # создать чистый профиль
hermes profile create NAME --clone # клонировать config + .env + SOUL.md
hermes profile create NAME --clone-all # полный клон (память, сессии, навыки)
hermes profile create NAME --clone-from PROFILE # клонировать из указанного профиля
hermes profile use NAME # сделать профилем по умолчанию
hermes profile show NAME # подробная информация о профиле
hermes profile alias NAME # управление wrapper-скриптами (алиасы)
hermes profile rename OLD NEW # переименовать профиль
hermes profile export NAME # экспорт в tar.gz-архив
hermes profile import FILE # импорт из архива
hermes profile delete NAME # удалить профиль (с подтверждением)
Создание и варианты
Быстрый старт
hermes profile create coder # создать профиль
coder setup # настроить ключи и модель
coder chat # начать общение
Варианты создания
- Чистый профиль:
hermes profile create mybot— новый профиль с базовыми навыками. - Клон конфигурации:
hermes profile create work --clone— копирует config.yaml, .env и SOUL.md, но с чистыми сессиями и памятью. - Полное клонирование:
hermes profile create backup --clone-all— полный снимок, включая память и историю. - Клон из другого профиля:
hermes profile create dev --clone-from coder— клонирует указанный профиль.
Использование
Каждый профиль получает алиас команды. Также можно указать профиль через флаг -p:
hermes -p coder chat
hermes --profile coder doctor
Команда hermes profile use coder делает профиль профилем по умолчанию для всех команд.
Управление алиасами
hermes profile alias NAME создаёт wrapper-скрипт, позволяющий вызывать профиль напрямую — например, coder chat вместо hermes -p coder chat. Это удобно для часто используемых профилей.
Переименование
hermes profile rename old-name new-name переименовывает каталог и все внутренние ссылки. Wrapper-скрипты обновляются автоматически.
Экспорт и импорт
Экспорт создаёт tar.gz-архив профиля для резервного копирования или переноса на другой сервер:
hermes profile export coder # → coder-YYYYMMDD.tar.gz
hermes profile import coder-20260722.tar.gz # восстановить из архива
Шлюзы (Gateways)
Каждый профиль запускает свой шлюз с отдельным бот-токеном. Поддерживается защита от дублирования токенов: если два профиля используют один токен, второй будет заблокирован. Можно установить как системный сервис:
coder gateway install # создаёт systemd/launchd сервис
Наследование навыков (Skills)
Навыки из глобального каталога /root/.hermes/skills/ доступны всем профилям. Профильные навыки в /root/.hermes/profiles/<name>/skills/ переопределяют или дополняют глобальные. При вызове hermes skills list отображаются оба уровня.
Идентификация текущего профиля
Чтобы определить, под каким профилем работает агент:
echo $HERMES_HOME # путь к каталогу профиля
cat ~/.hermes/profiles/<name>/.env # переменные окружения профиля
В системном промпте секция MEMORY и содержимое SOUL.md определяют личность агента. Если они противоречат друг другу — доверяйте пользователю.
Profile Distributions — шаринг агентов
Distribution — это упакованный профиль в виде git-репозитория. Любой пользователь может установить готового агента одной командой и обновить его, не потеряв свои данные.
Структура дистрибутива
my-agent/
├── distribution.yaml # манифест: имя, версия, зависимости
├── SOUL.md # личность агента
├── config.yaml # настройки модели и инструментов
├── skills/ # навыки
├── cron/ # запланированные задачи
└── mcp.json # MCP-серверы
Установка и обновление
hermes profile install github.com/you/research-bot --alias
hermes profile update research-bot
При обновлении заменяются файлы автора (SOUL.md, навыки, cron), но сохраняются пользовательские данные: память, сессии, API-ключи и логи.
Что НИКОГДА не попадает в дистрибутив
auth.jsonи.env— ключи и токеныmemories/иsessions/— пользовательские данныеstate.db,logs/,workspace/— состояние и кеши
Сценарии использования
- Синхронизация: один агент на ноутбуке и рабочей станции через git
- Команда: единый агент для код-ревью, развёрнутый у всех разработчиков
- Сообщество: публикация специализированного агента на GitHub
- Продукт: тиражирование готового решения с настроенными навыками
Чеклист миграции профиля (сервер → сервер)
При переносе профиля на другой сервер (например, со старого скомпрометированного сервера на новый чистый):
- Распаковать архив в каталог профиля —
cd /root/.hermes/profiles/<name> && unzip -o backup.zip -x "config.yaml" - НЕ перезаписывать config.yaml — конфигурация из бэкапа была настроена под старый сервер. Сохраните новый.
- Обновить пути к credentials —
memories/MEMORY.mdможет содержать старые пути. Замените все ссылки на/root/.hermes/profiles/<name>/credentials/. - Исправить workdir во всех cron-задачах — проверьте каждое поле
workdir. Старые пути вида/root/.hermes/profiles/platonдолжны быть обновлены. - Исправить промпты cron-задач — промпты могут содержать захардкоженные пути к скриптам, credentials или каталогам.
- Обновить модели в cron-задачах — если старый сервер использовал другую модель по умолчанию, обновите все задачи.
- Проверить работу credentials — API-ключи могут быть отозваны или ограничены после компрометации сервера.
- Подтвердить личность — проверьте
memories/MEMORY.mdиSOUL.mdна соответствие нужному агенту. Старые бэкапы могут нести чужую личность. - Протестировать одну cron-задачу вручную — запустите
cronjob(action=run, job_id=...)перед тем, как доверять всему расписанию.
Подводные камни восстановления из бэкапа
- НИКОГДА не распаковывайте всё подряд — спросите пользователя, что именно восстанавливать
- НЕ перезаписывайте config.yaml — конфиг из бэкапа был для другого сервера/инстанса
- Credentials могут быть устаревшими — всегда проверяйте после восстановления
- Cron-задачи ссылаются на пути — старые пути могут указывать на несуществующие каталоги. Проверяйте
workdirи текст промпта. - Файлы памяти могут конфликтать — MEMORY.md из бэкапа может описывать другую личность агента
- Глобальный конфиг принадлежит основному агенту — если на сервере уже есть основной агент, его
config.yamlв/root/.hermes/config.yaml— не ваш. Изменяйте только свой профильный конфиг.
Очистка устаревших путей после миграции
После переноса профиля или переименования старые пути будут всплывать снова и снова, пока не будут систематически устранены. Используйте этот чеклист:
| Область | Как найти | Команда |
|---|---|---|
| .env | TERMINAL_CWD, захардкоженные пути | cat $HERMES_HOME/.env |
| Скрипты | *.sh, *.py в memory/ | grep -rn 'old-path' $HERMES_HOME/memory/ |
| Навыки | SKILL.md, references/, scripts/ | grep -rn 'old-path' $HERMES_HOME/skills/ |
| Cron промпты + workdir | cron/jobs.json | grep -n 'old-path' $HERMES_HOME/cron/jobs.json |
| Cron outputs | cron/output/*.md — видны пользователю! | grep -rln 'old-path' $HERMES_HOME/cron/output/ → удалить |
| .pyc кеши | __pycache__/ — байткод содержит пути | find $HERMES_HOME -name __pycache__ -exec rm -rf {} + |
| Симлинки | Указывающие на старые каталоги | find /root -type l -lname '*old*' |
| Системная память | memories/MEMORY.md | Проверить и убедиться |
Результат должен быть пустым. Если что-то найдено — исправьте до завершения.
Важные предупреждения
- cron output виден пользователю — старые файлы в
cron/output/доставляются в Telegram/Discord. Удаляйте их, а не просто исправляйте источники. - SKILL.md может содержать старый путь — если документация навыка ссылается на миграцию (например, «мы мигрировали из /root/.hermes-echo/»), эти ссылки сами становятся проблемой. Удаляйте упоминания старых путей из документации.
- .env защищён от записи — инструмент
write_fileоткажется писать в .env. Используйтеsed -iчерез terminal:sed -i 's|old-value|new-value|' $HERMES_HOME/.env