Conjunto de herramientas de Hermes Agent
Las herramientas son el único canal de interacción de Hermes Agent con el mundo exterior: leer y escribir archivos, ejecutar comandos, buscar en la web, generar imágenes; todas las capacidades se exponen a través de herramientas.
Hermes incluye más de 70 herramientas integradas, divididas en 28 conjuntos de herramientas. Este capítulo analizará una por una las herramientas principales, parámetros y mejores prácticas de cada conjunto.
Arquitectura del sistema de herramientas
Antes de profundizar en herramientas específicas, primero comprenda cómo están organizadas las herramientas.
Hermes utiliza una estructura de tres capas para gestionar las herramientas:
工具(Tool) ← 单个可调用函数,如 read_file、web_search
└── 工具集(Toolset) ← 相关工具的逻辑分组,如 file、web
└── 平台配置 ← 哪个平台加载哪些工具集
Diseño clave: Al deshabilitar un conjunto de herramientas, sus herramientas desaparecen por completo del mensaje del sistema; no es solo que no se puedan invocar, sino que el Agent ni siquiera sabe que existen. Esto ahorra tokens y evita que el Agent utilice herramientas que no debería.
Formas de gestionar los conjuntos de herramientas:
# TUI 交互式管理(推荐) hermes tools # 命令行管理 hermes tools list # 列出所有工具及启用状态 hermes tools enable browser # 启用指定工具集 hermes tools disable audio # 禁用指定工具集
Configurar en config.yaml:
# 文件路径:~/.hermes/config.yaml
# 按平台指定启用的工具集
platform_toolsets:
cli:
- hermes-cli # CLI 核心工具集
- file
- terminal
- web
- memory
- skills
En la versión de escritorio, en el menú de habilidades y herramientas a la izquierda:

También puede gestionar herramientas en el panel de control, en el menú de habilidades a la izquierda:

Conjunto de herramientas de archivos y sistema
Este tipo de conjunto de herramientas permite al Agent operar el sistema de archivos local, ejecutar comandos y gestionar procesos.
file — operaciones de archivo
El conjunto de herramientas más básico; casi todas las tareas del Agent dependen de él para leer y escribir archivos.
| Herramienta | Función | Parámetros clave |
|---|---|---|
| read_file | Leer el contenido de un archivo | file_path (obligatorio), offset (línea inicial), limit (límite de líneas) |
| write_file | Crear o sobrescribir un archivo | file_path (obligatorio), content (obligatorio) |
| edit_file | Reemplazar texto en un archivo con precisión | file_path、old_string、new_string、replace_all |
| list_dir | Listar el contenido de un directorio | path (obligatorio), recursive (si es recursivo) |
| search_files | Buscar por patrón de nombre de archivo | pattern (obligatorio, compatible con glob), path (directorio raíz de búsqueda) |
| search_content | Buscar texto en el contenido de los archivos | pattern (obligatorio, compatible con regex), path, file_types |
Cómo funciona edit_file: utiliza coincidencia exacta de subcadenas para localizar la posición de modificación. El Agent proporciona old_string (texto que realmente existe en el archivo), la herramienta lo encuentra y lo reemplaza con new_string. Si old_string coincide en varias posiciones, establezca replace_all: true para reemplazar todas las apariciones.
edit_file es el método de modificación de archivos más utilizado por el Agent: es más seguro que write_file porque si no se encuentra old_string, la operación falla con un error y no sobrescribe accidentalmente el archivo.
terminal — ejecución de comandos Shell
Permite al Agent ejecutar comandos Shell en el entorno backend especificado.
| Herramienta | Función | Parámetros clave |
|---|---|---|
| run_command | Ejecutar un solo comando Shell | command (obligatorio), workdir (directorio de trabajo), timeout (tiempo de espera en milisegundos) |
| run_script | Ejecutar un script Shell de varias líneas | script (obligatorio, contenido de script multilínea), workdir, timeout |
Los comandos se ejecutan en el backend de terminal configurado: local (máquina local), docker (contenedor), ssh (remoto), etc.
El resultado de la ejecución incluye stdout, stderr y el código de salida; el Agent puede usar esta información para determinar si el comando se ejecutó correctamente.
code — ejecución de código en sandbox
Ejecuta fragmentos de código en un sandbox aislado; admite Python, JavaScript y Bash.
| Herramienta | Función | Parámetros clave |
|---|---|---|
| execute_code | Ejecutar código en el sandbox | language (python/js/bash), code (obligatorio), timeout |
Diferencia con terminal: la herramienta code se ejecuta en un sandbox independiente y no puede acceder al sistema de archivos (a menos que se monte explícitamente); es adecuada para ejecutar código que no requiere interacción con archivos, como validación de algoritmos o procesamiento de datos.
computer — automatización de GUI de escritorio
Controla el ratón, el teclado y las capturas de pantalla del entorno de escritorio.
| Herramienta | Función |
|---|---|
| screenshot | Capturar la pantalla o una región específica |
| click | Hacer clic con el ratón en coordenadas específicas |
| type | Simular entrada de texto por teclado |
| scroll | Desplazar la rueda del ratón |
| move | Mover el ratón a coordenadas específicas |
El conjunto de herramientas computer se usa principalmente para pruebas de aplicaciones GUI y operaciones de automatización. Si su caso de uso no involucra aplicaciones de escritorio, puede deshabilitarlo para ahorrar tokens.
Conjunto de herramientas de red y contenido
Este tipo de conjunto de herramientas permite al Agent buscar en Internet, extraer contenido de páginas web y automatizar operaciones del navegador.
web — búsqueda web y extracción de contenido
El canal principal del Agent para obtener información externa.
| Herramienta | Función | Parámetros clave |
|---|---|---|
| web_search | Buscar contenido en Internet | query (obligatorio), num_results (cantidad de resultados) |
| web_extract | Extraer el contenido principal de una URL específica | url (obligatorio), extract_mode (auto/text/markdown) |
web_search devuelve una lista de resultados de búsqueda (título + URL + resumen). El Agent suele buscar primero y luego llama a web_extract en las páginas de interés para obtener contenido detallado.
Se debe configurar una API de búsqueda para poder usarlo. Admite múltiples proveedores:
Ejemplo
# Configurar el backend de búsqueda web
web:
search_provider: firecrawl # o brave, serpapi, tavily
# Establecer la clave API correspondiente en .env
# FIRECRAWL_API_KEY=fc-...
# o BRAVE_API_KEY=BS...
browser — automatización del navegador
Capacidad completa de control del navegador: navegar, hacer clic, rellenar formularios, capturar pantallas; operar la página web como una persona.
| Herramienta | Función | Parámetros clave |
|---|---|---|
| navigate | Navegar a una URL específica | url (obligatorio) |
| click | Hacer clic en un elemento de la página | selector (selector CSS o descripción de texto) |
| fill_form | Rellenar campos de formulario | fields (mapeo de nombre de campo a valor) |
| screenshot | Capturar la página actual | full_page (si es captura de página completa) |
| extract | Extraer datos estructurados de la página | selector、format(json/text) |
| execute_js | Ejecutar JavaScript en la página | code (obligatorio) |
El conjunto de herramientas browser requiere el respaldo de Playwright o un backend de navegador en la nube.
Iniciar una instancia del navegador con el conjunto de herramientas browser consume recursos adicionales. Si solo necesita extraer el contenido de texto de una página web, prefiera usar web_extract en lugar de browser extract: el primero es una solicitud HTTP ligera, mientras que el segundo requiere iniciar un navegador completo.
vision — análisis de imágenes
Permite al Agent «entender» el contenido de las imágenes.
| Herramienta | Función | Parámetros clave |
|---|---|---|
| analyze_image | Analizar el contenido de la imagen y generar una descripción | image_path o image_url (obligatorio), question (opcional, pregunta específica sobre la imagen) |
| describe_image | Generar una descripción textual detallada de la imagen | image_path o image_url (obligatorio) |
La herramienta vision envía la imagen a un LLM con soporte de visión (como claude-sonnet-4-6, gpt-4o), y el modelo reconoce y describe el contenido de la imagen.
audio — procesamiento de audio
Conversión de voz a texto y de texto a voz.
| Herramientas | Función | Parámetros clave |
|---|---|---|
| transcribe | Convertir archivos de audio a texto | audio_path (obligatorio), language (opcional) |
| tts | Convertir texto a archivos de voz | text (obligatorio), voice (selección de timbre), provider |
Conjunto de herramientas de capacidades de Agent
Este tipo de conjunto de herramientas gestiona el estado del propio Agente: memoria, habilidades y colaboración de subagentes.
memory — gestión de memoria
Leer y escribir memoria persistente y buscar en el historial entre sesiones.
| Herramientas | Función | Parámetros clave |
|---|---|---|
| memory | Gestionar memoria persistente (añadir, eliminar, modificar) | action(add/replace/remove)、target(memory/user)、content |
| session_search | Búsqueda de texto completo en sesiones históricas | query (obligatorio, compatible con sintaxis FTS5) |
La herramienta memory no tiene operación read: la memoria persistente ya se inyecta en el prompt del sistema al iniciar la sesión, por lo que el Agente no necesita leerla adicionalmente.
skills — gestión de habilidades
Cargar y gestionar habilidades de flujo de trabajo reutilizables.
| Herramientas | Función | Parámetros clave |
|---|---|---|
| skills_list | Listar todas las habilidades instaladas y sus descripciones | Ninguno (se invoca automáticamente al iniciar la sesión) |
| skill_view | Cargar el contenido completo de una habilidad | name (obligatorio), path (opcional, carga archivos secundarios de references) |
| skill_manage | Crear, modificar o eliminar archivos de habilidades | action、name、content |
delegation — delegación a subagentes
Derivar subagentes para ejecutar tareas en paralelo.
| Herramientas | Función | Parámetros clave |
|---|---|---|
| spawn_agent | Crear un único subagente para ejecutar una tarea | prompt (obligatorio), model (opcional) |
| spawn_parallel | Crear múltiples subagentes en paralelo | tasks (obligatorio, lista de tareas) |
Los subagentes tienen ventanas de contexto independientes y no contaminan el historial de conversación del Agente principal. Al finalizar la ejecución, devuelven un resumen de resultados.
kanban — tablero kanban para múltiples Agent
Sistema de colaboración estructurado para múltiples Agentes; debe habilitarse explícitamente (ni siquiera all/* lo activa automáticamente).
| Herramientas | Función |
|---|---|
| task_create | Crear una nueva tarea en el tablero |
| task_update | Actualizar el estado de la tarea (todo/in_progress/done) |
| task_list | Listar todas las tareas del tenant |
| task_assign | Asignar tareas a un Agente trabajador específico |
Kanban es el mecanismo central de colaboración multi-Profile: un Profile orquestador crea tareas y varios Profiles trabajadores las reclaman y ejecutan. Esto requiere que las puertas de enlace de múltiples Profiles se ejecuten simultáneamente.
Conjunto de herramientas de creación multimedia
Este tipo de conjunto de herramientas generalmente requiere una suscripción a Nous Portal o la clave API de terceros correspondiente.
image_gen — generación de imágenes con IA
Genera imágenes según descripciones textuales, compatible con 9 modelos.
| Herramientas | Función | Parámetros clave |
|---|---|---|
| generate_image | Generar imágenes según el prompt | prompt (obligatorio), model (flux/gpt-image/ideogram, etc.), size, style |
tts — conversión de texto a voz
Funcionalidad de TTS independiente del conjunto de herramientas audio, con una selección más amplia de proveedores.
| Herramientas | Función |
|---|---|
| text_to_speech | Convertir texto a archivos de voz |
| list_voices | Listar los timbres de voz disponibles |
Conjunto de herramientas personalizado
Puedes combinar conjuntos de herramientas existentes para crear conjuntos personalizados específicos del proyecto:
Ejemplo
# Define combinaciones de conjuntos de herramientas específicas del proyecto
custom_toolsets:
# Herramientas necesarias para un proyecto de ciencia de datos
data-science:
- file
- terminal
- code
- web
# Un proyecto de escritura pura solo necesita operaciones de archivos
writing:
- file
- web
- memory
# Un proyecto de operaciones requiere terminal + archivos, no necesita navegador
devops:
- file
- terminal
- memory
Al usarlo, especifica mediante--toolsetsel parámetro:
Ejemplo
hermes --toolsets data-science chat
# O establecerlo como predeterminado en la configuración del Profile
coder config set toolsets data-science
Flujo de invocación de herramientas
Comprender el flujo completo de una invocación de herramienta ayuda a entender el comportamiento del Agente y a solucionar problemas.
Una invocación completa de herramienta pasa por los siguientes pasos:
- El LLM decide invocar una herramienta al generar la respuesta, y emite el nombre de la herramienta y sus parámetros
- Se ejecuta el Middleware tool_request (puede modificar parámetros)
- Verificación de aprobación: si la herramienta es una operación peligrosa, según approvals.mode se decide si se muestra una confirmación
- Ejecución real de la herramienta
- Se ejecuta el Middleware tool_execution (puede modificar resultados)
- El Hook post_tool_call registra datos de telemetría
- El resultado de la ejecución se devuelve al LLM, que continúa generando la respuesta
Si tu Middleware modifica los parámetros de la herramienta, los parámetros modificados son la entrada para la aprobación y la ejecución real. Si en el Middleware se cortocircuita la ejecución (devolviendo un resultado personalizado), la herramienta real no se ejecuta.
Estadísticas de uso de herramientas
Saber qué herramientas se usan con frecuencia ayuda a optimizar la configuración del conjunto de herramientas y el consumo de Tokens.
En la sesión, consulta las estadísticas de invocación de herramientas de la sesión actual:
Ejemplo
/usage
# Ejemplo de salida:
# Uso de Tokens: entrada 12,340 | salida 5,678 | total 18,018
# Invocaciones de herramientas: read_file (15 veces) | edit_file (8 veces) |
# terminal (3 veces) | web_search (2 veces)
En escenarios de procesamiento por lotes, el archivo statistics.json registra estadísticas más detalladas:
Ejemplo
{
"total_tool_calls": 1523,
"tools": {
"read_file": {"count": 520, "success": 510, "failure": 10},
"edit_file": {"count": 380, "success": 375, "failure": 5},
"terminal": {"count": 290, "success": 270, "failure": 20},
"web_search": {"count": 180, "success": 178, "failure": 2}
},
"avg_tool_calls_per_turn": 2.4,
"most_common_tool_sequence": [
"read_file", "edit_file", "terminal"
]
}