Дистрибутивы профилей: поделитесь целым агентом
Дистрибутив профиля упаковывает полноценного Hermes-агента — личность, навыки, cron-задачи, MCP-подключения, конфигурацию — в git-репозиторий. Любой, у кого есть доступ к репозиторию, может установить агента одной командой, обновлять его на месте, при этом сохраняя свои воспоминания, сессии и API-ключи нетронутыми.
Если профиль — это локальный агент, то дистрибутив делает этого агента доступным для распространения.
Что это значит
До появления дистрибутивов, чтобы поделиться агентом Hermes, нужно было отправить кому-то:
-
Ваш SOUL.md
-
Список навыков для установки
-
Ваш config.yaml, без секретов
-
Описание того, какие MCP-серверы вы подключили
-
Любые запланированные cron-задачи
-
Инструкции, какие переменные окружения задать
…и надеяться, что они всё соберут правильно. Каждое обновление версии или исправление ошибки означало повторную передачу.
С дистрибутивами всё это живёт в одном git-репозитории:
my-research-agent/
├── distribution.yaml # манифест: имя, версия, требования к переменным окружения
├── SOUL.md # личность агента / системный промпт
├── config.yaml # модель, температура, параметры рассуждений, настройки инструментов по умолчанию
├── skills/ # встроенные навыки, поставляемые с агентом
├── cron/ # запланированные задачи, которые выполняет агент
└── mcp.json # MCP-серверы, к которым подключается агент
Получатели выполняют:
hermes profile install github.com/you/my-research-agent --alias
…и у них теперь есть полный агент. Они заполняют свои собственные API-ключи (.env.EXAMPLE → .env) и могут запускать my-research-agent chat или обращаться к нему через Telegram / Discord / Slack / любую шлюзовую платформу. Когда вы публикуете новую версию, они выполняют hermes profile update my-research-agent и получают ваши изменения — их воспоминания и сессии остаются нетронутыми.
Почему git?
Мы рассматривали tarball-архивы, HTTP-архивы, собственный формат. Ни один из них не превзошёл git:
-
Ноль шагов сборки для авторов. Отправьте на GitHub; пользователи устанавливают. Нет цикла «упакуй это, загрузи то, обнови индекс».
-
Теги, ветки и коммиты уже являются системой версионирования. Отправка тега даёт нам то же, что «упаковка + загрузка релиза» даёт другим инструментам.
-
Обновления — это fetch. А не повторная загрузка всего архива.
-
Прозрачность. Пользователи могут просматривать репозиторий, читать различия между версиями, открывать issue против него, форкать для кастомизации.
-
Приватные репозитории работают бесплатно. SSH-ключи, хелперы
git credential, сохранённые учётные данные GitHub CLI — любая аутентификация, уже настроенная в вашем терминале, применяется прозрачно. -
Воспроизводимость — это SHA коммита. То же самое, что записывают pip и npm.
Компромисс: получателям нужен установленный git. На любой машине, работающей с Hermes в 2026 году, это уже так.
Когда следует использовать дистрибутив?
Хорошо подходит:
-
Вы делитесь специализированным агентом — монитор соответствия, ревьюер кода, исследовательский ассистент, бот поддержки клиентов — с командой или сообществом.
-
Вы развёртываете одного и того же агента на нескольких машинах и не хотите каждый раз копировать файлы вручную.
-
Вы итерируете агента и хотите, чтобы получатели получали новые версии одной командой.
-
Вы создаёте агента как продукт — продуманные настройки по умолчанию, тщательно подобранные навыки, настроенные промпты — который другие люди могут использовать как отправную точку.
Не подходит:
-
Вы просто хотите сделать резервную копию профиля на своей машине. Используйте
hermes profile export/import— для этого они и предназначены. -
Вы хотите распространять API-ключи вместе с агентом.
auth.jsonи.envнамеренно исключены из дистрибутивов. Каждый установщик приносит свои собственные учётные данные. -
Вы хотите делиться воспоминаниями / сессиями / историей разговоров. Это пользовательские данные, а не содержимое дистрибутива. Никогда не распространяются.
Жизненный цикл: от автора к установщику к обновлению
Ниже описан полный сквозной процесс. Выберите ту сторону, которая вас интересует.
Для авторов: публикация дистрибутива
Шаг 1 — Начните с рабочего профиля
Создайте и настройте агента как любой другой профиль:
hermes profile create research-bot
research-bot setup # настройка модели, API-ключей
# Редактируйте ~/.hermes/profiles/research-bot/SOUL.md
# Установите навыки, подключите MCP-серверы, запланируйте cron-задачи и т.д.
research-bot chat # тестируйте, пока всё не заработает как надо
Шаг 2 — Добавьте distribution.yaml
Создайте ~/.hermes/profiles/research-bot/distribution.yaml:
name: research-bot
version: 1.0.0
description: "Autonomous research assistant with arXiv and web tools"
hermes_requires: ">=0.12.0"
author: "Your Name"
license: "MIT"
# Сообщает установщикам, какие переменные окружения нужны агенту.
# Они проверяются в оболочке установщика и существующем файле .env,
# чтобы не надоедать с ключами, которые уже настроены.
env_requires:
- name: OPENAI_API_KEY
description: "OpenAI API key (for model access)"
required: true
- name: SERPAPI_KEY
description: "SerpAPI key for web search"
required: false
default: ""
Это весь манифест. Для каждого поля, кроме name, есть разумное значение по умолчанию.
Шаг 3 — Отправьте в git-репозиторий
cd ~/.hermes/profiles/research-bot
git init
git add .
git commit -m "v1.0.0"
git remote add origin git@github.com:you/research-bot.git
git tag v1.0.0
git push -u origin main --tags
Теперь репозиторий является дистрибутивом. Любой, у кого есть к нему доступ, может его установить.
Шаг 4 — Помечайте версионные релизы тегами
Каждый раз, когда агент достигает стабильной точки, увеличивайте версию и ставьте тег:
# Отредактируйте distribution.yaml: version: 1.1.0
git add distribution.yaml SOUL.md skills/
git commit -m "v1.1.0: tighter research SOUL, add arxiv skill"
git tag v1.1.0
git push --tags
Получатели, выполнившие hermes profile update research-bot, получат последнюю версию.
Как выглядит репозиторий
Полный опубликованный дистрибутив:
research-bot/
├── distribution.yaml # обязательно
├── SOUL.md # настоятельно рекомендуется
├── config.yaml # модель, провайдер, настройки инструментов по умолчанию
├── mcp.json # подключения к MCP-серверам
├── skills/
│ ├── arxiv-search/SKILL.md
│ ├── paper-summarization/SKILL.md
│ └── citation-lookup/SKILL.md
├── cron/
│ └── weekly-digest.json # запланированные задачи
└── README.md # описание для людей (необязательно)
Принадлежащее дистрибутиву vs принадлежащее пользователю
Когда установщик обновляется до новой версии, одни вещи заменяются (область автора), а другие остаются (область установщика). По умолчанию:
| Категория | Пути | При обновлении |
|---|---|---|
| Принадлежит дистрибутиву | SOUL.md, config.yaml, mcp.json, skills/, cron/, distribution.yaml |
Заменяется из новой копии |
| Переопределение конфига | config.yaml |
Фактически сохраняется по умолчанию — установщик мог настроить модель или провайдера. Передайте --force-config при обновлении, чтобы сбросить. |
| Принадлежит пользователю | memories/, sessions/, state.db*, auth.json, .env, logs/, workspace/, plans/, home/, *_cache/, local/ |
Никогда не трогается |
Вы можете переопределить список принадлежащего дистрибутиву в манифесте:
distribution_owned:
- SOUL.md
- skills/research/ # только мои исследовательские навыки; другие установленные навыки остаются
- cron/digest.json
Если этот параметр опущен, применяются значения по умолчанию, указанные выше — что подходит для большинства дистрибутивов.
Для установщиков: использование дистрибутива
Установка
hermes profile install github.com/you/research-bot --alias
Что происходит:
-
Клонирует репозиторий во временный каталог.
-
Читает
distribution.yaml, показывает вам манифест (имя, версия, описание, автор, требуемые переменные окружения). -
Проверяет каждую обязательную переменную окружения в вашей оболочке и в существующем
.envцелевого профиля. Помечает каждую как✓ заданоилитребует настройки, чтобы вы точно знали, что нужно настроить. -
Запрашивает подтверждение. Передайте
-y/--yes, чтобы пропустить. -
Копирует файлы, принадлежащие дистрибутиву, в
~/.hermes/profiles/research-bot/(или туда, куда указываетnameиз манифеста). -
Записывает
.env.EXAMPLEс закомментированными обязательными ключами — скопируйте в.envи заполните. -
С опцией
--aliasсоздаёт обёртку, чтобы вы могли запускатьresearch-bot chatнапрямую.
Типы источников
Любой git-адрес работает:
# Сокращение GitHub
hermes profile install github.com/you/research-bot
# Полный HTTPS
hermes profile install https://github.com/you/research-bot.git
# SSH
hermes profile install git@github.com:you/research-bot.git
# Self-hosted, GitLab, Gitea, Forgejo — любой Git-хост
hermes profile install https://git.example.com/team/research-bot.git
# Приватный репозиторий с использованием настроенной git-аутентификации
hermes profile install git@github.com:your-org/internal-bot.git
# Локальная директория во время разработки (без git push)
hermes profile install ~/my-profile-in-progress/
Переопределение имени профиля
Два пользователя, желающие установить один и тот же дистрибутив под разными именами:
# Алиса
hermes profile install github.com/acme/support-bot --name support-us --alias
# Боб (тот же дистрибутив, другое локальное имя)
hermes profile install github.com/acme/support-bot --name support-eu --alias
Заполнение переменных окружения
После установки профиль агента содержит .env.EXAMPLE:
# Переменные окружения, необходимые для этого дистрибутива Hermes.
# Скопируйте в `.env` и заполните своими значениями перед запуском.
# OpenAI API key (для доступа к модели)
# (обязательно)
OPENAI_API_KEY=
# SerpAPI key для веб-поиска
# (необязательно)
# SERPAPI_KEY=
Скопируйте его:
cp ~/.hermes/profiles/research-bot/.env.EXAMPLE ~/.hermes/profiles/research-bot/.env
# Отредактируйте .env, вставьте свои настоящие ключи
Обязательные ключи, которые уже были в вашей оболочке (например, OPENAI_API_KEY, экспортированный в ~/.zshrc), помечаются как ✓ задано во время установки — вам не нужно дублировать их в .env.
Проверьте, что вы установили
hermes profile info research-bot
Показывает:
Distribution: research-bot
Version: 1.0.0
Description: Autonomous research assistant with arXiv and web tools
Author: Your Name
Requires: Hermes >=0.12.0
Source: https://github.com/you/research-bot
Installed: 2026-05-08T17:04:32+00:00
Environment variables:
OPENAI_API_KEY (required) — OpenAI API key (for model access)
SERPAPI_KEY (optional) — SerpAPI key for web search
hermes profile list также показывает колонку Distribution, чтобы вы могли с первого взгляда увидеть, какие из ваших профилей получены из репозиториев, а какие созданы вручную:
Profile Model Gateway Alias Distribution
─────────────── ─────────────────────────── ─────────── ─────────── ────────────────────
◆default claude-sonnet-4 stopped — —
coder gpt-5 stopped coder —
research-bot claude-opus-4 stopped research-bot research-bot@1.0.0
telemetry claude-sonnet-4 running telemetry telemetry@2.3.1
Обновление
hermes profile update research-bot
Что происходит:
-
Повторно клонирует репозиторий из сохранённого URL источника.
-
Заменяет файлы, принадлежащие дистрибутиву (SOUL, навыки, cron, mcp.json).
-
Сохраняет ваш
config.yaml— вы могли настроить модель, температуру или другие параметры. Передайте--force-config, чтобы перезаписать. -
Никогда не трогает пользовательские данные: воспоминания, сессии, аутентификацию,
.env, логи, состояние.
Никакой повторной загрузки всего архива. Никакого затирания ваших локальных изменений конфига. Никакого удаления истории разговоров.
Удаление
hermes profile delete research-bot
Подсказка удаления отображает информацию о дистрибутиве перед запросом подтверждения:
Profile: research-bot
Path: ~/.hermes/profiles/research-bot
Model: claude-opus-4 (anthropic)
Skills: 12
Distribution: research-bot@1.0.0
Installed from: https://github.com/you/research-bot
This will permanently delete:
• All config, API keys, memories, sessions, skills, cron jobs
• Command alias (~/.local/bin/research-bot)
Type 'research-bot' to confirm:
Так вы никогда случайно не удалите агента, не зная, откуда он взялся или не имея возможности переустановить его.
Примеры использования и паттерны
Личное: синхронизация одного агента между машинами
Вы создали исследовательского ассистента на ноутбуке. Вы хотите того же агента на рабочей станции.
# Ноутбук
cd ~/.hermes/profiles/research-bot
git init && git add . && git commit -m "initial"
git remote add origin git@github.com:you/research-bot.git
git push -u origin main
# Рабочая станция
hermes profile install github.com/you/research-bot --alias
# Заполните .env. Готово.
Любая итерация на ноутбуке (git commit && push) подтягивается на рабочую станцию командой hermes profile update research-bot. Воспоминания остаются на каждой машине — ноутбук помнит свои разговоры, рабочая станция — свои, они не пересекаются.
Команда: публикация проверенного внутреннего агента
Ваша инженерная команда хочет общего бота для ревью PR с определённым SOUL, конкретными навыками и cron-задачей, прогоняющей каждый PR через него.
# Лид инженерной команды
cd ~/.hermes/profiles/pr-reviewer
# ... сборка и настройка ...
git init && git add . && git commit -m "v1.0 PR reviewer"
git tag v1.0.0
git push -u origin main --tags # отправка на внутренний Git-хост вашей компании
# Каждый инженер
hermes profile install git@github.com:your-org/pr-reviewer.git --alias
# Заполните .env своим собственным API-ключом (выставляется счёт им), .env.EXAMPLE показывает, что требуется
pr-reviewer chat
Когда лид выпускает v1.1 (улучшенный SOUL, новый навык), инженеры выполняют hermes profile update pr-reviewer, и все переходят на новую версию в течение нескольких минут.
Сообщество: публикация публичного агента
Вы создали что-то новое — может быть, «Polymarket trader» или «академический суммаризатор статей» или «ассистент для администрирования Minecraft-сервера». Вы хотите поделиться этим.
# Вы
cd ~/.hermes/profiles/polymarket-trader
# Напишите качественный README.md в корне репозитория — GitHub показывает его на странице репозитория
git init && git add . && git commit -m "v1.0"
git tag v1.0.0
# Опубликуйте в публичный GitHub-репозиторий
git remote add origin https://github.com/you/hermes-polymarket-trader.git
git push -u origin main --tags
# Любой желающий
hermes profile install github.com/you/hermes-polymarket-trader --alias
Опубликуйте команду установки в твиттере. Люди, которые попробуют, будут отправлять вам issue и PR. Если кто-то захочет кастомизировать — форкнут, тот же git-воркфлоу, который все уже знают.
Продукт: публикация специализированного агента
Вы создали надстройку над Hermes — возможно, обвязку для мониторинга соответствия, стек поддержки клиентов, доменную исследовательскую платформу. Вы хотите распространять это как продукт.
# distribution.yaml
name: telemetry-harness
version: 2.3.1
description: "Compliance telemetry harness — monitors and reviews regulated workflows"
hermes_requires: ">=0.13.0"
author: "Acme Compliance Inc."
license: "Commercial"
env_requires:
- name: ACME_API_KEY
description: "Your Acme Compliance license key (email support@acme.com)"
required: true
- name: OPENAI_API_KEY
description: "OpenAI API key for model access"
required: true
- name: GRAPHITI_MCP_URL
description: "URL for your Graphiti knowledge graph instance"
required: false
default: "http://127.0.0.1:8000/sse"
Ваши клиенты устанавливают одной командой; предпросмотр установки говорит им, какие ключи нужно подготовить; обновления выходят в тот момент, когда вы ставите тег нового релиза; их данные соответствия (memories/, sessions/) никогда не покидают их машины.
Эфемерное: одноразовые скрипты на общей инфраструктуре
Вы лидер ops. Вам нужен временный агент для диагностики производственного инцидента — готовый SOUL с правильными инструментами и MCP-подключениями — который будет работать на ноутбуках трёх дежурных инженеров в течение следующей недели.
# Вы
# Создайте профиль, закоммитьте, отправьте в приватный репозиторий
git push -u origin main
# Каждый дежурный
hermes profile install git@github.com:your-org/incident-2026-q2.git --alias
# Инцидент устранён — удаляем
hermes profile delete incident-2026-q2
Цикл установки-удаления достаточно лёгкий, чтобы быть одноразовым.
Рецепты
Фиксация конкретной версии
Проверка вашей версии vs последней
# Ваша установленная версия
hermes profile info research-bot | grep Version
# Последняя версия в upstream (без установки)
git ls-remote --tags https://github.com/you/research-bot | tail -5
Сохранение локальных настроек конфига при обновлениях
Поведение обновления по умолчанию уже это делает: config.yaml сохраняется. Для надёжности записывайте свои локальные изменения в файл, который не принадлежит дистрибутиву:
# ~/.hermes/profiles/research-bot/local/my-overrides.yaml
# (дистрибутив никогда не трогает local/)
…и ссылайтесь на него из config.yaml или вашего SOUL по мере необходимости.
Принудительная чистая переустановка
# Снести и переустановить с нуля (также теряются воспоминания/сессии)
hermes profile delete research-bot --yes
hermes profile install github.com/you/research-bot --alias
# Обновление до текущего main, но сброс config.yaml до значений дистрибутива по умолчанию
hermes profile update research-bot --force-config --yes
Форк и кастомизация
Стандартный git-воркфлоу — дистрибутивы это просто репозитории:
# Форкните репозиторий на GitHub, затем установите свой форк
hermes profile install github.com/yourname/forked-research-bot --alias
# Итерируйте локально в ~/.hermes/profiles/forked-research-bot/
# Отредактируйте SOUL.md, закоммитьте, отправьте в свой форк
# Изменения из upstream: подтяните их в свой форк обычным способом
Тестирование дистрибутива перед отправкой
На машине автора:
# Установка из локальной директории (без git push)
hermes profile install ~/.hermes/profiles/research-bot --name research-bot-test --alias
# Доработка, удаление, переустановка, пока не будет правильно
hermes profile delete research-bot-test --yes
hermes profile install ~/.hermes/profiles/research-bot --name research-bot-test
Чего НЕТ в дистрибутиве (никогда)
Установщик жёстко исключает эти пути, даже если автор случайно их отправит. Никакая опция конфигурации не позволяет переопределить это — защита является регрессионно-тестируемым инвариантом:
-
auth.json— OAuth-токены, учётные данные платформ -
.env— API-ключи, секреты -
memories/— память разговоров -
sessions/— история разговоров -
state.db,state.db-shm,state.db-wal— метаданные сессий -
logs/— логи агента и ошибок -
workspace/— сгенерированные рабочие файлы -
plans/— черновые планы -
home/— домашняя директория пользователя в Docker-бэкендах -
*_cache/— кэши изображений / аудио / документов -
local/— пространство имён для пользовательских настроек
Когда вы клонируете дистрибутив, этих файлов просто нет. Когда вы обновляетесь, они остаются на месте. Если вы установили один и тот же дистрибутив на пяти машинах, у вас пять изолированных наборов этих данных — по одному на каждую машину.
Безопасность и доверие
Дистрибутивы профилей по умолчанию не подписаны. Вы доверяете:
-
Git-хосту (GitHub / GitLab / где угодно) доставлять те байты, которые отправил автор.
-
Автору — что он не отправит вредоносный SOUL, навыки или cron-задачи.
Cron-задачи из дистрибутива не планируются автоматически — установщик выводит hermes -p <имя> cron list, и вы включаете их явно. SOUL.md и навыки АКТИВНЫ сразу после того, как вы начнёте общаться с профилем, поэтому прочитайте их перед первым запуском, если устанавливаете от незнакомого человека.
Грубая аналогия: установка дистрибутива похожа на установку расширения браузера или расширения VS Code. Малое трение, большая мощность, доверяйте источнику. Для внутренних корпоративных дистрибутивов используйте приватный репозиторий и свою обычную git-аутентификацию — ничего нового настраивать не нужно.
Будущие версии могут добавить подпись, lock-файл (.distribution-lock.yaml) с фиксированным SHA коммита и флаг --dry-run, показывающий diff перед применением обновления. Ничего из этого пока не реализовано.
Под капотом
Подробную реализацию, точное поведение CLI и все флаги см. в справочнике команд профилей.
Краткая версия:
-
install,update,infoнаходятся внутриhermes profile— не в отдельном дереве команд. -
Формат манифеста — YAML с минимальной обязательной схемой (только
name). -
Установщик использует ваш локальный бинарник
gitдля клонирования, так что любая аутентификация, которую обрабатывает ваша оболочка (SSH-ключи, хелперы учётных данных), работает прозрачно. -
После клонирования
.git/удаляется — установленный профиль сам по себе не является git-чекаутом, что позволяет избежать ловушек вида «ой, я случайно закоммитил свой.envв git-историю дистрибутива». -
Зарезервированные имена профилей (
hermes,test,tmp,root,sudo) отклоняются при установке, чтобы избежать коллизий с распространёнными бинарниками.
Смотрите также
-
Профили: запуск нескольких агентов — основная концепция
-
Справочник команд профилей — все флаги, все опции
-
hermes profile export/import— локальное резервное копирование / восстановление (не дистрибутив) -
Использование SOUL с Hermes — создание личностей агента
-
Личность и SOUL — как SOUL встраивается в агента
-
Каталог навыков — навыки, которые вы можете включить