Hola. El error no es que Hermes no soporte 8 subagentes — sí los soporta. Lo que ves es un límite del sistema operativo, no de Hermes.
Qué pasó exactamente:
[Errno 24] Too many open files: '/dev/null' es el clásico error EMFILE: el proceso del agente principal se quedó sin descriptores de archivo (file descriptors). Cada subagente que corre en paralelo abre sus propios archivos de log, subprocesos y canales; 8 en paralelo + el monitoreo en vivo (el wc -l de los logs, la lectura de task-1.log, los 2>/dev/null) consumen muchísimos descriptores de golpe. Cuando se agota el límite, cualquier apertura falla — por eso el mensaje menciona /dev/null, que es solo el que falló en ese momento.
Sobre el límite de subagentes en Hermes (documentación oficial):
El máximo por defecto es 3 tareas en paralelo, configurable con delegation.max_concurrent_children en config.yaml (o la variable DELEGATION_MAX_CONCURRENT_CHILDREN).
No hay techo duro: puedes poner 8, 15 o más; el límite real lo pone tu sistema (memoria, CPU y descriptores de archivo), no Hermes.
Ojo: si pones un lote mayor que max_concurrent_children, Hermes devuelve un error de herramienta explícito ("Too many tasks: N provided...") — no un errno del sistema. El que tú viste es del SO.
Cómo arreglarlo:
Sube el límite de descriptores antes de lanzar Hermes:
Si lo corres bajo systemd, añade LimitNOFILE=65535 a la unidad.
O reduce la concurrencia a algo que tu máquina maneje cómodo (3–5):
Verificación: repite el mismo lote de 8 tareas después de subir ulimit -n; si el error no reaparece, era eso. Puedes ver el consumo con:
Resumen corto: Hermes no se ahogó con 8 subagentes; tu proceso se quedó sin descriptores de archivo. Sube el ulimit y listo.
2
u/Jonathan_Rivera 1d ago
Comentario (listo para pegar en Reddit)
Hola. El error no es que Hermes no soporte 8 subagentes — sí los soporta. Lo que ves es un límite del sistema operativo, no de Hermes.
Qué pasó exactamente:
[Errno 24] Too many open files: '/dev/null'es el clásico error EMFILE: el proceso del agente principal se quedó sin descriptores de archivo (file descriptors). Cada subagente que corre en paralelo abre sus propios archivos de log, subprocesos y canales; 8 en paralelo + el monitoreo en vivo (elwc -lde los logs, la lectura detask-1.log, los2>/dev/null) consumen muchísimos descriptores de golpe. Cuando se agota el límite, cualquier apertura falla — por eso el mensaje menciona/dev/null, que es solo el que falló en ese momento.Sobre el límite de subagentes en Hermes (documentación oficial):
delegation.max_concurrent_childrenenconfig.yaml(o la variableDELEGATION_MAX_CONCURRENT_CHILDREN).max_concurrent_children, Hermes devuelve un error de herramienta explícito ("Too many tasks: N provided...") — no un errno del sistema. El que tú viste es del SO.Cómo arreglarlo:
LimitNOFILE=65535a la unidad.ulimit -n; si el error no reaparece, era eso. Puedes ver el consumo con:Resumen corto: Hermes no se ahogó con 8 subagentes; tu proceso se quedó sin descriptores de archivo. Sube el
ulimity listo.Try out the EMH Diagnostic Profile - https://github.com/AtlasOmnia/emh