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_ID → TMUX_PANE → KITTY_WINDOW_ID → WEZTERM_PANE → TERM_SESSION_ID → WT_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;
-cmischt 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-missingmacht 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 listist 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.