Last updated on

Hermes Agent v0.19.1: Der „Patch“, der 4.700 Dateien berührte und den Voice-Stack neu aufbaute


Hermes Agent v0.19.1: Der „Patch“, der 4.700 Dateien berührte und den Voice-Stack neu aufbaute

Eine Schlagzeile wie „Hermes Agent: Notfall-Patch enthüllt, Sprachsystem wiedergeboren, 4.700 Dateien umgebaut“ klingt nach einem Projekt in der Krise. Doch die v0.19.1-Release-Seite erzählt eine andere Geschichte: Es handelt sich um eine hochdichte Stabilitäts-Salvage-Welle, nicht um eine Panik-Lösung. Dieser Artikel ignoriert den Clickbait und liest die Release Notes und Commits, damit du weißt, was wirklich passiert ist.

1. Zuerst die Zahlen: 4.700 Dateien sind real, kein Marketing-Geschwafel

Die offiziellen Release Notes sind direkt:

Von v0.19.0 (2026.7.20) bis v0.19.1 (2026.7.30): ~2.789 Commits, ~4.748 geänderte Dateien, ~442.000 Einfügungen, ~392.300 Löschungen.

In zehn Tagen wurden also etwa ein Sechstel aller Dateien im Hermes-Repository angefasst. „4.700 Dateien“ ist daher korrekt – es ist das kumulative Delta zwischen v0.19.0 und v0.19.1, nicht ein einzelner Monster-Commit. Das Team veröffentlichte es als Patch-Release, weil Downstream-Verbraucher (Docker-Images, gehostete Deployments und Neuinstallationen) ein stabiles Tag brauchten, nicht weil die Änderungen klein wären.

Falls du neu bei Hermes bist, findest du in der Installationsanleitung die lokalen, Docker- und Desktop-Setup-Varianten.

2. Warum das Sprachsubsystem im Mittelpunkt stand

v0.19.0 war die „Quicksilver Release“ und brachte viele neue Funktionen sowie ein UI-Redesign. Große Releases werden typischerweise von einer Aufräumwelle gefolgt, in der Edge Cases der neuen Architektur schnell sichtbar werden. v0.19.1 konzentrierte sich auf vier Bereiche:

  1. Gateway und Sprachsubsystem.
  2. Die Desktop-App: Composer, Tabs und Status-Synchronisation.
  3. Die Zuverlässigkeit des Installers und Auto-Updater.
  4. Plattform-Erweiterungen: Buzz/Nostr-Kanäle, FLUX3-Video-Generierung und -Auslieferung, Telegram-Media-Zuverlässigkeit und Voice-Mode-Regressionen.

Die Sprach-Änderungen sind für Nutzer am offensichtlichsten: Voice-Barge-in funktionierte nicht, TTS-Sprachblasen spielten als 0-Sekunden-Clips, „stop“ blieb ohne Wirkung und Wake-Words wurden aktiviert, ohne dass STT/TTS funktionierten. All das wurde in v0.19.1 systematisch behoben.

3. Vier wichtige Sprach-Fixes

3.1 Full-Duplex-Agent-Turn-Listener: Endlich kann man unterbrechen

commit: 5081551fix(voice): full-duplex agent-turn listener

Der alte Voice-Mode war effektiv Half-Duplex:

  • Während der LLM-Generierung lief der Mikrofon-Listener überhaupt nicht, sodass man nicht unterbrechen konnte.
  • Während der TTS-Wiedergabe lief der Listener zwar, aber er kalibrierte den VAD-Rauschboden während der Lautsprecher TTS abspielte. Der Lautsprecher-Echo wurde in den Boden eingebaut, hob den Schwellenwert so stark an, dass normale Sprache ihn kaum erreichte.
  • Der Trigger verwendete einen strikten aufeinanderfolgenden Energiezähler, der sich bei kleinen Energieeinbrüchen innerhalb eines Wortes zurücksetzte und die erste Silbe verschluckte.

v0.19.1 führt tools/voice_mode.full_duplex_listen() ein: Ein einzelner Listener deckt den gesamten Agent-Turn ab:

  • Der Rauschboden wird zu Beginn des Turns in Ruhe kalibriert und während Generierung und Wiedergabe konstant gehalten.
  • Während der Generierung verwendet der Trigger voice.barge_in_threshold_multiplier (Standard 3,0).
  • Während der Wiedergabe verhindern ein 1500-RMS-Minimum und ein 4000-RMS-Maximum, dass Echo den Detektor auslöst, während menschliche Sprache weiterhin erreichbar bleibt.
  • Ein 300-ms-Fenster mit Mehrheitsabstimmung (≥80%) ersetzt den strikten Zähler, sodass kurze Energieeinbrüche in einem Wort die Erkennung nicht mehr zurücksetzen.
  • Die Nachlaufzeit gilt nur am Beginn der Wiedergabe (voice.barge_in_grace_seconds, Standard von 2,0 s auf 0,5 s gesenkt), nicht während der gesamten Antwort.

Zum Anzeigen der Diagnosen:

HERMES_VOICE_DEBUG=1 hermes voice

3.2 Gleitendes VAD-Fenster: Adaptives Echo-Blocking

commit: be42470fix(voice): rolling-window VAD, duplicate render suppression, TUI gateway mirror

Vor dem Full-Duplex-Modell hatte das Team bereits ein gleitendes VAD-Fenster eingeführt, um das alte Half-Duplex-Modell zu entschärfen:

  • Eine Deque von ~3 Sekunden berechnet kontinuierlich das 90. Perzentil des Rauschbodens neu, anstatt ihn einmal zu kalibrieren.
  • Der Multiplikator wurde von 5x auf 8x erhöht, um TTS-Lautstärkeschwankungen abzufedern.
  • Das 4000-RMS-Maximum und ein Minimum von SILENCE_RMS_THRESHOLD * 2 bleiben erhalten.
  • Eine Nachlaufzeit von 2,0 s am Anfang der Wiedergabe verhindert vorzeitiges Barge-in.
  • Im Modus streaming_enabled wird doppelte Text-Renderierung unterdrückt, sodass man nicht zwei Kopien desselben Satzes liest, während man ihn hört.
  • Dieselbe Logik wird in das TUI-Gateway gespiegelt, damit CLI- und TUI-Pfade identisch agieren.

3.3 Stopp-Phrasen: „stop“ gesprochen oder getippt beendet den Voice-Chat

commit: ba13132fix(voice): bare stop phrase ends the voice chat on every surface

Bisher wurde eine gesprochene Stopp-Phrase nur im klassischen CLI-PTT-Modus beachtet. v0.19.1 vereinheitlicht das Verhalten auf allen Oberflächen:

  • hermes_cli/voice.py übergibt jetzt einen expliziten on_stop_phrase-Callback durch start_continuous/stop_continuous.
  • Das TUI-Gateway sendet voice.transcript {stop_phrase: true}, schaltet HERMES_VOICE(_TTS) aus und stoppt den TTS-Stream.
  • Die CLI process_loop behandelt ein getipptes „stop“ im Voice-Modus als Beenden des Voice-Modus, nicht als Nachricht an den Agenten.
  • Der Desktop-Composer fängt einen nackten Stopp-Befehl ab und beendet die Live-Voice-Konversation über denselben Pfad wie der End-Button.
  • tools/voice_mode.py lässt Stopp-Phrasen gegenüber dem Whisper-Halluzinationsfilter gewinnen, sodass Wörter wie „bye“ funktionieren, wenn sie als Stopp-Phrase konfiguriert sind.

Die Standard-Stopp-Phrase ist voice.stop_phrases = ["stop"], aber du kannst sie anpassen:

voice:
  stop_phrases:
    - "stop"
    - "ende"
    - "bye"

3.4 TTS-Container-Reparatur: Keine defekten 0-Sekunden-Sprachblasen mehr

commit: fae29c8fix(tts): class-level .ogg container repair + multi-platform opus voice detection

Dies ist die Ursachenkorrektur für die Familie der Bugs „Sprachblase ist defekt / spielt 0 Sekunden“ auf Telegram, Matrix, Feishu, WhatsApp und Signal:

  • Einige Backends liefern MP3- oder WAV-Bytes, auch wenn der Ausgabepfad .ogg lautet (Edge liefert MP3, Piper WAV, xAI MP3, und manche OpenAI-kompatiblen Server ignorieren response_format=opus).
  • v0.19.1 fügt _sniff_audio_container und _repair_ogg_container in text_to_speech_tool hinzu, um den tatsächlichen Container nach der Synthese zu erkennen und zentral mit ffmpeg zu transkodieren oder die Datei in die ehrliche Erweiterung umzubenennen.
  • Eine neue Menge OPUS_VOICE_PLATFORMS deckt alle Plattformen ab, die echte Opus-Sprachblasen benötigen, nicht nur Telegram.

Für Endnutzer bedeutet das, dass automatische TTS-Antworten über Gateways deutlich seltener als defekte Anhänge ankommen.

3.5 Wake-Word: Nur aktivieren, wenn STT und TTS wirklich bereit sind

commit: f03bb2bfeat(wake): gate arming on STT + TTS readiness

Der Wake-Loop ist: Wake-Word → Aufnahme → STT → Agent → TTS. Das Mikrofon zu aktivieren, wenn eine Hälfte fehlt, erzeugt ein frustrierendes „Ich habe dich gehört, aber es passiert nichts“. In v0.19.1 prüft check_wake_word_requirements beides, bevor es aktiviert:

  • stt.enabled und ein Provider, der nicht none ist.
  • Ein bestandener check_tts_requirements-Test.

Wenn eine Hälfte fehlt, lehnt der Befehl ab und sagt genau, welche Hälfte kaputt ist. Wenn STT zum Beispiel deaktiviert ist, meldet /wake, dass Speech-to-Text nicht bereit ist. Das vermeidet einen typischen Anfängerfehler: das Wake-Word zu aktivieren, ohne die Sprachpipeline konfiguriert zu haben.

4. Empfohlene Konfiguration und Debugging-Checkliste

Zusammengefasst könnte eine v0.19.1-Sprachkonfiguration so aussehen:

voice:
  barge_in_threshold_multiplier: 3.0   # Full-Duplex-Barge-in-Empfindlichkeit
  barge_in_grace_seconds: 0.5        # Wiedergabe-Start-Nachlauf, von 2.0 gesenkt
  stop_phrases:
    - "stop"

stt:
  enabled: true
  provider: whisper  # oder dein tatsächliches Backend

tts:
  provider: edge    # oder openai / elevenlabs / piper / etc.

Wenn Sprache sich seltsam verhält, gehe in dieser Reihenfolge vor:

  1. hermes tools ausführen, um zu prüfen, ob Sprach-Tools aktiviert sind.
  2. HERMES_VOICE_DEBUG=1 hermes voice ausführen, um VAD-Schwellen und Unterbrechungsentscheidungen zu beobachten.
  3. Prüfen, ob voice.stop_phrases das gewünschte Wort enthält.
  4. Bestätigen, dass stt.enabled und tts.provider gesetzt sind.
  5. Im Desktop die Capabilities-Registerkarte öffnen und TTS-Provider sowie Voice-Modell prüfen (v0.19.1 fügte dort die Inline-Einstellungen hinzu).

5. Weitere bemerkenswerte Fixes im Patch

Abseits der Sprache enthält v0.19.1 Stabilitätsverbesserungen für den Alltag:

  • Composer-Anhänge: Der TUI fügt Anhänge jetzt inline am Cursor ein und löst sie beim Löschen des Tokens wieder.
  • Tab-Schließen-Verhalten: Schließen des letzten Haupt-Tabs landet auf New Session statt auf einem leeren Bildschirm.
  • Terminal-Links: ⌥-Klick injiziert keine Escape-Sequenzen mehr, und Links im integrierten Terminal öffnen sich tatsächlich.
  • CI-Sicherheit: Der Haupt-Workflow verwendet jetzt kurzlebige GitHub-App-Tokens statt eines langen PAT, was die Fork-Sicherheit verbessert.
  • Docker / Nix: Modulpfade und Lockfile-Probleme wurden behoben.

Für einen direkten Vergleich mit anderen KI-Agenten sieh dir die Vergleichsseite an.

6. Wie man aktualisiert

v0.19.1 ist über den offiziellen Installer oder hermes update verfügbar:

# Bereits installiert
hermes update

# Neuinstallation
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash

Nach dem Update:

  1. hermes version ausführen, um v0.19.1 oder neuer zu bestätigen.
  2. hermes config get voice ausführen, um zu prüfen, ob die alten Spracheinstellungen sauber migriert wurden.
  3. Einen kontinuierlichen Sprachdialog starten und Unterbrechung sowie Stopp-Phrasen testen.
  4. Im Desktop die Capabilities-Registerkarte für TTS-Provider und Voice-Modell prüfen.

7. Fazit: Warum dieser „Patch“ wichtig ist

Hermes Agent v0.19.1 zeigt, dass eine Patch-Nummer nicht gleich der Änderungsgröße ist. In etwa zehn Tagen merged das Team ~2.789 PRs, berührt ~4.748 Dateien und bessert systematisch die Probleme mit Sprache, Desktop, Installer und Plattformen aus, die nach der „Quicksilver“-Version v0.19.0 aufgetaucht sind.

Für den alltäglichen Nutzer sind die deutlichsten Gewinne:

  • Ein Sprachmodus, das man wirklich unterbrechen kann.
  • „Stop“ funktioniert, egal ob gesprochen oder getippt.
  • Plattformübergreifende Sprachblasen sind zuverlässiger.
  • Wake-Words weigern sich zu aktivieren, wenn die Sprachpipeline halb konfiguriert ist.

Das Team kündigt außerdem an, dass v0.20.0 vollständige, kuratierte Release Notes liefern wird, die alles ab v0.19.0 abdecken, inklusive aller Highlights und Mitwirkenden. Um nichts zu verpassen, lege dir die Releases-Seite als Lesezeichen an.


Referenzen