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:
- Gateway und Sprachsubsystem.
- Die Desktop-App: Composer, Tabs und Status-Synchronisation.
- Die Zuverlässigkeit des Installers und Auto-Updater.
- 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: 5081551 — fix(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: be42470 — fix(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 * 2bleiben erhalten. - Eine Nachlaufzeit von 2,0 s am Anfang der Wiedergabe verhindert vorzeitiges Barge-in.
- Im Modus
streaming_enabledwird 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: ba13132 — fix(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 explizitenon_stop_phrase-Callback durchstart_continuous/stop_continuous.- Das TUI-Gateway sendet
voice.transcript {stop_phrase: true}, schaltetHERMES_VOICE(_TTS)aus und stoppt den TTS-Stream. - Die CLI
process_loopbehandelt 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.pylä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: fae29c8 — fix(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
.ogglautet (Edge liefert MP3, Piper WAV, xAI MP3, und manche OpenAI-kompatiblen Server ignorierenresponse_format=opus). - v0.19.1 fügt
_sniff_audio_containerund_repair_ogg_containerintext_to_speech_toolhinzu, 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_PLATFORMSdeckt 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: f03bb2b — feat(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.enabledund ein Provider, der nichtnoneist.- 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:
hermes toolsausführen, um zu prüfen, ob Sprach-Tools aktiviert sind.HERMES_VOICE_DEBUG=1 hermes voiceausführen, um VAD-Schwellen und Unterbrechungsentscheidungen zu beobachten.- Prüfen, ob
voice.stop_phrasesdas gewünschte Wort enthält. - Bestätigen, dass
stt.enabledundtts.providergesetzt sind. - 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:
hermes versionausführen, um v0.19.1 oder neuer zu bestätigen.hermes config get voiceausführen, um zu prüfen, ob die alten Spracheinstellungen sauber migriert wurden.- Einen kontinuierlichen Sprachdialog starten und Unterbrechung sowie Stopp-Phrasen testen.
- 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