Агент тормозит на полпути — знакомая боль
Вы даёте задачу: «Отрефактори этот модуль, добавь тесты, проверь линтер». Claude Code бодро пишет код, запускает тесты, находит ошибку — и… стоп. Ответ вроде «я закончил», но на деле половина не сделана, тесты красные. Приходится снова и снова дёргать агента вручную. Теряется время, горят дедлайны.
Корень проблемы — LLM не умеют гарантировать полное выполнение. Они оптимизируют ответ, а не результат. Agentic loop в Claude Code по умолчанию слабый: агент делает одно действие и ждёт следующей команды. Без внешнего «кнута» он не вернётся к исправлению ошибок сам.
Решение пришло от сообщества, и имя ему — Ralph Wiggum. Да, в честь того самого туповатого мальчика из Симпсонов. Ирония в том, что техника заставляет агента тупо повторять попытки, пока не получится. Но кто бы мог подумать, что это сработает?
Что такое Ralph Wiggum для Claude Code? Это плагин (или скрипт), который перехватывает ответ агента, проверяет — выполнена ли задача (через completion promise), и если нет — снова отправляет тот же запрос. Цикл повторяется до успеха или до исчерпания лимита попыток.
Внутреннее устройство: как работает цикл
Ralph Wiggum базируется на идее completion promise — явного обещания агента, что он считает задачу выполненной. В обычном режиме Claude Code просто отвечает, но не подтверждает полноту. Плагин же добавляет в промпт инструкцию: «После каждого действия отвечай “DONE” или “FAILED”. Если ответ не содержит “DONE” — считай, что задача не решена».
Алгоритм прост до гениальности:
- Отправить промпт агенту.
- Получить ответ. Если в ответе есть «DONE» — проверить результат (например, зелёные тесты).
- Если результат неудовлетворительный — отправить тот же промпт снова, но с дополнительным контекстом: «Ты ошибся. Попробуй ещё раз. У тебя осталось N попыток».
- Повторять, пока не получим «DONE» + валидный результат, или не закончатся попытки.
Geoffrey Huntley — тот самый инженер, который первым выложил рабочий прототип. Его репозиторий ghuntley/claude-code-ralph-wiggum разлетелся по сообществу. Подход сработал именно благодаря простоте: без сложных графов состояний, без state machines — просто цикл for с проверкой.
Пошаговый план: ставим и запускаем
1 Установка плагина
Самый быстрый способ — склонировать репозиторий и установить зависимости:
git clone https://github.com/ghuntley/claude-code-ralph-wiggum.git
cd claude-code-ralph-wiggum
npm install
Либо установить как глобальный пакет через npm (если автор выложил в registry, на момент написания статьи предпочтительнее клон):
npm install -g @ghuntley/claude-code-ralph-wiggum
2 Настройка конфигурации
В корне проекта создайте файл wiggum.config.json:
{
"maxAttempts": 5,
"timeout": 120000,
"model": "claude-sonnet-4-20250514",
"completionPhrase": "DONE",
"failurePhrase": "FAILED",
"verifyCommand": "npm test"
}
Здесь: maxAttempts — максимальное количество попыток, timeout — таймаут на один запуск (в миллисекундах), model — модель Claude (на 31.05.2026 последняя стабильная — claude-sonnet-4-20250514, но можно указать и новейшую claude-sonnet-4-2026-05-14, если она уже доступна), completionPhrase — маркер успешного выполнения, failurePhrase — маркер неудачи, verifyCommand — команда, которая запускается для проверки результата после каждого цикла.
Важно: не ставьте maxAttempts больше 10 без дополнительных ограничений. Каждая попытка — это затраты токенов. При 10 попытках средний чек может вырасти в 5–7 раз по сравнению с одной.
3 Подключение к Claude Code
Плагин работает как прослойка: он запускает Claude Code, передаёт ему промпт, перехватывает stdout, анализирует ответ. Запускайте так:
npx wiggum --prompt "Refactor the auth module, add unit tests, ensure lint passes"
Если вы используете мультиагентную схему, как описано в статье «От одного агента к целой деревне: как построить саморазвивающуюся мультиагентную систему на Claude Code», плагин можно внедрить в каждого агента, отвечающего за конкретную подзадачу.
4 Запуск и мониторинг
После запуска плагин выводит лог каждой попытки с номером, временем выполнения и причинами неудачи:
Attempt 1/5: Running tests... FAIL (2 failing tests)
Attempt 2/5: Fixing test failures... PASS (verifyCommand returned 0)
DONE after 2 attempts, total time: 43s
Видно, что агент сам исправил ошибки — именно этого мы и добивались.
Реальные сценарии: где Ralph Wiggum рулит
- Рефакторинг легаси. Агент меняет код, линтер валится — цикл подсказывает исправить. Без плагина вы бы писали «исправь это» вручную.
- Генерация документации. Проверка орфографии, форматирование Markdown. Если агент пропустил битую ссылку — он исправит в следующей итерации.
- Coverage-driven development. Укажите минимальный порог покрытия в verifyCommand (например,
jest --coverage --coverageThreshold='{"global":{"lines":80}}'). Ralph Wiggum будет гонять агента, пока покрытие не станет 80%+. - Интеграция с CI/CD. Запускаете агента, он создаёт пул-реквест, проверяет сборку — и повторяет, пока pipeline не зелёный. Это уже production-кейс, описанный в статье «Claude Code в 2026: джедайский уровень».
Грабли, на которые наступил каждый
Ralph Wiggum — мощный, но тупой инструмент. Он не думает, он просто повторяет. И это порождает классические ошибки.
Как НЕ надо делать: пример антипаттерна
Вот типичный неправильный промпт, который ломает цикл:
npx wiggum --prompt "Fix all bugs" --max-attempts 100
Что пойдёт не так:
- Задача абстрактна — агент не понимает, когда остановиться.
- Нет verifyCommand — плагин будет считать любую попытку успешной.
- 100 попыток — это гарантированный банковский счёт в минус.
Правильная версия:
npx wiggum --prompt "Run eslint --fix on src/ and ensure zero errors" \
--max-attempts 5 \
--verify "eslint src/ --max-warnings 0"
Совмещение с handoffs и мультиагентными системами
Ralph Wiggum не обязан работать в одиночку. Если у вас несколько агентов, общающихся через handoffs (как в статье «Как организовать совместную работу нескольких Claude Code»), каждый агент может быть обёрнут в цикл Wiggum. Это даёт надёжность на уровне отдельных модулей.
Например, один агент пишет код, второй ревьюит, третий запускает e2e-тесты. Каждый из них использует Ralph Wiggum, чтобы гарантировать, что его подзадача выполнена, прежде чем передать эстафету дальше.
Частые вопросы
| Вопрос | Ответ |
|---|---|
| Что делать, если агент зациклился на одной ошибке? | Проверьте, не игнорирует ли verifyCommand действительные проблемы. Иногда ошибка синтаксиса или отсутствующий файл не исправляются повторным запуском — нужен другой промпт. Установите лимит попыток 3-5 и добавьте fallback на ручное вмешательство. |
| Сколько это стоит в среднем? | Зависит от длины промпта и количества попыток. Для задачи «рефакторинг 200 строк кода + тесты» при 3 попытках — около $0.30. Для сложной генерации документации на 1000 строк — до $2. Следите за расходами через Claude Console. |
| Работает ли с другими моделями, не только Claude? | Изначально плагин заточен под Claude Code, но его можно адаптировать под любой LLM-агент, который поддерживает запуск shell-команд. На GitHub есть форки под Qwen Coder и OpenCode — см. статью «Ralph Wiggum prompt для Qwen Coder 480B». |
| Может ли агент случайно удалить файлы в цикле? | Да, если в verifyCommand входит rm -rf или агент сам запускает деструктивные команды. Всегда запускайте плагин в изолированной среде (Docker, временная ветка git). Используйте git stash и git checkout для отката между попытками. |
Итог: когда тупость — это стратегия
Ralph Wiggum — это не магия. Это костыль, который затыкает дыру в архитектуре агента. Но этот костыль работает. И работает отлично, потому что большинство ошибок LLM — не фатальные, а итеративные. Агент способен исправить их сам, если дать ему шанс.
Неочевидный совет: не используйте Ralph Wiggum для задач, где ошибка может быть незаметной. Например, для генерации SQL-запросов с финансовыми данными — лучше перепроверить вручную. Идеальная сфера применения — технический долг, тесты, стиль кода. Всё, что можно проверить скриптом.
А если хотите автоматизировать целый отдел — читайте про кейс 17 AI-агентов вместо отдела. Там Ralph Wiggum используется как стандартный контроллер качества для каждого агента.
Техника мемная, но прибыльная. Заходите на репозиторий, ставьте звёзды и не забывайте ограничивать попытки. Агент с тупым упорством доведёт задачу до конца — даже если вы уже ушли пить кофе.