Ralph: När AI fixar problem autonomt
Mitt create-new-project.sh hade 18 dokumenterade issues som blockerade flödet. Att fixa dem manuellt skulle kosta timmar, med hög risk att missa edge cases. Jag lät Ralph hantera det. Resultatet: 15 fixade tasks på 46 iterationer — helt autonomt.
Problemet
create-new-project.sh skapar nya projekt automatiskt. Scriptet hade 18 issues dokumenterade i en task-lista. Manuell fix skulle ta timmar — och risken att missa edge cases var hög.
Exempel på issues:
- Vitest setup saknade konfiguration
- Monorepo-struktur hanterades inte korrekt i verifieringsscript
- Edge cases i GitHub repo creation
- Workflow verification var valfri, inte tvingande
Insikten
Ralph-pattern från Geoffrey Huntley löser iterativa fixar.
Varje iteration är ny kontext — ingen state mellan körningar.
Task-lista håller state och progress-log sparar minne.
Inspiration: Ralph GitHub repo, Ralph explained.
Systemet
Flöde: Task-lista → Agent → Verifiering → Commit → Loop.
Ett bash-script orkestrerar agenten i en loop, där en progress-log agerar minne mellan iterationerna.
Systemet verifierar varje task automatiskt och utför en commit vid lyckat resultat — utan mänsklig inblanding.
Hur det fungerar
- Task-lista innehåller 18 tasks med status
- Script väljer nästa task som inte är klar
- Agent får ny kontext med task-lista + progress-log
- Verifiering körs automatiskt (tester, lint, type-check)
- Commit sker vid lyckat resultat, annars loopar agenten
Varje iteration är isolerad — ingen state mellan körningar.
Agenten ser bara task-lista och progress-log, vilket eliminerar state-drift.
Resultat
15 av 18 tasks completed.
| Metric | Värde |
|---|---|
| Total iterationer | 46 |
| Total tokens | 24.7M |
| Genomsnitt per iteration | 537K tokens |
| Tidsperiod | 14:e januari 2026 |
| Tasks completed | 15/18 (83%) |
Modellfördelning:
| Modell | Iterationer | Tokens | Included | On-Demand |
|---|---|---|---|---|
| auto | 32 | 12.5M | 32 | 0 |
| claude-4.5-opus-high-thinking | 14 | 12.3M | 0 | 14 |
Typ-fördelning:
| Typ | Iterationer | Tokens |
|---|---|---|
| Included (Cursor Pro+) | 32 | 12.5M |
| On-Demand | 14 | 12.3M |
Insikt: Auto-modellen (Cursor Auto) användes för 70% av iterationerna.
Opus användes för komplexa tasks som krävde djup förståelse.
Lärdomar
Task 4: Vitest setup
Problem: Scriptet lade till test:run script men saknade:
- vitest installation
- vitest.config.ts
- test setup file
- placeholder test
Lösning: Komplett testing setup i frontend creation-steget.
Verifiering fungerar nu korrekt.
Task 5: Monorepo-struktur
Problem: Verifieringsscript förväntade sig projekt-root, inte monorepo-struktur.
Grundorsak: Jag designade verifieringsscriptet för enkel projektstruktur, inte monorepo. När projekt växte till monorepo-struktur missade jag att uppdatera verifieringen.
Lösning: Uppdaterade verifieringsscript att hantera monorepo-struktur.
Lärdom: Detta visar vikten av att testa mot faktiska projektstrukturer, inte bara antaganden.
Resultat: DoD-verifiering fungerar i monorepo-projekt.
Task 15: GitHub repo creation
Problem: Edge cases när repo redan existerade eller hade fel namn.
Lösning: Bättre felhantering och verifiering av repo-status.
Resultat: Scriptet hanterar edge cases korrekt.
Task 17: Workflow verification
Problem: Workflow verification var valfri, inte tvingande.
Grundorsak: Jag antog att alla skulle verifiera manuellt. I praktiken missades verifiering, vilket ledde till trasiga workflows i produktion.
Lösning: Måste vara tvingande för att säkerställa att workflows faktiskt körs.
Lärdom: Designprincipen: om något måste göras, gör det tvingande — inte valfritt.
Resultat: Workflows verifieras automatiskt vid projekt-skapande.
Varför Ralph fungerar
Ny kontext varje iteration — ingen state-drift.
Task-lista håller state — tydlig progress-tracking.
Automatisk verifiering — inga manuella steg.
Auto-commit vid lyckat resultat — tydlig historik.
Jämfört med manuell fix:
- Manuell: 8-10 timmar, risk för missade edge cases
- Ralph: 1 dag autonomt, 46 iterationer, 15/18 tasks
Nästa steg: Fler use cases för Ralph.
Iterativa fixar är perfekt för autonoma loops.