Einblick in Ralph Loops
Das Problem
Viele Entwickler und auch ich selbst klagen darüber, das LLMs und KI durch den wachsenden Kontext in einer Session verdummen und dessen Output darunter leidet. Was eigentlich der Erwartung von "Intelligenz" widerspricht. Der Begriff "context rot" ist hierbei eine treffende Beschreibung für das Phänomen bei dem das Ergebnis der Agents schlechter wird, je mehr Informationen diesen zur Verfügung steht.
Jede Nachricht und jeder Denkprozess der KI vergrößert den Token-Verbrauch innerhalb des Kontexts. AI Integrationen und TUIs, versuchen mit eigenen Lösungen diesen Kontext zu komprimieren, damit dieser weiter verwendet werden kann. Deren Ergebnis verliert aber oftmals essentielle Anweisungen, die unter Umständen zu Beginn der Sitzung definiert wurden.
Die Lösung
Geoffrey Huntley beschreibt in seinem Video "The Ralph Wiggum Loop from 1st principles (by the creator of Ralph)" wie er diesem Problem entgegen wirkt.
Die Idee: Statt alle Requirements in einer Session abarbeiten zu lassen, erstellt man für jede einzelne Anforderung einen neuen "sauberen" Kontext und reichert diesen mit Informationen aus Git und Dateien selektiv an. Dieser Prozess wiederholt sich solange bis die Requirements erfüllt sind, ohne menschliche Interaktion.
In der Praxis
How It Works A bash loop that:
- Pipes a prompt into your AI agent
- Agent picks the next story from prd.json
- Agent implements it
- Agent runs typecheck + tests
- Agent commits if passing
- Agent marks story done
- Agent logs learnings
- Loop repeats until done
Memory persists only through:
- Git commits
- progress.txt (learnings)
- prd.json (task status)
Ryan Carson via X
Bei Ralph Wiggum Loops handelt es sich also nicht um ein komplexes neues Tool, sondern mehr um ein iteratives Verfahren, um etwas abzuarbeiten. Um nicht den oben genannten Tweet Inhalt zu wiederholen reduziere ich mich auf meine Umsetzung.
ralph-loop.sh
#!/bin/bash
set -e
if [ -z "$1" ]; then
echo "Usage: $0 <iterations>"
exit 1
fi
for ((i=1; i<=$1; i++)); do
result=$(opencode run "@requirements.md @progress.md \
1. Read the requirements.md and progress.md files. \
2. Find the next incomplete task and implement it. \
3. Update progress.md with what you did. \
4. Ensure the codebase is stable by successfully running all automated tests, static type-checks, and the production build process according to the project's specific toolchain. \
5. Commit your changes. \
ONLY DO ONE TASK AT A TIME. \
If the progress is complete, output <promise>COMPLETE</promise>." -m "github-copilot/claude-sonnet-4.5")
echo "$result"
if [[ "$result" == *"<promise>COMPLETE</promise>"* ]]; then
echo "Complete after $i iterations."
exit 0
fi
done
Ein simples shell-Script reicht um einen "Loop" zu starten. Unter Angabe der Anzahl der maximalen Iterationen startet das "Programm". Der Agent wird via opencode run instruiert nur einen einzelnen Tasks abzuarbeiten und seinen Fortschritt zu dokumentieren. Wenn alle Anforderungen erfüllt sind, soll final ein eindeutiger String als Escape-Condition ausgegeben werden.
Besonders hilfreich für den Einstieg empfand ich die Empfehlung von Matt Pocock mit einer ralph-once.sh diesen Prozess immer nur schrittweise auszuführen. Als "human-in-the-loop" (kurz: HITL) hat man so Kontrolle über den Prozess und die Möglichkeit seinen Prompt zu verfeinern. Die eigentliche Leitidee, diesen Prozess "afk" ("away from keyboard") zu führen, erlaubt dagegen nur der Loop.
Erfahrungsbericht
"Build app ... with ... and ..."
Zunächst arbeitete ich mit Gemini 3 Flash einen Plan aus und dokumentierte diesen in meiner PRD Datei. Hierbei sollte eine Anwendung von Grund auf implementiert werden, mit Authentifizierung, Tailwind und weiteren Komplexen Anforderungen.
Doch bereits nach kurzer Zeit stellte ich fest, dass der Agent und das Ergebnis von meinen Erwartungen abwich und ich diesen Lauf abbrechen musste. Manuelle Anpassungen im Code und im Prompt waren nötig, um weiter fortsetzen zu können. Ein Ergebnis, das sich mit den Erfahrungen der letzten Monate deckt. Ralph löst dieses Problem schon mal nicht. Man muss kleiner denken!
Feature-Scope
Einen zweiten Versuch startete ich einer SvelteKit App mit Tailwind und Better-Auth. Basierend auf diesem Template arbeitete die KI erneut das PRD aus, um eine Registrierungs- und eine Anmeldeseite zu implementieren. Dessen Ergebnis war wahrlich beeindruckend und voll funktional. Nach etwa 13 Minuten, die ich abseits des Arbeitsplatzes verbringen konnte, meldete der Loop "COMPLETE". Beide Seiten, sowie eine Dashboard Seite, nutzen Better-Auth, dessen Endpunkte und Session-Management sowie Tailwind.

Learnings und Empfehlung
"Weniger ist Mehr". Mit kleinen Paketen ist man in der Lage mehr zu erreichen. Scope dein PRD auf Abschnitte deiner Anwendung.
Nutze die AI beim Schreiben des PRD. OpenCode Plan-Mode und ähnliche Tools arbeiten hier bereits intelligent, dich bei der Anforderungsdefinition zu unterstützen.
Der Loop sollte unbedingt Tests, Lint, und ähnliche Techstack spezifische Tools für eine besser Code-Qualität enthalten.
Beginne mit HITL + ralph-once
Backlog.md und Beads sind Dateibasierte Backlog Systeme, die im Workspace bzw. Repository leben und genau wie Markdown Dateien den Ralph-Loop "füttern". Apps wie Ralph-TUI nutzen diese bereits, um dem Nutzer eine UI für den gesamten Prozess von Planung bis Ausführung an die Hand zu geben.
Wertvolle Quellen
Starte hier:
Geoffrey Huntley - "The Ralph Wiggum Loop from 1st principles (by the creator of Ralph)" - Video
Ryan Carson - Step by Step Guide - via X
Matt Pocock - Getting Started With Ralph
Für mehr:
Matt Pocock - 11 Tips For AI Coding With Ralph Wiggum
Mein Source-Code
This article was written by a human author and reviewed using AI tools for language accuracy and translation consistency.