Mitten in der Aufgabe eine Frage stellen? /btw beantwortet sie sofort, ohne zu unterbrechen


Du kennst diesen Moment: Hermes steckt mitten in einer langen Aufgabe – Refactoring einer Codebasis, Neuorganisation eines Repos, Betreuung eines Deploys – und dir fällt eine dazugehörige Frage ein: „In welcher Datei war dieser Fehler nochmal?“ Früher hattest du zwei gleich schlechte Optionen: den Agenten unterbrechen und neu fokussieren, oder eine neue Session starten, die keinerlei Erinnerung an das Geschehen hat. Beides kostet. PR #97937 (am 29. August gemerged, mit Follow-up #97974) macht den dritten Weg zu einem eingebauten Command: /btw <question> beantwortet deine Nebenfrage sofort – mit dem vollen Kontext der aktuellen Konversation, ohne die Aufgabe zu stoppen. Dieselbe Änderung verabschiedet /background und macht /bg zum kanonischen Command für Hintergrundaufgaben – /btw ist nicht länger nur sein Alias.

Warum das früher so umständlich war

/bg und /btw waren beide Aliase von /background: „Schicke diesen Satz an eine Hintergrund-Session und führe ihn aus.“ Das klingt gut – bis du auf den fatalen Haken stößt: die Hintergrund-Session ist brandneu und weiß nichts über deinen aktuellen Kontext.

So brach der klassische Gebrauch zusammen:

/btw which file was that error in?

Der kontextlose Hintergrund-Agent konnte nur antworten: „Ich weiß nicht, welchen Fehler du meinst“ – oder dich zwingen, den Kontext einzufügen. Der eigentliche Sinn einer Nebenfrage – sich den Kontext der laufenden Konversation für eine schnelle Antwort zu borgen – kam nie zum Tragen.

So funktioniert /btw jetzt

Der Kern der Idee: die Frage gelangt nie in die Haupt-Session. Sie wird „am Rand“ beantwortet – anhand eines Snapshots der Haupt-Session. Die Implementierung (agent/side_question.py) hat zwei Wege, die automatisch gewählt werden:

Weg eins: ein Cache-Parity-Fork (bevorzugt). Wenn der Agent der aktuellen Session noch lebt, baut /btw einen „Cache-Parity-Fork“ – denselben Mechanismus, den auch das Hintergrund-Self-Improvement-Review verwendet. Der Fork erbt die Runtime des Parents, einen byte-identischen System-Prompt und die Tool-Liste sowie die gemeinsame session_id und spielt den Konversations-Snapshot dann unverändert ab. Da der Prefix-Cache des Providers für genau dieses Replay bereits warm ist, sieht die Neben­antwort die vollständige, ungekürzte Konversation zu Cache-Read-Preisen. Jeder Tool-Aufruf wird beim Dispatch verweigert (leere Thread-Whitelist), die Persistenz ist vollständig abgekoppelt – keine state.db-Schreibvorgänge, keine Session-Rotation, keine externen Memory-Hooks. Die Nutzung wird der Parent-Session zugeschrieben.

Weg zwei: ein One-Shot-Digest (Fallback). Wenn der Agent der Session verdrängt wurde (z. B. weil das Gateway den gecachten Agenten verworfen hat – der Provider-Cache ist dort ohnehin kalt), degradiert es zu einem Klartext-Digest der Konversation, der die neuesten Inhalte bevorzugt, und antwortet über einen One-Shot-Auxiliary-Call. Der Digest schließt den System-Prompt aus und fasst Tool-Aufrufe und Ergebnisse zusammen.

Auf beiden Wegen bleiben die History der Haupt-Session, der Rollenwechsel und der Prompt-Cache konstruktionsbedingt unberührt – das ist die harte Randbedingung des Designs.

So verwendest du es

Verfügbar in der CLI, im TUI und auf Gateway-Plattformen (Telegram, Discord, Slack, …) – und es funktioniert, während der Agent beschäftigt ist (busy_policy="dispatch", du kannst also mitten im Lauf einwerfen):

# Task running, sudden question
/btw which file was that error in?
→ /btw answers with the full conversation context: it's in src/utils/parser.py, line 42 …

# A background question about the current task
/btw what approach did we settle on for retries?

Möchtest du, dass ein anderes Modell Nebenfragen beantwortet? Dafür gibt es eine eigene Einstellung für Auxiliary-Tasks:

auxiliary:
  side_question:
    provider: anthropic
    model: claude-sonnet-4-5

Ohne diese Einstellung wird das Hauptmodell verwendet. Hinweis: Ein anderes Modell bedeutet einen kalten Cache, daher greift der kompakte Digest-Pfad.

Die Begleitänderung: /bg wird offiziell

Der sperrige Name /background ist Geschichte (Community-Vorschlag: sich an der kurzen /btw-Konvention orientieren). Hintergrundaufgaben haben jetzt genau einen Namen:

/bg compile a report of every TODO in this directory

/btw und /bg haben jeweils ihre Spur: /bg startet unabhängige Aufgaben, /btw beantwortet kleine Fragen mit dem aktuellen Kontext. Wenn du gewohnheitsmäßig /background tippst, wird es Zeit, das Muskelgedächtnis umzutrainieren.

Wann sich /btw am meisten lohnt

  • Mitten in langen Aufgaben: Deploys, Batch-Migrationen, laufende Code-Reviews – frag „Wo stehen wir gerade?“ oder „Was war diese Warnung nochmal?“, ohne irgendetwas zu pausieren.
  • Kontextabhängige Fragen: „Auf welche Namenskonvention haben wir uns geeinigt?“, „Was sagt die AGENTS.md dieses Repos?“ – die Neben­antwort sieht die gesamte Konversation.
  • Die Haupt-Session sauber halten: Der Snapshot ist schreibgeschützt; keine Spuren in der History, keine Auswirkungen auf Kompression oder Caching.

Ein ehrlicher Hinweis: Beide PRs landeten am 29. August, sie existieren derzeit also nur auf main – noch kein Release-Tag enthält sie (v0.20.6 wurde am 27. August getaggt). Um sie heute auszuprobieren, führe hermes update aus und starte vom aktuellsten Code; andernfalls warte auf das nächste Release.

Zusammenfassung

/btw macht aus dem häufigen Bedürfnis „mit aktuellem Kontext eine kleine Frage stellen“ einen erstklassigen Command ohne Zusatzkosten: keine Unterbrechung, kein Cache-Verbrauch in der Haupt-Session, keine Verschmutzung der History. Da /bg jetzt den Task-Dispatch übernimmt, sind „Fragen“ und „Delegieren“ in einer Session endlich sauber getrennt. Wenn dir das nächste Mal mitten im Lauf eine Frage einfällt, versuch es mit /btw voran – es versteht besser, wovon du sprichst, als du erwartest.

Wer tiefer in das Slash-Command-Ökosystem eintauchen will, findet in unserem Command-Palette-Guide mehr; für weitere Wege, mit einem beschäftigten Agenten umzugehen (einwerfen, in die Warteschlange stellen, steuern ohne zu unterbrechen), lohnt auch ein Blick auf die /busy-Familie. Beide PRs sind Teil des Post-v0.20.6-Streams auf main – die v0.20.6-Release-Notes fassen das ganze Fenster zusammen.