hermes chat -c: Continue Sua Própria Sessão por Terminal, ou Crie-a na Hora

Você mantém dois painéis tmux abertos: o da esquerda depurando um incidente de Redis em produção, o da direita esboçando o design de uma nova API. Você se afasta no meio do fluxo, volta e digita hermes chat -c para continuar de onde parou — só que os dois painéis são arrastados para a mesma conversa: erros de Redis de um lado, assinaturas de interface do outro. Caos total.
Esse era o comportamento do -c antes da v0.20.2: ele sempre retomava a sessão globalmente mais recente, sem ideia de em qual terminal você estava. Isso acabou de mudar — o Hermes agora mantém um pequeno registro para cada terminal.
Breadcrumbs de terminal: cada painel tem sua própria memória de sessão
v0.20.2 introduz os breadcrumbs de terminal (PR #87346): o CLI registra “em qual sessão conversei por último, NESTE terminal” por terminal — tty real, painel tmux, janela kitty, painel wezterm, painel Zellij ou sessão do Windows Terminal.
Os breadcrumbs ficam em $HERMES_HOME/terminal-sessions/, um arquivo JSON por terminal com o ID da sessão, o diretório de trabalho e o timestamp. As gravações são atômicas (arquivo temporário + os.replace), best-effort, nunca lançam exceções; registros com mais de 30 dias são ignorados na leitura e podados oportunisticamente na gravação. A identidade do terminal é derivada em ordem de prioridade: caminho real do tty → ZELLIJ_PANE_ID → TMUX_PANE → KITTY_WINDOW_ID → WEZTERM_PANE → TERM_SESSION_ID → WT_SESSION — e se nenhum estiver disponível, os breadcrumbs são simplesmente ignorados.
Então, agora:
# no painel 1
hermes chat -c # retoma a última sessão do painel 1 (a do Redis)
# no painel 2
hermes chat -c # retoma a última sessão do painel 2 (a da API)
Cada painel volta para a sua própria conversa. Para retomar por nome, basta dar um nome:
hermes chat -c "redis debug"
A busca por nome agora falha de forma ruidosa
Com um nome, o -c busca por título ou ID de sessão. Antes da v0.20.2, um erro de correspondência era um no-op silencioso — em um script parecia uma retomada bem-sucedida, mas na verdade você estava em uma conversa nova, sem nenhum do seu contexto.
Agora (PR #87706) uma busca sem correspondência imprime um erro no stderr imediatamente e sai com código 1, além de uma dica:
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 quem escreve scripts, isso é enorme: a falha silenciosa vira uma falha detectável. Jobs de CI e tarefas cron finalmente recebem feedback explícito quando a sessão alvo não existe.
–create-if-missing: crie se não existir
Com a nova flag --create-if-missing, “retomar por nome” evolui para “retomar por nome, criando se necessário”:
hermes chat -c "redis debug" --create-if-missing
Quando nada corresponde, o CLI cria uma sessão nova em folha intitulada “redis debug” e já entra nela. O ID da sessão usa o formato padrão timestamp_UUID-short, e o título é registrado com procedência do usuário — o auto-titulador não vai sobrescrever o nome que você escolheu manualmente.
Essa combinação é especialmente valiosa para chamadas programáticas: um plugin ou script que quer “enviar para este thread nomeado, criando-o se necessário” finalmente tem uma primitiva determinística de uma linha. Note que --create-if-missing só faz sentido com um -c nomeado; um -c puro não tem nada para criar, e o CLI pede que você forneça um nome.
Também a partir do desktop
O menu de sessões do app de desktop v0.20.2 também pode “retomar na sua própria terminal” — escolha qualquer sessão e traga-a de volta para um terminal real (#86338, mesclado em 14/8). Combinado com hermes sessions list, o fluxo é suave:
hermes sessions list # encontre a sessão alvo
hermes chat -c "target title" # retome-a
hermes chat -c "new title" --create-if-missing # ou apenas crie uma
Resumo
- Breadcrumbs: cada terminal lembra sua própria última sessão; o
-cnão mistura mais painéis em uma única conversa; - Falha ruidosa: buscas por nome sem correspondência imprimem no stderr e saem com código 1 — detectável por scripts;
- Criação automática: o
--create-if-missingtransforma “enviar para um thread nomeado, criando se necessário” em uma linha; - Combine os dois: o desktop pode devolver uma sessão ao seu terminal, e
hermes sessions listé o ponto de entrada para encontrá-la.
Para tirar mais proveito das suas sessões, veja o guia de exportação de sessão /save e multi-profile multi-instance; a tabela completa das flags do -c está na referência do comando hermes chat. Tudo isso está disponível por padrão após hermes update para a v0.20.2.