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.

HerramientaFunciónParámetros clave
read_fileLeer el contenido de un archivofile_path (obligatorio), offset (línea inicial), limit (límite de líneas)
write_fileCrear o sobrescribir un archivofile_path (obligatorio), content (obligatorio)
edit_fileReemplazar texto en un archivo con precisiónfile_path、old_string、new_string、replace_all
list_dirListar el contenido de un directoriopath (obligatorio), recursive (si es recursivo)
search_filesBuscar por patrón de nombre de archivopattern (obligatorio, compatible con glob), path (directorio raíz de búsqueda)
search_contentBuscar texto en el contenido de los archivospattern (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.

HerramientaFunciónParámetros clave
run_commandEjecutar un solo comando Shellcommand (obligatorio), workdir (directorio de trabajo), timeout (tiempo de espera en milisegundos)
run_scriptEjecutar un script Shell de varias líneasscript (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.

HerramientaFunciónParámetros clave
execute_codeEjecutar código en el sandboxlanguage (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.

HerramientaFunción
screenshotCapturar la pantalla o una región específica
clickHacer clic con el ratón en coordenadas específicas
typeSimular entrada de texto por teclado
scrollDesplazar la rueda del ratón
moveMover 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.

HerramientaFunciónParámetros clave
web_searchBuscar contenido en Internetquery (obligatorio), num_results (cantidad de resultados)
web_extractExtraer el contenido principal de una URL específicaurl (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

# Ruta del archivo: ~/.hermes/config.yaml
# 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.

HerramientaFunciónParámetros clave
navigateNavegar a una URL específicaurl (obligatorio)
clickHacer clic en un elemento de la páginaselector (selector CSS o descripción de texto)
fill_formRellenar campos de formulariofields (mapeo de nombre de campo a valor)
screenshotCapturar la página actualfull_page (si es captura de página completa)
extractExtraer datos estructurados de la páginaselector、format(json/text)
execute_jsEjecutar JavaScript en la páginacode (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.

HerramientaFunciónParámetros clave
analyze_imageAnalizar el contenido de la imagen y generar una descripciónimage_path o image_url (obligatorio), question (opcional, pregunta específica sobre la imagen)
describe_imageGenerar una descripción textual detallada de la imagenimage_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.

HerramientasFunciónParámetros clave
transcribeConvertir archivos de audio a textoaudio_path (obligatorio), language (opcional)
ttsConvertir texto a archivos de voztext (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.

HerramientasFunciónParámetros clave
memoryGestionar memoria persistente (añadir, eliminar, modificar)action(add/replace/remove)、target(memory/user)、content
session_searchBúsqueda de texto completo en sesiones históricasquery (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.

HerramientasFunciónParámetros clave
skills_listListar todas las habilidades instaladas y sus descripcionesNinguno (se invoca automáticamente al iniciar la sesión)
skill_viewCargar el contenido completo de una habilidadname (obligatorio), path (opcional, carga archivos secundarios de references)
skill_manageCrear, modificar o eliminar archivos de habilidadesaction、name、content

delegation — delegación a subagentes

Derivar subagentes para ejecutar tareas en paralelo.

HerramientasFunciónParámetros clave
spawn_agentCrear un único subagente para ejecutar una tareaprompt (obligatorio), model (opcional)
spawn_parallelCrear múltiples subagentes en paralelotasks (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).

HerramientasFunción
task_createCrear una nueva tarea en el tablero
task_updateActualizar el estado de la tarea (todo/in_progress/done)
task_listListar todas las tareas del tenant
task_assignAsignar 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.

HerramientasFunciónParámetros clave
generate_imageGenerar imágenes según el promptprompt (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.

HerramientasFunción
text_to_speechConvertir texto a archivos de voz
list_voicesListar los timbres de voz disponibles

Conjunto de herramientas personalizado

Puedes combinar conjuntos de herramientas existentes para crear conjuntos personalizados específicos del proyecto:

Ejemplo

# Ruta del archivo: ~/.hermes/config.yaml
# 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

# Usar un conjunto de herramientas personalizado al iniciar
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:

  1. El LLM decide invocar una herramienta al generar la respuesta, y emite el nombre de la herramienta y sus parámetros
  2. Se ejecuta el Middleware tool_request (puede modificar parámetros)
  3. 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
  4. Ejecución real de la herramienta
  5. Se ejecuta el Middleware tool_execution (puede modificar resultados)
  6. El Hook post_tool_call registra datos de telemetría
  7. 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

# Consultar las estadísticas de uso de herramientas de la sesión actual
/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

// Ruta del archivo: data/my_first_run/statistics.json
{
  "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"
  ]
}
Otras extensiones