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.

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_IDTMUX_PANEKITTY_WINDOW_IDWEZTERM_PANETERM_SESSION_IDWT_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; -c ya 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-missing convierte «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 list es 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.