Root Cause (log-belegt, 36,6-min-Lücke 15:25–16:01): watch_subagents ist
ein Polling-Tool; die Überwachung lebt nur solange das LLM es neu aufruft.
Eine User-Zwischenfrage riss die Schleife ab, der Orchestrator ging idle.
Der passive Alert-File-Pfad (nur in before_agent_start gelesen) feuert bei
idle nie → Orchestrator schlief 36 min bis der Mensch tippte.
Fix: 30s-Check erkennt laufende Subagenten per Prozessbaum (lebt ein pi-Kind
unter dem tmux-Pane?), nicht per Keyword. Idle + laufender Subagent → aktive
Weckung via pi.sendUserMessage() (löst garantiert einen Turn aus) + ui.notify.
Idle-Erkennung zeitbasiert (45s, > 30s Pollintervall), ctx-unabhängig.
Verifiziert: Syntax, Modul-Load, Handler-Registrierung, Prompt-Injection,
W06, Prozessbaum-Erkennung an echten Sessions. NICHT verifiziert: Live-Weckpfad
(erfordert Orchestrator-Test). Plan: doku/fix-plan-orchestrator-wecker-v2026-06-02-18-19.md
Pi startete npq-switch zweimal weil der erste nicht sofort in intercom list erschien.
Regel: einmal starten, watch_subagents abwarten, niemals nachstarten.
W07: Pi darf Subagenten-Strategie nicht eigenständig aufgeben (Fallback auf direkte
Ausführung ohne Benutzer-Freigabe verboten).
W08: Erlaubte Edit-Pfade definiert — ~/.bashrc und andere System-Configs müssen
immer an Subagenten delegiert werden.
Pi hat eigene Gedankengänge als Text ausgegeben ("Weil ich tmux new-session -d gemacht hab...").
Neue Regel in Kommunikationsstil: nur Ergebnisse und Entscheidungen, keine Selbstkommentare.
Pi's setWidget-API ruft den zweiten Parameter als content(ui, theme) auf.
session-header.ts und session-index.ts übergaben direkt das Widget-Objekt
— jetzt als (_ui, theme) => makeWidget(...) gewrappt.
GlmPi, MiniPi, FlashPi, OrchestratorPi, DeepSeekFlashPi und models.json
hinzugefügt. install.sh: alle bin/-Skripte gehen nach /usr/local/bin/
(nicht nur Sub*), agent/-Dateien werden vollständig deployt.
pi.registerTool('watch_subagents'): wartet 30s (respektiert AbortSignal),
gibt dann tmux-Status aller Sessions zurück. AGENTS.md: Orchestrator MUSS
das Tool nach jedem Return sofort neu aufrufen — permanente Polling-Schleife.
Kein SubConfirm, kein tmux send-keys, kein externer Prozess nötig.
SubConfirm schrieb bisher nur in eine Alert-Datei, die der Guard nur
beim nächsten Tool-Call liest. Ein idle Orchestrator schlief durch.
Neu: --orchestrator <session> Parameter — bei Stasis wird ein Alert-
Text via tmux send-keys direkt in die Orchestrator-Session getippt,
sofern Pi nicht gerade "Working..." zeigt. AGENTS.md: Start-Befehl
mit --orchestrator aktualisiert.
Root Cause: tmuxSubagentenStatus() holte nur die letzte Zeile (tail -1),
das war immer der Pi-Status-Bar, nie der Dialog-Inhalt. Jetzt tail -5
mit expliziter Dialog-Erkennung (Erlauben?, → Yes, ACHTUNG:).
Enthält alle Pi-Orchestrator-Infrastrukturkomponenten:
- bin/Sub* Skripte (SubAgenten, SubStatus, SubWatcher, SubConfirm)
- extensions/ (arbeitsweise-guard, confirm-deletion, etc.)
- memory/ (arbeitsweise, subagent-autocheck)
- agent/AGENTS.md mit SubConfirm-Reaktionslogik
- install.sh: deterministisches, idempotentes Setup für neue Maschinen
SubConfirm (neu): Stasis-Detektor der alle 30s tmux-Sessions prüft.
Bei unverändertem Output sendet er den vollständigen Pane-Inhalt
an die Alert-Datei — der Orchestrator beurteilt selbst ob Handlung nötig.
Kein Keyword-Matching.