¿Le pediste a Hermes que buscara la misma consulta cuatro veces? Una caché de resultados de 20 minutos evita que las búsquedas repetidas vuelvan a facturar al proveedor


Envías a Hermes a investigar un tema y pone en marcha un «escuadrón de búsqueda» — varios subagentes trabajando en paralelo. Todos acaban buscando la misma palabra clave: una vez, dos, cuatro… y si estás en un proveedor de búsqueda de pago, eso son cargos reales, duplicados. O extrajo una página hace diez minutos y ahora vuelve a extraer la misma URL desde cero. PR #94618, fusionado el 25 de agosto, añade una caché exactamente para estos casos: las llamadas repetidas a web_search y web_extract en un plazo de 20 minutos dejan de volver a facturar al proveedor.

Qué se cachea: deduplicación de búsquedas + deduplicación de extracciones

El cambio afecta a dos herramientas:

  • web_search: la misma consulta en un plazo de 20 minutos golpea la caché en lugar de la API de búsqueda del proveedor. Las búsquedas idénticas concurrentes también se fusionan (single-flight) — el primer llamador paga, el resto comparte la respuesta.
  • web_extract: la misma URL en un plazo de 20 minutos se sirve desde disco en lugar de volver a extraerse. La caché de extracción es entre procesos: CLI, gateway, trabajos cron y subagentes la comparten.

Las cifras de validación son fáciles de apreciar: en las pruebas oficiales, buscar la misma consulta dos veces pasó de 2 llamadas al proveedor a 1; cuatro búsquedas idénticas concurrentes, de 4 a 1; extraer la misma URL dos veces, de 2 a 1.

Configuración: dos claves, activadas por defecto

web:
  cache_enabled: true        # activada por defecto
  cache_ttl_minutes: 20      # TTL, rango 1–1440 minutos

O mediante la CLI:

hermes config set web.cache_ttl_minutes 60   # estira el TTL hasta una hora
hermes config set web.cache_enabled false    # desactiva el cacheo por completo

Diseño de seguridad: la caché nunca se salta los controles

Cachear suena simple, pero la implementación acierta varios detalles fáciles de equivocar:

  • La caché va después de cada control de seguridad: detección de secretos en URL, riesgo de SSRF (server-side request forgery), filtros de política, resolución del proveedor — todo se ejecuta primero, y luego participa la caché. Un acierto de caché solo se salta la petición de red; nunca se salta una compuerta de seguridad;
  • Solo se cachean respuestas correctas: las búsquedas fallidas no dejan entrada en la caché; las respuestas de rescate sin clave nunca se cachean — el rescate de un solo uso sigue siendo de un solo uso;
  • Las entradas de caché se trocean por llamador: los resultados de búsqueda se agrupan en 10/20/50/100, de modo que limit=5 y limit=8 comparten una entrada, recibiendo cada llamador la cantidad solicitada;
  • Las páginas sobredimensionadas no se indexan: las páginas de más de 2MB (el tope en disco) no entran en el índice de la caché, evitando que la caché se coma el disco.

Dónde se notan los ahorros y dónde no

Mayores ganancias: investigación con subagentes en paralelo (la misma consulta buscada por muchos agentes); extracciones repetidas en una ventana corta (conversaciones de varios turnos que re-referencian la misma página); flujos mixtos de cron y manuales (comparten la misma caché de extracción).

Apenas perceptible: flujos de trabajo donde cada consulta es nueva y cada URL se obtiene una vez — el cacheo no aporta beneficio, pero tampoco coste (una búsqueda local por llamada).

Resumen

Una caché de resultados de 20 minutos convierte «buscar, extraer y facturar repetidamente» en «pagar una vez, compartir con todos». Activada por defecto, TTL configurable, controles de seguridad primero — el tipo de cambio que no notas hasta que la factura mejora. Para más maquinaria de ahorro de Hermes, consulta nuestra guía de cinco canales de búsqueda gratuitos y el recopilatorio de cuatro trucos ocultos; el uso completo de las herramientas web está en la referencia del comando hermes.