Hermes-Folgefrage hängt: session_meta mit content null im Sitzungsverlauf #147
Labels
No labels
herkunft/alpha-feedback
status
blockiert
status
zu-testen
typ
bug
typ
docs
typ
enhancement
typ
feature
typ
idea
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
iris/Iris#147
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Befund
Folgefragen in Hermes-Chats bleiben auf „Das Modell arbeitet seit …“ stehen. Die erste Nachricht eines Chats funktioniert. Aufgetreten am 2026-10-22 nach dem Hermes-Upstream-Sync (iris/hermes-agent#9).
Ursache
GET /api/sessions/{id}/messagesliefert seit dem Sync zusätzlich einen Eintrag{"role": "session_meta", "content": null, ...}(unddisplay_kindan Nachrichten). InAgentJob.swift(Folgefrage, Verlauf aussessionMessagesumbauen) läuft beicontent == nullJSONSerialization.data(withJSONObject: NSNull()). Das wirft eine Objective-C-Exception („Invalid top-level type in JSON write“), dietry?nicht abfängt; im isolierten Test beendet sie das Programm sofort.Belege: Das Iris-Log endet nach „Canvas-Watcher gestartet“; die Meldung „Nachrichten aus gespeicherter Session-Historie geladen“ fehlt. Hermes sah nur die Verlaufsabfrage (200), nie ein
POST /v1/runs; keine offene Verbindung zu 127.0.0.1:8642, Backend im Leerlauf. Warum die App dabei nicht abstürzt, ist ungeklärt.Warum
Jede Folgefrage in jedem Hermes-Chat ist betroffen, solange der Verlauf einen solchen Eintrag enthält.
Vorgehen
Einträge mit anderen Rollen als system/user/assistant/tool beim Umbau des Verlaufs überspringen;
NSNullund nicht JSON-fähige Werte als leeren Inhalt behandeln, ohneJSONSerializationaufzurufen.Offen
Ob Linux-Server und Remote-Clients denselben Eintrag verarbeiten, ist nicht geprüft.
PR #148 gemergt: fix(hermes): Folgefrage hängt nicht mehr an session_meta mit content null im Verlauf (#147)
#148
Commits:
Stand
Befund: Hermes-Folgefragen blieben auf „Das Modell arbeitet seit …“ stehen. Seit dem Hermes-Sync (iris/hermes-agent#9) liefert
GET /api/sessions/{id}/messageseinen Eintrag{"role": "session_meta", "content": null}. Beim Umbau des Verlaufs inAgentJob.swiftrief Iris dafürJSONSerialization.data(withJSONObject: NSNull())auf. Das wirft eine Objective-C-Exception, dietry?nicht abfängt. Das Iris-Log endete danach, Hermes bekam nie einPOST /v1/runs.Geändert:
AgentJob.swift, Verlauf für die Folgefrage: nur Rollen system/user/assistant/tool werden übernommen (session_metaentfällt); Inhalt, der kein gültiges JSON-Objekt ist (z. B.NSNull), wird zu einem leeren String, ohneJSONSerializationaufzurufen.Geprüft:
user,assistant);NSNullergibt leeren Inhalt, strukturierter Inhalt wird weiter serialisiert.NSInvalidArgumentException.Nicht geprüft: Kein Build der App und keine echte Folgefrage im laufenden Iris (
xcodebuildim Terminal ist laut CLAUDE.md verboten, der Build per Xcode startet Iris neu). Linux-Server und Remote-Clients (iOS, IrisClient) mit demselbensession_meta-Eintrag nicht untersucht. Warum die App beim Ausnahmefall nicht abstürzt, sondern der Job hängt, ist ungeklärt.Grenzen: Die Änderung filtert nach einer Rollenliste; kommt eine neue legitime Rolle hinzu, müsste sie dort ergänzt werden.
Offen: Bauen, Iris neu starten und eine Folgefrage in einem Hermes-Chat von Hand ausprobieren; deshalb
status/zu-testen.