Un comando abre toda una sesión: hermes chat -q ahora permanece interactivo en una TTY

Eres de esas personas a las que les gusta tener Hermes integrado en cada lanzador: pulsas una hotkey, aparece una terminal con un prompt precargado, das a enter y el trabajo empieza. Ese camino solía estar bloqueado — hermes chat -q "ordena este directorio" respondía obedientemente a una pregunta y salía, y la parte de «seguir preguntando después de la respuesta» simplemente no existía. Querer una sesión interactiva significaba ejecutar -q una vez para guardar la sesión y luego hermes chat -r para reanudarla — dos pasos, frágiles y a menudo con contexto perdido. El cambio fusionado el 28 de agosto (PR #97121) elimina ese viejo camino: en una TTY real, -q ahora inicia una sesión interactiva viva, el primer mensaje entra literalmente, la respuesta no termina la sesión y puedes seguir conversando.
Por qué antes era tan incómodo
-q/--query fue diseñado como una «consulta de un solo disparo»: pasas un prompt, Hermes responde y sale. Eso lo hacía perfecto para scripts y automatización — hermes chat -q "resume los commits de hoy" imprime su salida y termina, sin dejar ninguna terminal ocupada.
El coste: para conseguir «entrar en modo interactivo con una pregunta precargada» (una experiencia que otros agentes de código tienen desde hace años) tenías que montar dos pasos a mano:
# Paso uno: ejecuta una vez y captura el archivo de sesión
hermes chat -q "tidy up this directory" > /tmp/usage.txt
# Paso dos: reanuda esa sesión para seguir conversando
hermes chat -r /tmp/usage.txt
Torpe y frágil: el archivo de uso intermedio es fácil de perder, y la sesión reanudada no siempre llevaba el contexto que querías. Proyectos de terminal de agentes guiados por prompts, como Omarchy, estaban literalmente a punto de construir un workaround para esto (basecamp/omarchy#8705) — hasta que la CLI oficial integró el patrón.
Nuevo comportamiento: -q inicia una sesión viva en una TTY
Tras el cambio, en una TTY real:
hermes chat -q "fix this bug in the parser"
El primer mensaje se envía literalmente como turno de apertura de la sesión (un centinela _SeededQueryMessage), y luego entras en el bucle interactivo normal — sigue escribiendo, haz follow-ups, usa slash commands, exactamente igual que si hubieras abierto hermes chat.
«Literalmente» es la palabra clave: el mensaje inicial nunca se interpreta. No se tratará como un slash command, no disparará escapes de shell !, no hará sustitución de comandos $(...) ni se gestionará como un file drop. Coincide con la semántica existente de --oneshot: lo que le des al modelo es lo que recibe, limpio y simple.
Tanto la CLI clásica como la TUI soportan esto — el lado TUI pasa por el flujo de envío STARTUP_QUERY → submitLite, con un comportamiento idéntico.
¿Quieres el comportamiento antiguo? --oneshot lo dice explícitamente
Si de verdad quieres la semántica de responder-y-salir de un solo disparo, la nueva flag hermes chat --oneshot (nombre interno oneshot_exit) es el nombre oficial del comportamiento antiguo:
hermes chat --oneshot -q "answer only this one question"
Sin --oneshot:
- TTY real +
-q→ inicia una sesión interactiva (nuevo comportamiento); - no-TTY (pipes, scripts) → degrada automáticamente a responder-y-salir, así la automatización nunca se cuelga;
- con
-Q/--quiet→ también responder-y-salir, el modo silencioso no cambia.
En otras palabras: los scripts y la automatización no se ven afectados en absoluto; el comportamiento solo cambia cuando hay un humano sentado ante una terminal — que es exactamente el propósito de este cambio.
Usos típicos
Launchers / hotkeys: ata hermes chat -q "abre la sesión de ayer y continúa lo que no terminamos" a una hotkey — la terminal que aparece ya es una sesión interactiva lista para trabajar.
Flujos precargados: escribe un wrapper script que reciba un directorio como argumento, construya un prompt y haga exec a hermes chat -q "$PROMPT" — el usuario obtiene una sesión que ya sabe qué hacer, no un prompt en blanco y frío.
La automatización no se toca: los cron scripts y el CI pueden seguir usando hermes chat -q ... | grep ... o -Q exactamente igual que antes.
Actualizar y verificar
Este cambio se fusionó el 28 de agosto y vive actualmente en main de upstream — todavía no ha llegado a ningún release tag. Para usarlo ahora tendrías que compilar desde el source o desde main. Cuando salga en la próxima release, hermes update te llevará hasta allí.
Verificación fácil: ejecuta hermes chat -q "¿Cuánto es 1+1?" en una terminal. Si el prompt se queda y puedes seguir escribiendo después de la respuesta, el nuevo comportamiento está activo; si vuelve al shell, estás en una versión antigua.
Lecturas recomendadas
- ¿Quieres la superficie completa de comandos de Hermes chat? Consulta la referencia del comando hermes-chat;
- ¿Te interesa guardar/reanudar/exportar sesiones? Lee la guía de exportación de sesiones;
- ¿Planeas flujos de automatización? Echa un vistazo a la guía completa de automatización con cron.