Anthropic 12 мая встроила в Claude Code команду /goal, официальную версию ральф-лупа. Это баш-однострочник Geoffrey Huntley, о котором весь год говорят разработчики.
Как устроена петля
**
Представим сотрудника, у которого амнезия каждое утро (уверен, каждый узнает своего коллегу!). Даешь ему одну и ту же инструкцию типа «открой свои заметки, чувак, посмотри, на чём остановился вчера, сделай следующий шаг, запиши, что сделал». И так каждый день, пока задача не выполнена. Ральф-луп устроен так же. Агенту дают текстовый файл с задачей и запускают его снова и снова. Каждый запуск с нуля, без памяти о предыдущем. Свой прогресс агент сам записывает на диск: что уже сделано, какие файлы поменял, что осталось.
На следующей итерации читает свои же заметки и продолжает. Петля крутится, пока агент сам не отметит, что закончил.
В оригинале вся конструкция Хантли это одна строка, которую набирают в терминале:
while :; do cat PROMPT.md | claude-code ; done
По частям получается так примерно (поправляйте меня, если я путаюсь): while :; do ... done означает «повторяй бесконечно то, что внутри». cat PROMPT.md означает «возьми содержимое файла PROMPT.md» (туда заранее положили инструкцию для агента). Вертикальная палочка | означает «и передай это дальше». claude-code это сам агент, который получает инструкцию и идёт выполнять. То есть буквально шестьдесят символов на всю систему. Поэтому вокруг ральф-лупа и поднялся такой шум: оказалось, что для автономного агента не нужна сложная архитектура, достаточно файла и бесконечного цикла.
Название «Ralph» отсылает к Ральфу Виггаму из Симпсонов (самому туповатому, но упорному персонажу сериала) и к сленговому «to ralph» (блевать). Хантли пишет, что от осознания, насколько дешёвой стала автономная генерация кода, его реально мутило.
Зачем сбрасывать контекст каждую итерацию
После примерно 100–150к токенов модели заметно тупеют, а штатная автокомпакция Claude Code теряет детали. Перезапуск каждой итерации с одного и того же PROMPT.md эту проблему обходит.
Что уже собрали на ральфе
Команда repomirror на YC-хакатоне за ночь сделала шесть портов фреймворков, потратив $600 API. Хантли закрыл клиентский MVP при бюджете $50k за $297. Язык программирования CURSED со self-hosting компилятором, по словам автора, целиком собран на трёх месяцах непрерывных ральф-ранов.
Что добавили в Claude Code
/goal в Claude Code 2.1.139
работает так. Вы задаёте условие завершения, после каждого хода маленькая быстрая модель (Haiku) проверяет, выполнено ли оно, и если нет, петля гонит агента дальше. У OpenAI Codex /goal вышел раньше, в v0.128. Плюс отдельно Anthropic выложила репозиторий cwc-long-running-agents с тремя примитивами для серьёзной обвязки длинных запусков: default-FAIL контракт, fresh-context оценщик, agent-maintained handoff между сессиями.
Миф про экономию токенов
Распространённый сейчас тезис звучит как «агент в режиме /goal экономит токены, потому что замотивирован все сделать быстрее». Это антропоморфизм. /goal не сбрасывает контекст, он просто не даёт остановиться, и в среднем сжигает больше токенов, чем обычный разговор. Реальная экономия идёт от идеи фреш-контекста чистого ральф-лупа, а не от /goal-команды.