#!/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" # --- 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 und arbeite ROADMAP.md Punkt für Punkt weiter ab. \ Halte dich strikt an den Arbeitszyklus (PROGRESS.md pflegen, kleine Commits + Push). \ Arbeite so viele Punkte 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