Los archivos temporales de la sesión ya no reventarán tu disco RAM: terminal.temp_dir y limpieza automática cada 72 horas

Es sábado por la noche y has dejado que Hermes ejecute un lote de trabajo: procesos en segundo plano escribiendo logs, un sandbox de ejecución de código soltando resultados intermedios, varias llamadas a herramientas volcando salida a disco temporalmente. Te despiertas a las 3 de la madrugada con una alerta de «disco lleno» — y el culpable no es tu directorio de proyecto, sino /tmp, el directorio en el que nunca piensas. No es un caso límite: muchas distribuciones (especialmente las basadas en Arch) montan /tmp como un tmpfs respaldado por RAM cuya capacidad es solo una fracción de tu memoria física. En cuanto Hermes lanza unos pocos procesos en segundo plano, ese disco RAM se llena — y llegan fallos de escritura misteriosos, procesos que se cuelgan y tareas abortadas. El arreglo fusionado el 28 de agosto (PR #97205) lo resuelve de una vez: los archivos temporales de la sesión ahora van por defecto al disco real, y tienes una clave de config para reubicarlos cuando quieras.
Causa raíz: archivos temporales en un tmpfs
Hermes genera un lote de «artefactos temporales de sesión» mientras trabaja: archivos log/pid/exit de procesos en segundo plano (el trío hermes_bg_*), sandboxes de ejecución de código y resultados de herramientas volcados a disco. Antes de este cambio, esos archivos iban por defecto a /tmp.
En muchas distribuciones de Linux, /tmp no es un directorio real en disco — es un tmpfs: los datos viven en RAM, las lecturas y escrituras son rápidas, pero la capacidad es pequeña (normalmente la mitad de la memoria física o menos) y todo desaparece al reiniciar. Cuando Hermes trabaja a plena carga, los procesos en segundo plano se acumulan y el disco RAM se agota en cuestión de minutos. Peor aún: los fallos de escritura rara vez fallan rápido — aparecen a mitad de tarea de formas confusas.
La descripción del mantenedor es contundente: «muchas distribuciones (las basadas en Arch, y nuestras propias máquinas) montan /tmp como un tmpfs pequeño respaldado por RAM, y Hermes lo llena bajo carga». Hasta las propias máquinas del equipo oficial sufren esto.
El arreglo: archivos temporales en almacenamiento real por defecto
El orden de resolución tras el cambio es:
- La clave de config
terminal.temp_dir(explícita, máxima prioridad) - Las variables de entorno
TMPDIR/TMP/TEMP ~/.hermes/cache/terminal(nuevo valor por defecto)/tmp(respaldo de último recurso)
Así que, salvo que configures algo, los archivos temporales de la sesión ahora aterrizan en el directorio de caché propio de Hermes — almacenamiento real, la capacidad deja de ser un problema. La rama de Windows replica el mismo valor por defecto, así que el comportamiento es consistente en todas las plataformas.
Limpieza automática cada 72 horas
El cambio también trae un podador cleanup_terminal_temp_cache(): los archivos temporales con más de 72 horas se borran automáticamente. Incluye un detalle bien pensado — el trío hermes_bg_* (log / pid / exit) envejece como grupo: el archivo .log reciente de un servicio en segundo plano activo «protege» a sus archivos .pid y .exit, aparentemente viejos, de ser borrados. Así, un servicio que sigue corriendo nunca pierde su archivo pid y se vuelve inrastreable.
¿Prefieres otra ubicación? Dos opciones
Si prefieres guardar los archivos temporales de la sesión en otro sitio (un SSD dedicado, un volumen de datos grande), elige cualquiera de las dos opciones.
Opción 1: la clave de config terminal.temp_dir
# config.yaml
terminal:
temp_dir: /var/hermes-tmp
Opción 2: la variable de entorno TERMINAL_TEMP_DIR
export TERMINAL_TEMP_DIR=/var/hermes-tmp
La clave de config tiene prioridad sobre la variable de entorno, y ambas la tienen sobre el valor por defecto. Un aviso: si apuntas los archivos temporales a un lugar explícito, ese directorio es cosa tuya — la limpieza automática solo se aplica al valor por defecto gestionado ~/.hermes/cache/terminal, nunca a tu ubicación personalizada (el comentario en el código es explícito: «las ubicaciones de terminal.temp_dir señaladas por el usuario son responsabilidad del usuario»).
Qué significa esto para ti
- Usuarios de Arch / otros tmpfs: te beneficias inmediatamente tras actualizar — el valor por defecto ya se mueve al disco real, sin necesidad de config;
- Quienes quieren control fino: ahora existen una clave de config y una variable de entorno, así que decides tú dónde viven los archivos temporales;
- Quienes temen la acumulación en disco: la limpieza automática cada 72 horas con envejecimiento por grupos evita que los archivos se amontonen.
El cambio también corrige en silencio un dolor de larga data: cuando /tmp se llenaba, los sandboxes que corrían dentro de una sesión fallaban sin avisar — esos «fallos de escritura misteriosos» ahora son mucho menos comunes. Si tu Hermes sigue en una versión antigua, ejecuta hermes update para pasar a la última build que incluye este cambio.
Lecturas recomendadas
- ¿Curioso sobre los demás controles de los backends de terminal de Hermes? Consulta la referencia de comandos;
- ¿Te interesan los procesos en segundo plano y la gestión de sandboxes? Lee la guía de plugins de terminal backend;
- ¿Quieres una visión sistemática de la configuración de Hermes? Echa un vistazo a la guía de ajuste para tareas largas.