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
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
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
| Modo | Contenido copiado | Contenido no copiado | Escenario de uso |
|---|---|---|---|
| Nuevo (predeterminado) | Solo habilidades integradas | — | Configurar un nuevo agente desde cero |
| --clone | Configuración, variables de entorno, personalidad, habilidades | Memoria, historial de sesiones | Diferentes variantes del mismo agente |
| --clone-all | Configuración, memoria, habilidades, tareas programadas, plugins | Historial de sesiones | Copia de seguridad completa |
Cambiar y usar Perfiles
Ejemplo
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 muestra
coder ❯(en lugar del normal❯) - El banner de inicio muestra
Profile: coder - Ejecutar
hermes 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:
| Concepto | Contenido que controla | Forma de configuración |
|---|---|---|
| Profile | Estado del propio Hermes (configuración, memoria, habilidades, sesiones) | hermes profile create |
| Directorio de trabajo | Desde dónde se ejecutan los comandos de terminal | terminal.cwd |
| Sandbox | Restricción del alcance de acceso al sistema de archivos | Backend 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
# 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
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
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ón | Distribución | Copia de seguridad (exportar/importar) |
|---|---|---|
| Público objetivo | Otros (equipo, comunidad) | Uno mismo (migración entre máquinas) |
| Método de instalación | hermes profile install github.com/... | hermes profile import xxx.tar.gz |
| Gestión de versiones | Repositorio Git + etiquetas | Ninguno |
| Actualización | hermes profile update | Reexportar e importar manualmente |
| API Key | El receptor configura por sí mismo | Incluido 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
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
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
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
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