Sistema de Perfiles y Distribuciones

Podemos usar Hermes para crearmúltiples agentes independientes—uno dedicado a escribir código, otro a operaciones, y otro para investigación.

Este capítulo presenta cómo el sistema de Perfiles ejecuta múltiples instancias de agente completamente aisladas en una sola máquina, y cómo empaquetar todo el agente como una distribución para compartir con otros.


Sistema de Perfiles: una máquina, múltiples agentes independientes

Qué es un Perfil

Un Perfil es un directorio principal independiente de Hermes. Cada Perfil tiene su propia configuración y datos completamente aislados:

~/.hermes/profiles/<name>/
├── config.yaml     # 模型、工具、终端后端等所有设置
├── .env            # API Key、Bot Token(各档案各自独立)
├── SOUL.md         # Agent 人格与身份设定
├── memories/       # 独立的持久记忆(MEMORY.md、USER.md)
├── skills/         # 独立的技能目录
├── cron/           # 独立的定时任务
└── state.db        # 独立的会话历史数据库

Diseño clave: después de crear un Perfil, automáticamente se convierte en un comando independiente. Al crear un Perfil llamado coder, inmediatamente tendráscoder chat、coder setup、coder gateway starty todos los demás subcomandos—como si hubieras instalado una instancia de Hermes completamente independiente.

Inicio rápido

Tres pasos para crear un asistente de codificación independiente:

Ejemplo

# Paso uno: crear el Perfil, genera automáticamente el comando coder
hermes profile create coder

# Paso dos: configurar la clave de API y el modelo de este Perfil
coder setup

# Paso tres: empezar a chatear
coder chat

Tres modos de creación

Ejemplo

# Modo uno: Perfil nuevo (configuración en blanco, habilidades integradas preinstaladas)
hermes profile create mybot

# Modo dos: clonar configuración (config.yaml + .env + SOUL.md + habilidades,
# la memoria y las sesiones no se copian)
hermes profile create work --clone

# Modo tres: clonación completa (incluye memoria, habilidades, tareas programadas, plugins,
# no incluye el historial de sesiones)
hermes profile create backup --clone-all

# Clonar desde un Perfil especificado
hermes profile create work-backup --clone-from coder --clone-all
ModoContenido copiadoContenido no copiadoEscenario de uso
Nuevo (predeterminado)Solo habilidades integradas—Configurar un nuevo agente desde cero
--cloneConfiguración, variables de entorno, personalidad, habilidadesMemoria, historial de sesionesDiferentes variantes del mismo agente
--clone-allConfiguración, memoria, habilidades, tareas programadas, pluginsHistorial de sesionesCopia de seguridad completa

Cambiar y usar Perfiles

Ejemplo

# Forma uno: usar el alias de comando generado automáticamente (la más común)
coder chat
coder gateway start
coder skills list
coder config set model.default anthropic/claude-sonnet-4-6

# Forma dos: especificar explícitamente con la bandera -p
hermes -p coder chat
hermes --profile=coder doctor
hermes chat -p coder -q "Hola"

# Forma tres: establecer el predeterminado actual (similar a kubectl config use-context)
hermes profile use coder      # Después, ejecutar hermes directamente usará coder
hermes profile use default    # Volver al predeterminado

Determinar en qué Perfil estás actualmente:

  • El aviso del comando muestracoder ❯(en lugar del normal❯)
  • El banner de inicio muestraProfile: coder
  • Ejecutarhermes profileVer el nombre, ruta, modelo y estado de la puerta de enlace del Perfil actual

Diferencia entre Perfil, directorio de trabajo y sandbox

Estos son los tres conceptos más fáciles de confundir:

ConceptoContenido que controlaForma de configuración
ProfileEstado del propio Hermes (configuración, memoria, habilidades, sesiones)hermes profile create
Directorio de trabajoDesde dónde se ejecutan los comandos de terminalterminal.cwd
SandboxRestricción del alcance de acceso al sistema de archivosBackend de terminal (docker/modal, etc.)

Un Perfil no es un sandbox: con el backend local predeterminado, el agente aún tiene los mismos permisos de sistema de archivos que tú. Si necesitas restringir el alcance de acceso, cambia el backend de terminal (ver capítulo 05).

Hacer que un Perfil comience a trabajar fijo desde un directorio específico:

Ejemplo

# Ruta del archivo: ~/.hermes/config.yaml
# Hacer que el Perfil coder comience fijo desde el directorio del proyecto
terminal
:
  backend
: local
  cwd
: /absolute/path/to/project

Puerta de enlace multi-Perfil: cada agente se conecta a una plataforma diferente

Cada Perfil ejecuta su propio proceso de puerta de enlace independiente, usando su propio token de Bot:

Ejemplo

# Iniciar cada puerta de enlace independiente
coder gateway start       # Vincular el Bot de Telegram de coder
assistant gateway start   # Vincular un Bot diferente

# Instalar como servicio de sistema persistente
coder gateway install     # Crear el servicio systemd hermes-gateway-coder
assistant gateway install # Crear el servicio hermes-gateway-assistant

Protección de seguridad: si dos Perfiles usan accidentalmente el mismo token de Bot, la segunda puerta de enlace reportará un error inmediatamente e indicará el nombre del Perfil en conflicto, sin que ocurra un conflicto silencioso.

Comandos de gestión de Perfiles

Ejemplo

# Listar todos los Perfiles y su estado
hermes profile list

# Ver información detallada de un Perfil
hermes profile show coder

# Renombrar (actualiza automáticamente alias y servicios)
hermes profile rename coder dev-bot

# Exportar como coder.tar.gz
hermes profile export coder

# Importar desde un archivo
hermes profile import coder.tar.gz

# Eliminar (se requiere escribir el nombre para confirmar)
hermes profile delete coder

# Omitir confirmación y eliminar directamente
hermes profile delete coder --yes

No se puede eliminar el Perfil predeterminado (~/.hermes). Para desinstalarlo por completo, usa hermes uninstall.


Distribuciones de Perfil: compartir todo el agente con otros

Una Distribución de Perfil empaqueta un Hermes Agent completo—configuración de personalidad, habilidades, tareas programadas, conexiones MCP, configuración—en un repositorio Git.

Cualquiera puede instalar todo el agente con un solo comando, y recibir tus actualizaciones mientras conserva su propia memoria, sesiones y claves de API.

Distribución vs copia de seguridad de Perfil

DimensiónDistribuciónCopia de seguridad (exportar/importar)
Público objetivoOtros (equipo, comunidad)Uno mismo (migración entre máquinas)
Método de instalaciónhermes profile install github.com/...hermes profile import xxx.tar.gz
Gestión de versionesRepositorio Git + etiquetasNinguno
Actualizaciónhermes profile updateReexportar e importar manualmente
API KeyEl receptor configura por sí mismoIncluido en la exportación

Escenarios adecuados para distribuciones

  • Distribuir agentes especializados al equipo (monitoreo de cumplimiento, revisión de código, asistente de investigación)
  • Desplegar el mismo agente en múltiples máquinas sin copiar archivos manualmente
  • Iterar continuamente el agente y permitir que los receptores obtengan la última versión con un solo comando
  • Distribuir el agente como producto a la comunidad

Crear y publicar una distribución

Primer paso: añadir en un Perfil existentedistribution.yaml:

Ejemplo

# Ruta del archivo: ~/.hermes/profiles/research-bot/distribution.yaml
name
: research-bot
version
: 1.0.0
description
: "Asistente de investigación autónomo, integra arXiv y herramientas web"
hermes_requires
: ">=0.12.0"
author
: "Tu nombre"
license
: "MIT"

# Declarar las variables de entorno que el receptor debe configurar
env_requires
:
  - name
: OPENAI_API_KEY
    description
: Clave de API de OpenAI (para acceso al modelo)
    required
: true
  - name
: SERPAPI_KEY
    description
: Clave de SerpAPI (para búsqueda web)
    required
: false
    default
: ""

Paso 2: enviar al repositorio Git:

Ejemplo

# Entrar al directorio Profile e inicializar el repositorio 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

.env y auth.json se excluyen automáticamente: las claves de API no entran en el repositorio. El historial de memoria y sesiones tampoco se incluye.

Instalar y actualizar distribuciones

Ejemplo

# Instalar (--alias crea comandos con el mismo nombre, como research-bot chat)
hermes profile install github.com/you/research-bot --alias

# Configurar la clave de API después de la instalación
nano ~/.hermes/profiles/research-bot/.env

# Actualizar a la última versión (conserva la memoria y las sesiones propias)
hermes profile update research-bot

Referencia rápida de comandos

Ejemplo

# ─── Gestión de perfiles ───────────────────────────────────────────
hermes profile create <name>                    # Crear desde cero
hermes profile create <name> --clone            # Clonar configuración
hermes profile create <name> --clone-all        # Clonación completa
hermes profile create <name> --clone-from <src> # Clonar desde un perfil específico
hermes profile list                             # Listar todos
hermes profile show <name>                      # Ver detalles
hermes profile use <name>                       # Establecer como predeterminado
hermes profile rename <old> <new>              # Renombrar
hermes profile export <name>                    # Exportar copia de seguridad
hermes profile import <file>                    # Importar copia de seguridad
hermes profile delete <name>                    # Eliminar

# Alias de comandos de perfil (disponibles automáticamente después de crearlos)
<name> chat / setup / gateway start / skills list / doctor

# ─── Distribuciones ──────────────────────────────────────────────────
hermes profile install github.com/user/repo --alias  # Instalar
hermes profile update <name>                         # Actualizar
Otras extensiones