Ein Befehl öffnet eine ganze Session: hermes chat -q bleibt jetzt auf einem TTY interaktiv


Du bist der Typ, der Hermes in jeden Launcher einbettet: Hotkey drücken, ein Terminal mit vorausgefülltem Prompt poppt auf, Enter, und die Arbeit beginnt. Dieser Weg war früher blockiert – hermes chat -q "tidy up this directory" beantwortete brav eine Frage und beendete sich, und das „nach der Antwort weiterfragen“ gab es schlicht nicht. Für eine interaktive Session musstest du -q einmal ausführen, um die Session zu speichern, und dann hermes chat -r zum Fortsetzen – zwei Schritte, fragil und oft ohne den gewünschten Kontext. Die am 28. August gemergte Änderung (PR #97121) reißt diesen alten Weg ein: auf einem echten TTY startet -q jetzt eine Live-Session, die erste Nachricht geht wörtlich rein, die Antwort beendet die Session nicht, und du redest einfach weiter.

Warum es vorher so umständlich war

-q/--query war als „One-Shot-Query“ gedacht: Prompt übergeben, Hermes antwortet, fertig. Das machte ihn perfekt für Skripte und Automation – hermes chat -q "summarize today's commits" gibt seine Ausgabe aus und endet, kein Terminal wird belegt.

Der Preis: Um „interaktiven Modus mit vorausgefüllter Frage“ zu bekommen (eine Erfahrung, die andere Coding-Agents schon ewig haben), musstest du zwei Schritte von Hand zusammensetzen:

# Schritt eins: einmal ausführen, Session-Datei sichern
hermes chat -q "tidy up this directory" > /tmp/usage.txt
# Schritt zwei: Session fortsetzen, um weiterzureden
hermes chat -r /tmp/usage.txt

Umständlich und zerbrechlich: Die Zwischen-Usage-Datei geht schnell verloren, und die fortgesetzte Session hatte nicht immer den Kontext, den du wolltest. Prompt-getriebene Agent-Terminal-Projekte wie Omarchy standen buchstäblich kurz davor, einen Workaround dafür zu bauen (basecamp/omarchy#8705) – dann bekam die offizielle CLI das Muster eingebaut.

Neues Verhalten: -q startet eine Live-Session auf einem TTY

Nach der Änderung gilt auf einem echten TTY:

hermes chat -q "fix this bug in the parser"

Die erste Nachricht wird wörtlich als Eröffnungs-Turn der Session übergeben (ein _SeededQueryMessage-Sentinel), und dann landest du in der normalen interaktiven Schleife – weiter tippen, nachfassen, Slash-Befehle nutzen, genau wie bei einem normalen hermes chat.

„Wörtlich“ ist das Schlüsselwort: Die Seeded Message wird nie geparst. Sie wird nicht als Slash-Befehl behandelt, löst kein !-Shell-Escape aus, keine $(...)-Befehlssubstitution, keinen File-Drop. Das entspricht den bestehenden --oneshot-Semantiken: Was du dem Modell gibst, bekommt es, sauber und einfach.

Sowohl die klassische CLI als auch der TUI-Pfad unterstützen das – die TUI-Seite läuft über den STARTUP_QUERYsubmitLite-Ablauf, mit identischem Verhalten.

Altes Verhalten gewünscht? --oneshot regelt das explizit

Wenn du wirklich die One-Shot-Semantik „antworten und beenden“ willst, ist das neue Flag hermes chat --oneshot (interner Name oneshot_exit) der offizielle Name für das alte Verhalten:

hermes chat --oneshot -q "answer only this one question"

Ohne --oneshot:

  • echtes TTY + -q → startet eine interaktive Session (neues Verhalten);
  • kein TTY (Pipes, Skripte) → fällt automatisch auf „antworten und beenden“ zurück, Automation hängt also nie;
  • mit -Q/--quiet → ebenfalls „antworten und beenden“, der Quiet-Modus bleibt unberührt.

Anders gesagt: Skripte und Automation sind komplett unberührt; nur wenn ein Mensch vor dem Terminal sitzt, ändert sich das Verhalten – und genau darum geht es in dieser Änderung.

Typische Anwendungen

Launcher / Hotkeys: Binde hermes chat -q "open yesterday's session and continue what we didn't finish" an einen Hotkey – das Terminal, das aufpoppt, ist schon eine interaktive Session, bereit zur Arbeit.

Vorausgefüllte Workflows: Schreibe ein Wrapper-Skript, das ein Verzeichnis-Argument nimmt, einen Prompt baut und in hermes chat -q "$PROMPT" exec’d – der User bekommt eine Session, die schon weiß, was zu tun ist, keinen kalten leeren Prompt.

Automation unberührt: Cron-Skripte und CI können hermes chat -q ... | grep ... oder -Q genau wie bisher weiterverwenden.

Upgrade und Verifikation

Die Änderung wurde am 28. August gemergt und lebt derzeit auf upstream main – in einem Release-Tag ist sie noch nicht. Um sie jetzt zu nutzen, baust du aus dem Quellcode oder von main. Sobald sie im nächsten Release steckt, bringt dich hermes update dorthin.

Einfache Verifikation: Führe hermes chat -q "What is 1+1?" in einem Terminal aus. Bleibt der Prompt stehen und du kannst nach der Antwort weiter tippen, ist das neue Verhalten aktiv; geht es zurück zur Shell, bist du auf einer älteren Version.

Weiterlesen