d2fcc59f7a
Nach jeder Session mit neuen Commits postet der Autopilot Commits + nächsten Schritt in den Raum '🔺 Pyramid Autopilot' (Token vom Gatus-Bot, nur auf dem Pi). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CPrAGBxBT6GfPXzeWQ4AXb
54 lines
2.3 KiB
Bash
Executable File
54 lines
2.3 KiB
Bash
Executable File
#!/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" --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
|