- 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
131 lines
6.7 KiB
Markdown
131 lines
6.7 KiB
Markdown
# 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 installieren** — `npx 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 umstellen** — `connect-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 5–8: CrowdBrain-Skill immer laden, watch_subagents, SubConfirm
|
||
- Kommunikationsstil: max. 3–4 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
|