> · 9 мин

Ralph Loop — плагин Claude Code с 75K установками, который кодит за тебя, пока ты спишь

Ralph Loop — плагин Claude Code с 75K установками, который кодит за тебя, пока ты спишь

Ralph Loop — плагин Claude Code с 75K установками, который кодит за тебя, пока ты спишь

Представь: ты пишешь один промпт, закрываешь ноутбук и идёшь спать. Утром открываешь — 6 репозиториев готовы, тесты зелёные, код закоммичен. Звучит как фантазия, но именно так работали команды на хакатоне Y Combinator — и потратили на API всего $297.

Это Ralph Loop — официальный плагин Claude Code от Anthropic с 75 тысячами установок. Разбираем, как он устроен, как написать промпт, который сходится к результату, и когда этот подход реально работает (а когда — сжигает бюджет впустую).

TL;DR: Ralph Loop — это while-true цикл внутри Claude Code, который перезапускает промпт снова и снова, пока задача не выполнена. Работает через Stop hook, видит свой предыдущий код через файлы и git. Идеален для greenfield-проектов с чёткими критериями (тесты проходят, сборка работает). Но требует аккуратных промптов и обязательного --max-iterations.

Что такое Ralph Loop и откуда название

Технику придумал Geoffrey Huntley и назвал в честь Ральфа Виггама из «Симпсонов» — персонажа, который упорно продолжает, несмотря ни на что. Философия та же: итерация важнее перфекционизма.

В чистом виде Ralph — это одна строка bash:

while :; do cat PROMPT.md | claude-code ; done

Claude получает задачу, работает, пытается завершить сессию — а цикл перезапускает его снова. При этом файлы, которые Claude изменил в прошлой итерации, остаются на диске. Git-история тоже. Поэтому каждый следующий проход — не с нуля, а с улучшением предыдущего результата.

Плагин ralph-loop оборачивает эту механику в удобные команды и делает всё внутри одной сессии Claude Code — без внешних bash-скриптов.

Как это работает технически

Весь механизм держится на одной штуке — Stop hook. Когда Claude решает, что задача выполнена и пытается завершить сессию (exit code 2), hook перехватывает выход и подставляет тот же самый промпт обратно.

Порядок действий:

  1. Ты запускаешь /ralph-loop с промптом один раз
  2. Claude работает над задачей
  3. Claude пытается выйти
  4. Stop hook блокирует выход
  5. Тот же промпт подаётся снова
  6. Claude видит изменённые файлы и git log
  7. Цикл повторяется, пока не сработает completion promise или не кончатся итерации

Ключевое: промпт никогда не меняется. Меняется контекст — файлы на диске, результаты тестов, git diff. Claude сам решает, что делать дальше, анализируя своё предыдущее творчество.

Установка и базовые команды

Установка занимает 30 секунд:

/plugin install ralph-wiggum@claude-plugins-official

После установки доступны две команды:

Запуск цикла:

/ralph-loop "Build a REST API for todos. Requirements: CRUD operations, input validation, tests. Output <promise>COMPLETE</promise> when done." --completion-promise "COMPLETE" --max-iterations 50

Остановка:

/cancel-ralph

Параметр --max-iterations — обязательный предохранитель. Без него цикл может крутиться бесконечно на невозможной задаче, сжигая токены. Параметр --completion-promise использует точное совпадение строк — Claude должен вывести именно эту фразу, чтобы цикл остановился.

Как написать промпт, который сходится

Это главный скилл Ralph-разработчика. Плохой промпт = бесконечный цикл. Хороший промпт = рабочий код к утру.

Чёткие критерии завершения

❌ Плохо:
"Build a todo API and make it good."

✅ Хорошо:
"Build a REST API for todos.

When complete:
- All CRUD endpoints working
- Input validation in place
- Tests passing (coverage > 80%)
- README with API docs
- Output: <promise>COMPLETE</promise>"

Разница — в том, что Claude может программно проверить каждый пункт. Запустил тесты — зелёные. Coverage — выше 80%. README — есть. Всё сходится → выводит promise.

Инкрементальные фазы

Phase 1: User authentication (JWT, tests)
Phase 2: Product catalog (list/search, tests)
Phase 3: Shopping cart (add/remove, tests)

Output <promise>COMPLETE</promise> when all phases done.

Маленькие шаги критичны — по данным aihero.dev, context rot (деградация качества по мере заполнения контекстного окна) усиливается на длинных задачах. Чем меньше шаг — тем плотнее обратная связь.

TDD-подход

Implement feature X following TDD:
1. Write failing tests
2. Implement feature
3. Run tests
4. If any fail, debug and fix
5. Refactor if needed
6. Repeat until all green
7. Output: <promise>COMPLETE</promise>

Тесты — лучший feedback loop для Ralph, потому что они дают бинарный сигнал: прошли или нет. Claude не может «обмануть» зелёный тест.

Escape hatch

Всегда добавляй в промпт инструкцию на случай, если задача не решается:

After 15 iterations, if not complete:
- Document what's blocking progress
- List what was attempted
- Suggest alternative approaches

11 практических приёмов от опытных Ralph-пользователей

По материалам aihero.dev и сообщества — вот что реально работает:

1. Начинай с HITL, переходи к AFK

HITL (Human-In-The-Loop) — запускаешь цикл, наблюдаешь, корректируешь промпт. AFK (Away From Keyboard) — ставишь --max-iterations 30 и уходишь. Всегда начинай с HITL, чтобы убедиться, что промпт сходится. Типичный Ralph-цикл занимает 30-45 минут, но некоторые растягиваются на часы.

2. Отслеживай прогресс между итерациями

Каждая итерация стартует с чистым контекстным окном. Без файла прогресса Claude будет заново исследовать весь репозиторий. Добавь в промпт:

Append to progress.txt after completing each task.
Keep entries concise. This helps future iterations skip exploration.

А после завершения спринта — удаляй progress.txt, это сессионный файл, не документация.

3. Блокируй коммиты без зелёных тестов

Feedback loops — не рекомендация, а необходимость. TypeScript types, unit tests, linting, pre-commit hooks — всё это должно блокировать коммит при ошибке. Добавь в промпт:

Before committing, run ALL feedback loops: TypeScript, tests, lint.
Do NOT commit if any loop fails. Fix issues first.

Без этого Ralph усиливает энтропию — один плохой коммит порождает ещё худший на следующей итерации, потому что Claude видит свой предыдущий код как образец.

4. Приоритизируй рискованные задачи первыми

Без указаний Ralph берёт первую задачу из списка или самую лёгкую. Архитектурные решения, интеграционные точки, неизвестные зависимости — всё это нужно отработать в HITL-режиме. AFK оставляй для рутины с надёжным фундаментом.

5. Явно задавай планку качества

Claude не знает, прототип это или продакшен. А код из репозитория убедительнее инструкций — Claude видит тысячи строк «примера» против твоих нескольких предложений. По опыту сообщества, Ralph ускоряет software entropy: один человек делает коммит в день, Ralph — десятки за несколько часов. Плохой код порождает ещё худший.

6. Используй Docker-sandbox для AFK-запусков

docker sandbox run claude

Sandbox защищает домашнюю директорию, SSH-ключи и системные файлы, но даёт доступ к проекту. Для ночных запусков — обязательная страховка. Нюанс: глобальный AGENTS.md и пользовательские skills не загрузятся внутри sandbox.

Реальные кейсы и стоимость

По данным из нескольких источников:

  • $50K контракт за $297 — Geoffrey Huntley завершил проект уровня MVP с тестами и код-ревью за сумму, которую сложно назвать бюджетом (ghuntley.com)
  • 6 репозиториев за ночь — команды Y Combinator хакатона отправили Ralph работать и пошли спать. Утром — рабочие проекты
  • Язык программирования за 3 месяца — Geoffrey Huntley создал компилятор с LLVM-бэкендом, стандартной библиотекой и интеграцией в редактор
  • Тестовое покрытие с 16% до 100% — один разработчик натравил Ralph на непокрытые функции с промптом «найди непокрытые строки, напиши тесты»

Но есть и обратная сторона: 50 итераций на крупной кодовой базе стоят $50-100+ в API-кредитах, по данным paddo.dev. Некоторые power users тратят до $60K в год. На плане Anthropic 5x Max (~$90/мес) расходы более предсказуемы, но на API-ключе нужен строгий контроль.

Подводные камни

--completion-promise ненадёжен как единственный стоп-механизм. Он использует точное совпадение строк. Нельзя задать несколько условий завершения (например, «SUCCESS» или «BLOCKED»). Всегда ставь --max-iterations как основной предохранитель.

На Windows баги. Плагин имел проблему с переносами строк — команда с длинным промптом разбивалась на несколько, и Claude Code блокировал выполнение из соображений безопасности. Баг исправлен в новых версиях, но совместимость с Windows 11 до сих пор требует внимания — stop hook зависит от jq, которого нет в стандартной поставке Windows. Решение: установи jq отдельно или работай через WSL.

Ralph усиливает качество кода в обе стороны. Если в репозитории уже есть грязный код, Ralph будет строить на нём. Каждая итерация видит предыдущий код как «эталон», и энтропия нарастает лавинообразно. Перед запуском Ralph убедись, что кодовая база чистая.

Визуальные баги невидимы. Ralph проверяет код через тесты и линтеры, но не через глаза. Функциональные тесты проходят — а UI может быть полностью сломан. Для фронтенд-задач добавляй Playwright MCP или визуальное тестирование в feedback loop.

Не для существующих кодовых баз (по словам Geoffrey Huntley). Ralph идеален для greenfield-проектов (~90% эффективности), но встраивание в существующий код с архитектурными решениями, которые нужно уважать — совсем другая история. Для рефакторинга существующего кода лучше использовать HITL-режим с короткими итерациями.

Альтернативы Ralph Loop

Ralph — не единственный способ запустить автономный цикл:

  • frankbria/ralph-claude-code — bash-реализация с rate limiting, spending caps, git checkpointing и dashboard мониторингом. Полезно, если хочешь больше контроля над расходами
  • ralph-orchestrator — мультиагентная координация нескольких Ralph-циклов
  • Claude Code Agent Teams — встроенная (experimental) функция для координации нескольких сессий Claude Code. Больше overhead, но агенты могут общаться между собой
  • Claude Code subagents — легковеснее: работают внутри одной сессии, без координации, но достаточно для параллельных задач

Выбор зависит от масштаба. Для одного проекта с чёткими критериями — Ralph Loop. Для координации нескольких направлений — Agent Teams или orchestrator.

Вердикт

Ralph Loop — мощный инструмент, но не волшебная палочка. Из всего арсенала приёмов реальную отдачу дают три вещи: чёткие критерии завершения в промпте (тесты, coverage, build), обязательный --max-iterations и feedback loops, блокирующие коммит при ошибке. Без этих трёх компонентов Ralph превращается в дорогой генератор мусора.

Лучший сценарий — greenfield-проект с тестами, где ты сначала отладил промпт в HITL-режиме, а потом отпустил Claude работать автономно. По честным оценкам, реалистичная экономия — не «$50K за $297» (это идеальный кейс), а скорее 3-5x ускорение рутинной работы типа тестового покрытия, документации и однотипных CRUD-задач.

Как попробовать

  1. Установи плагин: /plugin install ralph-wiggum@claude-plugins-official
  2. Начни с простой задачи в HITL-режиме — например, «добавь JSDoc ко всем экспортируемым функциям в src/utils/»:
/ralph-loop "Add JSDoc comments to all exported functions in src/utils/. Run TypeScript check after each change. Output <promise>DONE</promise> when all functions documented." --completion-promise "DONE" --max-iterations 10
  1. Проверь git diff после завершения — убедись, что результат адекватный
  2. Попробуй задачу покрупнее с TDD-подходом:
/ralph-loop "Implement a caching layer for the API. Write tests first, then implement. Coverage > 90%. Output <promise>COMPLETE</promise> when done." --completion-promise "COMPLETE" --max-iterations 30
  1. Изучи документацию плагина и оригинальную статью Geoffrey Huntley для продвинутых паттернов
$ ls ./related/

Похожие статьи

subscribe.sh

$ cat /dev/blog/updates

> Свежие заметки о программировании,

> DevOps и AI — прямо в мессенджер

./subscribe