#!/bin/bash # Pyramid-Autopilot (Pi/Linux): startet Claude-Sessions in Endlosschleife. # Läuft eine Session ins 5h-Limit, wird alle 20 Minuten neu versucht. # Start (am besten in tmux): tmux new -d -s pyramid ./autopilot.sh # Wieder reinschauen: tmux attach -t pyramid (verlassen: Strg+B, dann D) # PAUSIEREN: touch ~/pyramid/PAUSE (greift vor der nächsten Session) # FORTSETZEN: rm ~/pyramid/PAUSE # GANZ STOPPEN: tmux kill-session -t pyramid cd "$(dirname "$0")" export PATH="$HOME/.local/bin:$HOME/flutter/bin:$PATH" # Pyramid laeuft auf eigenem Claude-Konto (Profil ~/.claude-pyramid), # das Standard-Profil ~/.claude bleibt fuer die Webseiten-Arbeit. export CLAUDE_CONFIG_DIR="$HOME/.claude-pyramid" # --- Matrix-Statusberichte (Raum "🔺 Pyramid Autopilot", Token vom Gatus-Bot) --- MATRIX_URL="http://127.0.0.1:6167" MATRIX_ROOM="!sYfOwD4Dw4jBDTlNmL:steggi-matrix.work" MATRIX_TOKEN="$(grep -s '^MATRIX_TOKEN=' "$HOME/gatus/.env" | cut -d= -f2-)" notify_matrix() { [ -z "$MATRIX_TOKEN" ] && return 0 local body body=$(python3 -c 'import json,sys; print(json.dumps({"msgtype":"m.text","body":sys.stdin.read().strip()}))' <<< "$1") curl -s -m 10 -X PUT \ "$MATRIX_URL/_matrix/client/v3/rooms/$MATRIX_ROOM/send/m.room.message/autopilot$(date +%s%N)" \ -H "Authorization: Bearer $MATRIX_TOKEN" -H "Content-Type: application/json" \ -d "$body" > /dev/null || true } PROMPT="Lies CLAUDE.md. Arbeite in dieser Reihenfolge: (1) Review-Pass: Gehe die in ROADMAP.md/PROGRESS.md als erledigt markierten Punkte durch, prüfe den zugehörigen Code kritisch und überarbeite/verbessere ihn, wo nötig. Führe in PROGRESS.md einen Abschnitt 'Fable-5-Review' und hake dort jeden geprüften Punkt ab, damit bereits reviewte Punkte nicht erneut geprüft werden. (2) Wenn alle erledigten Punkte reviewt sind, arbeite ROADMAP.md Punkt für Punkt weiter ab. Halte dich strikt an den Arbeitszyklus (PROGRESS.md pflegen, kleine Commits + Push). Arbeite so viel ab wie möglich." while true; do if [ -f PAUSE ]; then echo "===== $(date '+%F %T') PAUSE aktiv (rm PAUSE zum Fortsetzen) - pruefe wieder in 10 Minuten =====" sleep 600 continue fi echo "===== $(date '+%F %T') Neue Claude-Session =====" | tee -a autopilot.log BEFORE=$(git rev-parse HEAD 2>/dev/null) claude -p "$PROMPT" --model claude-fable-5 --dangerously-skip-permissions 2>&1 | tee -a autopilot.log AFTER=$(git rev-parse HEAD 2>/dev/null) if [ -n "$BEFORE" ] && [ "$BEFORE" != "$AFTER" ]; then COMMITS=$(git log --oneline --no-decorate "$BEFORE..$AFTER" | head -15) NEXT=$(grep -m1 -A3 "Offen/Nächster Schritt" PROGRESS.md) notify_matrix "🔺 Pyramid-Autopilot $(date '+%H:%M') – Session fertig. Neue Commits: $COMMITS $NEXT" fi echo "===== $(date '+%F %T') Session beendet - Neustart in 20 Minuten (Strg+C zum Stoppen) =====" | tee -a autopilot.log sleep 1200 done