-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathloop.sh
More file actions
executable file
·71 lines (55 loc) · 1.92 KB
/
loop.sh
File metadata and controls
executable file
·71 lines (55 loc) · 1.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/usr/bin/env bash
set -euo pipefail
# Ralph Wiggum Loop — autonomous AI development loop
#
# Usage:
# ./loop.sh # Build mode, unlimited iterations
# ./loop.sh 10 # Build mode, max 10 iterations
# ./loop.sh plan # Planning mode, unlimited
# ./loop.sh plan 3 # Planning mode, max 3 iterations
MODE="build"
MAX_ITERATIONS=0
ITERATION=0
if [[ "${1:-}" == "plan" ]]; then
MODE="plan"
shift
fi
if [[ -n "${1:-}" ]]; then
MAX_ITERATIONS="$1"
fi
PROMPT_FILE="PROMPT_${MODE}.md"
if [[ ! -f "$PROMPT_FILE" ]]; then
echo "Error: $PROMPT_FILE not found"
exit 1
fi
BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo " Ralph Wiggum Loop"
echo " Mode: $MODE"
echo " Branch: $BRANCH"
echo " Prompt: $PROMPT_FILE"
[[ "$MAX_ITERATIONS" -gt 0 ]] && echo " Max: $MAX_ITERATIONS iterations"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
while true; do
ITERATION=$((ITERATION + 1))
if [[ "$MAX_ITERATIONS" -gt 0 && "$ITERATION" -gt "$MAX_ITERATIONS" ]]; then
echo "=== Reached max iterations ($MAX_ITERATIONS) ==="
break
fi
echo "=== Iteration $ITERATION ($MODE mode) ==="
# Each iteration gets a fresh context window
# -p: headless mode (non-interactive, reads from stdin)
# --dangerously-skip-permissions: auto-approve all tool calls
cat "$PROMPT_FILE" | claude --dangerously-skip-permissions -p -
EXIT_CODE=$?
if [[ $EXIT_CODE -ne 0 ]]; then
echo "=== Claude exited with code $EXIT_CODE, stopping ==="
break
fi
# Optional: push after each iteration
# git push origin "$BRANCH" 2>/dev/null || true
echo "=== Iteration $ITERATION complete ==="
echo ""
done
echo "=== Loop finished after $((ITERATION - 1)) iterations ==="