pi-system/SESSION_HANDOVER.md
Raimund Bauer e0dc6040f0 docs/fix: AGENTS.md Regeln W10 + confirm-deletion SubAgenten-Whitelist
- AGENTS.md: Regel W10 "Installationen immer delegieren" (npm/npx/pip nie direkt)
- AGENTS.md: Kommunikationsstil, Selbst-Lesen verboten, Orchestrator-Scope
- AGENTS.md: Session-Start-Checkliste Punkte 5-8 (CrowdBrain, watch_subagents, SubConfirm)
- SESSION_HANDOVER.md: Session 2026-06-02 15:27 dokumentiert
2026-06-02 15:31:42 +02:00

6.7 KiB
Raw Blame History

PiSystem — Session Handover

Diese Datei dient als Kontext-Übergabe zwischen Sessions. Neue Session: Lies diese Datei zuerst.


Projekt: Pi-Orchestrator-Infrastruktur — deterministisch, maschinenübergreifend

Verzeichnis: /media/xray/NEU/Code/PiSystem20260602/

Ziel: Alle Pi-Orchestrator-Infrastrukturkomponenten in einem Git-Repo zentralisieren, sodass auf jedem Rechner via git clone + ./install.sh exakt derselbe Stand entsteht. Kein Drift mehr zwischen Maschinen, keine unterschiedlichen Fehlersymptome.


Kontext: Warum dieses Repo

Bisher war die Infrastruktur verteilt auf:

  • ~/bin/Sub* — SubAgenten, SubStatus, SubWatcher
  • ~/.pi/agent/extensions/ — confirm-deletion, arbeitsweise-guard, etc.
  • ~/.pi/agent/memory/ — arbeitsweise, subagent-autocheck
  • ~/.pi/agent/AGENTS.md — Orchestrator-Instruktionen

Jeder Rechner hatte einen anderen Stand. Das PiSystem-Repo ist die Single Source of Truth.

Architektur des Stasis-Detektors (SubConfirm)

Problem: Der Orchestrator bemerkte nicht, wenn ein Subagent auf Bestätigung wartete. Ursache: SubWatcher nutzte Keyword-Matching — confirm-deletion.ts-Dialoge wurden nicht erkannt. Lösung: SubConfirm — prüft alle 30s ob Session-Output stasis ist (unverändert), schreibt dann den vollständigen Pane-Inhalt in /tmp/.pi-subagent-alert. Die Extension arbeitsweise-guard.ts zeigt das dem Orchestrator beim nächsten Tool-Call. Kein Keyword-Matching — der Orchestrator beurteilt selbst.

Datenfluss:

SubConfirm (Bash-Daemon) → /tmp/.pi-subagent-alert → arbeitsweise-guard.ts → Orchestrator

Entscheidungen

# Entscheidung Begründung Datum
1 Stasis-Erkennung statt Keyword-Matching Genereller, funktioniert für alle Dialog-Typen — nicht nur bekannte 2026-06-02
2 Alert-File-Mechanismus (/tmp/.pi-subagent-alert) bestehende Infrastruktur in arbeitsweise-guard.ts, keine neue Komponente nötig 2026-06-02
3 intercom ist kein Shell-Binary intercom ist ein Pi-internes Tool (Extension), kein bash-Kommando — SubConfirm nutzt daher Alert-File 2026-06-02
4 SubConfirm via --skip die Orchestrator-Session ausschließen Orchestrator-Session soll nicht als Stasis erkannt werden 2026-06-02
5 install.sh idempotent mit Backups Mehrfaches Ausführen sicher, bestehende Dateien werden mit Timestamp gesichert 2026-06-02

🔜 Nächste Schritte

# Aktion Priorität Status
1 Socket Firewall installierennpx socket als Pre-Install-Hook für pnpm/npm, via Subagent 1
2 Verbleibende 5 PNPM-Sicherheitstipps aus Video umsetzen (Block Git-Dependencies, etc.) 2
3 pi-web Session-Store auf SQLite umstellenconnect-sqlite3, DB /root/.pi-web/sessions.db (keine Eile, Workaround: sign-out → sign-in) 3
4 Forgejo-Repos MyPi und AgentPi prüfen — nützliche Inhalte ins PiSystem-Repo übernehmen 4
5 SubConfirm in SubAgenten einbauen: beim ersten SubAgent-Start automatisch starten wenn noch nicht läuft 5

Session: 2026-06-02 11:55

Erreichtes

  • Root Cause analysiert: SubWatcher hat confirm-deletion.ts-Dialoge nicht erkannt weil Keyword-Patterns fehlten — aber Keyword-Matching ist generell der falsche Ansatz
  • SubConfirm geschrieben (bin/SubConfirm): Stasis-Detektor, 30s-Intervall, schreibt Pane-Inhalt in Alert-File, kein Keyword-Matching
  • AGENTS.md erweitert: Neuer Abschnitt "SubConfirm — Reaktionslogik" mit konkreten tmux send-keys-Befehlen für Yes/No
  • subagent-autocheck.md aktualisiert: Verweist jetzt auf SubConfirm statt manuelle Befehle
  • install.sh erstellt: Deterministisch, idempotent, mit Dry-Run-Modus, prüft Voraussetzungen
  • Git-Repo initialisiert: Erster Commit fb3daab

Offene Fragen

  • Forgejo-Repos MyPi und AgentPi enthalten möglicherweise weitere nützliche Infrastruktur die übernommen werden sollte — wurde noch nicht geprüft
  • SubConfirm wurde noch nicht auf dem aktuellen Rechner deployed (nur ins Repo geschrieben)
  • Autostart von SubConfirm in SubAgenten noch nicht eingebaut

Kontext für nächste Session

Die nächste Session soll:

  1. Forgejo-Repos MyPi und AgentPi lesen (via CrowdBrain/Forgejo-API)
  2. Relevante Inhalte ins PiSystem-Repo übernehmen
  3. Dann Forgejo-Repo pi-system anlegen und pushen

Session: 2026-06-02 15:27

Erreichtes

  • pi.ccpn.cc Modell auf minimax-m3:cloud umgestellt (war kimi-k2.6 — down): settings.json + index.html gesetzt, pi-web neugestartet. Modell steht bereit, wird aber aktuell nicht aktiv genutzt.

  • Session-Loss-Bug verstanden: express-session in pi-web nutzt In-Memory-Store → nach jedem docker restart pi-web sind alle Sessions weg → WebSocket bekommt 401 → Enter/Senden funktioniert nicht. Workaround: https://pi.ccpn.cc/logto/sign-out → neu einloggen.

  • AGENTS.md erweitert (autorisierte Änderungen durch Orchestrator heute):

    • Session-Start-Checkliste Punkte 58: CrowdBrain-Skill immer laden, watch_subagents, SubConfirm
    • Kommunikationsstil: max. 34 Zeilen, keine Tabellen/Zusammenfassungen
    • Selbst-Lesen verboten: Orchestrator liest keine Logs/Quellcode selbst
    • Orchestrator-Scope: nur tun was explizit beauftragt wurde
    • Installationen immer delegieren (W10): npm/npx/pip/apt nie direkt ausführen — immer Subagent
  • confirm-deletion.ts gefixt: SubAgenten-Aufrufe wurden als Package-Installation erkannt, weil die Aufgabenbeschreibung npx socket enthielt → SubAgenten zu SAFE_PACKAGE_COMMANDS hinzugefügt

  • PNPM-Sicherheitssetup: pnpm 11.5.1 installiert, 7-Tage Release-Age-Gating aktiv (registry.age=7)

Offene Fragen

  • Ob minimax-m3:cloud auf pi.ccpn.cc stabil läuft muss noch bestätigt werden (Frontend nach Login testen)
  • 5 weitere PNPM-Sicherheitstipps aus Video noch nicht umgesetzt (Block Git-Dependencies, Socket Firewall, Pre-Install-Audit, etc.)
  • Socket Firewall Installation abgebrochen — noch ausständig

Wichtige Pfade (Server: agentserver 116.203.222.129:2222, User: xray)

  • Pi-Web Quellcode: /home/xray/pi-web/ (server.js, public/index.html)
  • Pi-Web Container: pi-web (docker)
  • Pi-Agent Container: pi-agent (docker, teilt Volume /home/xray/.pi)
  • Settings (shared Volume): /home/xray/.pi/agent/settings.json
  • SSH: ssh -o ControlPath=~/.ssh/sockets/xray@116.203.222.129-2222 agentserver "<cmd>"

Kontext für nächste Session

  1. Zuerst: pi-web Session-Store auf SQLite umstellen (Priorität 1 — wiederkehrender Schmerz)
  2. Dann Socket Firewall via Subagent installieren
  3. Nach jedem pi-web-Neustart bis zum Fix: https://pi.ccpn.cc/logto/sign-out → neu einloggen