hermes chat -c: Deine eigene Sitzung pro Terminal fortsetzen — oder spontan anlegen


Du hast zwei tmux-Panes offen: links debuggt du einen Redis-Vorfall in Produktion, rechts skizzierst du ein neues API-Design. Du unterbrichst mitten im Flow, kommst zurück und tippst hermes chat -c, um da weiterzumachen, wo du aufgehört hast — nur dass beide Panes in dieselbe Konversation gezerrt werden: Redis-Fehler auf der einen Seite, Interface-Signaturen auf der anderen. Komplettes Chaos.

Das war das Verhalten von -c vor v0.20.2: Es setzte immer die global zuletzt genutzte Sitzung fort, ohne zu wissen, in welchem Terminal du dich gerade befindest. Das hat sich gerade geändert — Hermes führt jetzt für jedes Terminal ein kleines Register.

Terminal-Breadcrumbs: Jeder Pane hat sein eigenes Sitzungsgedächtnis

v0.20.2 führt Terminal-Breadcrumbs ein (PR #87346): Das CLI zeichnet pro Terminal auf, „in welcher Sitzung habe ich zuletzt in DIESEM Terminal gechattet“ — echtes tty, tmux-Pane, kitty-Fenster, wezterm-Pane, Zellij-Pane oder Windows-Terminal-Sitzung.

Die Breadcrumbs liegen in $HERMES_HOME/terminal-sessions/, eine JSON-Datei pro Terminal mit Session-ID, Arbeitsverzeichnis und Zeitstempel. Schreibvorgänge sind atomar (Temp-Datei + os.replace), best effort und werfen nie Fehler; Einträge, die älter als 30 Tage sind, werden beim Lesen ignoriert und beim Schreiben nebenbei aufgeräumt. Die Terminal-Identität wird in Prioritätsreihenfolge abgeleitet: echter tty-Pfad → ZELLIJ_PANE_IDTMUX_PANEKITTY_WINDOW_IDWEZTERM_PANETERM_SESSION_IDWT_SESSION — und ist keine verfügbar, werden Breadcrumbs komplett übersprungen.

Also jetzt:

# 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)

Jeder Pane kehrt in seine eigene Konversation zurück. Um per Namen fortzusetzen, gib ihm einfach einen Namen:

hermes chat -c "redis debug"

Benannte Lookups scheitern jetzt laut

Mit einem Namen matcht -c über Titel oder Session-ID. Vor v0.20.2 war ein Fehlschlag ein stiller No-op — in einem Skript sah es wie eine erfolgreiche Fortsetzung aus, aber in Wirklichkeit saßt du in einer frischen Konversation ohne deinen gesamten Kontext.

Jetzt (PR #87706) druckt ein fehlgeschlagener Match sofort einen Fehler auf stderr und beendet sich mit Exit-Code 1, plus einem Hinweis:

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.

Für Skript-Autoren ist das riesig: Aus stillem Scheitern wird erkennbares Scheitern. CI-Jobs und Cron-Aufgaben bekommen endlich explizites Feedback, wenn die Ziel-Sitzung nicht existiert.

–create-if-missing: Anlegen, wenn es fehlt

Mit dem neuen --create-if-missing-Flag wird aus „per Name fortsetzen“ ein „per Name fortsetzen und bei Bedarf anlegen“:

hermes chat -c "redis debug" --create-if-missing

Wenn nichts matcht, legt das CLI eine brandneue Sitzung mit dem Titel „redis debug“ an und setzt dich hinein. Die Session-ID verwendet die übliche Form timestamp_UUID-short, und der Titel wird mit User-Provenance gespeichert — der Auto-Titler überschreibt deinen manuell gewählten Namen nicht.

Diese Kombination ist besonders wertvoll für programmatische Aufrufer: Ein Plugin oder Skript, das „an diesen benannten Thread senden, bei Bedarf anlegen“ will, hat endlich ein einzeiliges, deterministisches Primitiv. Beachte, dass --create-if-missing nur mit einem benannten -c sinnvoll ist; ein nacktes -c hat nichts anzulegen, und das CLI sagt dir, dass du einen Namen angeben sollst.

Auch vom Desktop aus

Auch das Sitzungsmenü der v0.20.2-Desktop-App kann „in deinem eigenen Terminal fortsetzen“ — wähle eine beliebige Sitzung und bring sie in ein echtes Terminal zurück (#86338, gemergt am 14.8.). Zusammen mit hermes sessions list läuft der Workflow flüssig:

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

Zusammenfassung

  • Breadcrumbs: Jedes Terminal merkt sich seine eigene letzte Sitzung; -c mischt Panes nicht mehr in eine Konversation;
  • Lautes Scheitern: Benannte Lookups ohne Treffer drucken auf stderr und beenden sich mit Exit 1 — für Skripte erkennbar;
  • Auto-Anlage: --create-if-missing macht aus „an einen benannten Thread senden, bei Bedarf anlegen“ einen Einzeiler;
  • Kombinieren: Der Desktop kann eine Sitzung an dein Terminal zurückgeben, und hermes sessions list ist der Einstiegspunkt, um eine zu finden.

Um mehr aus deinen Sitzungen herauszuholen, wirf einen Blick auf den /save-Sitzungsexport-Leitfaden und Multi-Profil & Multi-Instanz; die vollständige -c-Flag-Tabelle findest du in der hermes-chat-Befehlsreferenz. All das ist nach hermes update auf v0.20.2 standardmäßig verfügbar.