Auto-Modus: Systemprompts bei jeder Nutzernachricht neu prüfen und ergänzen #188
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#188
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?
Warum
Im Auto-Modus werden die Systemprompts bisher nur beim Start eines Chats gewählt. Wechselt das Thema im Verlauf (z. B. von Canvas zu Marker), fehlt der passende Prompt.
Gewünscht
Ist ein Chat im Auto-Modus gestartet, wird bei jeder Nutzernachricht geprüft, welche Prompts der Chat noch nicht trägt; fehlende kommen als lila Pille über die Userbubble (wie manuell hinzugefügt) und werden dauerhaft verankert (Chevron oben links).
Umsetzung
auto_system_prompts(Mac:AgentJobLaunchConfig.autoSystemPrompts), optional im Wire-Protokoll (POST /agent, Job-JSON).POST /resolve-auto-system-promptnimmt optionalexclude_titles.Offen
iOS (IrisRemote), Export/Import (
.irischat) trägt das Flag noch nicht.PR #101 gemergt: feat(auto-prompts): auto_system_prompts am Job, exclude_titles im Resolver (iris/Iris#188)
iris/iris-linux-server#101
Commits:
Stand (Linux-Server-Teil von iris/Iris#188)
Befund: Der Auto-Modus wählte Systemprompts nur beim Start eines Chats; ein Themenwechsel ergänzte nichts.
Geändert:
POST /agentnimmt optionalauto_system_prompts(bool), der Job speichert es und liefert es nur beitrueim Job-JSON aus (wie der Mac-Server).POST /resolve-auto-system-promptnimmt optionalexclude_titles: Prompts, die der Chat schon trägt, nehmen weder an der Klassifikation noch am „immer aktiv“-Teil teil.exclude_titles(@slow).Geprüft: rsync-Deploy auf
alf@iris-server, Container läuft;POST /resolve-auto-system-promptmitexclude_titlesantwortet (Antwort ~64 s); pytestnot slowfürtest_agent_jobs.py,test_health_and_auth.pygrün.Nicht geprüft:
auto_system_promptsüberPOST /agent→ Job-JSON von Hand; der Gesamtablauf (Follow-up im Auto-Chat mit Pille und Verankern) in der Mac-App;test_resolve_auto_system_prompt_uses_always_active_without_llm_callschlägt auf dem Dev-Host mit Timeout fehl, weil dort 18 Prompts per LLM klassifiziert werden (schon vorher so angelegt, nicht durch diese Änderung).Grenzen / offen: Die Klassifikation dauert auf dem Dev-Host ~1 min — jede Folgenachricht im Auto-Chat wartet so lange. Das Flag steckt noch nicht in Chat-Export/-Import (
chat_bundle.py,mac_job_converter.py); iOS fehlt. Mac-Teil folgt im Repofrontend/macos-iris.PR #189 gemergt: feat(auto-prompts): Auto-Modus prüft Systemprompts bei jeder Folgenachricht (#188)
#189
Commits:
Stand (Mac-Teil von iris/Iris#188)
Befund: Der Auto-Modus wählte Systemprompts nur beim Start eines Chats; ein Themenwechsel ergänzte nichts. Ob ein Chat im Auto-Modus gestartet wurde, stand nirgends.
Geändert:
AgentJobLaunchConfig.autoSystemPrompts(persistiert inPersistedAgentJob, bleibt beim Follow-up erhalten); gesetzt in den drei Overlay-Pfaden (CompanionManager) und überauto_system_promptsbeiPOST /agent(IrisRemoteServer), ausgeliefert im Job-JSON.AgentJobChatPanel.sendFollowUpMessage): im Auto-Chat wird die Nachricht gegen die Prompts geprüft, die der Chat noch nicht trägt; Treffer erscheinen als Pille über der Userbubble und werden sofort verankert. Handgewählte Prompts fragen weiter nach dem Verankern. Während der Prüfung steht „Prüfe Systemprompts…“ auf dem Sendeknopf.RemoteJobChatView.submitFollowUp,RemoteServerClient): gleiches Verhalten über/resolve-auto-system-promptmitexclude_titlesund/agent/:id/anchor-prompts.CompanionManager.resolveAutoSystemPrompts(excludingTitles:); Resolver-Endpunkt des Mac-Servers nimmtexclude_titles.Geprüft: Xcode-Build der Schemes
IrisundIrisClienterfolgreich. Linux-Server-Gegenstück ist deployt (PR iris-linux-server#101).Nicht geprüft: Der Ablauf von Hand in der App (lokal und remote, Pille, Chevron, Verankern); Mac-Server
auto_system_promptsüberPOST /agent; Zwei Chats gleichzeitig im Remote-Client.Grenzen / offen: iOS (IrisRemote) und Chat-Export/-Import (
.irischat) tragen das Flag noch nicht — ein importierter Chat verliert den Auto-Modus. Die Prüfung ist ein LLM-Aufruf; auf dem Linux-Dev-Host dauert sie ~1 min pro Nachricht.Veröffentlicht: Linux-Server-Images v1.6.56,
latestzeigt darauf.forgejo.lewerken.duckdns.org/iris/iris-<name>:v1.6.56und:latest; Git-Tagv1.6.56in iris/iris-linux-server (Stand nach PR #101).auto_system_promptsam Job undexclude_titlesim Resolver (Linux-Seite von #188). Der Mac-Teil (PR #189) steckt nicht in den Images, sondern in der App.status/zu-testen); Klassifikation dauert auf dem Dev-Host ~1 min; iOS und Chat-Export/-Import fehlen.PR #102 gemergt: feat(chat-export): Auto-Modus-Flag in .irischat-Export und -Import (iris/Iris#188)
iris/iris-linux-server#102
Commits:
Stand (Linux-Server, Export/Import des Auto-Modus-Flags, iris/Iris#188)
Geändert:
.irischat-Export schreibtautoSystemPrompts: trueinschat-manifest.json, der Import (jobs_store) und der Mac-Job-Konverter übernehmen es alsauto_system_prompts; jeweils nur beitrue, alte Bundles bleiben gültig. Testtest_auto_mode_survives_import_and_export(Import mit Flag → Job-JSON → Export → Manifest; manueller Chat ohne Flag).Geprüft: rsync-Deploy auf
alf@iris-server,pytest -m "not slow"fürtest_chat_export.py,test_chat_import.py,test_chat_bundle.py: 28 grün.Nicht geprüft: Austausch Mac ↔ Linux mit einem echten Auto-Chat in der App.
Offen: iOS kennt das Feld nicht.
PR #190 gemergt: feat(chat-export): Auto-Modus-Flag in Export und Import (#188)
#190
Commits:
Stand (Mac-App, Export/Import des Auto-Modus-Flags, iris/Iris#188)
Geändert:
ChatManifest.autoSystemPrompts: Bool?(nur beitruegeschrieben, älteres Bundle decodiert weiter); Export ausChatExportManager(lokale Chats) undRemoteChatExportManager(Chats eines Servers), Import inAgentJobsetztlaunchConfig.autoSystemPrompts. Ein importierter Auto-Chat prüft damit weiter bei jeder Nachricht.Geprüft: Xcode-Build der Schemes
IrisundIrisClienterfolgreich; Linux-Gegenstück ist deployt und getestet (iris-linux-server).Nicht geprüft: Export und Import eines echten Auto-Chats von Hand (lokal, remote, Mac ↔ Linux); kein Swift-Test für
ChatManifest.Offen: iOS (IrisRemote). Offene Browser-Tabs und zugeordnete Notiz im Export: iris/Iris#123.
PR #117 gemergt: docs(wire): Auto-Modus je Nachricht — vier optionale Felder, Ablauf (iris/Iris#188)
alf/2ndbrain#117
Commits:
Stand (Dokumentation, iris/Iris#188)
Neuer Abschnitt „Auto-Modus: Systemprompts je Nachricht“ in
02-Wire-Protokoll.md(vier optionale Felder:POST /agent, Job-JSON,POST /resolve-auto-system-promptmitexclude_titles,.irischat-Manifest; Ablauf auf dem Client) und eine Zeile in der Tabelle von08-Backup-Restore.md. Das Wire-Protokoll war mit PR #189 und iris-linux-server#101 geändert worden, ohne dass es dort stand. Nicht geprüft: nur Text, keine Code-Änderung.Veröffentlicht: Linux-Server-Images v1.6.57,
latestzeigt darauf.:v1.6.57und:latestinforgejo.lewerken.duckdns.org/iris/; Git-Tagv1.6.57in iris/iris-linux-server (Stand nach PR #102).auto_system_prompts) bleibt jetzt auch über.irischat-Export und -Import erhalten (zusätzlich zuv1.6.56).status/zu-testen); iOS kennt das Feld nicht.PR #103 gemergt: fix(chat): Pille über der Nutzerbubble bleibt beim Follow-up erhalten (iris/Iris#188)
iris/iris-linux-server#103
Commits:
Stand (Linux-Server: Pille über der Nutzerbubble bleibt erhalten, iris/Iris#188)
Befund (Test des Nutzers): Nach dem Nachladen der Systemprompts im Auto-Modus fehlte das lila Badge („Marker“) über der Nutzerbubble. Ursache auf dem Linux-Server:
POST /agent/:id/followuplasinjected_system_prompt_titlenicht,append_messagekannte das Feld nicht; die Pille stand nur in der optimistisch angezeigten Nachricht des Clients und verschwand beim Neuladen der Nachrichten. Das betraf auch handgewählte Prompts (Mac-Server speichert und liefert das Feld).Geändert:
main.py(Feld lesen),agent_jobs.start_followupundjobs_store.append_message(speichern, alsinjected_system_prompt_titleinGET /agent/:id/messages); der.irischat-Export gibt es damit auch mit. Testtest_followup_keeps_the_prompt_pill_in_the_messages_and_the_export(@slow, startet einen Hermes-Lauf).Geprüft: rsync-Deploy auf
alf@iris-server; Export-/Import-Tests inkl. des neuen Tests: 16 grün.Nicht geprüft: der Ablauf in der App (Mac-Client gegen den Linux-Server); ob der Test ohne die Änderung fehlschlägt, nicht eigens ausgeführt. Der Fehler im lokalen Chatfenster (Mac) ist damit nicht erklärt, falls der Test dort stattfand: Der Code der Mac-Seite setzt die Pille korrekt.
Offen: Images mit dieser Änderung (
v1.6.58) sind nicht gebaut.PR #191 gemergt: fix(auto-prompts): Prüfung im Chat sichtbar (Sendeknopf) und im Log nachvollziehbar (#188)
#191
Commits:
Stand (Auto-Prüfung im Chat-Fenster sichtbar machen, iris/Iris#188)
Befund (Test des Nutzers, Chat „Hallo“, „Übersetz die Markdown-Datei nach deutsch …“): Pille fehlte. Der gespeicherte Job (
agent_jobs.json) zeigtautoSystemPrompts = true, aberresolvedSystemPromptNamesunverändert (Canvas System,Browser) und keine Pille an der Nachricht: Die Prüfung hat nichts ergänzt, die Pille fehlt also, weil es nichts zu zeigen gab — nicht wegen der Darstellung. „Dokument-Übersetzer“ und „Marker“ haben passende Verwendungssätze und sind nicht „immer aktiv“. Warum die Prüfung nichts fand, ist nicht geklärt: Die Debug-Protokolle behält macOS nicht, im Fenster „Iris — Lokal“ (Remote-Ansicht) gab es keine Anzeige, ob die Prüfung lief.Geändert:
RemoteJobChatView: Sendeknopf zeigt „Prüfe Systemprompts…“, solange die Prüfung läuft; Ergebnis (bereits geladen, Antwort des Servers, Dauer, Zahl der Prompts im Speicher) wird auf.notice-Ebene protokolliert, ebenso inCompanionManagerdie Antwort des Klassifikations-LLM und die Auswahl.Geprüft: Xcode-Build
IrisundIrisClienterfolgreich.Nicht geprüft: Ob die Prüfung die Prompts nun findet; das ist die Frage des nächsten Versuchs. Abfrage danach:
log show --last 10m --predicate 'process == "Iris" AND eventMessage CONTAINS "Auto-Prüfung"'.Offen: Ursache der leeren Auswahl; Linux-Server-Teil (Pille bleibt erhalten) ist in iris-linux-server#103 behoben.
PR #192 gemergt: fix(auto-prompts): Klassifikation nutzt das Agent-LLM statt des Companion-Clients bei openaicompat (#188)
#192
Commits:
Stand (Ursache der fehlenden Pille, iris/Iris#188)
Befund (Test des Nutzers, Log): Die Auto-Prüfung lief in 0,0 s und fand nichts:
Auto-Prompt-Auflösung fehlgeschlagen: Verbindung zum Server konnte nicht hergestellt werden.CompanionManager.resolveAutoSystemPromptswählte beim Backendopenaicompatden Companion-Client (openAICompatServerURL=localhost:54321, dort lauscht nichts) statt des Agent-LLM (claudeCodeOpenAICompatServerURL=127.0.0.1:18200, antwortet mit HTTP 200). Dieselbe Verwechslung steckte im Dreamer-Template-Matcher.Geändert: Neuer
claudeCodeOpenAICompatAPI(URL und Modell aus denclaudeCodeOpenAICompat*-Einstellungen); die Auto-Prompt-Klassifikation und der Template-Matcher nutzen ihn.Geprüft: Xcode-Build
Iriserfolgreich; Ursache per Log undcurlgegen beide Ports belegt.Nicht geprüft: Ob die Pille nun erscheint (Ablauf in der App von Hand); die Backends
mlxvlmundsplashnutzen weiter die Companion-Clients — nicht untersucht, ob dort dieselbe Verwechslung vorliegt.Offen: Der Remote-Client protokolliert eine leere Antwort als „failed HTTP 200“ (irreführend).
Abgeschlossen auf Anweisung des Nutzers. Der Auto-Modus prüft die Systemprompts bei jeder Folgenachricht; Pille und Verankern funktionieren (Test des Nutzers). Die Ursache der leeren Auswahl (falscher LLM-Client bei
openaicompat) ist mit #192 behoben, die Verbesserungen von Geschwindigkeit und Treffsicherheit liefen in #193. Offen bleibt iOS (IrisRemote) kennt das Feld nicht.PR #47 gemergt: feat(auto-modus): Auto-Chats ergänzen Systemprompts je Nachricht, Build-Fix Color(hex:) (iris/Iris#188)
iris/2ndbrain-ios#47
Commits:
Befund: Die iOS-App kannte den Auto-Modus je Nachricht (#188) nicht; ein Auto-Chat verhielt sich nach der ersten Nachricht wie „Kein“. Außerdem baute
mainnicht:Color(hex:)war inMainView.swiftprivate, wird aber seit dem gruppierten Picker (#199) in drei weiteren Dateien benutzt.Geändert:
auto_system_promptsimPOST /agentund aus der Job-Liste; Folgenachricht in einem Auto-Chat ruft/resolve-auto-system-promptmitexclude_titles, hängt fehlende Prompts an und verankert sie peranchor-prompts(ohne Rückfrage wie am Mac).Color-Erweiterung nicht mehrprivate.Geprüft:
xcodebuild(generic iOS, Debug) baut grün.Nicht geprüft: Auto-Folgenachricht gegen einen echten Server/Gerät; Installation auf dem iPhone.
PR #51 gemergt: fix(systemprompts): iOS — Prompt-Liste beim Verbinden laden, nicht erst im Neuer-Job-Sheet (iris/Iris#188)
iris/2ndbrain-ios#51
Commits:
Befund: Die Systemprompt-Liste der iOS-App wurde nur beim Öffnen von „Neuer Agent Job“ vom Server geladen. Nach einer frischen Installation (leerer Cache) zeigte der Follow-up-Picker „Keine Systemprompts“ — und ein Auto-Chat fand bei Folgenachrichten keine Prompts zum Ergänzen (#188), weil die Liste leer war.
Geändert: Die Liste wird beim Verbinden (MainView) geladen; beim Öffnen eines Chats nachgeladen, falls sie leer ist.
Geprüft:
xcodebuildgrün. Nicht geprüft: auf dem Gerät; nicht installiert.