hermes chat -c: continúa tu propia sesión por terminal o créala sobre la marcha

Tienes dos paneles de tmux abiertos: el de la izquierda depurando un incidente de Redis en producción, el de la derecha esbozando el diseño de una nueva API. Te apartas a mitad de faena, vuelves y tecleas hermes chat -c para retomar donde lo dejaste — pero ambos paneles acaban arrastrados a la misma conversación: errores de Redis a un lado, firmas de interfaces al otro. Caos total.
Ese era el comportamiento de -c antes de v0.20.2: siempre reanudaba la sesión más reciente a nivel global, sin saber en qué terminal estabas realmente. Eso acaba de cambiar: Hermes ahora mantiene un pequeño registro para cada terminal.
Breadcrumbs de terminal: cada panel tiene su propia memoria de sesión
v0.20.2 introduce los terminal breadcrumbs (PR #87346): la CLI registra «¿en qué sesión chateé por última vez en ESTA terminal?» por terminal — tty real, panel de tmux, ventana de kitty, panel de wezterm, panel de Zellij o sesión de Windows Terminal.
Los breadcrumbs viven en $HERMES_HOME/terminal-sessions/, un archivo JSON por terminal que guarda el ID de sesión, el directorio de trabajo y la marca de tiempo. Las escrituras son atómicas (archivo temporal + os.replace), best-effort y nunca lanzan excepciones; los registros de más de 30 días se ignoran al leer y se podan de forma oportunista al escribir. La identidad de la terminal se deduce en orden de prioridad: ruta tty real → ZELLIJ_PANE_ID → TMUX_PANE → KITTY_WINDOW_ID → WEZTERM_PANE → TERM_SESSION_ID → WT_SESSION — y si no hay ninguna disponible, los breadcrumbs se omiten por completo.
Así que ahora:
# in pane 1
hermes chat -c # resumes pane 1's own last session (the Redis one)
# in pane 2
hermes chat -c # resumes pane 2's own last session (the API one)
Cada panel vuelve a su propia conversación. Para reanudar por nombre, solo tienes que nombrarla:
hermes chat -c "redis debug"
La búsqueda por nombre ahora falla ruidosamente
Con un nombre, -c busca por título o por ID de sesión. Antes de v0.20.2, un fallo era un no-op silencioso — en un script parecía una reanudación exitosa, pero en realidad estabas en una conversación nueva sin nada de tu contexto.
Ahora (PR #87706) una coincidencia fallida imprime un error en stderr al instante y sale con código 1, además de una pista:
No session found matching 'redis debug'.
Use 'hermes sessions list' to see available sessions, or pass
--create-if-missing to start a new session with that title.
Para quienes escriben scripts esto es enorme: el fallo silencioso se convierte en un fallo detectable. Los trabajos de CI y las tareas cron por fin reciben feedback explícito cuando la sesión objetivo no existe.
–create-if-missing: créala si no existe
Con la nueva bandera --create-if-missing, «reanudar por nombre» mejora a «reanudar por nombre, creándola si hace falta»:
hermes chat -c "redis debug" --create-if-missing
Cuando nada coincide, la CLI crea una sesión nueva de cero titulada «redis debug» y te deja dentro. El ID de sesión usa la forma estándar timestamp_UUID-short, y el título se registra con procedencia de usuario — el auto-titulador no sobrescribirá el nombre que elegiste a mano.
Esta combinación es especialmente valiosa para los llamadores programáticos: un plugin o script que quiera «enviar a este hilo con nombre, creándolo si hace falta» por fin tiene una primitiva determinista de una sola línea. Ten en cuenta que --create-if-missing solo tiene sentido con un -c con nombre; un -c a secas no tiene nada que crear, y la CLI te pide que proporciones un nombre.
También desde el escritorio
El menú de sesiones de la app de escritorio v0.20.2 también puede «reanudar en tu propia terminal» — elige cualquier sesión y tráela de vuelta a una terminal real (#86338, fusionado el 14/8). Combinado con hermes sessions list, el flujo es fluido:
hermes sessions list # find the target session
hermes chat -c "target title" # resume it
hermes chat -c "new title" --create-if-missing # or just create one
Resumen
- Breadcrumbs: cada terminal recuerda su propia última sesión;
-cya no mezcla paneles en una sola conversación; - Fallo ruidoso: las búsquedas por nombre que fallan imprimen en stderr y salen con código 1 — detectable desde scripts;
- Auto-creación:
--create-if-missingconvierte «enviar a un hilo con nombre, creándolo si hace falta» en una línea; - Combínalo: el escritorio puede devolver una sesión a tu terminal, y
hermes sessions listes el punto de entrada para encontrarla.
Para sacar más partido a tus sesiones, consulta la guía de exportación de sesiones /save y multi-profile multi-instance; la tabla completa de banderas de -c está en la referencia del comando hermes chat. Todo esto está disponible por defecto tras hermes update a v0.20.2.